From 10e720de9136b735070531a132736c097d5e9b1f Mon Sep 17 00:00:00 2001 From: Branden Archer Date: Sat, 6 Oct 2018 14:27:35 -0700 Subject: [PATCH] Add option to lock orientation state This new option will control if the screen orientation lock option is displayed or not. If set, the orientation lock is forced and the unlock option is hidden. --- .../card_locker/LoyaltyCardViewActivity.java | 6 +++ .../card_locker/preferences/Settings.java | 5 +++ app/src/main/res/values/strings.xml | 2 + app/src/main/res/xml/preferences.xml | 5 +++ .../LoyaltyCardViewActivityTest.java | 38 +++++++++++++++++++ 5 files changed, 56 insertions(+) diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java index e7847a78c..0da76874d 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java @@ -200,6 +200,12 @@ public class LoyaltyCardViewActivity extends AppCompatActivity { getMenuInflater().inflate(R.menu.card_view_menu, menu); + if(settings.getLockBarcodeScreenOrientation()) + { + MenuItem item = menu.findItem(R.id.action_lock_unlock); + setOrientatonLock(item, true); + item.setVisible(false); + } return super.onCreateOptionsMenu(menu); } diff --git a/app/src/main/java/protect/card_locker/preferences/Settings.java b/app/src/main/java/protect/card_locker/preferences/Settings.java index e6fdbf33b..4fe3c9074 100644 --- a/app/src/main/java/protect/card_locker/preferences/Settings.java +++ b/app/src/main/java/protect/card_locker/preferences/Settings.java @@ -68,4 +68,9 @@ public class Settings { return getBoolean(R.string.settings_key_display_barcode_max_brightness, true); } + + public boolean getLockBarcodeScreenOrientation() + { + return getBoolean(R.string.settings_key_lock_barcode_orientation, false); + } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 134270400..831b3274d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -121,4 +121,6 @@ pref_card_note_font_size_sp Brighten barcode view pref_display_card_max_brightness + Lock barcode orientation + pref_lock_barcode_orientation diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index af054e18b..20dad4d4d 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -40,11 +40,16 @@ android:defaultValue="@integer/settings_card_note_font_size_sp" app:vnt_maxValue="@integer/settings_card_note_max_font_size_sp" app:vnt_minValue="@integer/settings_card_note_min_font_size_sp" /> + + \ No newline at end of file diff --git a/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java b/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java index f129ff955..6f9218146 100644 --- a/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java +++ b/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java @@ -11,6 +11,7 @@ import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v4.widget.TextViewCompat; import android.view.Menu; +import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.EditText; @@ -566,4 +567,41 @@ public class LoyaltyCardViewActivityTest shadowOf(activity).clickMenuItem(android.R.id.home); assertEquals(true, activity.isFinishing()); } + + @Test + public void checkScreenOrientationLockSetting() + { + for(boolean locked : new boolean[] {false, true}) + { + ActivityController activityController = createActivityWithLoyaltyCard(false); + + Activity activity = (Activity)activityController.get(); + DBHelper db = new DBHelper(activity); + db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, Color.WHITE); + + SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(activity); + settings.edit() + .putBoolean(activity.getResources().getString(R.string.settings_key_lock_barcode_orientation), locked) + .apply(); + + activityController.start(); + activityController.resume(); + activityController.visible(); + + assertEquals(false, activity.isFinishing()); + + MenuItem item = shadowOf(activity).getOptionsMenu().findItem(R.id.action_lock_unlock); + + if(locked) + { + assertEquals(item.isVisible(), false); + } + else + { + assertEquals(item.isVisible(), true); + String title = item.getTitle().toString(); + assertEquals(title, activity.getString(R.string.lockScreen)); + } + } + } }