From e4adc92ddc7376e01f50d06c4de140797818cfed Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 5 Nov 2020 13:36:36 +0100 Subject: [PATCH] Added batch set to poll --- .../eu/faircode/email/FragmentFolders.java | 33 ++++++++++++++++--- app/src/main/res/layout/dialog_folder_all.xml | 28 ++++++++++++++++ app/src/main/res/values/strings.xml | 2 ++ 3 files changed, 59 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentFolders.java b/app/src/main/java/eu/faircode/email/FragmentFolders.java index 8babcf28ff..1ea5f69580 100644 --- a/app/src/main/java/eu/faircode/email/FragmentFolders.java +++ b/app/src/main/java/eu/faircode/email/FragmentFolders.java @@ -797,6 +797,8 @@ public class FragmentFolders extends FragmentBase { final EditText etSyncDays = view.findViewById(R.id.etSyncDays); final EditText etKeepDays = view.findViewById(R.id.etKeepDays); final CheckBox cbKeepAll = view.findViewById(R.id.cbKeepAll); + final CheckBox cbPollSystem = view.findViewById(R.id.cbPollSystem); + final CheckBox cbPollUser = view.findViewById(R.id.cbPollUser); cbKeepAll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override @@ -815,6 +817,8 @@ public class FragmentFolders extends FragmentBase { args.putString("keep", cbKeepAll.isChecked() ? Integer.toString(Integer.MAX_VALUE) : etKeepDays.getText().toString()); + args.putBoolean("system", cbPollSystem.isChecked()); + args.putBoolean("user", cbPollUser.isChecked()); new SimpleTask() { @Override @@ -822,6 +826,8 @@ public class FragmentFolders extends FragmentBase { long account = args.getLong("account"); String sync = args.getString("sync"); String keep = args.getString("keep"); + boolean system = args.getBoolean("system"); + boolean user = args.getBoolean("user"); if (TextUtils.isEmpty(sync)) sync = "7"; @@ -829,10 +835,29 @@ public class FragmentFolders extends FragmentBase { keep = "30"; DB db = DB.getInstance(context); - db.folder().setFolderProperties( - account, - Integer.parseInt(sync), - Integer.parseInt(keep)); + try { + db.beginTransaction(); + + db.folder().setFolderProperties( + account, + Integer.parseInt(sync), + Integer.parseInt(keep)); + + List folders = db.folder().getFolders(account, false, true); + if (folders != null) + for (EntityFolder folder : folders) + if (folder.synchronize && !folder.poll) + if (EntityFolder.USER.equals(folder.type) + ? user + : system && !EntityFolder.INBOX.equals(folder.type)) + db.folder().setFolderPoll(folder.id, true); + + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + } + + ServiceSynchronize.reload(context, account, false, "Apply"); return null; } diff --git a/app/src/main/res/layout/dialog_folder_all.xml b/app/src/main/res/layout/dialog_folder_all.xml index 5d58ea6a78..37eac8cc42 100644 --- a/app/src/main/res/layout/dialog_folder_all.xml +++ b/app/src/main/res/layout/dialog_folder_all.xml @@ -80,5 +80,33 @@ android:text="@string/title_keep_all" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/etKeepDays" /> + + + + + + \ 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 8f5b3db263..70f1f01830 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -760,6 +760,8 @@ Keep messages (days) Old messages will be removed from the device, but will remain on the server Keep all messages + Set system folders to periodically check for new messages + Set user folders to periodically check for new messages Automatically move old messages to trash Automatically permanently delete old messages Old messages are messages that are no longer kept on the device