From 715170fc917e3d2c8e9ccaa85297206ba70b49d0 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 4 Mar 2020 11:37:11 +0100 Subject: [PATCH] Filtered archived messages from conversations --- app/src/main/java/eu/faircode/email/ActivityView.java | 1 + .../main/java/eu/faircode/email/AdapterMessage.java | 1 + app/src/main/java/eu/faircode/email/DaoMessage.java | 6 +++++- .../main/java/eu/faircode/email/FragmentMessages.java | 4 +++- .../java/eu/faircode/email/ViewModelMessages.java | 11 ++++++++--- 5 files changed, 18 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ActivityView.java b/app/src/main/java/eu/faircode/email/ActivityView.java index afa382fa6d..8a03743458 100644 --- a/app/src/main/java/eu/faircode/email/ActivityView.java +++ b/app/src/main/java/eu/faircode/email/ActivityView.java @@ -1160,6 +1160,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB args.putLong("account", intent.getLongExtra("account", -1)); args.putString("thread", intent.getStringExtra("thread")); args.putLong("id", intent.getLongExtra("id", -1)); + args.putBoolean("filter_archive", intent.getBooleanExtra("filter_archive", true)); args.putBoolean("found", found); FragmentMessages fragment = new FragmentMessages(); diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index b50f701d0e..f176458512 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -2385,6 +2385,7 @@ public class AdapterMessage extends RecyclerView.Adapter '" + EntityFolder.ARCHIVE + "')" + " AND (NOT message.ui_hide OR :debug)" + " ORDER BY CASE WHEN :ascending THEN message.received ELSE -message.received END" + ", CASE" + @@ -193,7 +194,10 @@ public interface DaoMessage { " WHEN folder.type = '" + EntityFolder.ARCHIVE + "' THEN 9" + " ELSE 999 END") // The folder type sort order should match the duplicate algorithm - DataSource.Factory pagedThread(long account, String thread, Long id, boolean ascending, boolean debug); + DataSource.Factory pagedThread( + long account, String thread, Long id, + boolean filter_archive, + boolean ascending, boolean debug); @Query("SELECT account.name AS accountName" + ", COUNT(message.id) AS count" + diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index b68966de7a..08e2b3ad28 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -246,6 +246,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. private boolean server; private String thread; private long id; + private boolean filter_archive; private boolean found; private String query; private boolean pane; @@ -349,6 +350,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. server = args.getBoolean("server", false); thread = args.getString("thread"); id = args.getLong("id", -1); + filter_archive = args.getBoolean("filter_archive", true); found = args.getBoolean("found", false); query = args.getString("query"); pane = args.getBoolean("pane", false); @@ -3711,7 +3713,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. ViewModelMessages.Model vmodel = model.getModel( getContext(), getViewLifecycleOwner(), - viewType, type, account, folder, thread, id, query, server); + viewType, type, account, folder, thread, id, filter_archive, query, server); vmodel.setCallback(getViewLifecycleOwner(), callback); vmodel.setObserver(getViewLifecycleOwner(), observer); diff --git a/app/src/main/java/eu/faircode/email/ViewModelMessages.java b/app/src/main/java/eu/faircode/email/ViewModelMessages.java index 442bf6def1..9f94f98c8c 100644 --- a/app/src/main/java/eu/faircode/email/ViewModelMessages.java +++ b/app/src/main/java/eu/faircode/email/ViewModelMessages.java @@ -60,10 +60,10 @@ public class ViewModelMessages extends ViewModel { final Context context, final LifecycleOwner owner, final AdapterMessage.ViewType viewType, String type, long account, long folder, - String thread, long id, + String thread, long id, boolean filter_archive, String query, boolean server) { - Args args = new Args(context, viewType, type, account, folder, thread, id, query, server); + Args args = new Args(context, viewType, type, account, folder, thread, id, filter_archive, query, server); Log.d("Get model=" + viewType + " " + args); dump(); @@ -127,6 +127,7 @@ public class ViewModelMessages extends ViewModel { db.message().pagedThread( args.account, args.thread, args.threading ? null : args.id, + args.filter_archive, args.ascending, args.debug), LOCAL_PAGE_SIZE); break; @@ -319,12 +320,13 @@ public class ViewModelMessages extends ViewModel { private boolean filter_unflagged; private boolean filter_unknown; private boolean filter_snoozed; + private boolean filter_archive; private boolean debug; Args(Context context, AdapterMessage.ViewType viewType, String type, long account, long folder, - String thread, long id, + String thread, long id, boolean filter_archive, String query, boolean server) { this.type = type; @@ -332,6 +334,7 @@ public class ViewModelMessages extends ViewModel { this.folder = folder; this.thread = thread; this.id = id; + this.filter_archive = filter_archive; this.query = query; this.server = server; @@ -366,6 +369,7 @@ public class ViewModelMessages extends ViewModel { this.filter_unflagged == other.filter_unflagged && this.filter_unknown == other.filter_unknown && this.filter_snoozed == other.filter_snoozed && + this.filter_archive == other.filter_archive && this.debug == other.debug); } else return false; @@ -383,6 +387,7 @@ public class ViewModelMessages extends ViewModel { " unflagged=" + filter_unflagged + " unknown=" + filter_unknown + " snoozed=" + filter_snoozed + + " archive=" + filter_archive + " debug=" + debug; } }