From af3fee7e85747c0226c66b569efb9de3d30eddfa Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 27 Jun 2023 18:50:09 +0200 Subject: [PATCH] Added option to sync all folders --- .../eu/faircode/email/FragmentAccounts.java | 16 ++++++++++- .../eu/faircode/email/FragmentFolders.java | 11 ++++++-- .../email/FragmentOptionsBehavior.java | 14 +++++++++- .../res/layout/fragment_options_behavior.xml | 28 ++++++++++++++++++- app/src/main/res/values/strings.xml | 2 ++ 5 files changed, 66 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentAccounts.java b/app/src/main/java/eu/faircode/email/FragmentAccounts.java index 57f874ebe7..80832a628a 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAccounts.java +++ b/app/src/main/java/eu/faircode/email/FragmentAccounts.java @@ -471,12 +471,26 @@ public class FragmentAccounts extends FragmentBase { boolean outbox = false; boolean force = args.getBoolean("force"); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + boolean pull_all = prefs.getBoolean("pull_all", false); + DB db = DB.getInstance(context); try { db.beginTransaction(); // Unified inbox - List folders = db.folder().getFoldersUnified(null, true); + List folders; + if (pull_all) { + folders = new ArrayList<>(); + List accounts = db.account().getSynchronizingAccounts(null); + if (accounts != null) + for (EntityAccount account : accounts) { + List f = db.folder().getFolders(account.id, false, true); + if (f != null) + folders.addAll(f); + } + } else + folders = db.folder().getFoldersUnified(null, true); if (folders.size() > 0) Collections.sort(folders, folders.get(0).getComparator(context)); diff --git a/app/src/main/java/eu/faircode/email/FragmentFolders.java b/app/src/main/java/eu/faircode/email/FragmentFolders.java index 40591c96b7..6492cd8678 100644 --- a/app/src/main/java/eu/faircode/email/FragmentFolders.java +++ b/app/src/main/java/eu/faircode/email/FragmentFolders.java @@ -552,6 +552,9 @@ public class FragmentFolders extends FragmentBase { boolean outbox = false; boolean force = args.getBoolean("force"); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + boolean pull_all = prefs.getBoolean("pull_all", false); + DB db = DB.getInstance(context); try { db.beginTransaction(); @@ -565,8 +568,12 @@ public class FragmentFolders extends FragmentBase { List folders; if (aid < 0) folders = db.folder().getFoldersUnified(null, true); - else - folders = db.folder().getSynchronizingFolders(aid); + else { + if (pull_all) + folders = db.folder().getFolders(aid, false, true); + else + folders = db.folder().getSynchronizingFolders(aid); + } if (folders.size() > 0) Collections.sort(folders, folders.get(0).getComparator(context)); diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java b/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java index 362a77e92a..bb0d4e7b64 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java @@ -63,6 +63,7 @@ public class FragmentOptionsBehavior extends FragmentBase implements SharedPrefe private SwitchCompat swLanguageDetection; private EditText etDefaultSnooze; private SwitchCompat swPull; + private SwitchCompat swPullAll; private SwitchCompat swAutoScroll; private SwitchCompat swQuickFilter; private SwitchCompat swQuickScroll; @@ -114,7 +115,7 @@ public class FragmentOptionsBehavior extends FragmentBase implements SharedPrefe private final static String[] RESET_OPTIONS = new String[]{ "restore_on_launch", "sync_on_launch", "double_back", "conversation_actions", "conversation_actions_replies", "language_detection", "photo_picker", "default_snooze", - "pull", "autoscroll", "quick_filter", "quick_scroll", "quick_actions", "swipe_sensitivity", "foldernav", + "pull", "pull_all", "autoscroll", "quick_filter", "quick_scroll", "quick_actions", "swipe_sensitivity", "foldernav", "doubletap", "swipenav", "volumenav", "reversed", "swipe_close", "swipe_move", "autoexpand", "expand_first", "expand_all", "expand_one", "collapse_multiple", "autoclose", "onclose", "autoclose_unseen", "autoclose_send", "collapse_marked", @@ -143,6 +144,7 @@ public class FragmentOptionsBehavior extends FragmentBase implements SharedPrefe swLanguageDetection = view.findViewById(R.id.swLanguageDetection); etDefaultSnooze = view.findViewById(R.id.etDefaultSnooze); swPull = view.findViewById(R.id.swPull); + swPullAll = view.findViewById(R.id.swPullAll); swAutoScroll = view.findViewById(R.id.swAutoScroll); swQuickFilter = view.findViewById(R.id.swQuickFilter); swQuickScroll = view.findViewById(R.id.swQuickScroll); @@ -274,6 +276,14 @@ public class FragmentOptionsBehavior extends FragmentBase implements SharedPrefe @Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { prefs.edit().putBoolean("pull", checked).apply(); + swPullAll.setEnabled(checked); + } + }); + + swPullAll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { + prefs.edit().putBoolean("pull_all", checked).apply(); } }); @@ -658,6 +668,8 @@ public class FragmentOptionsBehavior extends FragmentBase implements SharedPrefe etDefaultSnooze.setHint("1"); swPull.setChecked(prefs.getBoolean("pull", true)); + swPullAll.setChecked(prefs.getBoolean("pull_all", false)); + swPullAll.setEnabled(swPull.isChecked()); swAutoScroll.setChecked(prefs.getBoolean("autoscroll", false)); swQuickFilter.setChecked(prefs.getBoolean("quick_filter", false)); swQuickScroll.setChecked(prefs.getBoolean("quick_scroll", true)); diff --git a/app/src/main/res/layout/fragment_options_behavior.xml b/app/src/main/res/layout/fragment_options_behavior.xml index 1a23b7ecea..3524c33b93 100644 --- a/app/src/main/res/layout/fragment_options_behavior.xml +++ b/app/src/main/res/layout/fragment_options_behavior.xml @@ -249,6 +249,32 @@ app:layout_constraintTop_toBottomOf="@id/tvCaptionList" app:switchPadding="12dp" /> + + + + Detect message text language Use the Android photo picker Pull down to refresh + Synchronize all folders Scroll to top on receiving new messages Double tap to mark message read/unread Swipe left/right to go to next/previous conversation @@ -932,6 +933,7 @@ This will check if DNS MX records exist This will slow down synchronizing messages This will always return to the folder list of the related account from a message list + When pulling down the folder or account list If disabled, only email addresses will be used when selecting contacts In addition to contacts provided by Android. Contact data will be stored for newly sent or received messages only when enabled.