From 2135d9bfa561e7373899e3b3c46f56769700a246 Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 5 May 2019 19:01:31 +0200 Subject: [PATCH] Moved snooze to action bar --- .../eu/faircode/email/AdapterMessage.java | 68 ---------------- .../eu/faircode/email/FragmentMessages.java | 80 ++++++++++++++++++- .../main/res/menu-ldrtl/action_messages.xml | 5 ++ app/src/main/res/menu/action_messages.xml | 5 ++ app/src/main/res/menu/menu_message.xml | 4 - 5 files changed, 88 insertions(+), 74 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index 5dcbf7c5be..baf9d98e11 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -2137,71 +2137,6 @@ public class AdapterMessage extends RecyclerView.Adapter() { - @Override - protected Long onExecute(Context context, Bundle args) { - long id = args.getLong("id"); - Long wakeup = args.getLong("wakeup"); - if (wakeup < 0) - wakeup = null; - - DB db = DB.getInstance(context); - try { - db.beginTransaction(); - - EntityMessage message = db.message().getMessage(id); - if (message != null) { - List messages = db.message().getMessageByThread( - message.account, message.thread, threading ? null : id, message.folder); - for (EntityMessage threaded : messages) { - db.message().setMessageSnoozed(threaded.id, wakeup); - EntityMessage.snooze(context, threaded.id, wakeup); - } - } - - db.setTransactionSuccessful(); - } finally { - db.endTransaction(); - } - - return wakeup; - } - - @Override - protected void onExecuted(Bundle args, Long wakeup) { - if (wakeup != null) - properties.finish(); - } - - @Override - protected void onException(Bundle args, Throwable ex) { - Helper.unexpectedError(context, owner, ex); - } - }.execute(context, owner, args, "message:snooze"); - } - - @Override - public void onDismiss() { - } - }); - - } - private void onMenuCopy(final ActionData data) { Bundle args = new Bundle(); args.putLong("id", data.message.id); @@ -2753,9 +2688,6 @@ public class AdapterMessage extends RecyclerView.Adapter() { + @Override + protected Long onExecute(Context context, Bundle args) { + long account = args.getLong("account"); + String thread = args.getString("thread"); + long id = args.getLong("id"); + Long wakeup = args.getLong("wakeup"); + if (wakeup < 0) + wakeup = null; + + DB db = DB.getInstance(context); + try { + db.beginTransaction(); + + List messages = db.message().getMessageByThread( + account, thread, threading ? null : id, null); + for (EntityMessage threaded : messages) { + db.message().setMessageSnoozed(threaded.id, wakeup); + EntityMessage.snooze(context, threaded.id, wakeup); + EntityOperation.queue(context, db, threaded, EntityOperation.SEEN, true); + } + + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + } + + return wakeup; + } + + @Override + protected void onExecuted(Bundle args, Long wakeup) { + if (wakeup != null) + finish(); + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Helper.unexpectedError(getContext(), getViewLifecycleOwner(), ex); + } + }.execute(getContext(), getViewLifecycleOwner(), args, "message:snooze"); + } + + @Override + public void onDismiss() { + } + }); + } + private void onMore() { Bundle args = new Bundle(); args.putLongArray("ids", getSelection()); @@ -2530,6 +2600,7 @@ public class FragmentMessages extends FragmentBase { account, thread, threading ? null : id, null); boolean trashable = false; + boolean snoozable = false; boolean archivable = false; for (EntityMessage message : messages) { EntityFolder folder = db.folder().getFolder(message.folder); @@ -2539,6 +2610,10 @@ public class FragmentMessages extends FragmentBase { !EntityFolder.TRASH.equals(folder.type) && !EntityFolder.JUNK.equals(folder.type)) trashable = true; + + if (!EntityFolder.OUTBOX.equals(folder.type)) + snoozable = true; + if (!EntityFolder.isOutgoing(folder.type) && !EntityFolder.TRASH.equals(folder.type) && !EntityFolder.JUNK.equals(folder.type) && @@ -2552,13 +2627,14 @@ public class FragmentMessages extends FragmentBase { trashable = (trashable && trash != null); archivable = (archivable && archive != null); - return new Boolean[]{trashable, archivable}; + return new Boolean[]{trashable, snoozable, archivable}; } @Override protected void onExecuted(Bundle args, Boolean[] data) { bottom_navigation.getMenu().findItem(R.id.action_delete).setVisible(data[0]); - bottom_navigation.getMenu().findItem(R.id.action_archive).setVisible(data[1]); + bottom_navigation.getMenu().findItem(R.id.action_snooze).setVisible(data[1]); + bottom_navigation.getMenu().findItem(R.id.action_archive).setVisible(data[2]); bottom_navigation.setVisibility(View.VISIBLE); } diff --git a/app/src/main/res/menu-ldrtl/action_messages.xml b/app/src/main/res/menu-ldrtl/action_messages.xml index 0961543973..2e9754a53a 100644 --- a/app/src/main/res/menu-ldrtl/action_messages.xml +++ b/app/src/main/res/menu-ldrtl/action_messages.xml @@ -11,6 +11,11 @@ android:icon="@drawable/baseline_delete_24" android:title="@string/title_trash" /> + + + + - -