From 61ad1cc974f8d3ba0f8c3e145044a5737db35a87 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 31 Mar 2023 08:43:11 +0200 Subject: [PATCH] Added copy rule to account/folder --- .../java/eu/faircode/email/AdapterRule.java | 16 ++++----- .../java/eu/faircode/email/FragmentRules.java | 35 ++++++++++++++++++- 2 files changed, 42 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/AdapterRule.java b/app/src/main/java/eu/faircode/email/AdapterRule.java index 20cb83f84e..94b5417cf2 100644 --- a/app/src/main/java/eu/faircode/email/AdapterRule.java +++ b/app/src/main/java/eu/faircode/email/AdapterRule.java @@ -475,14 +475,14 @@ public class AdapterRule extends RecyclerView.Adapter { } private void onActionCopy() { - LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(context); - lbm.sendBroadcast( - new Intent(ActivityView.ACTION_EDIT_RULE) - .putExtra("id", rule.id) - .putExtra("account", rule.account) - .putExtra("folder", rule.folder) - .putExtra("protocol", protocol) - .putExtra("copy", true)); + Bundle args = new Bundle(); + args.putLong("rule", rule.id); + args.putInt("type", protocol); // account selector + + FragmentDialogSelectAccount fragment = new FragmentDialogSelectAccount(); + fragment.setArguments(args); + fragment.setTargetFragment(parentFragment, FragmentRules.REQUEST_RULE_COPY_ACCOUNT); + fragment.show(parentFragment.getParentFragmentManager(), "rule:copy:account"); } }); diff --git a/app/src/main/java/eu/faircode/email/FragmentRules.java b/app/src/main/java/eu/faircode/email/FragmentRules.java index c77a95cf1c..7719ceba30 100644 --- a/app/src/main/java/eu/faircode/email/FragmentRules.java +++ b/app/src/main/java/eu/faircode/email/FragmentRules.java @@ -46,6 +46,7 @@ import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.Observer; import androidx.lifecycle.OnLifecycleEvent; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; import androidx.preference.PreferenceManager; import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; @@ -87,7 +88,9 @@ public class FragmentRules extends FragmentBase { private static final int REQUEST_EXPORT = 1; private static final int REQUEST_IMPORT = 2; static final int REQUEST_MOVE = 3; - private static final int REQUEST_CLEAR = 4; + static final int REQUEST_RULE_COPY_ACCOUNT = 4; + static final int REQUEST_RULE_COPY_FOLDER = 5; + private static final int REQUEST_CLEAR = 6; @Override public void onCreate(Bundle savedInstanceState) { @@ -210,6 +213,14 @@ public class FragmentRules extends FragmentBase { if (resultCode == RESULT_OK && data != null) onMove(data.getBundleExtra("args")); break; + case REQUEST_RULE_COPY_ACCOUNT: + if (resultCode == RESULT_OK && data != null) + onRuleCopyAccount(data.getBundleExtra("args")); + break; + case REQUEST_RULE_COPY_FOLDER: + if (resultCode == RESULT_OK && data != null) + onRuleCopyFolder(data.getBundleExtra("args")); + break; case REQUEST_CLEAR: if (resultCode == RESULT_OK && data != null) onClear(data.getBundleExtra("args")); @@ -605,6 +616,28 @@ public class FragmentRules extends FragmentBase { }.execute(this, args, "rule:move"); } + private void onRuleCopyAccount(Bundle args) { + args.putString("title", getString(R.string.title_copy_to)); + args.putLongArray("disabled", new long[0]); + args.putBoolean("cancopy", false); + + FragmentDialogSelectFolder fragment = new FragmentDialogSelectFolder(); + fragment.setArguments(args); + fragment.setTargetFragment(this, REQUEST_RULE_COPY_FOLDER); + fragment.show(getParentFragmentManager(), "rule:copy:folder"); + } + + private void onRuleCopyFolder(Bundle args) { + LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(getContext()); + lbm.sendBroadcast( + new Intent(ActivityView.ACTION_EDIT_RULE) + .putExtra("id", args.getLong("rule")) + .putExtra("account", args.getLong("account")) + .putExtra("folder", args.getLong("folder")) + .putExtra("protocol", args.getInt("protocol")) + .putExtra("copy", true)); + } + private void onClear(Bundle args) { new SimpleTask() { @Override