From cdb1695faa459d60eff165d60be58c35fe571437 Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 23 Dec 2018 12:58:39 +0000 Subject: [PATCH] Added option to disable confirm moving messages --- .../eu/faircode/email/FragmentMessages.java | 93 ++++++++++--------- .../eu/faircode/email/FragmentOptions.java | 10 ++ app/src/main/res/layout/fragment_options.xml | 14 ++- app/src/main/res/values/strings.xml | 1 + 4 files changed, 75 insertions(+), 43 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index 6a49a504cf..b2fed12ee4 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -1132,10 +1132,8 @@ public class FragmentMessages extends FragmentEx { if (message != null) { List messages = db.message().getMessageByThread( message.account, message.thread, threading ? null : id, message.folder); - for (EntityMessage threaded : messages) { + for (EntityMessage threaded : messages) result.ids.add(threaded.id); - db.message().setMessageUiHide(threaded.id, true); - } } } @@ -1873,50 +1871,61 @@ public class FragmentMessages extends FragmentEx { if (result.target == null) return; - String title = getResources().getQuantityString( - R.plurals.title_moving_messages, result.ids.size(), - result.ids.size(), result.target.getDisplayName(getContext())); - new DialogBuilderLifecycle(getContext(), getViewLifecycleOwner()) - .setMessage(title) - .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - Bundle args = new Bundle(); - args.putSerializable("result", result); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); + if (prefs.getBoolean("automove", false)) + moveAskConfirmed(result); + else { + String title = getResources().getQuantityString( + R.plurals.title_moving_messages, result.ids.size(), + result.ids.size(), result.target.getDisplayName(getContext())); + new DialogBuilderLifecycle(getContext(), getViewLifecycleOwner()) + .setMessage(title) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + moveAskConfirmed(result); + } + }) + .setNegativeButton(android.R.string.cancel, null) + .show(); + } + } - // Move messages - new SimpleTask() { - @Override - protected Void onLoad(Context context, Bundle args) { - DB db = DB.getInstance(context); - try { - db.beginTransaction(); + private void moveAskConfirmed(MessageTarget result) { + Bundle args = new Bundle(); + args.putSerializable("result", result); - for (long id : result.ids) { - EntityMessage message = db.message().getMessage(id); - if (message != null) { - Log.i(Helper.TAG, "Move id=" + id + " target=" + result.target.name); - EntityFolder folder = db.folder().getFolderByName(message.account, result.target.name); - EntityOperation.queue(db, message, EntityOperation.MOVE, folder.id); - } - } + // Move messages + new SimpleTask() { + @Override + protected Void onLoad(Context context, Bundle args) { + DB db = DB.getInstance(context); + try { + MessageTarget result = (MessageTarget) args.getSerializable("result"); - db.setTransactionSuccessful(); - } finally { - db.endTransaction(); - } - return null; - } + db.beginTransaction(); - @Override - protected void onException(Bundle args, Throwable ex) { - Helper.unexpectedError(getContext(), getViewLifecycleOwner(), ex); - } - }.load(FragmentMessages.this, args); + for (long id : result.ids) { + EntityMessage message = db.message().getMessage(id); + if (message != null) { + Log.i(Helper.TAG, "Move id=" + id + " target=" + result.target.name); + EntityFolder folder = db.folder().getFolderByName(message.account, result.target.name); + EntityOperation.queue(db, message, EntityOperation.MOVE, folder.id); + } } - }) - .setNegativeButton(android.R.string.cancel, null) - .show(); + + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + } + return null; + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Helper.unexpectedError(getContext(), getViewLifecycleOwner(), ex); + } + }.load(FragmentMessages.this, args); } private void moveUndo(final MessageTarget result) { diff --git a/app/src/main/java/eu/faircode/email/FragmentOptions.java b/app/src/main/java/eu/faircode/email/FragmentOptions.java index cd5c3ee73d..83104426c7 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptions.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptions.java @@ -75,6 +75,7 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS private SwitchCompat swActionbar; private SwitchCompat swAutoclose; private SwitchCompat swCollapse; + private SwitchCompat swAutoMove; private SwitchCompat swConfirm; private SwitchCompat swSender; @@ -113,6 +114,7 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS swActionbar = view.findViewById(R.id.swActionbar); swAutoclose = view.findViewById(R.id.swAutoclose); swCollapse = view.findViewById(R.id.swCollapse); + swAutoMove = view.findViewById(R.id.swAutoMove); swConfirm = view.findViewById(R.id.swConfirm); swSender = view.findViewById(R.id.swSender); @@ -313,6 +315,14 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS } }); + swAutoMove.setChecked(!prefs.getBoolean("automove", false)); + swAutoMove.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { + prefs.edit().putBoolean("automove", !checked).apply(); + } + }); + swConfirm.setChecked(prefs.getBoolean("confirm", false)); swConfirm.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override diff --git a/app/src/main/res/layout/fragment_options.xml b/app/src/main/res/layout/fragment_options.xml index d9d2bed22f..325222e0cd 100644 --- a/app/src/main/res/layout/fragment_options.xml +++ b/app/src/main/res/layout/fragment_options.xml @@ -371,6 +371,18 @@ app:layout_constraintTop_toBottomOf="@id/tvAutocloseHint" app:switchPadding="12dp" /> + + Conversation action bar Automatically close conversations Collapse messages in conversations on \'back\' + Confirm moving messages Confirm actions that might leak privacy sensitive information Allow editing sender address Automatically download messages and attachments on a metered connection up to