From 68935f14893ec111198e68bf0b99c001b56a61f2 Mon Sep 17 00:00:00 2001
From: Tong Liu <402169950@qq.com>
Date: Tue, 25 Oct 2022 13:38:02 -0400
Subject: [PATCH] Closes #1092 - Fixed contents cut off on smaller screen
issue. (#1095)
---
.../protect/card_locker/MainActivity.java | 52 +++++++++++--------
.../protect/card_locker/ScanActivity.java | 24 +++++++--
.../camera_permission_failed_layout.xml | 3 ++
app/src/main/res/layout/content_main.xml | 29 ++++++-----
.../res/layout/custom_barcode_scanner.xml | 20 +++----
app/src/main/res/values/dimens.xml | 2 +-
6 files changed, 80 insertions(+), 50 deletions(-)
diff --git a/app/src/main/java/protect/card_locker/MainActivity.java b/app/src/main/java/protect/card_locker/MainActivity.java
index 0eb3d36f0..9b2740971 100644
--- a/app/src/main/java/protect/card_locker/MainActivity.java
+++ b/app/src/main/java/protect/card_locker/MainActivity.java
@@ -12,7 +12,9 @@ import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
+import android.util.DisplayMetrics;
import android.util.Log;
+import android.util.TypedValue;
import android.view.GestureDetector;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -55,6 +57,8 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
private static final String TAG = "Catima";
public static final String RESTART_ACTIVITY_INTENT = "restart_activity_intent";
+ private static final int MEDIUM_SCALE_FACTOR_DIP = 460;
+
private SQLiteDatabase mDatabase;
private LoyaltyCardCursorAdapter mAdapter;
private ActionMode mCurrentActionMode;
@@ -178,28 +182,25 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
dialog.show();
return true;
- }
- else if(inputItem.getItemId() == R.id.action_archive){
+ } else if (inputItem.getItemId() == R.id.action_archive) {
for (LoyaltyCard loyaltyCard : mAdapter.getSelectedItems()) {
Log.d(TAG, "Archiving card: " + loyaltyCard.id);
- DBHelper.updateLoyaltyCardArchiveStatus(mDatabase, loyaltyCard.id,1);
+ DBHelper.updateLoyaltyCardArchiveStatus(mDatabase, loyaltyCard.id, 1);
updateLoyaltyCardList(false);
inputMode.finish();
invalidateOptionsMenu();
}
return true;
- }
- else if(inputItem.getItemId() == R.id.action_unarchive){
+ } else if (inputItem.getItemId() == R.id.action_unarchive) {
for (LoyaltyCard loyaltyCard : mAdapter.getSelectedItems()) {
Log.d(TAG, "Unarchiving card: " + loyaltyCard.id);
- DBHelper.updateLoyaltyCardArchiveStatus(mDatabase, loyaltyCard.id,0);
+ DBHelper.updateLoyaltyCardArchiveStatus(mDatabase, loyaltyCard.id, 0);
updateLoyaltyCardList(false);
inputMode.finish();
invalidateOptionsMenu();
}
return true;
- }
- else if(inputItem.getItemId() == R.id.action_star){
+ } else if (inputItem.getItemId() == R.id.action_star) {
for (LoyaltyCard loyaltyCard : mAdapter.getSelectedItems()) {
Log.d(TAG, "Starring card: " + loyaltyCard.id);
DBHelper.updateLoyaltyCardStarStatus(mDatabase, loyaltyCard.id, 1);
@@ -207,8 +208,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
inputMode.finish();
}
return true;
- }
- else if(inputItem.getItemId() == R.id.action_unstar){
+ } else if (inputItem.getItemId() == R.id.action_unstar) {
for (LoyaltyCard loyaltyCard : mAdapter.getSelectedItems()) {
Log.d(TAG, "Unstarring card: " + loyaltyCard.id);
DBHelper.updateLoyaltyCardStarStatus(mDatabase, loyaltyCard.id, 0);
@@ -233,15 +233,14 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
extractIntentFields(getIntent());
SplashScreen.installSplashScreen(this);
super.onCreate(inputSavedInstanceState);
- if(!mArchiveMode) {
+ if (!mArchiveMode) {
binding = MainActivityBinding.inflate(getLayoutInflater());
setTitle(R.string.app_name);
setContentView(binding.getRoot());
setSupportActionBar(binding.toolbar);
groupsTabLayout = binding.groups;
contentMainBinding = ContentMainBinding.bind(binding.include.getRoot());
- }
- else{
+ } else {
archiveActivityBinding = ArchiveActivityBinding.inflate(getLayoutInflater());
setTitle(R.string.archiveList);
setContentView(archiveActivityBinding.getRoot());
@@ -250,7 +249,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
contentMainBinding = ContentMainBinding.bind(archiveActivityBinding.include.getRoot());
}
- if(mArchiveMode){
+ if (mArchiveMode) {
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
@@ -404,7 +403,10 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
groupsTabLayout.selectTab(tab);
assert tab != null;
mGroup = tab.getTag();
+ } else if (!mArchiveMode) {
+ scaleScreen();
}
+
updateLoyaltyCardList(true);
// End of active tab logic
@@ -426,7 +428,6 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
@Override
public void onBackPressed() {
-
if (!mSearchView.isIconified()) {
mSearchView.setIconified(true);
return;
@@ -592,9 +593,9 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
@Override
public boolean onCreateOptionsMenu(Menu inputMenu) {
- if(!mArchiveMode)
+ if (!mArchiveMode) {
getMenuInflater().inflate(R.menu.main_menu, inputMenu);
- else{
+ } else {
getMenuInflater().inflate(R.menu.archive_menu, inputMenu);
}
@@ -632,7 +633,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
});
}
- if(!mArchiveMode) {
+ if (!mArchiveMode) {
if (DBHelper.getArchivedCardsCount(mDatabase) == 0) {
inputMenu.findItem(R.id.action_archived).setVisible(false);
} else {
@@ -846,6 +847,16 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
toggleSelection(inputPosition);
}
+ private void scaleScreen() {
+ DisplayMetrics displayMetrics = new DisplayMetrics();
+ getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
+ int screenHeight = displayMetrics.heightPixels;
+ float mediumSizePx = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,MEDIUM_SCALE_FACTOR_DIP,getResources().getDisplayMetrics());
+ boolean shouldScaleSmaller = screenHeight < mediumSizePx;
+
+ binding.include.welcomeIcon.setVisibility(shouldScaleSmaller ? View.GONE : View.VISIBLE);
+ }
+
private void toggleSelection(int inputPosition) {
mAdapter.toggleSelection(inputPosition);
int count = mAdapter.getSelectedItemCount();
@@ -864,11 +875,10 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
boolean hasStarred = false;
boolean hasUnstarred = false;
- if(!mArchiveMode) {
+ if (!mArchiveMode) {
unarchiveItem.setVisible(false);
archiveItem.setVisible(true);
- }
- else{
+ } else {
unarchiveItem.setVisible(true);
archiveItem.setVisible(false);
}
diff --git a/app/src/main/java/protect/card_locker/ScanActivity.java b/app/src/main/java/protect/card_locker/ScanActivity.java
index 13119515e..45f953dc2 100644
--- a/app/src/main/java/protect/card_locker/ScanActivity.java
+++ b/app/src/main/java/protect/card_locker/ScanActivity.java
@@ -9,6 +9,7 @@ import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
+import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue;
import android.view.KeyEvent;
@@ -49,6 +50,9 @@ public class ScanActivity extends CatimaAppCompatActivity {
private CustomBarcodeScannerBinding customBarcodeScannerBinding;
private static final String TAG = "Catima";
+ private static final int MEDIUM_SCALE_FACTOR_DIP = 460;
+ private static final int COMPAT_SCALE_FACTOR_DIP = 320;
+
private CaptureManager capture;
private DecoratedBarcodeView barcodeScannerView;
@@ -125,8 +129,10 @@ public class ScanActivity extends CatimaAppCompatActivity {
protected void onResume() {
super.onResume();
capture.onResume();
- if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED)
+ if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
showCameraPermissionMissingText(false);
+ }
+ scaleScreen();
}
@Override
@@ -236,10 +242,20 @@ public class ScanActivity extends CatimaAppCompatActivity {
private void showCameraPermissionMissingText(boolean show) {
customBarcodeScannerBinding.cameraPermissionDeniedLayout.cameraPermissionDeniedClickableArea.setOnClickListener(show ? v -> {
navigateToSystemPermissionSetting();
- } : null);
- customBarcodeScannerBinding.background.setBackgroundColor(show ? obtainThemeAttribute(R.attr.colorSurface) : Color.TRANSPARENT);
- customBarcodeScannerBinding.cameraPermissionDeniedLayout.getRoot().setVisibility(show ? View.VISIBLE : View.GONE);
+ } : null);
+ customBarcodeScannerBinding.cardInputContainer.setBackgroundColor(show ? obtainThemeAttribute(R.attr.colorSurface) : Color.TRANSPARENT);
+ customBarcodeScannerBinding.cameraPermissionDeniedLayout.getRoot().setVisibility(show ? View.VISIBLE : View.GONE);
+ }
+ private void scaleScreen() {
+ DisplayMetrics displayMetrics = new DisplayMetrics();
+ getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
+ int screenHeight = displayMetrics.heightPixels;
+ float mediumSizePx = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,MEDIUM_SCALE_FACTOR_DIP,getResources().getDisplayMetrics());
+ boolean shouldScaleSmaller = screenHeight < mediumSizePx;
+
+ customBarcodeScannerBinding.cameraPermissionDeniedLayout.cameraPermissionDeniedIcon.setVisibility(shouldScaleSmaller ? View.GONE : View.VISIBLE);
+ customBarcodeScannerBinding.cameraPermissionDeniedLayout.cameraPermissionDeniedTitle.setVisibility(shouldScaleSmaller ? View.GONE : View.VISIBLE);
}
private int obtainThemeAttribute(int attribute) {
diff --git a/app/src/main/res/layout/camera_permission_failed_layout.xml b/app/src/main/res/layout/camera_permission_failed_layout.xml
index daee5822e..2d47929a6 100644
--- a/app/src/main/res/layout/camera_permission_failed_layout.xml
+++ b/app/src/main/res/layout/camera_permission_failed_layout.xml
@@ -15,12 +15,14 @@
android:orientation="vertical">
-
+ android:orientation="vertical">
+ android:text="@string/noGiftCards" />
+ android:visibility="gone" />
+ android:visibility="gone" />
-
+ android:visibility="gone"
+ app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
+ app:spanCount="@integer/main_view_card_columns" />
diff --git a/app/src/main/res/layout/custom_barcode_scanner.xml b/app/src/main/res/layout/custom_barcode_scanner.xml
index 19c478c46..fe4b01175 100644
--- a/app/src/main/res/layout/custom_barcode_scanner.xml
+++ b/app/src/main/res/layout/custom_barcode_scanner.xml
@@ -1,29 +1,27 @@
-
-
+
+ app:zxing_framing_rect_height="250dp"
+ app:zxing_framing_rect_width="250dp" />
+ app:zxing_viewfinder_mask="@color/zxing_custom_viewfinder_mask" />
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/camera_permission_denied_layout"
+ app:layout_constraintVertical_bias="1.0" />