mirror of https://github.com/M66B/FairEmail.git
Added ascending sort
This commit is contained in:
parent
25387866b1
commit
4c8576d3df
|
@ -160,6 +160,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
|||
private boolean compact;
|
||||
private int zoom;
|
||||
private String sort;
|
||||
private boolean ascending;
|
||||
private boolean filter_duplicates;
|
||||
private IProperties properties;
|
||||
|
||||
|
@ -3049,7 +3050,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
|||
|
||||
AdapterMessage(Fragment parentFragment,
|
||||
String type, ViewType viewType,
|
||||
boolean compact, int zoom, String sort, boolean filter_duplicates,
|
||||
boolean compact, int zoom, String sort, boolean ascending, boolean filter_duplicates,
|
||||
final IProperties properties) {
|
||||
this.parentFragment = parentFragment;
|
||||
this.type = type;
|
||||
|
@ -3057,6 +3058,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
|||
this.compact = compact;
|
||||
this.zoom = zoom;
|
||||
this.sort = sort;
|
||||
this.ascending = ascending;
|
||||
this.filter_duplicates = filter_duplicates;
|
||||
this.properties = properties;
|
||||
|
||||
|
@ -3168,6 +3170,10 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
|||
return this.sort;
|
||||
}
|
||||
|
||||
void setAscending(boolean ascending) {
|
||||
this.ascending = ascending;
|
||||
}
|
||||
|
||||
void setFilterDuplicates(boolean filter_duplicates) {
|
||||
if (this.filter_duplicates != filter_duplicates) {
|
||||
this.filter_duplicates = filter_duplicates;
|
||||
|
|
|
@ -76,12 +76,12 @@ public interface DaoMessage {
|
|||
" WHEN 'size' = :sort THEN -SUM(message.size)" +
|
||||
" WHEN 'snoozed' = :sort THEN SUM(CASE WHEN message.ui_snoozed IS NULL THEN 0 ELSE 1 END) = 0" +
|
||||
" ELSE 0" +
|
||||
" END, message.received DESC")
|
||||
" END, CASE WHEN :ascending THEN message.received ELSE -message.received END")
|
||||
@SuppressWarnings(RoomWarnings.CURSOR_MISMATCH)
|
||||
DataSource.Factory<Integer, TupleMessageEx> pagedUnified(
|
||||
String type,
|
||||
boolean threading,
|
||||
String sort,
|
||||
String sort, boolean ascending,
|
||||
boolean filter_seen, boolean filter_unflagged, boolean filter_snoozed,
|
||||
boolean found,
|
||||
boolean debug);
|
||||
|
@ -121,11 +121,11 @@ public interface DaoMessage {
|
|||
" WHEN 'size' = :sort THEN -SUM(message.size)" +
|
||||
" WHEN 'snoozed' = :sort THEN SUM(CASE WHEN message.ui_snoozed IS NULL THEN 0 ELSE 1 END) = 0" +
|
||||
" ELSE 0" +
|
||||
" END, message.received DESC")
|
||||
" END, CASE WHEN :ascending THEN message.received ELSE -message.received END")
|
||||
@SuppressWarnings(RoomWarnings.CURSOR_MISMATCH)
|
||||
DataSource.Factory<Integer, TupleMessageEx> pagedFolder(
|
||||
long folder, boolean threading,
|
||||
String sort,
|
||||
String sort, boolean ascending,
|
||||
boolean filter_seen, boolean filter_unflagged, boolean filter_snoozed,
|
||||
boolean found,
|
||||
boolean debug);
|
||||
|
|
|
@ -584,9 +584,10 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
|||
boolean compact = prefs.getBoolean("compact", false);
|
||||
int zoom = prefs.getInt("zoom", compact ? 0 : 1);
|
||||
String sort = prefs.getString("sort", "time");
|
||||
boolean ascending = prefs.getBoolean("ascending", false);
|
||||
boolean filter_duplicates = prefs.getBoolean("filter_duplicates", false);
|
||||
|
||||
adapter = new AdapterMessage(this, type, viewType, compact, zoom, sort, filter_duplicates, iProperties);
|
||||
adapter = new AdapterMessage(this, type, viewType, compact, zoom, sort, ascending, filter_duplicates, iProperties);
|
||||
rvMessage.setAdapter(adapter);
|
||||
|
||||
seekBar.setOnTouchListener(new View.OnTouchListener() {
|
||||
|
@ -2448,6 +2449,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
|||
public void onPrepareOptionsMenu(Menu menu) {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
|
||||
String sort = prefs.getString("sort", "time");
|
||||
boolean ascending = prefs.getBoolean("ascending", false);
|
||||
boolean filter_seen = prefs.getBoolean("filter_seen", false);
|
||||
boolean filter_unflagged = prefs.getBoolean("filter_unflagged", false);
|
||||
boolean filter_snoozed = prefs.getBoolean("filter_snoozed", true);
|
||||
|
@ -2480,6 +2482,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
|||
menu.findItem(R.id.menu_sort_on_size).setChecked(true);
|
||||
else if ("snoozed".equals(sort))
|
||||
menu.findItem(R.id.menu_sort_on_snoozed).setChecked(true);
|
||||
menu.findItem(R.id.menu_ascending).setChecked(ascending);
|
||||
|
||||
menu.findItem(R.id.menu_filter).setVisible(viewType != AdapterMessage.ViewType.SEARCH && !outbox);
|
||||
menu.findItem(R.id.menu_filter_seen).setVisible(viewType != AdapterMessage.ViewType.THREAD);
|
||||
|
@ -2550,6 +2553,10 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
|||
onMenuSort("snoozed");
|
||||
return true;
|
||||
|
||||
case R.id.menu_ascending:
|
||||
onMenuAscending(!item.isChecked());
|
||||
return true;
|
||||
|
||||
case R.id.menu_filter_seen:
|
||||
onMenuFilterRead(!item.isChecked());
|
||||
return true;
|
||||
|
@ -2613,6 +2620,14 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
|||
loadMessages(true);
|
||||
}
|
||||
|
||||
private void onMenuAscending(boolean ascending) {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
|
||||
prefs.edit().putBoolean("ascending", ascending).apply();
|
||||
adapter.setAscending(ascending);
|
||||
getActivity().invalidateOptionsMenu();
|
||||
loadMessages(true);
|
||||
}
|
||||
|
||||
private void onMenuFilterRead(boolean filter) {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
|
||||
prefs.edit().putBoolean("filter_seen", filter).apply();
|
||||
|
|
|
@ -89,7 +89,7 @@ public class ViewModelMessages extends ViewModel {
|
|||
db.message().pagedUnified(
|
||||
args.type,
|
||||
args.threading,
|
||||
args.sort,
|
||||
args.sort, args.ascending,
|
||||
args.filter_seen, args.filter_unflagged, args.filter_snoozed,
|
||||
false,
|
||||
args.debug),
|
||||
|
@ -105,7 +105,7 @@ public class ViewModelMessages extends ViewModel {
|
|||
builder = new LivePagedListBuilder<>(
|
||||
db.message().pagedFolder(
|
||||
args.folder, args.threading,
|
||||
args.sort,
|
||||
args.sort, args.ascending,
|
||||
args.filter_seen, args.filter_unflagged, args.filter_snoozed,
|
||||
false,
|
||||
args.debug),
|
||||
|
@ -131,7 +131,7 @@ public class ViewModelMessages extends ViewModel {
|
|||
db.message().pagedUnified(
|
||||
null,
|
||||
args.threading,
|
||||
"time",
|
||||
"time", false,
|
||||
false, false, false,
|
||||
true,
|
||||
args.debug),
|
||||
|
@ -140,7 +140,7 @@ public class ViewModelMessages extends ViewModel {
|
|||
builder = new LivePagedListBuilder<>(
|
||||
db.message().pagedFolder(
|
||||
args.folder, args.threading,
|
||||
"time",
|
||||
"time", false,
|
||||
false, false, false,
|
||||
true,
|
||||
args.debug),
|
||||
|
@ -301,6 +301,7 @@ public class ViewModelMessages extends ViewModel {
|
|||
|
||||
private boolean threading;
|
||||
private String sort;
|
||||
private boolean ascending;
|
||||
private boolean filter_seen;
|
||||
private boolean filter_unflagged;
|
||||
private boolean filter_snoozed;
|
||||
|
@ -322,6 +323,7 @@ public class ViewModelMessages extends ViewModel {
|
|||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
this.threading = prefs.getBoolean("threading", true);
|
||||
this.sort = prefs.getString("sort", "time");
|
||||
this.ascending = prefs.getBoolean("ascending", false);
|
||||
this.filter_seen = prefs.getBoolean("filter_seen", false);
|
||||
this.filter_unflagged = prefs.getBoolean("filter_unflagged", false);
|
||||
this.filter_snoozed = prefs.getBoolean("filter_snoozed", true);
|
||||
|
@ -342,6 +344,7 @@ public class ViewModelMessages extends ViewModel {
|
|||
|
||||
this.threading == other.threading &&
|
||||
Objects.equals(this.sort, other.sort) &&
|
||||
this.ascending == other.ascending &&
|
||||
this.filter_seen == other.filter_seen &&
|
||||
this.filter_unflagged == other.filter_unflagged &&
|
||||
this.filter_snoozed == other.filter_snoozed &&
|
||||
|
@ -357,7 +360,7 @@ public class ViewModelMessages extends ViewModel {
|
|||
" thread=" + thread + ":" + id +
|
||||
" query=" + query + ":" + server + "" +
|
||||
" threading=" + threading +
|
||||
" sort=" + sort +
|
||||
" sort=" + sort + ":" + ascending +
|
||||
" filter seen=" + filter_seen + " unflagged=" + filter_unflagged + " snoozed=" + filter_snoozed +
|
||||
" debug=" + debug;
|
||||
}
|
||||
|
|
|
@ -44,6 +44,10 @@
|
|||
android:id="@+id/menu_sort_on_snoozed"
|
||||
android:title="@string/title_sort_on_snoozed" />
|
||||
</group>
|
||||
<item
|
||||
android:id="@+id/menu_ascending"
|
||||
android:checkable="true"
|
||||
android:title="@string/title_sort_ascending" />
|
||||
</menu>
|
||||
</item>
|
||||
|
||||
|
|
|
@ -599,6 +599,7 @@
|
|||
<string name="title_sort_on_subject">Subject</string>
|
||||
<string name="title_sort_on_size">Size</string>
|
||||
<string name="title_sort_on_snoozed">Snoozed</string>
|
||||
<string name="title_sort_ascending">Oldest first</string>
|
||||
|
||||
<string name="title_filter">Filter out</string>
|
||||
<string name="title_filter_seen">Read</string>
|
||||
|
|
Loading…
Reference in New Issue