From b056a2f8d97758e80bee70be660f72137a7083c9 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 14 May 2021 07:28:03 +0200 Subject: [PATCH] Double confirm permanent deletion --- .../java/eu/faircode/email/FragmentDialogAsk.java | 9 ++++++++- .../java/eu/faircode/email/FragmentMessages.java | 12 ++++-------- app/src/main/res/layout/dialog_ask_again.xml | 12 +++++++++++- app/src/main/res/values/strings.xml | 2 +- 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogAsk.java b/app/src/main/java/eu/faircode/email/FragmentDialogAsk.java index 31431f9b45..3d4b35868a 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogAsk.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogAsk.java @@ -44,6 +44,7 @@ public class FragmentDialogAsk extends FragmentDialogBase { Bundle args = getArguments(); String question = args.getString("question"); String remark = args.getString("remark"); + String confirm = args.getString("confirm"); String notagain = args.getString("notagain"); boolean warning = args.getBoolean("warning"); @@ -53,11 +54,14 @@ public class FragmentDialogAsk extends FragmentDialogBase { View dview = LayoutInflater.from(context).inflate(R.layout.dialog_ask_again, null); TextView tvMessage = dview.findViewById(R.id.tvMessage); TextView tvRemark = dview.findViewById(R.id.tvRemark); + CheckBox cbConfirm = dview.findViewById(R.id.cbConfirm); CheckBox cbNotAgain = dview.findViewById(R.id.cbNotAgain); tvMessage.setText(question); tvRemark.setText(remark); tvRemark.setVisibility(remark == null ? View.GONE : View.VISIBLE); + cbConfirm.setText(confirm); + cbConfirm.setVisibility(confirm == null ? View.GONE : View.VISIBLE); cbNotAgain.setVisibility(notagain == null ? View.GONE : View.VISIBLE); if (warning) { @@ -82,7 +86,10 @@ public class FragmentDialogAsk extends FragmentDialogBase { .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - sendResult(Activity.RESULT_OK); + if (confirm == null || cbConfirm.isChecked()) + sendResult(Activity.RESULT_OK); + else + sendResult(Activity.RESULT_CANCELED); } }) .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index 274c612601..a04ddb1d31 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -338,7 +338,6 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. private NumberFormat NF = NumberFormat.getNumberInstance(); private static final int MAX_MORE = 100; // messages - private static final int MAX_PERMANENT_DELETE = 10; // messages private static final int MAX_SEND_RAW = 50; // messages private static final int SWIPE_DISABLE_SELECT_DURATION = 1500; // milliseconds private static final float LUMINANCE_THRESHOLD = 0.7f; @@ -2951,16 +2950,13 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. popupMenu.getMenu().add(Menu.NONE, R.string.title_trash, order++, R.string.title_trash) .setIcon(R.drawable.twotone_delete_24); - if (result.isTrash || !result.hasTrash || result.isJunk || - ids.length < MAX_PERMANENT_DELETE || true) { // is trash or no trash or is junk + if (result.isTrash || !result.hasTrash || result.isJunk || true) { // is trash or no trash or is junk SpannableStringBuilder del = new SpannableStringBuilder(); del.append(getString(R.string.title_delete_permanently)); int pos = del.length(); - del.append(" (<").append(NF.format(MAX_PERMANENT_DELETE)).append(')'); del.setSpan(new RelativeSizeSpan(0.7f), pos, del.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); popupMenu.getMenu().add(Menu.NONE, R.string.title_delete_permanently, order++, del) - .setIcon(R.drawable.twotone_delete_forever_24) - .setEnabled(ids.length < MAX_PERMANENT_DELETE); + .setIcon(R.drawable.twotone_delete_forever_24); } if (result.accounts.size() > 0 /* IMAP */ && ids.length < MAX_SEND_RAW) @@ -3363,7 +3359,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. Bundle aargs = new Bundle(); aargs.putString("question", getResources() .getQuantityString(R.plurals.title_deleting_messages, ids.size(), ids.size())); - aargs.putString("remark", getString(R.string.title_no_undo)); + aargs.putString("confirm", getString(R.string.title_no_undo)); aargs.putLongArray("ids", Helper.toLongArray(ids)); aargs.putBoolean("warning", true); @@ -3744,7 +3740,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. Bundle aargs = new Bundle(); aargs.putString("question", getResources() .getQuantityString(R.plurals.title_deleting_messages, ids.size(), ids.size())); - aargs.putString("remark", getString(R.string.title_no_undo)); + aargs.putString("confirm", getString(R.string.title_no_undo)); aargs.putLongArray("ids", Helper.toLongArray(ids)); aargs.putBoolean("warning", true); diff --git a/app/src/main/res/layout/dialog_ask_again.xml b/app/src/main/res/layout/dialog_ask_again.xml index c3cebd9cf6..e2aaa7ab54 100644 --- a/app/src/main/res/layout/dialog_ask_again.xml +++ b/app/src/main/res/layout/dialog_ask_again.xml @@ -31,6 +31,16 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tvMessage" /> + + + app:layout_constraintTop_toBottomOf="@id/cbConfirm" /> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 057910034a..573c16c386 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -949,7 +949,7 @@ Move to %1$s … Treat as spam Delete permanently - This cannot be undone! + I understand this cannot be undone Snooze … Archive Reply