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;