From 92b8d690e60976882888664d12fa862aedeb6c19 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 11 Aug 2021 11:01:15 +0200 Subject: [PATCH] Added edit folder properties menu to message list --- .../eu/faircode/email/FragmentMessages.java | 47 +++++++++++++++++++ app/src/main/res/menu/menu_messages.xml | 7 +++ 2 files changed, 54 insertions(+) diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index 106196bafd..a5e3f1d2da 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -4455,6 +4455,8 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. menu.findItem(R.id.menu_select_found).setVisible(viewType == AdapterMessage.ViewType.SEARCH); menu.findItem(R.id.menu_mark_all_read).setVisible(folder); + menu.findItem(R.id.menu_edit_properties).setVisible(viewType == AdapterMessage.ViewType.FOLDER && !outbox); + menu.findItem(R.id.menu_sync_more).setVisible(folder); menu.findItem(R.id.menu_force_sync).setVisible(viewType == AdapterMessage.ViewType.UNIFIED); menu.findItem(R.id.menu_force_send).setVisible(outbox); @@ -4566,6 +4568,9 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. } else if (itemId == R.id.menu_force_send) { onSwipeRefresh(); return true; + } else if (itemId == R.id.menu_edit_properties) { + onMenuEditProperties(); + return true; } return super.onOptionsItemSelected(item); } @@ -4905,6 +4910,48 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. ToastEx.makeText(getContext(), R.string.title_executing, Toast.LENGTH_LONG).show(); } + private void onMenuEditProperties() { + Bundle args = new Bundle(); + args.putLong("folder", folder); + + new SimpleTask() { + @Override + protected EntityFolder onExecute(Context context, Bundle args) throws Throwable { + long fid = args.getLong("folder"); + + DB db = DB.getInstance(context); + EntityFolder folder = db.folder().getFolder(fid); + if (folder == null) + return null; + + EntityAccount account = db.account().getAccount(folder.account); + if (account == null) + return null; + + args.putBoolean("imap", account.protocol == EntityAccount.TYPE_IMAP); + + return folder; + } + + @Override + protected void onExecuted(Bundle args, EntityFolder folder) { + if (folder == null) + return; + + LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(getContext()); + lbm.sendBroadcast( + new Intent(ActivityView.ACTION_EDIT_FOLDER) + .putExtra("id", folder.id) + .putExtra("imap", args.getBoolean("imap"))); + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Log.unexpectedError(getParentFragmentManager(), ex); + } + }.execute(this, args, "folder:properties"); + } + private void updateState(List folders) { Log.i("Folder state updated count=" + folders.size()); diff --git a/app/src/main/res/menu/menu_messages.xml b/app/src/main/res/menu/menu_messages.xml index 21184c5221..3d7a9fc411 100644 --- a/app/src/main/res/menu/menu_messages.xml +++ b/app/src/main/res/menu/menu_messages.xml @@ -157,4 +157,11 @@ android:id="@+id/menu_force_send" android:title="@string/title_force_send" app:showAsAction="never" /> + + + +