Revert "Added sort on sent time"

This reverts commit 0e37fd6b5b.
pull/174/head
M66B 5 years ago
parent 0e37fd6b5b
commit 90f12f800f

@ -174,6 +174,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;
@ -4094,7 +4095,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
AdapterMessage(Fragment parentFragment,
String type, boolean found, 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;
@ -4103,6 +4104,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;
@ -4276,6 +4278,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;

@ -124,6 +124,7 @@ class Core {
private static final int SYNC_BATCH_SIZE = 20;
private static final int DOWNLOAD_BATCH_SIZE = 20;
private static final long YIELD_DURATION = 200L; // milliseconds
private static final long FUTURE_RECEIVED = 30 * 24 * 3600 * 1000L; // milliseconds
static void processOperations(
Context context,
@ -2063,6 +2064,17 @@ class Core {
}
if (message == null) {
Long sent = helper.getSent();
long received;
if (account.use_date)
received = (sent == null ? 0 : sent);
else {
received = helper.getReceived();
if (received == 0 || received > new Date().getTime() + FUTURE_RECEIVED)
if (sent != null)
received = sent;
}
String authentication = helper.getAuthentication();
MessageHelper.MessageParts parts = helper.getMessageParts(context);
@ -2101,8 +2113,8 @@ class Core {
message.content = false;
message.encrypt = parts.getEncryption();
message.ui_encrypt = message.encrypt;
message.received = helper.getReceived();
message.sent = helper.getSent();
message.received = received;
message.sent = sent;
message.seen = seen;
message.answered = answered;
message.flagged = flagged;

@ -92,13 +92,12 @@ public interface DaoMessage {
" WHEN 'snoozed' = :sort THEN SUM(CASE WHEN message.ui_snoozed IS NULL THEN 0 ELSE 1 END) = 0" +
" ELSE 0" +
" END" +
", CASE WHEN :use_sent_time THEN message.sent ELSE message.received END" +
" * CASE WHEN :ascending THEN 1 ELSE -1 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, boolean use_sent_time, boolean ascending,
String sort, boolean ascending,
boolean filter_seen, boolean filter_unflagged, boolean filter_unknown, boolean filter_snoozed,
boolean found,
boolean debug);
@ -148,12 +147,11 @@ public interface DaoMessage {
" WHEN 'snoozed' = :sort THEN SUM(CASE WHEN message.ui_snoozed IS NULL THEN 0 ELSE 1 END) = 0" +
" ELSE 0" +
" END" +
", CASE WHEN :use_sent_time THEN message.sent ELSE message.received END" +
" * CASE WHEN :ascending THEN 1 ELSE -1 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, boolean use_sent_time, boolean ascending,
String sort, boolean ascending,
boolean filter_seen, boolean filter_unflagged, boolean filter_unknown, boolean filter_snoozed,
boolean found,
boolean debug);
@ -182,8 +180,7 @@ public interface DaoMessage {
" AND message.thread = :thread" +
" AND (:id IS NULL OR message.id = :id)" +
" AND (NOT message.ui_hide OR :debug)" +
" ORDER BY CASE WHEN :use_sent_time THEN message.sent ELSE message.received END" +
" * CASE WHEN :ascending THEN 1 ELSE -1 END" +
" ORDER BY CASE WHEN :ascending THEN message.received ELSE -message.received END" +
", CASE" +
" WHEN folder.type = '" + EntityFolder.INBOX + "' THEN 1" +
" WHEN folder.type = '" + EntityFolder.OUTBOX + "' THEN 2" +
@ -196,8 +193,7 @@ public interface DaoMessage {
" WHEN folder.type = '" + EntityFolder.JUNK + "' THEN 9" +
" ELSE 999 END")
// The folder type sort order should match the duplicate algorithm
DataSource.Factory<Integer, TupleMessageEx> pagedThread(
long account, String thread, Long id, boolean use_sent_time, boolean ascending, 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" +

@ -117,7 +117,7 @@ public class EntityAccount extends EntityOrder implements Serializable {
@NonNull
public Boolean ignore_size = false;
@NonNull
public Boolean use_date = false; // Obsolete
public Boolean use_date = false;
public String prefix; // namespace, obsolete
public Long quota_usage;

@ -110,6 +110,7 @@ public class FragmentAccount extends FragmentBase {
private EditText etInterval;
private CheckBox cbPartialFetch;
private CheckBox cbIgnoreSize;
private CheckBox cbUseDate;
private Button btnCheck;
private ContentLoadingProgressBar pbCheck;
@ -217,6 +218,7 @@ public class FragmentAccount extends FragmentBase {
etInterval = view.findViewById(R.id.etInterval);
cbPartialFetch = view.findViewById(R.id.cbPartialFetch);
cbIgnoreSize = view.findViewById(R.id.cbIgnoreSize);
cbUseDate = view.findViewById(R.id.cbUseDate);
btnCheck = view.findViewById(R.id.btnCheck);
pbCheck = view.findViewById(R.id.pbCheck);
@ -776,6 +778,7 @@ public class FragmentAccount extends FragmentBase {
args.putString("interval", etInterval.getText().toString());
args.putBoolean("partial_fetch", cbPartialFetch.isChecked());
args.putBoolean("ignore_size", cbIgnoreSize.isChecked());
args.putBoolean("use_date", cbUseDate.isChecked());
args.putSerializable("drafts", drafts);
args.putSerializable("sent", sent);
@ -836,6 +839,7 @@ public class FragmentAccount extends FragmentBase {
String interval = args.getString("interval");
boolean partial_fetch = args.getBoolean("partial_fetch");
boolean ignore_size = args.getBoolean("ignore_size");
boolean use_date = args.getBoolean("use_date");
EntityFolder drafts = (EntityFolder) args.getSerializable("drafts");
EntityFolder sent = (EntityFolder) args.getSerializable("sent");
@ -923,6 +927,8 @@ public class FragmentAccount extends FragmentBase {
return true;
if (!Objects.equals(account.ignore_size, ignore_size))
return true;
if (!Objects.equals(account.use_date, use_date))
return true;
EntityFolder edrafts = db.folder().getFolderByType(account.id, EntityFolder.DRAFTS);
if (!Objects.equals(edrafts == null ? null : edrafts.id, drafts == null ? null : drafts.id))
@ -1046,6 +1052,7 @@ public class FragmentAccount extends FragmentBase {
account.poll_interval = Integer.parseInt(interval);
account.partial_fetch = partial_fetch;
account.ignore_size = ignore_size;
account.use_date = use_date;
if (!update)
account.created = now;
@ -1391,6 +1398,7 @@ public class FragmentAccount extends FragmentBase {
etInterval.setText(account == null ? "" : Long.toString(account.poll_interval));
cbPartialFetch.setChecked(account == null ? true : account.partial_fetch);
cbIgnoreSize.setChecked(account == null ? false : account.ignore_size);
cbUseDate.setChecked(account == null ? false : account.use_date);
auth = (account == null ? EmailService.AUTH_TYPE_PASSWORD : account.auth_type);
provider = (account == null ? null : account.provider);

@ -668,11 +668,13 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
boolean compact = prefs.getBoolean("compact", false);
int zoom = prefs.getInt("view_zoom", compact ? 0 : 1);
String sort = prefs.getString("sort", "time");
boolean ascending = prefs.getBoolean(
viewType == AdapterMessage.ViewType.THREAD ? "ascending_thread" : "ascending_list", false);
boolean filter_duplicates = prefs.getBoolean("filter_duplicates", true);
adapter = new AdapterMessage(
this, type, found, viewType,
compact, zoom, sort, filter_duplicates,
compact, zoom, sort, ascending, filter_duplicates,
iProperties);
rvMessage.setAdapter(adapter);
@ -3070,7 +3072,6 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
public void onPrepareOptionsMenu(Menu menu) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
String sort = prefs.getString("sort", "time");
boolean use_sent_time = prefs.getBoolean("use_sent_time", false);
boolean ascending = prefs.getBoolean(
viewType == AdapterMessage.ViewType.THREAD ? "ascending_thread" : "ascending_list", false);
boolean filter_seen = prefs.getBoolean("filter_seen", false);
@ -3134,7 +3135,6 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
menu.findItem(R.id.menu_sort_on_attachments).setChecked(true);
else if ("snoozed".equals(sort))
menu.findItem(R.id.menu_sort_on_snoozed).setChecked(true);
menu.findItem(R.id.menu_use_sent_time).setChecked(use_sent_time);
menu.findItem(R.id.menu_ascending).setChecked(ascending);
menu.findItem(R.id.menu_filter).setVisible(viewType != AdapterMessage.ViewType.SEARCH && !outbox);
@ -3227,10 +3227,6 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
onMenuSort("snoozed");
return true;
case R.id.menu_use_sent_time:
onMenuUseSentTime(!item.isChecked());
return true;
case R.id.menu_ascending:
onMenuAscending(!item.isChecked());
return true;
@ -3307,17 +3303,11 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
loadMessages(true);
}
private void onMenuUseSentTime(boolean use_sent_time) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
prefs.edit().putBoolean("use_sent_time", use_sent_time).apply();
getActivity().invalidateOptionsMenu();
loadMessages(true);
}
private void onMenuAscending(boolean ascending) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
prefs.edit().putBoolean(
viewType == AdapterMessage.ViewType.THREAD ? "ascending_thread" : "ascending_list", ascending).apply();
adapter.setAscending(ascending);
getActivity().invalidateOptionsMenu();
loadMessages(true);
}

@ -42,6 +42,7 @@ public class TupleAccountState extends EntityAccount {
this.poll_interval.equals(other.poll_interval) &&
this.partial_fetch.equals(other.partial_fetch) &&
this.ignore_size.equals(other.ignore_size) &&
this.use_date.equals(other.use_date) &&
this.folders == other.folders &&
Objects.equals(this.tbd, other.tbd));
} else

@ -92,7 +92,7 @@ public class ViewModelMessages extends ViewModel {
db.message().pagedUnified(
args.type,
args.threading,
args.sort, args.use_sent_time, args.ascending,
args.sort, args.ascending,
args.filter_seen,
args.filter_unflagged,
args.filter_unknown,
@ -111,7 +111,7 @@ public class ViewModelMessages extends ViewModel {
builder = new LivePagedListBuilder<>(
db.message().pagedFolder(
args.folder, args.threading,
args.sort, args.use_sent_time, args.ascending,
args.sort, args.ascending,
args.filter_seen,
args.filter_unflagged,
args.filter_unknown,
@ -127,7 +127,7 @@ public class ViewModelMessages extends ViewModel {
db.message().pagedThread(
args.account, args.thread,
args.threading ? null : args.id,
args.use_sent_time, args.ascending,
args.ascending,
args.debug), LOCAL_PAGE_SIZE);
break;
@ -141,7 +141,7 @@ public class ViewModelMessages extends ViewModel {
db.message().pagedUnified(
null,
args.threading,
"time", args.use_sent_time, false,
"time", false,
false, false, false, false,
true,
args.debug),
@ -150,7 +150,7 @@ public class ViewModelMessages extends ViewModel {
builder = new LivePagedListBuilder<>(
db.message().pagedFolder(
args.folder, args.threading,
"time", args.use_sent_time, false,
"time", false,
false, false, false, false,
true,
args.debug),
@ -314,7 +314,6 @@ public class ViewModelMessages extends ViewModel {
private boolean threading;
private String sort;
private boolean use_sent_time;
private boolean ascending;
private boolean filter_seen;
private boolean filter_unflagged;
@ -339,7 +338,6 @@ public class ViewModelMessages extends ViewModel {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
this.threading = prefs.getBoolean("threading", true);
this.sort = prefs.getString("sort", "time");
this.use_sent_time = prefs.getBoolean("use_sent_time", false);
this.ascending = prefs.getBoolean(
viewType == AdapterMessage.ViewType.THREAD ? "ascending_thread" : "ascending_list", false);
this.filter_seen = prefs.getBoolean("filter_seen", false);
@ -363,7 +361,6 @@ public class ViewModelMessages extends ViewModel {
this.threading == other.threading &&
Objects.equals(this.sort, other.sort) &&
this.use_sent_time == other.use_sent_time &&
this.ascending == other.ascending &&
this.filter_seen == other.filter_seen &&
this.filter_unflagged == other.filter_unflagged &&
@ -381,7 +378,7 @@ public class ViewModelMessages extends ViewModel {
" thread=" + thread + ":" + id +
" query=" + query + ":" + server + "" +
" threading=" + threading +
" sort=" + sort + ":" + use_sent_time + ":" + ascending +
" sort=" + sort + ":" + ascending +
" filter seen=" + filter_seen +
" unflagged=" + filter_unflagged +
" unknown=" + filter_unknown +

@ -526,6 +526,15 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvPartialFetchRemark" />
<CheckBox
android:id="@+id/cbUseDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/title_use_date"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cbIgnoreSize" />
<!-- check -->
<Button
@ -536,7 +545,7 @@
android:tag="disable"
android:text="@string/title_check"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cbIgnoreSize" />
app:layout_constraintTop_toBottomOf="@id/cbUseDate" />
<eu.faircode.email.ContentLoadingProgressBar
android:id="@+id/pbCheck"
@ -911,7 +920,7 @@
cbBrowse,tvBrowseHint,
cbAutoSeen,
tvInterval,etInterval,tvIntervalRemark,
cbPartialFetch,tvPartialFetchRemark,cbIgnoreSize" />
cbPartialFetch,tvPartialFetchRemark,cbIgnoreSize,cbUseDate" />
<androidx.constraintlayout.widget.Group
android:id="@+id/grpFolders"

@ -50,10 +50,6 @@
android:id="@+id/menu_sort_on_snoozed"
android:title="@string/title_sort_on_hidden" />
</group>
<item
android:id="@+id/menu_use_sent_time"
android:checkable="true"
android:title="@string/title_sort_sent_time" />
<item
android:id="@+id/menu_ascending"
android:checkable="true"

@ -832,7 +832,6 @@
<string name="title_sort_on_size">Size</string>
<string name="title_sort_on_attachments">Attachments</string>
<string name="title_sort_on_hidden">Hidden</string>
<string name="title_sort_sent_time">Use sent time</string>
<string name="title_sort_ascending">Oldest first</string>
<string name="title_filter">Filter out</string>

Loading…
Cancel
Save