diff --git a/app/src/main/java/eu/faircode/email/DaoRule.java b/app/src/main/java/eu/faircode/email/DaoRule.java
index 7d862f6593..6dc2352b05 100644
--- a/app/src/main/java/eu/faircode/email/DaoRule.java
+++ b/app/src/main/java/eu/faircode/email/DaoRule.java
@@ -73,4 +73,7 @@ public interface DaoRule {
@Query("DELETE FROM rule WHERE id = :id")
void deleteRule(long id);
+
+ @Query("DELETE FROM rule WHERE folder = :folder")
+ void deleteRules(long folder);
}
diff --git a/app/src/main/java/eu/faircode/email/FragmentRules.java b/app/src/main/java/eu/faircode/email/FragmentRules.java
index 16fb12e0cb..91e1edd187 100644
--- a/app/src/main/java/eu/faircode/email/FragmentRules.java
+++ b/app/src/main/java/eu/faircode/email/FragmentRules.java
@@ -229,25 +229,30 @@ public class FragmentRules extends FragmentBase {
@Override
public void onPrepareOptionsMenu(@NonNull Menu menu) {
super.onPrepareOptionsMenu(menu);
- menu.findItem(R.id.menu_clear_spam).setVisible(!EntityFolder.JUNK.equals(type));
+ menu.findItem(R.id.menu_delete_junk).setVisible(!EntityFolder.JUNK.equals(type));
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
- case R.id.menu_clear_spam:
- onMenuClearSpam();
+ case R.id.menu_delete_all:
+ onMenuDelete(true);
+ return true;
+ case R.id.menu_delete_junk:
+ onMenuDelete(false);
return true;
-
default:
return super.onOptionsItemSelected(item);
}
}
- private void onMenuClearSpam() {
+ private void onMenuDelete(boolean all) {
Bundle aargs = new Bundle();
- aargs.putString("question", getString(R.string.title_rules_clear_confirm));
+ aargs.putString("question", getString(all
+ ? R.string.title_rules_delete_all_confirm
+ : R.string.title_rules_delete_junk_confirm));
aargs.putLong("folder", folder);
+ aargs.putBoolean("all", all);
FragmentDialogAsk ask = new FragmentDialogAsk();
ask.setArguments(aargs);
@@ -279,8 +284,15 @@ public class FragmentRules extends FragmentBase {
@Override
protected Void onExecute(Context context, Bundle args) throws Throwable {
long fid = args.getLong("folder");
+ boolean all = args.getBoolean("all");
DB db = DB.getInstance(context);
+
+ if (all) {
+ db.rule().deleteRules(fid);
+ return null;
+ }
+
EntityFolder folder = db.folder().getFolder(fid);
if (folder == null)
return null;
@@ -295,8 +307,9 @@ public class FragmentRules extends FragmentBase {
for (EntityRule rule : rules) {
JSONObject jaction = new JSONObject(rule.action);
- if (jaction.optInt("type", -1) == TYPE_MOVE &&
- jaction.optInt("target", -1) == junk.id)
+ int type = jaction.optInt("type", -1);
+ long target = jaction.optLong("target", -1);
+ if (type == TYPE_MOVE && target == junk.id)
db.rule().deleteRule(rule.id);
}
diff --git a/app/src/main/res/menu/menu_rules.xml b/app/src/main/res/menu/menu_rules.xml
index b9fdacdfa1..56631cfc81 100644
--- a/app/src/main/res/menu/menu_rules.xml
+++ b/app/src/main/res/menu/menu_rules.xml
@@ -9,7 +9,12 @@
app:showAsAction="collapseActionView|always" />
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 4ec07de3dc..c80d1a97b4 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1374,8 +1374,10 @@
Auto scroll
Clear
Search name or condition
- Clear spam rules
- Delete all rules moving messages to the spam folder?
+ Delete all rules
+ Delete spam rules
+ Delete all rules?
+ Delete all rules moving messages to the spam folder?
Debug info
Please describe the problem and indicate the time of the problem:
Please describe what you were doing when the app crashed: