From 412077e2ab24ada8b2277a4c3d05b648b1941780 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Wed, 17 Sep 2025 23:37:35 +0200 Subject: [PATCH] Remove rotation hack and add warning to not rotate to import/export This is suboptimal, but rotation support is being removed by Google for over 600dp screen sizes --- app/src/main/AndroidManifest.xml | 2 - .../protect/card_locker/ImportExportTask.java | 45 +++++++++++++++---- app/src/main/res/values/strings.xml | 1 + 3 files changed, 38 insertions(+), 10 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 785907173..dc7fc0d56 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -144,12 +144,10 @@ android:name=".preferences.SettingsActivity" android:label="@string/settings" android:theme="@style/AppTheme.NoActionBar" /> - diff --git a/app/src/main/java/protect/card_locker/ImportExportTask.java b/app/src/main/java/protect/card_locker/ImportExportTask.java index 1b46ffe00..d3dde8fb7 100644 --- a/app/src/main/java/protect/card_locker/ImportExportTask.java +++ b/app/src/main/java/protect/card_locker/ImportExportTask.java @@ -1,12 +1,17 @@ package protect.card_locker; import android.app.Activity; -import android.app.ProgressDialog; import android.content.Context; -import android.content.DialogInterface; import android.database.sqlite.SQLiteDatabase; import android.util.Log; -import android.widget.Toast; +import android.view.ViewGroup; +import android.widget.LinearLayout; +import android.widget.ProgressBar; +import android.widget.TextView; + +import androidx.appcompat.app.AlertDialog; + +import com.google.android.material.dialog.MaterialAlertDialogBuilder; import java.io.IOException; import java.io.InputStream; @@ -32,7 +37,7 @@ public class ImportExportTask implements CompatCallable { private char[] password; private TaskCompleteListener listener; - private ProgressDialog progress; + private AlertDialog progress; /** * Constructor which will setup a task for exporting to the given file @@ -88,12 +93,36 @@ public class ImportExportTask implements CompatCallable { } public void onPreExecute() { - progress = new ProgressDialog(activity); - progress.setTitle(doImport ? R.string.importing : R.string.exporting); + MaterialAlertDialogBuilder progressDialogBuilder = new MaterialAlertDialogBuilder(activity); + progressDialogBuilder.setCancelable(false); // Don't cancel if user taps next to dialog + progressDialogBuilder.setTitle(doImport ? R.string.importing : R.string.exporting); - progress.setOnCancelListener(dialog -> cancel()); - progress.setOnDismissListener(dialog -> cancel()); + // Create components + TextView progressDialogTextView = new TextView(activity); + progressDialogTextView.setText(R.string.pleaseDoNotRotateTheDevice); + ProgressBar progressDialogProgressBar = new ProgressBar(activity); + progressDialogProgressBar.setIndeterminate(true); + // Create LinearLayout (to put the components below each other) + LinearLayout progressDialogLayout = new LinearLayout(activity); + progressDialogLayout.setOrientation(LinearLayout.VERTICAL); + LinearLayout.LayoutParams progressDialogLayoutParams = new LinearLayout.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT + ); + int contentPadding = activity.getResources().getDimensionPixelSize(R.dimen.alert_dialog_content_padding); + progressDialogLayoutParams.setMargins(contentPadding, contentPadding / 2, contentPadding, 0); + + // Put components in layout + progressDialogLayout.addView(progressDialogTextView, progressDialogLayoutParams); + progressDialogLayout.addView(progressDialogProgressBar, progressDialogLayoutParams); + + // Create and show dialog + progressDialogBuilder.setView(progressDialogLayout); + progressDialogBuilder.setNeutralButton(R.string.cancel, (dialogInterface, i) -> cancel()); + progressDialogBuilder.setOnCancelListener(dialogInterface -> cancel()); + progressDialogBuilder.setOnDismissListener(dialogInterface -> cancel()); + progress = progressDialogBuilder.create(); progress.show(); } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6521337f5..b3da549f3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -352,4 +352,5 @@ After you add some loyalty cards in Catima, they will appear here. If you have cards, make sure they are not all archived. Card %d Card %d (%s) + Please do not rotate the device, as this will cancel the action