From ec636b338e451261488e4d222e1cacc8160cb8b9 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 9 Sep 2019 08:56:33 +0200 Subject: [PATCH] Allow sorting thread on oldest first --- app/src/main/java/eu/faircode/email/DaoMessage.java | 4 ++-- .../java/eu/faircode/email/FragmentMessages.java | 13 +++++++++++-- .../java/eu/faircode/email/ViewModelMessages.java | 1 + 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/DaoMessage.java b/app/src/main/java/eu/faircode/email/DaoMessage.java index 9232dcab61..53ef85553a 100644 --- a/app/src/main/java/eu/faircode/email/DaoMessage.java +++ b/app/src/main/java/eu/faircode/email/DaoMessage.java @@ -149,9 +149,9 @@ public interface DaoMessage { " AND message.thread = :thread" + " AND (:id IS NULL OR message.id = :id)" + " AND (message.ui_hide = 0 OR :debug)" + - " ORDER BY message.received DESC" + + " ORDER BY CASE WHEN :ascending THEN message.received ELSE -message.received END" + ", CASE WHEN folder.type = '" + EntityFolder.ARCHIVE + "' THEN 1 ELSE 0 END") - DataSource.Factory pagedThread(long account, String thread, Long id, boolean debug); + DataSource.Factory pagedThread(long account, String thread, Long id, 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 f444648809..365f293e51 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -2486,8 +2486,17 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. ib.setImageResource(connected ? R.drawable.baseline_folder_special_24 : R.drawable.baseline_folder_open_24); - menu.findItem(R.id.menu_sort_on).setVisible( - viewType == AdapterMessage.ViewType.UNIFIED || viewType == AdapterMessage.ViewType.FOLDER); + menu.findItem(R.id.menu_sort_on).setVisible(viewType != AdapterMessage.ViewType.SEARCH); + + if (viewType == AdapterMessage.ViewType.THREAD) { + menu.findItem(R.id.menu_sort_on_time).setVisible(false); + menu.findItem(R.id.menu_sort_on_unread).setVisible(false); + menu.findItem(R.id.menu_sort_on_starred).setVisible(false); + menu.findItem(R.id.menu_sort_on_sender).setVisible(false); + menu.findItem(R.id.menu_sort_on_subject).setVisible(false); + menu.findItem(R.id.menu_sort_on_size).setVisible(false); + menu.findItem(R.id.menu_sort_on_snoozed).setVisible(false); + } if ("time".equals(sort)) menu.findItem(R.id.menu_sort_on_time).setChecked(true); diff --git a/app/src/main/java/eu/faircode/email/ViewModelMessages.java b/app/src/main/java/eu/faircode/email/ViewModelMessages.java index eafad3b318..c83845ee17 100644 --- a/app/src/main/java/eu/faircode/email/ViewModelMessages.java +++ b/app/src/main/java/eu/faircode/email/ViewModelMessages.java @@ -118,6 +118,7 @@ public class ViewModelMessages extends ViewModel { db.message().pagedThread( args.account, args.thread, args.threading ? null : args.id, + args.ascending, args.debug), LOCAL_PAGE_SIZE); break;