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)); + } + } + } }