diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java index da8a3760d..d0e154705 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java @@ -449,14 +449,6 @@ public class LoyaltyCardEditActivity extends AppCompatActivity format = result.getFormatName(); } - if(requestCode == SELECT_BARCODE_REQUEST && resultCode == Activity.RESULT_OK) - { - Log.i(TAG, "Received barcode information from capture"); - - contents = intent.getStringExtra(BarcodeSelectorActivity.BARCODE_CONTENTS); - format = intent.getStringExtra(BarcodeSelectorActivity.BARCODE_FORMAT); - } - if(contents != null && contents.isEmpty() == false && format != null && format.isEmpty() == false) { diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java index 49166d7b9..0da76874d 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java @@ -76,6 +76,8 @@ public class LoyaltyCardViewActivity extends AppCompatActivity storeName = findViewById(R.id.storeName); barcodeImage = findViewById(R.id.barcode); collapsingToolbarLayout = findViewById(R.id.collapsingToolbarLayout); + + rotationEnabled = true; } @Override @@ -198,7 +200,12 @@ public class LoyaltyCardViewActivity extends AppCompatActivity { getMenuInflater().inflate(R.menu.card_view_menu, menu); - rotationEnabled = true; + if(settings.getLockBarcodeScreenOrientation()) + { + MenuItem item = menu.findItem(R.id.action_lock_unlock); + setOrientatonLock(item, true); + item.setVisible(false); + } return super.onCreateOptionsMenu(menu); } @@ -227,15 +234,11 @@ public class LoyaltyCardViewActivity extends AppCompatActivity case R.id.action_lock_unlock: if(rotationEnabled) { - item.setIcon(R.drawable.ic_lock_outline_white_24dp); - item.setTitle(R.string.unlockScreen); - setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); + setOrientatonLock(item, true); } else { - item.setIcon(R.drawable.ic_lock_open_white_24dp); - item.setTitle(R.string.lockScreen); - setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); + setOrientatonLock(item, false); } rotationEnabled = !rotationEnabled; return true; @@ -243,4 +246,20 @@ public class LoyaltyCardViewActivity extends AppCompatActivity return super.onOptionsItemSelected(item); } + + private void setOrientatonLock(MenuItem item, boolean lock) + { + if(lock) + { + item.setIcon(R.drawable.ic_lock_outline_white_24dp); + item.setTitle(R.string.unlockScreen); + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); + } + else + { + item.setIcon(R.drawable.ic_lock_open_white_24dp); + item.setTitle(R.string.lockScreen); + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); + } + } } \ No newline at end of file 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)); + } + } + } }