From a485290956c50d601e6671879b01aaa3adcac181 Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 1 May 2022 12:52:10 +0200 Subject: [PATCH] Back to the future --- .../eu/faircode/email/FragmentMessages.java | 45 ++++++++++++++----- app/src/main/res/layout/fragment_messages.xml | 16 ++++++- 2 files changed, 49 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index debfeb520c..adbc02136d 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -291,6 +291,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. private FloatingActionButton fabMore; private TextView tvSelectedCount; private CardView cardMore; + private ImageButton ibInbox; private ImageButton ibArchive; private ImageButton ibJunk; private ImageButton ibTrash; @@ -556,6 +557,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. fabMore = view.findViewById(R.id.fabMore); tvSelectedCount = view.findViewById(R.id.tvSelectedCount); cardMore = view.findViewById(R.id.cardMore); + ibInbox = view.findViewById(R.id.ibInbox); ibArchive = view.findViewById(R.id.ibArchive); ibJunk = view.findViewById(R.id.ibJunk); ibTrash = view.findViewById(R.id.ibTrash); @@ -1285,6 +1287,13 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. } }); + ibInbox.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + onActionMoveSelection(EntityFolder.INBOX, false); + } + }); + ibArchive.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -5759,10 +5768,11 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. protected Boolean[] onExecute(Context context, Bundle args) { long[] ids = args.getLongArray("ids"); - Boolean[] result = new Boolean[3]; + Boolean[] result = new Boolean[4]; result[0] = false; result[1] = false; result[2] = false; + result[3] = false; DB db = DB.getInstance(context); @@ -5771,31 +5781,43 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. if (message == null) continue; + EntityAccount account = db.account().getAccount(message.account); + if (account == null || account.protocol != EntityAccount.TYPE_IMAP) + continue; + EntityFolder folder = db.folder().getFolder(message.folder); if (folder == null) continue; if (!result[0] && + (EntityFolder.ARCHIVE.equals(folder.type) || + EntityFolder.JUNK.equals(folder.type) || + EntityFolder.TRASH.equals(folder.type))) { + EntityFolder inbox = db.folder().getFolderByType(message.account, EntityFolder.INBOX); + result[0] = (inbox != null && inbox.selectable); + } + + if (!result[1] && !EntityFolder.ARCHIVE.equals(folder.type)) { EntityFolder archive = db.folder().getFolderByType(message.account, EntityFolder.ARCHIVE); - result[0] = (archive != null && archive.selectable); + result[1] = (archive != null && archive.selectable); } - if (!result[1] && + if (!result[2] && !EntityFolder.JUNK.equals(folder.type) && !EntityFolder.DRAFTS.equals(folder.type)) { EntityFolder junk = db.folder().getFolderByType(message.account, EntityFolder.JUNK); - result[1] = (junk != null && junk.selectable); + result[2] = (junk != null && junk.selectable); } - if (!result[2] && + if (!result[3] && !EntityFolder.TRASH.equals(folder.type) && !EntityFolder.JUNK.equals(folder.type)) { EntityFolder trash = db.folder().getFolderByType(message.account, EntityFolder.TRASH); - result[2] = (trash != null && trash.selectable); + result[3] = (trash != null && trash.selectable); } - if (result[0] && result[1] && result[2]) + if (result[0] && result[1] && result[2] || result[3]) break; } @@ -5804,11 +5826,12 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. @Override protected void onExecuted(Bundle args, Boolean[] result) { - ibArchive.setVisibility(result[0] ? View.VISIBLE : View.GONE); - ibJunk.setVisibility(result[1] ? View.VISIBLE : View.GONE); - ibTrash.setVisibility(result[2] ? View.VISIBLE : View.GONE); + ibInbox.setVisibility(result[0] ? View.VISIBLE : View.GONE); + ibArchive.setVisibility(result[1] ? View.VISIBLE : View.GONE); + ibJunk.setVisibility(result[2] ? View.VISIBLE : View.GONE); + ibTrash.setVisibility(result[3] ? View.VISIBLE : View.GONE); cardMore.setVisibility(fabMore.isOrWillBeShown() && - (result[0] || result[1] || result[2]) + (result[1] || result[2] || result[3] || result[4]) ? View.VISIBLE : View.GONE); } diff --git a/app/src/main/res/layout/fragment_messages.xml b/app/src/main/res/layout/fragment_messages.xml index 754dbbb0b3..f648931bae 100644 --- a/app/src/main/res/layout/fragment_messages.xml +++ b/app/src/main/res/layout/fragment_messages.xml @@ -516,6 +516,20 @@ android:layout_height="wrap_content" android:paddingHorizontal="6dp"> + +