diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogOperationsDelete.java b/app/src/main/java/eu/faircode/email/FragmentDialogOperationsDelete.java index efa28bcdfa..c7a3c964c5 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogOperationsDelete.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogOperationsDelete.java @@ -46,6 +46,7 @@ public class FragmentDialogOperationsDelete extends FragmentDialogBase { final CheckBox cbMove = dview.findViewById(R.id.cbMove); final CheckBox cbFlag = dview.findViewById(R.id.cbFlag); final CheckBox cbDelete = dview.findViewById(R.id.cbDelete); + final CheckBox cbSend = dview.findViewById(R.id.cbSend); return new AlertDialog.Builder(context) .setView(dview) @@ -58,6 +59,7 @@ public class FragmentDialogOperationsDelete extends FragmentDialogBase { args.putBoolean("move", cbMove.isChecked()); args.putBoolean("flag", cbFlag.isChecked()); args.putBoolean("delete", cbDelete.isChecked()); + args.putBoolean("send", cbSend.isChecked()); new SimpleTask() { private Toast toast = null; @@ -81,6 +83,7 @@ public class FragmentDialogOperationsDelete extends FragmentDialogBase { boolean move = args.getBoolean("move"); boolean flag = args.getBoolean("flag"); boolean delete = args.getBoolean("delete"); + boolean send = args.getBoolean("send"); int deleted = 0; DB db = DB.getInstance(context); @@ -143,6 +146,14 @@ public class FragmentDialogOperationsDelete extends FragmentDialogBase { db.endTransaction(); } + if (send) { + List ops = db.operation().getOperations(EntityOperation.SEND); + for (EntityOperation op : ops) { + ActivityCompose.undoSend(op.message, context); + deleted++; + } + } + if (deleted > 0) ServiceSynchronize.reload(context, null, true, "deleted operations"); diff --git a/app/src/main/res/layout/dialog_delete_operations.xml b/app/src/main/res/layout/dialog_delete_operations.xml index d67ba01a89..7b0c2349bd 100644 --- a/app/src/main/res/layout/dialog_delete_operations.xml +++ b/app/src/main/res/layout/dialog_delete_operations.xml @@ -124,5 +124,28 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/cbDelete" /> + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6e18e41bd5..17e611ce9f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1379,6 +1379,7 @@ Move operations Flag operations Delete operations + Send operations %1$d operations deleted Delete all local contacts? All contacts shown and not shown will be deleted, even if searched!