From 563f2a195141451e964a0a782608fca4299c7089 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 29 Apr 2024 18:56:44 +0200 Subject: [PATCH] Added option to disable swiping all messages to trash --- .../java/eu/faircode/email/FragmentMessages.java | 7 ++++++- .../eu/faircode/email/FragmentOptionsBehavior.java | 12 +++++++++++- .../main/res/layout/fragment_options_behavior.xml | 13 ++++++++++++- app/src/main/res/values/strings.xml | 1 + 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index 2023d2a20f..326e75ffbe 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -342,6 +342,7 @@ public class FragmentMessages extends FragmentBase private boolean seekbar; private boolean move_thread_all; private boolean move_thread_sent; + private boolean swipe_trash_all; private boolean actionbar; private int actionbar_delete_id; private int actionbar_archive_id; @@ -496,6 +497,7 @@ public class FragmentMessages extends FragmentBase seekbar = prefs.getBoolean("seekbar", false); move_thread_all = prefs.getBoolean("move_thread_all", false); move_thread_sent = (move_thread_all || prefs.getBoolean("move_thread_sent", false)); + swipe_trash_all = prefs.getBoolean("swipe_trash_all", true); actionbar = prefs.getBoolean("actionbar", true); boolean actionbar_swap = prefs.getBoolean("actionbar_swap", false); actionbar_delete_id = (actionbar_swap ? R.id.action_archive : R.id.action_delete); @@ -3657,6 +3659,7 @@ public class FragmentMessages extends FragmentBase args.putBoolean("thread", viewType != AdapterMessage.ViewType.THREAD); args.putLong("target", target); args.putBoolean("filter_archive", filter_archive); + args.putBoolean("swipe_trash_all", swipe_trash_all); new SimpleTask>() { @Override @@ -3665,6 +3668,7 @@ public class FragmentMessages extends FragmentBase boolean thread = args.getBoolean("thread"); long tid = args.getLong("target"); boolean filter_archive = args.getBoolean("filter_archive"); + boolean swipe_trash_all = args.getBoolean("swipe_trash_all"); ArrayList result = new ArrayList<>(); @@ -3695,7 +3699,8 @@ public class FragmentMessages extends FragmentBase List messages = db.message().getMessagesByThread( message.account, message.thread, threading && thread ? null : id, - !EntityFolder.DRAFTS.equals(baseFolder.type) && + swipe_trash_all && + !EntityFolder.DRAFTS.equals(baseFolder.type) && EntityFolder.TRASH.equals(targetFolder.type) ? null : message.folder); for (EntityMessage threaded : messages) { EntityFolder sourceFolder = db.folder().getFolder(threaded.folder); diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java b/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java index 167911160a..e00cf06c38 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java @@ -108,6 +108,7 @@ public class FragmentOptionsBehavior extends FragmentBase implements SharedPrefe private SwitchCompat swSwipeReply; private SwitchCompat swMoveThreadAll; private SwitchCompat swMoveThreadSent; + private SwitchCompat swSwipeTrashAll; private Button btnDefaultFolder; private TextView tvDefaultFolder; @@ -129,7 +130,7 @@ public class FragmentOptionsBehavior extends FragmentBase implements SharedPrefe "undo_timeout", "autoread", "flag_snoozed", "autounflag", "auto_important", "reset_importance", "reset_snooze", "auto_block_sender", "auto_hide_answer", "swipe_reply", - "move_thread_all", "move_thread_sent", + "move_thread_all", "move_thread_sent", "swipe_trash_all", "default_folder" )); @@ -194,6 +195,7 @@ public class FragmentOptionsBehavior extends FragmentBase implements SharedPrefe swSwipeReply = view.findViewById(R.id.swSwipeReply); swMoveThreadAll = view.findViewById(R.id.swMoveThreadAll); swMoveThreadSent = view.findViewById(R.id.swMoveThreadSent); + swSwipeTrashAll = view.findViewById(R.id.swSwipeTrashAll); btnDefaultFolder = view.findViewById(R.id.btnDefaultFolder); tvDefaultFolder = view.findViewById(R.id.tvDefaultFolder); @@ -613,6 +615,13 @@ public class FragmentOptionsBehavior extends FragmentBase implements SharedPrefe } }); + swSwipeTrashAll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { + prefs.edit().putBoolean("swipe_trash_all", checked).apply(); + } + }); + Intent tree = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); Helper.openAdvanced(getContext(), tree); PackageManager pm = getContext().getPackageManager(); @@ -787,6 +796,7 @@ public class FragmentOptionsBehavior extends FragmentBase implements SharedPrefe swMoveThreadAll.setChecked(prefs.getBoolean("move_thread_all", false)); swMoveThreadSent.setChecked(prefs.getBoolean("move_thread_sent", false)); swMoveThreadSent.setEnabled(!swMoveThreadAll.isChecked()); + swSwipeTrashAll.setChecked(prefs.getBoolean("swipe_trash_all", true)); tvDefaultFolder.setText(prefs.getString("default_folder", null)); } catch (Throwable ex) { diff --git a/app/src/main/res/layout/fragment_options_behavior.xml b/app/src/main/res/layout/fragment_options_behavior.xml index 5bcb48809f..1866fde415 100644 --- a/app/src/main/res/layout/fragment_options_behavior.xml +++ b/app/src/main/res/layout/fragment_options_behavior.xml @@ -890,6 +890,17 @@ app:layout_constraintTop_toBottomOf="@id/swMoveThreadAll" app:switchPadding="12dp" /> + +