diff --git a/app/src/main/java/eu/faircode/email/AdapterRule.java b/app/src/main/java/eu/faircode/email/AdapterRule.java index 612279dcfe..b70f9124cf 100644 --- a/app/src/main/java/eu/faircode/email/AdapterRule.java +++ b/app/src/main/java/eu/faircode/email/AdapterRule.java @@ -185,6 +185,7 @@ public class AdapterRule extends RecyclerView.Adapter { .setCheckable(true).setChecked(rule.enabled); popupMenu.getMenu().add(Menu.NONE, R.string.title_rule_execute, 2, R.string.title_rule_execute) .setEnabled(ActivityBilling.isPro(context)); + popupMenu.getMenu().add(Menu.NONE, R.string.title_copy, 3, R.string.title_copy); popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override @@ -193,9 +194,15 @@ public class AdapterRule extends RecyclerView.Adapter { case R.string.title_rule_enabled: onActionEnabled(!item.isChecked()); return true; + case R.string.title_rule_execute: onActionExecute(); return true; + + case R.string.title_copy: + onActionCopy(); + return true; + default: return false; } @@ -278,6 +285,16 @@ public class AdapterRule extends RecyclerView.Adapter { } }.execute(context, owner, args, "rule:execute"); } + + 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("copy", true)); + } }); popupMenu.show(); diff --git a/app/src/main/java/eu/faircode/email/FragmentRule.java b/app/src/main/java/eu/faircode/email/FragmentRule.java index 8b49953da2..875c1b4bed 100644 --- a/app/src/main/java/eu/faircode/email/FragmentRule.java +++ b/app/src/main/java/eu/faircode/email/FragmentRule.java @@ -40,7 +40,6 @@ import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.CheckBox; -import android.widget.CompoundButton; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ImageView; @@ -143,6 +142,7 @@ public class FragmentRule extends FragmentBase { private ArrayAdapter adapterAnswer; private long id = -1; + private long copy = -1; private long account = -1; private long folder = -1; private int color = Color.TRANSPARENT; @@ -162,7 +162,10 @@ public class FragmentRule extends FragmentBase { // Get arguments Bundle args = getArguments(); - id = args.getLong("id", -1); + if (args.getBoolean("copy")) + copy = args.getLong("id", -1); + else + id = args.getLong("id", -1); account = args.getLong("account", -1); folder = args.getLong("folder", -1); } @@ -591,7 +594,7 @@ public class FragmentRule extends FragmentBase { private void loadRule() { Bundle rargs = new Bundle(); - rargs.putLong("id", id); + rargs.putLong("id", copy < 0 ? id : copy); rargs.putString("sender", getArguments().getString("sender")); rargs.putString("recipient", getArguments().getString("recipient")); rargs.putString("subject", getArguments().getString("subject"));