diff --git a/app/src/main/java/eu/faircode/email/AdapterFolder.java b/app/src/main/java/eu/faircode/email/AdapterFolder.java index fb2d231b..5755464b 100644 --- a/app/src/main/java/eu/faircode/email/AdapterFolder.java +++ b/app/src/main/java/eu/faircode/email/AdapterFolder.java @@ -20,6 +20,7 @@ package eu.faircode.email; */ import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.graphics.Typeface; import android.os.Bundle; @@ -40,6 +41,7 @@ import java.util.List; import java.util.Locale; import androidx.annotation.NonNull; +import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.PopupMenu; import androidx.lifecycle.LifecycleOwner; import androidx.localbroadcastmanager.content.LocalBroadcastManager; @@ -68,7 +70,8 @@ public class AdapterFolder extends RecyclerView.Adapter() { + @Override + protected Void onLoad(Context context, Bundle args) { + long id = args.getLong("id"); + + DB db = DB.getInstance(context); + try { + db.beginTransaction(); + + for (EntityMessage message : db.message().getMessageByFolder(id)) { + db.message().setMessageUiHide(message.id, true); + EntityOperation.queue(db, message, EntityOperation.DELETE); + } + + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + } + + EntityOperation.process(context); + + return null; + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Helper.unexpectedError(context, ex); + } + }.load(context, owner, args); + } + }) + .setNegativeButton(android.R.string.cancel, null) + .show(); + break; + case action_edit_properties: lbm.sendBroadcast( new Intent(ActivityView.ACTION_EDIT_FOLDER) diff --git a/app/src/main/java/eu/faircode/email/DaoMessage.java b/app/src/main/java/eu/faircode/email/DaoMessage.java index b937b8c2..932243fa 100644 --- a/app/src/main/java/eu/faircode/email/DaoMessage.java +++ b/app/src/main/java/eu/faircode/email/DaoMessage.java @@ -133,6 +133,11 @@ public interface DaoMessage { " AND folder.type <> '" + EntityFolder.DRAFTS + "'") List getMessageByThread(long account, String thread); + @Query("SELECT *" + + " FROM message" + + " WHERE folder = :folder") + List getMessageByFolder(long folder); + @Query("SELECT id FROM message" + " WHERE folder = :folder" + " ORDER BY message.received DESC, message.sent DESC") diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index afa107a5..1a5ea7e5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -132,8 +132,11 @@ Synchronize now Delete local messages + Empty trash Edit properties + Delete all trashed messages permanently? + Folder name Synchronize (receive messages) Show in unified inbox