From 5ed2a43633fd251021bc3b769c031d59a8c614db Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 2 Jun 2019 08:26:12 +0200 Subject: [PATCH] Added settings to enable sync kept removed --- app/src/main/java/eu/faircode/email/Core.java | 5 ++-- .../email/FragmentOptionsSynchronize.java | 13 ++++++++++- .../layout/fragment_options_synchronize.xml | 23 +++++++++++++++++++ app/src/main/res/values/strings.xml | 2 ++ 4 files changed, 40 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 154839a34f..784272f3e1 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -941,9 +941,10 @@ class Core { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); boolean sync_unseen = prefs.getBoolean("sync_unseen", false); boolean sync_flagged = prefs.getBoolean("sync_flagged", true); + boolean sync_kept = prefs.getBoolean("sync_kept", false); Log.i(folder.name + " start sync after=" + sync_days + "/" + keep_days + - " unseen=" + sync_unseen + " sync_flagged=" + sync_flagged); + "sync unseen=" + sync_unseen + " flagged=" + sync_flagged + " kept=" + sync_kept); db.folder().setFolderSyncState(folder.id, "syncing"); @@ -987,7 +988,7 @@ class Core { } // Get list of local uids - final List uids = db.message().getUids(folder.id, null); + final List uids = db.message().getUids(folder.id, sync_kept ? null : sync_time); Log.i(folder.name + " local count=" + uids.size()); // Reduce list of local uids diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java b/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java index 3c3b8c1312..251d4334bb 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java @@ -56,9 +56,10 @@ public class FragmentOptionsSynchronize extends FragmentBase implements SharedPr private TextView tvScheduleEnd; private SwitchCompat swUnseen; private SwitchCompat swFlagged; + private SwitchCompat swSyncKept; private final static String[] RESET_OPTIONS = new String[]{ - "enabled", "poll_interval", "schedule", "schedule_start", "schedule_end", "sync_unseen", "sync_flagged" + "enabled", "poll_interval", "schedule", "schedule_start", "schedule_end", "sync_unseen", "sync_flagged", "sync_kept" }; @Override @@ -78,6 +79,7 @@ public class FragmentOptionsSynchronize extends FragmentBase implements SharedPr tvScheduleEnd = view.findViewById(R.id.tvScheduleEnd); swUnseen = view.findViewById(R.id.swUnseen); swFlagged = view.findViewById(R.id.swFlagged); + swSyncKept = view.findViewById(R.id.swSyncKept); setOptions(); @@ -174,6 +176,14 @@ public class FragmentOptionsSynchronize extends FragmentBase implements SharedPr } }); + swSyncKept.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { + prefs.edit().putBoolean("sync_kept", checked).apply(); + ServiceSynchronize.reload(getContext(), false, "sync_kept=" + checked); + } + }); + PreferenceManager.getDefaultSharedPreferences(getContext()).registerOnSharedPreferenceChangeListener(this); return view; @@ -236,6 +246,7 @@ public class FragmentOptionsSynchronize extends FragmentBase implements SharedPr swUnseen.setChecked(prefs.getBoolean("sync_unseen", false)); swFlagged.setChecked(prefs.getBoolean("sync_flagged", true)); + swSyncKept.setChecked(prefs.getBoolean("sync_kept", false)); } 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 5d956b59ff..70bd1933cc 100644 --- a/app/src/main/res/layout/fragment_options_synchronize.xml +++ b/app/src/main/res/layout/fragment_options_synchronize.xml @@ -174,6 +174,29 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/swUnseen" app:switchPadding="12dp" /> + + + + \ 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 f87b6fce7e..7ff690b078 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -167,6 +167,7 @@ Schedule All unread messages All starred messages + Check if old messages were removed from the server Prefix subject only once on replying or forwarding Automatically resize attached and embedded images @@ -235,6 +236,7 @@ Globally disable or enable receiving of messages If synchronization is disabled, it is still possible to synchronize manually by pulling down the message list. This will synchronize messages and execute operations for a limited time. Synchronizing periodically will compare local and remote messages each and every time, which is an expensive operation possibly resulting in extra battery usage, especially when there are a lot of messages to synchronize. Always synchronizing will avoid this by continuous listening for changes only. + This will use extra data and extra battery power, especially if there are a lot of messages kept on the device Tap on a time to set a time Metered connections are generally mobile connections or paid Wi-Fi hotspots Disabling this option will disable receiving and sending messages on mobile internet connections