mirror of https://github.com/M66B/FairEmail.git
Added sorting on starred+unread
This commit is contained in:
parent
efb9c49036
commit
0087f4ff03
|
@ -104,21 +104,25 @@ public interface DaoMessage {
|
|||
" ORDER BY CASE WHEN :found THEN 0 ELSE -IFNULL(message.importance, 1) END" +
|
||||
", CASE WHEN :group_category THEN account.category ELSE '' END COLLATE NOCASE" +
|
||||
", CASE" +
|
||||
" WHEN 'unread' = :sort THEN SUM(1 - message.ui_seen) = 0" +
|
||||
" WHEN 'starred' = :sort THEN COUNT(message.id) - SUM(1 - message.ui_flagged) = 0" +
|
||||
" WHEN 'priority' = :sort THEN -IFNULL(message.priority, 1)" +
|
||||
" WHEN 'sender' = :sort THEN LOWER(message.sender)" +
|
||||
" WHEN 'subject' = :sort THEN LOWER(message.subject)" +
|
||||
" WHEN 'size' = :sort THEN -SUM(message.total)" +
|
||||
" WHEN 'attachments' = :sort THEN -SUM(message.attachments)" +
|
||||
" WHEN 'snoozed' = :sort THEN SUM(CASE WHEN message.ui_snoozed IS NULL THEN 0 ELSE 1 END) = 0" +
|
||||
" WHEN 'unread' = :sort1 THEN SUM(1 - message.ui_seen) = 0" +
|
||||
" WHEN 'starred' = :sort1 THEN COUNT(message.id) - SUM(1 - message.ui_flagged) = 0" +
|
||||
" WHEN 'priority' = :sort1 THEN -IFNULL(message.priority, 1)" +
|
||||
" WHEN 'sender' = :sort1 THEN LOWER(message.sender)" +
|
||||
" WHEN 'subject' = :sort1 THEN LOWER(message.subject)" +
|
||||
" WHEN 'size' = :sort1 THEN -SUM(message.total)" +
|
||||
" WHEN 'attachments' = :sort1 THEN -SUM(message.attachments)" +
|
||||
" WHEN 'snoozed' = :sort1 THEN SUM(CASE WHEN message.ui_snoozed IS NULL THEN 0 ELSE 1 END) = 0" +
|
||||
" ELSE 0" +
|
||||
" END" +
|
||||
", CASE" +
|
||||
" WHEN 'unread' = :sort2 THEN SUM(1 - message.ui_seen) = 0" +
|
||||
" ELSE 0" +
|
||||
" END" +
|
||||
", CASE WHEN :ascending THEN message.received ELSE -message.received END")
|
||||
DataSource.Factory<Integer, TupleMessageEx> pagedUnified(
|
||||
String type,
|
||||
boolean threading, boolean group_category,
|
||||
String sort, boolean ascending,
|
||||
String sort1, String sort2, boolean ascending,
|
||||
boolean filter_seen, boolean filter_unflagged, boolean filter_unknown, boolean filter_snoozed, boolean filter_deleted, String filter_language,
|
||||
boolean found,
|
||||
boolean debug);
|
||||
|
@ -178,20 +182,24 @@ public interface DaoMessage {
|
|||
" AND (:filter_language IS NULL OR SUM(message.language = :filter_language) > 0 OR " + is_outbox + ")" +
|
||||
" ORDER BY CASE WHEN :found THEN 0 ELSE -IFNULL(message.importance, 1) END" +
|
||||
", CASE" +
|
||||
" WHEN 'unread' = :sort THEN SUM(1 - message.ui_seen) = 0" +
|
||||
" WHEN 'starred' = :sort THEN COUNT(message.id) - SUM(1 - message.ui_flagged) = 0" +
|
||||
" WHEN 'priority' = :sort THEN -IFNULL(message.priority, 1)" +
|
||||
" WHEN 'sender' = :sort THEN LOWER(message.sender)" +
|
||||
" WHEN 'subject' = :sort THEN LOWER(message.subject)" +
|
||||
" WHEN 'size' = :sort THEN -SUM(message.total)" +
|
||||
" WHEN 'attachments' = :sort THEN -SUM(message.attachments)" +
|
||||
" WHEN 'snoozed' = :sort THEN SUM(CASE WHEN message.ui_snoozed IS NULL THEN 0 ELSE 1 END) = 0" +
|
||||
" WHEN 'unread' = :sort1 THEN SUM(1 - message.ui_seen) = 0" +
|
||||
" WHEN 'starred' = :sort1 THEN COUNT(message.id) - SUM(1 - message.ui_flagged) = 0" +
|
||||
" WHEN 'priority' = :sort1 THEN -IFNULL(message.priority, 1)" +
|
||||
" WHEN 'sender' = :sort1 THEN LOWER(message.sender)" +
|
||||
" WHEN 'subject' = :sort1 THEN LOWER(message.subject)" +
|
||||
" WHEN 'size' = :sort1 THEN -SUM(message.total)" +
|
||||
" WHEN 'attachments' = :sort1 THEN -SUM(message.attachments)" +
|
||||
" WHEN 'snoozed' = :sort1 THEN SUM(CASE WHEN message.ui_snoozed IS NULL THEN 0 ELSE 1 END) = 0" +
|
||||
" ELSE 0" +
|
||||
" END" +
|
||||
", CASE" +
|
||||
" WHEN 'unread' = :sort2 THEN SUM(1 - message.ui_seen) = 0" +
|
||||
" ELSE 0" +
|
||||
" END" +
|
||||
", CASE WHEN :ascending THEN message.received ELSE -message.received END")
|
||||
DataSource.Factory<Integer, TupleMessageEx> pagedFolder(
|
||||
long folder, boolean threading,
|
||||
String sort, boolean ascending,
|
||||
String sort1, String sort2, boolean ascending,
|
||||
boolean filter_seen, boolean filter_unflagged, boolean filter_unknown, boolean filter_snoozed, boolean filter_deleted, String filter_language,
|
||||
boolean found,
|
||||
boolean debug);
|
||||
|
|
|
@ -5943,6 +5943,7 @@ public class FragmentMessages extends FragmentBase
|
|||
menu.findItem(R.id.menu_sort_on_unread).setVisible(false);
|
||||
menu.findItem(R.id.menu_sort_on_priority).setVisible(false);
|
||||
menu.findItem(R.id.menu_sort_on_starred).setVisible(false);
|
||||
menu.findItem(R.id.menu_sort_on_starred_unread).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);
|
||||
|
@ -5960,6 +5961,8 @@ public class FragmentMessages extends FragmentBase
|
|||
menu.findItem(R.id.menu_sort_on_unread).setChecked(true);
|
||||
else if ("starred".equals(sort))
|
||||
menu.findItem(R.id.menu_sort_on_starred).setChecked(true);
|
||||
else if ("starred+unread".equals(sort))
|
||||
menu.findItem(R.id.menu_sort_on_starred_unread).setChecked(true);
|
||||
else if ("priority".equals(sort))
|
||||
menu.findItem(R.id.menu_sort_on_priority).setChecked(true);
|
||||
else if ("sender".equals(sort))
|
||||
|
@ -6104,6 +6107,10 @@ public class FragmentMessages extends FragmentBase
|
|||
item.setChecked(true);
|
||||
onMenuSort("starred");
|
||||
return true;
|
||||
} else if (itemId == R.id.menu_sort_on_starred_unread) {
|
||||
item.setChecked(true);
|
||||
onMenuSort("starred+unread");
|
||||
return true;
|
||||
} else if (itemId == R.id.menu_sort_on_priority) {
|
||||
item.setChecked(true);
|
||||
onMenuSort("priority");
|
||||
|
|
|
@ -124,7 +124,7 @@ public class ViewModelMessages extends ViewModel {
|
|||
args.type,
|
||||
args.threading,
|
||||
args.group_category,
|
||||
args.sort, args.ascending,
|
||||
args.sort1, args.sort2, args.ascending,
|
||||
args.filter_seen,
|
||||
args.filter_unflagged,
|
||||
args.filter_unknown,
|
||||
|
@ -146,7 +146,7 @@ public class ViewModelMessages extends ViewModel {
|
|||
builder = new LivePagedListBuilder<>(
|
||||
db.message().pagedFolder(
|
||||
args.folder, args.threading,
|
||||
args.sort, args.ascending,
|
||||
args.sort1, args.sort2, args.ascending,
|
||||
args.filter_seen,
|
||||
args.filter_unflagged,
|
||||
args.filter_unknown,
|
||||
|
@ -184,7 +184,7 @@ public class ViewModelMessages extends ViewModel {
|
|||
db.message().pagedUnified(
|
||||
null,
|
||||
args.threading, false,
|
||||
"time", false,
|
||||
"time", "", false,
|
||||
false, false, false, false, false,
|
||||
null,
|
||||
true,
|
||||
|
@ -194,7 +194,7 @@ public class ViewModelMessages extends ViewModel {
|
|||
builder = new LivePagedListBuilder<>(
|
||||
db.message().pagedFolder(
|
||||
args.folder, args.threading,
|
||||
"time", false,
|
||||
"time", "", false,
|
||||
false, false, false, false, false,
|
||||
null,
|
||||
true,
|
||||
|
@ -508,7 +508,8 @@ public class ViewModelMessages extends ViewModel {
|
|||
|
||||
private boolean threading;
|
||||
private boolean group_category;
|
||||
private String sort;
|
||||
private String sort1;
|
||||
private String sort2;
|
||||
private boolean ascending;
|
||||
private boolean filter_seen;
|
||||
private boolean filter_unflagged;
|
||||
|
@ -540,7 +541,10 @@ public class ViewModelMessages extends ViewModel {
|
|||
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
this.group_category = prefs.getBoolean("group_category", false);
|
||||
this.sort = prefs.getString(FragmentMessages.getSort(context, viewType, type), "time");
|
||||
String sort = prefs.getString(FragmentMessages.getSort(context, viewType, type), "time");
|
||||
String[] sorts = sort.split("\\+");
|
||||
this.sort1 = sorts[0];
|
||||
this.sort2 = (sorts.length > 1 ? sorts[1] : "");
|
||||
this.ascending = prefs.getBoolean(FragmentMessages.getSortOrder(context, viewType, type), outbox);
|
||||
this.filter_seen = prefs.getBoolean(FragmentMessages.getFilter(context, "seen", viewType, type), false);
|
||||
this.filter_unflagged = prefs.getBoolean(FragmentMessages.getFilter(context, "unflagged", viewType, type), false);
|
||||
|
@ -569,7 +573,8 @@ public class ViewModelMessages extends ViewModel {
|
|||
|
||||
this.threading == other.threading &&
|
||||
this.group_category == other.group_category &&
|
||||
Objects.equals(this.sort, other.sort) &&
|
||||
Objects.equals(this.sort1, other.sort1) &&
|
||||
Objects.equals(this.sort2, other.sort2) &&
|
||||
this.ascending == other.ascending &&
|
||||
this.filter_seen == other.filter_seen &&
|
||||
this.filter_unflagged == other.filter_unflagged &&
|
||||
|
@ -591,7 +596,7 @@ public class ViewModelMessages extends ViewModel {
|
|||
" criteria=" + criteria + ":" + server + "" +
|
||||
" threading=" + threading +
|
||||
" category=" + group_category +
|
||||
" sort=" + sort + ":" + ascending +
|
||||
" sort=" + sort1 + "/" + sort2 + ":" + ascending +
|
||||
" filter seen=" + filter_seen +
|
||||
" unflagged=" + filter_unflagged +
|
||||
" unknown=" + filter_unknown +
|
||||
|
|
|
@ -58,6 +58,9 @@
|
|||
<item
|
||||
android:id="@+id/menu_sort_on_starred"
|
||||
android:title="@string/title_sort_on_starred" />
|
||||
<item
|
||||
android:id="@+id/menu_sort_on_starred_unread"
|
||||
android:title="@string/title_sort_on_starred_unread" />
|
||||
<item
|
||||
android:id="@+id/menu_sort_on_priority"
|
||||
android:title="@string/title_sort_on_priority" />
|
||||
|
|
|
@ -1910,6 +1910,7 @@
|
|||
<string name="title_sort_on_time">Time</string>
|
||||
<string name="title_sort_on_unread">Unread</string>
|
||||
<string name="title_sort_on_starred">Starred</string>
|
||||
<string name="title_sort_on_starred_unread">Starred, unread</string>
|
||||
<string name="title_sort_on_priority">Priority</string>
|
||||
<string name="title_sort_on_sender">Sender</string>
|
||||
<string name="title_sort_on_subject">Subject</string>
|
||||
|
|
Loading…
Reference in New Issue