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