Merge pull request #269 from brarcher/orientation-setting

Add option to lock orientation state
This commit is contained in:
Branden Archer
2018-10-06 18:33:41 -04:00
committed by GitHub
6 changed files with 76 additions and 15 deletions

View File

@@ -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)
{

View File

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

View File

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

View File

@@ -121,4 +121,6 @@
<string name="settings_key_card_note_font_size" translatable="false">pref_card_note_font_size_sp</string>
<string name="settings_display_barcode_max_brightness">Brighten barcode view</string>
<string name="settings_key_display_barcode_max_brightness" translatable="false">pref_display_card_max_brightness</string>
<string name="settings_lock_barcode_orientation">Lock barcode orientation</string>
<string name="settings_key_lock_barcode_orientation" translatable="false">pref_lock_barcode_orientation</string>
</resources>

View File

@@ -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" />
<CheckBoxPreference
android:defaultValue="true"
android:key="@string/settings_key_display_barcode_max_brightness"
android:title="@string/settings_display_barcode_max_brightness"/>
<CheckBoxPreference
android:defaultValue="false"
android:key="@string/settings_key_lock_barcode_orientation"
android:title="@string/settings_lock_barcode_orientation"/>
</PreferenceCategory>
</PreferenceScreen>

View File

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