diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java
index adbc02136d..42bb93a2c1 100644
--- a/app/src/main/java/eu/faircode/email/FragmentMessages.java
+++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java
@@ -257,6 +257,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
private ViewGroup view;
private SwipeRefreshLayoutEx swipeRefresh;
private TextView tvAirplane;
+ private TextView tvLastSync;
private TextView tvSupport;
private ImageButton ibHintSupport;
private ImageButton ibHintSwipe;
@@ -279,6 +280,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
private BottomNavigationView bottom_navigation;
private ContentLoadingProgressBar pbWait;
private Group grpAirplane;
+ private Group grpLastSync;
private Group grpSupport;
private Group grpHintSupport;
private Group grpHintSwipe;
@@ -336,6 +338,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
private boolean quick_scroll;
private boolean addresses;
private boolean swipe_reply;
+ private boolean last_sync_time;
private int colorPrimary;
private int colorAccent;
@@ -472,6 +475,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
quick_scroll = prefs.getBoolean("quick_scroll", true);
addresses = prefs.getBoolean("addresses", false);
swipe_reply = prefs.getBoolean("swipe_reply", false);
+ last_sync_time = prefs.getBoolean("last_sync_time", false);
colorPrimary = Helper.resolveColor(getContext(), R.attr.colorPrimary);
colorAccent = Helper.resolveColor(getContext(), R.attr.colorAccent);
@@ -521,6 +525,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
// Get controls
swipeRefresh = view.findViewById(R.id.swipeRefresh);
tvAirplane = view.findViewById(R.id.tvAirplane);
+ tvLastSync = view.findViewById(R.id.tvLastSync);
tvSupport = view.findViewById(R.id.tvSupport);
ibHintSupport = view.findViewById(R.id.ibHintSupport);
ibHintSwipe = view.findViewById(R.id.ibHintSwipe);
@@ -544,6 +549,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
pbWait = view.findViewById(R.id.pbWait);
grpAirplane = view.findViewById(R.id.grpAirplane);
+ grpLastSync = view.findViewById(R.id.grpLastSync);
grpSupport = view.findViewById(R.id.grpSupport);
grpHintSupport = view.findViewById(R.id.grpHintSupport);
grpHintSwipe = view.findViewById(R.id.grpHintSwipe);
@@ -580,7 +586,6 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
}
});
- grpAirplane.setVisibility(View.GONE);
tvAirplane.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -1479,6 +1484,8 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
// Initialize
FragmentDialogTheme.setBackground(getContext(), view, false);
+ grpAirplane.setVisibility(View.GONE);
+ grpLastSync.setVisibility(View.GONE);
tvNoEmail.setVisibility(View.GONE);
tvNoEmailHint.setVisibility(View.GONE);
etSearch.setVisibility(View.GONE);
@@ -5733,6 +5740,15 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
name = getString(R.string.title_name_count, name, NF.format(unseen));
setSubtitle(name);
+ if (viewType == AdapterMessage.ViewType.FOLDER &&
+ folders.size() == 1 &&
+ folders.get(0).last_sync != null) {
+ tvLastSync.setText(DateUtils.getRelativeTimeSpanString(context,
+ folders.get(0).last_sync, true));
+ grpLastSync.setVisibility(View.VISIBLE);
+ } else
+ grpLastSync.setVisibility(View.GONE);
+
fabError.setTag(accountErrors);
if (folderErrors || accountErrors)
fabError.show();
diff --git a/app/src/main/java/eu/faircode/email/FragmentOptions.java b/app/src/main/java/eu/faircode/email/FragmentOptions.java
index 2d609cd0ac..297faea9ad 100644
--- a/app/src/main/java/eu/faircode/email/FragmentOptions.java
+++ b/app/src/main/java/eu/faircode/email/FragmentOptions.java
@@ -157,7 +157,8 @@ public class FragmentOptions extends FragmentBase {
"quick_filter", "quick_scroll",
"experiments", "debug", "log_level", "test1", "test2", "test3", "test4", "test5", "webview_legacy",
"biometrics",
- "default_light"
+ "default_light",
+ "last_sync_time"
};
@Override
diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java
index 827ed41c81..e9dc2a50b1 100644
--- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java
+++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java
@@ -174,6 +174,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
private SwitchCompat swExactAlarms;
private SwitchCompat swInfra;
private SwitchCompat swDupMsgId;
+ private SwitchCompat swLastSync;
private SwitchCompat swTestIab;
private Button btnImportProviders;
private TextView tvProcessors;
@@ -216,7 +217,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
"use_modseq", "uid_command", "perform_expunge", "uid_expunge",
"auth_plain", "auth_login", "auth_ntlm", "auth_sasl", "auth_apop",
"keep_alive_poll", "empty_pool", "idle_done", "logarithmic_backoff",
- "exact_alarms", "infra", "dkim_verify", "dup_msgids", "test_iab"
+ "exact_alarms", "infra", "dkim_verify", "dup_msgids", "last_sync_time", "test_iab"
};
private final static String[] RESET_QUESTIONS = new String[]{
@@ -345,6 +346,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
swExactAlarms = view.findViewById(R.id.swExactAlarms);
swInfra = view.findViewById(R.id.swInfra);
swDupMsgId = view.findViewById(R.id.swDupMsgId);
+ swLastSync = view.findViewById(R.id.swLastSync);
swTestIab = view.findViewById(R.id.swTestIab);
btnImportProviders = view.findViewById(R.id.btnImportProviders);
tvProcessors = view.findViewById(R.id.tvProcessors);
@@ -1168,6 +1170,13 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
}
});
+ swLastSync.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
+ prefs.edit().putBoolean("last_sync_time", checked).apply();
+ }
+ });
+
swTestIab.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@@ -1765,6 +1774,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
swExactAlarms.setChecked(prefs.getBoolean("exact_alarms", true));
swInfra.setChecked(prefs.getBoolean("infra", false));
swDupMsgId.setChecked(prefs.getBoolean("dup_msgids", false));
+ swLastSync.setChecked(prefs.getBoolean("last_sync_time", false));
swTestIab.setChecked(prefs.getBoolean("test_iab", false));
tvProcessors.setText(getString(R.string.title_advanced_processors, Runtime.getRuntime().availableProcessors()));
diff --git a/app/src/main/res/layout/fragment_messages.xml b/app/src/main/res/layout/fragment_messages.xml
index f648931bae..cfea90cd3c 100644
--- a/app/src/main/res/layout/fragment_messages.xml
+++ b/app/src/main/res/layout/fragment_messages.xml
@@ -40,6 +40,27 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvAirplane" />
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/vSeparatorLastSync" />
+
+
+
+