diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java
index ba95cbbd74..edc1080d88 100644
--- a/app/src/main/java/eu/faircode/email/Core.java
+++ b/app/src/main/java/eu/faircode/email/Core.java
@@ -866,7 +866,12 @@ class Core {
if (keep_days == sync_days)
keep_days++;
- Log.i(folder.name + " start sync after=" + sync_days + "/" + keep_days);
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
+ boolean sync_unseen = prefs.getBoolean("sync_unseen", false);
+ boolean sync_flagged = prefs.getBoolean("sync_flagged", true);
+
+ Log.i(folder.name + " start sync after=" + sync_days + "/" + keep_days +
+ " unseen=" + sync_unseen + " sync_flagged=" + sync_flagged);
db.folder().setFolderSyncState(folder.id, "syncing");
@@ -915,8 +920,9 @@ class Core {
// Reduce list of local uids
SearchTerm searchTerm = new ReceivedDateTerm(ComparisonTerm.GE, new Date(sync_time));
- searchTerm = new OrTerm(searchTerm, new FlagTerm(new Flags(Flags.Flag.SEEN), false));
- if (ifolder.getPermanentFlags().contains(Flags.Flag.FLAGGED))
+ if (sync_unseen)
+ searchTerm = new OrTerm(searchTerm, new FlagTerm(new Flags(Flags.Flag.SEEN), false));
+ if (sync_flagged && ifolder.getPermanentFlags().contains(Flags.Flag.FLAGGED))
searchTerm = new OrTerm(searchTerm, new FlagTerm(new Flags(Flags.Flag.FLAGGED), true));
long search = SystemClock.elapsedRealtime();
diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java b/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java
index 70770dc0f1..bba983da98 100644
--- a/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java
+++ b/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java
@@ -54,9 +54,11 @@ public class FragmentOptionsSynchronize extends FragmentBase implements SharedPr
private SwitchCompat swSchedule;
private TextView tvScheduleStart;
private TextView tvScheduleEnd;
+ private SwitchCompat swUnseen;
+ private SwitchCompat swFlagged;
private final static String[] RESET_OPTIONS = new String[]{
- "enabled", "poll_interval", "schedule", "schedule_start", "schedule_end"
+ "enabled", "poll_interval", "schedule", "schedule_start", "schedule_end", "sync_unseen", "sync_flagged"
};
@Override
@@ -74,6 +76,8 @@ public class FragmentOptionsSynchronize extends FragmentBase implements SharedPr
swSchedule = view.findViewById(R.id.swSchedule);
tvScheduleStart = view.findViewById(R.id.tvScheduleStart);
tvScheduleEnd = view.findViewById(R.id.tvScheduleEnd);
+ swUnseen = view.findViewById(R.id.swUnseen);
+ swFlagged = view.findViewById(R.id.swFlagged);
// Wire controls
@@ -153,6 +157,22 @@ public class FragmentOptionsSynchronize extends FragmentBase implements SharedPr
}
});
+ swUnseen.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
+ prefs.edit().putBoolean("sync_unseen", checked).apply();
+ ServiceSynchronize.reload(getContext(), false, "sync_unseen=" + checked);
+ }
+ });
+
+ swFlagged.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
+ prefs.edit().putBoolean("sync_flagged", checked).apply();
+ ServiceSynchronize.reload(getContext(), false, "sync_flagged=" + checked);
+ }
+ });
+
setOptions();
PreferenceManager.getDefaultSharedPreferences(getContext()).registerOnSharedPreferenceChangeListener(this);
@@ -214,6 +234,9 @@ public class FragmentOptionsSynchronize extends FragmentBase implements SharedPr
swSchedule.setChecked(prefs.getBoolean("schedule", false));
tvScheduleStart.setText(formatHour(getContext(), prefs.getInt("schedule_start", 0)));
tvScheduleEnd.setText(formatHour(getContext(), prefs.getInt("schedule_end", 0)));
+
+ swUnseen.setChecked(prefs.getBoolean("sync_unseen", false));
+ swFlagged.setChecked(prefs.getBoolean("sync_flagged", true));
}
private String formatHour(Context context, int minutes) {
diff --git a/app/src/main/res/layout/fragment_options_synchronize.xml b/app/src/main/res/layout/fragment_options_synchronize.xml
index cf08a02a4b..39a409f496 100644
--- a/app/src/main/res/layout/fragment_options_synchronize.xml
+++ b/app/src/main/res/layout/fragment_options_synchronize.xml
@@ -117,6 +117,28 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvScheduleStart" />
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 0c3761adf6..bab544ea2c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -162,6 +162,8 @@
Enabled
When
Schedule
+ All unread messages
+ All starred messages
Use metered connections
Automatically download messages and attachments on a metered connection up to