Allow sorting thread on oldest first

This commit is contained in:
M66B 2019-09-09 08:56:33 +02:00
parent 648bb0b509
commit ec636b338e
3 changed files with 14 additions and 4 deletions

View File

@ -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<Integer, TupleMessageEx> pagedThread(long account, String thread, Long id, boolean debug);
DataSource.Factory<Integer, TupleMessageEx> pagedThread(long account, String thread, Long id, boolean ascending, boolean debug);
@Query("SELECT account.name AS accountName" +
", COUNT(message.id) AS count" +

View File

@ -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);

View File

@ -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;