diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java b/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java
index 83dc0c826c..fb265ddd59 100644
--- a/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java
+++ b/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java
@@ -22,6 +22,7 @@ package eu.faircode.email;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.content.Context;
+import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
@@ -48,6 +49,7 @@ import androidx.fragment.app.DialogFragment;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.Observer;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import androidx.preference.PreferenceManager;
import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.LinearLayoutManager;
@@ -72,6 +74,7 @@ public class FragmentOptionsSynchronize extends FragmentBase implements SharedPr
private TextView tvScheduleStart;
private TextView tvScheduleEnd;
private CheckBox[] cbDay;
+ private TextView tvScheduleIgnore;
private ImageButton ibSchedules;
private SwitchCompat swQuickSyncImap;
@@ -146,6 +149,7 @@ public class FragmentOptionsSynchronize extends FragmentBase implements SharedPr
view.findViewById(R.id.cbDay5),
view.findViewById(R.id.cbDay6)
};
+ tvScheduleIgnore = view.findViewById(R.id.tvScheduleIgnore);
ibSchedules = view.findViewById(R.id.ibSchedules);
swQuickSyncImap = view.findViewById(R.id.swQuickSyncImap);
@@ -278,6 +282,14 @@ public class FragmentOptionsSynchronize extends FragmentBase implements SharedPr
});
}
+ tvScheduleIgnore.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(v.getContext());
+ lbm.sendBroadcast(new Intent(ActivitySetup.ACTION_VIEW_ACCOUNTS));
+ }
+ });
+
ibSchedules.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
diff --git a/app/src/main/java/eu/faircode/email/Log.java b/app/src/main/java/eu/faircode/email/Log.java
index 7fc7645ce9..848c19b615 100644
--- a/app/src/main/java/eu/faircode/email/Log.java
+++ b/app/src/main/java/eu/faircode/email/Log.java
@@ -2128,10 +2128,12 @@ public class Log {
}
boolean unmetered = false;
+ boolean ignore_schedule = false;
try {
if (account.conditions != null) {
JSONObject jconditions = new JSONObject(account.conditions);
unmetered = jconditions.optBoolean("unmetered");
+ ignore_schedule = jconditions.optBoolean("ignore_schedule");
}
} catch (Throwable ignored) {
}
@@ -2145,6 +2147,7 @@ public class Log {
" ondemand=" + account.ondemand +
" msgs=" + content + "/" + messages +
" ops=" + db.operation().getOperationCount(account.id) +
+ " ischedule=" + ignore_schedule + (ignore_schedule ? " !!!" : "") +
" unmetered=" + unmetered + (unmetered ? " !!!" : "") +
" " + account.state +
(account.last_connected == null ? "" : " " + dtf.format(account.last_connected)) +
diff --git a/app/src/main/res/layout/fragment_options_synchronize.xml b/app/src/main/res/layout/fragment_options_synchronize.xml
index c9eec23775..c97073dce5 100644
--- a/app/src/main/res/layout/fragment_options_synchronize.xml
+++ b/app/src/main/res/layout/fragment_options_synchronize.xml
@@ -337,6 +337,21 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cbDay5" />
+
+
Periodically checking for new messages will compare local and remote messages every time, which is an expensive operation that may result in extra battery usage, especially if there are a lot of messages. Always receive will prevent this by continuously following changes.
This might change the sync frequency to save battery usage depending on the capabilities and behavior of the email servers
Tap on a time to set a time
+ Schedules can be disabled in the advanced account settings
This reduces data usage, but new messages might be missed if the email server doesn\'t follow the standards
Some providers store messages with an unknown, invalid or future date as messages without date
Some providers don\'t support this properly, which may cause synchronizing none or all messages