diff --git a/app/src/main/java/eu/faircode/email/EmailService.java b/app/src/main/java/eu/faircode/email/EmailService.java
index e1b9e37061..a8bb2d690b 100644
--- a/app/src/main/java/eu/faircode/email/EmailService.java
+++ b/app/src/main/java/eu/faircode/email/EmailService.java
@@ -128,6 +128,7 @@ public class EmailService implements AutoCloseable {
static final int ENCRYPTION_NONE = 2;
final static int DEFAULT_CONNECT_TIMEOUT = 20; // seconds
+ static final int DEFAULT_RESTART_INTERVAL = 4 * 60; // seconds
final static boolean SEPARATE_STORE_CONNECTION = false;
private final static int SEARCH_TIMEOUT = 90 * 1000; // milliseconds
diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java
index 5ee7d23bec..2297a0a9d3 100644
--- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java
+++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java
@@ -194,6 +194,8 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
private SeekBar sbChunkSize;
private TextView tvThreadRange;
private SeekBar sbThreadRange;
+ private TextView tvRestartInterval;
+ private SeekBar sbRestartInterval;
private SwitchCompat swAutoScroll;
private SwitchCompat swUndoManager;
private SwitchCompat swBrowserZoom;
@@ -298,7 +300,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
"sqlite_integrity_check", "wal", "sqlite_checkpoints", "sqlite_analyze", "sqlite_auto_vacuum", "sqlite_sync_extra", "sqlite_cache",
"legacy_queries",
"cache_lists", "oauth_tabs",
- "start_delay", "range_size", "chunk_size", "thread_range",
+ "start_delay", "range_size", "chunk_size", "thread_range", "restart_interval",
"autoscroll_editor", "undo_manager",
"browser_zoom", "fake_dark",
"ignore_formatted_size",
@@ -461,6 +463,8 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
sbChunkSize = view.findViewById(R.id.sbChunkSize);
tvThreadRange = view.findViewById(R.id.tvThreadRange);
sbThreadRange = view.findViewById(R.id.sbThreadRange);
+ tvRestartInterval = view.findViewById(R.id.tvRestartInterval);
+ sbRestartInterval = view.findViewById(R.id.sbRestartInterval);
swAutoScroll = view.findViewById(R.id.swAutoScroll);
swUndoManager = view.findViewById(R.id.swUndoManager);
swBrowserZoom = view.findViewById(R.id.swBrowserZoom);
@@ -1394,6 +1398,23 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
}
});
+ sbRestartInterval.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
+ @Override
+ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+ prefs.edit().putInt("restart_interval", progress * 10).apply();
+ }
+
+ @Override
+ public void onStartTrackingTouch(SeekBar seekBar) {
+ // Do nothing
+ }
+
+ @Override
+ public void onStopTrackingTouch(SeekBar seekBar) {
+ // Do nothing
+ }
+ });
+
swAutoScroll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@@ -2540,6 +2561,10 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
tvThreadRange.setText(getString(R.string.title_advanced_thread_range, range));
sbThreadRange.setProgress(thread_range);
+ int restart_interval = prefs.getInt("restart_interval", EmailService.DEFAULT_RESTART_INTERVAL);
+ tvRestartInterval.setText(getString(R.string.title_advanced_restart_interval, restart_interval));
+ sbRestartInterval.setProgress(restart_interval / 10);
+
swAutoScroll.setChecked(prefs.getBoolean("autoscroll_editor", false));
swUndoManager.setChecked(prefs.getBoolean("undo_manager", false));
swBrowserZoom.setChecked(prefs.getBoolean("browser_zoom", false));
diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java
index b7809ccaf0..6ef75b19b9 100644
--- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java
+++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java
@@ -160,7 +160,6 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
private static final int FETCH_YIELD_DURATION = 50; // milliseconds
private static final long WATCHDOG_INTERVAL = 60 * 60 * 1000L; // milliseconds
private static final long MAX_QUOTA = 1000 * 1000 * 1000L; // KB
- private static final int YAHOO_RESTART_INTERVAL = 120; // seconds
private static final String ACTION_NEW_MESSAGE_COUNT = BuildConfig.APPLICATION_ID + ".NEW_MESSAGE_COUNT";
@@ -182,6 +181,7 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
"tcp_keep_alive", // force reconnect
"ssl_harden", "ssl_harden_strict", "cert_strict", "cert_transparency", "check_names", "bouncy_castle", "bc_fips", // force reconnect
"experiments", "debug", "protocol", // force reconnect
+ //"restart_interval", // force reconnect
"auth_plain", "auth_login", "auth_ntlm", "auth_sasl", "auth_apop", // force reconnect
"keep_alive_poll", "empty_pool", "idle_done", // force reconnect
"exact_alarms" // force schedule
@@ -1672,11 +1672,11 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
if (account.keep_alive_noop) {
int timeout = prefs.getInt("timeout", EmailService.DEFAULT_CONNECT_TIMEOUT);
- if (account.isYahoo() && timeout < YAHOO_RESTART_INTERVAL) {
- int factor = YAHOO_RESTART_INTERVAL / timeout;
- iservice.setRestartIdleInterval(timeout * factor);
- } else
- iservice.setRestartIdleInterval(timeout * 2 * 6); // 20 x 2 x 6 = 4 min
+ int restart_interval = prefs.getInt("restart_interval", EmailService.DEFAULT_RESTART_INTERVAL);
+ int factor = (timeout == 0 ? 0 : restart_interval / timeout);
+ int idle_interval = timeout * factor;
+ Log.i("Restart interval=" + restart_interval + " timeout=" + timeout + " factor=" + factor + " idle=" + idle_interval);
+ iservice.setRestartIdleInterval(idle_interval);
}
final Date lastStillHere = new Date(0);
diff --git a/app/src/main/res/layout/fragment_options_misc.xml b/app/src/main/res/layout/fragment_options_misc.xml
index 045aad6c75..9b3486df24 100644
--- a/app/src/main/res/layout/fragment_options_misc.xml
+++ b/app/src/main/res/layout/fragment_options_misc.xml
@@ -1303,6 +1303,29 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvThreadRange" />
+
+
+
+
Range size: %1$d
Chunk size: %1$d
Thread range: %1$d days
+ Restart interval: %1$d s
Auto scroll editor
Use Android\'s undo manager
Use browser zoom