From 0868984f8fd7e083faaff193b8af3339a98def24 Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 27 Jan 2022 14:43:55 +0100 Subject: [PATCH] Synchronizing accounts by type --- .../java/eu/faircode/email/ActivityEML.java | 5 ++--- .../java/eu/faircode/email/ActivityMain.java | 2 +- .../java/eu/faircode/email/ActivityWidget.java | 2 +- .../faircode/email/ActivityWidgetUnified.java | 2 +- .../java/eu/faircode/email/AdapterMessage.java | 2 +- .../main/java/eu/faircode/email/DaoAccount.java | 6 ++++-- .../eu/faircode/email/FragmentDialogSearch.java | 2 +- .../email/FragmentDialogSelectAccount.java | 2 +- .../eu/faircode/email/FragmentMessages.java | 17 ++++++----------- .../java/eu/faircode/email/FragmentOrder.java | 2 +- .../java/eu/faircode/email/FragmentRule.java | 2 +- .../java/eu/faircode/email/FragmentSetup.java | 2 +- .../java/eu/faircode/email/ServiceExternal.java | 2 +- 13 files changed, 22 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ActivityEML.java b/app/src/main/java/eu/faircode/email/ActivityEML.java index 9623737345..e51b4448b8 100644 --- a/app/src/main/java/eu/faircode/email/ActivityEML.java +++ b/app/src/main/java/eu/faircode/email/ActivityEML.java @@ -563,7 +563,7 @@ public class ActivityEML extends ActivityBase { @Override protected List onExecute(Context context, Bundle args) { DB db = DB.getInstance(context); - return db.account().getSynchronizingAccounts(); + return db.account().getSynchronizingAccounts(EntityAccount.TYPE_IMAP); } @Override @@ -571,8 +571,7 @@ public class ActivityEML extends ActivityBase { ArrayAdapter adapter = new ArrayAdapter<>(ActivityEML.this, R.layout.spinner_item1, android.R.id.text1); for (EntityAccount account : accounts) - if (account.protocol == EntityAccount.TYPE_IMAP) - adapter.add(account); + adapter.add(account); new AlertDialog.Builder(ActivityEML.this) .setIcon(R.drawable.twotone_save_alt_24) diff --git a/app/src/main/java/eu/faircode/email/ActivityMain.java b/app/src/main/java/eu/faircode/email/ActivityMain.java index 14b91e88c1..be55f785e2 100644 --- a/app/src/main/java/eu/faircode/email/ActivityMain.java +++ b/app/src/main/java/eu/faircode/email/ActivityMain.java @@ -175,7 +175,7 @@ public class ActivityMain extends ActivityBase implements FragmentManager.OnBack return true; DB db = DB.getInstance(context); - List accounts = db.account().getSynchronizingAccounts(); + List accounts = db.account().getSynchronizingAccounts(null); boolean hasAccounts = (accounts != null && accounts.size() > 0); prefs.edit().putBoolean("has_accounts", hasAccounts).apply(); diff --git a/app/src/main/java/eu/faircode/email/ActivityWidget.java b/app/src/main/java/eu/faircode/email/ActivityWidget.java index c5db0b1c06..420bbf309e 100644 --- a/app/src/main/java/eu/faircode/email/ActivityWidget.java +++ b/app/src/main/java/eu/faircode/email/ActivityWidget.java @@ -205,7 +205,7 @@ public class ActivityWidget extends ActivityBase { protected List onExecute(Context context, Bundle args) { DB db = DB.getInstance(context); - return db.account().getSynchronizingAccounts(); + return db.account().getSynchronizingAccounts(null); } @Override diff --git a/app/src/main/java/eu/faircode/email/ActivityWidgetUnified.java b/app/src/main/java/eu/faircode/email/ActivityWidgetUnified.java index e3b28f5dcc..95486e1340 100644 --- a/app/src/main/java/eu/faircode/email/ActivityWidgetUnified.java +++ b/app/src/main/java/eu/faircode/email/ActivityWidgetUnified.java @@ -310,7 +310,7 @@ public class ActivityWidgetUnified extends ActivityBase { protected List onExecute(Context context, Bundle args) { DB db = DB.getInstance(context); - return db.account().getSynchronizingAccounts(); + return db.account().getSynchronizingAccounts(null); } @Override diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index f72d268a7c..83b659f467 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -4879,7 +4879,7 @@ public class AdapterMessage extends RecyclerView.Adapter onExecute(Context context, Bundle args) { DB db = DB.getInstance(context); - return db.account().getSynchronizingAccounts(); + return db.account().getSynchronizingAccounts(EntityAccount.TYPE_IMAP); } @Override diff --git a/app/src/main/java/eu/faircode/email/DaoAccount.java b/app/src/main/java/eu/faircode/email/DaoAccount.java index ea94ed3ba7..d403191011 100644 --- a/app/src/main/java/eu/faircode/email/DaoAccount.java +++ b/app/src/main/java/eu/faircode/email/DaoAccount.java @@ -33,9 +33,11 @@ public interface DaoAccount { " ORDER BY `order`, `primary` DESC, name COLLATE NOCASE") List getAccounts(); - @Query("SELECT * FROM account WHERE synchronize" + + @Query("SELECT * FROM account" + + " WHERE synchronize" + + " AND (:type IS NULL OR pop = :type)" + " ORDER BY `order`, `primary` DESC, name COLLATE NOCASE") - List getSynchronizingAccounts(); + List getSynchronizingAccounts(Integer type); @Query("SELECT * FROM account" + " WHERE (:id IS NULL OR id = :id)" + diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogSearch.java b/app/src/main/java/eu/faircode/email/FragmentDialogSearch.java index 0afa4c44a6..118ab1aac6 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogSearch.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogSearch.java @@ -447,7 +447,7 @@ public class FragmentDialogSearch extends FragmentDialogBase { DB db = DB.getInstance(context); EntityAccount account = null; if (aid < 0) { - List accounts = db.account().getSynchronizingAccounts(); + List accounts = db.account().getSynchronizingAccounts(EntityAccount.TYPE_IMAP); if (accounts == null) return null; for (EntityAccount a : accounts) diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogSelectAccount.java b/app/src/main/java/eu/faircode/email/FragmentDialogSelectAccount.java index 19ab82ac7d..e63b5e8047 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogSelectAccount.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogSelectAccount.java @@ -44,7 +44,7 @@ public class FragmentDialogSelectAccount extends FragmentDialogBase { @Override protected List onExecute(Context context, Bundle args) { DB db = DB.getInstance(context); - return db.account().getSynchronizingAccounts(); + return db.account().getSynchronizingAccounts(null); } @Override diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index 1d30e919b2..bf612dc940 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -1255,12 +1255,9 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. List result = new ArrayList<>(); DB db = DB.getInstance(context); - if (aid < 0) { - List accounts = db.account().getSynchronizingAccounts(); - for (EntityAccount account : accounts) - if (account.protocol == EntityAccount.TYPE_IMAP) - result.add(account); - } else { + if (aid < 0) + result.addAll(db.account().getSynchronizingAccounts(EntityAccount.TYPE_IMAP)); + else { EntityAccount account = db.account().getAccount(aid); if (account != null && account.protocol == EntityAccount.TYPE_IMAP) result.add(account); @@ -3269,9 +3266,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. result.accounts = new ArrayList<>(); if (!result.hasPop) - for (EntityAccount account : db.account().getSynchronizingAccounts()) - if (account.protocol == EntityAccount.TYPE_IMAP) - result.accounts.add(account); + result.accounts.addAll(db.account().getSynchronizingAccounts(EntityAccount.TYPE_IMAP)); if (result.folders.size() > 1) result.folders = new ArrayList<>(); @@ -4344,7 +4339,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. DB db = DB.getInstance(context); if (folder < 0) { - List accounts = db.account().getSynchronizingAccounts(); + List accounts = db.account().getSynchronizingAccounts(null); if (accounts != null) for (EntityAccount account : accounts) db.message().ignoreAll(account.id, null, type); @@ -8903,7 +8898,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. List accounts; if (account < 0) - accounts = db.account().getSynchronizingAccounts(); + accounts = db.account().getSynchronizingAccounts(null); else { EntityAccount account = db.account().getAccount(aid); if (account == null) diff --git a/app/src/main/java/eu/faircode/email/FragmentOrder.java b/app/src/main/java/eu/faircode/email/FragmentOrder.java index 287ec9271f..7d9b3df6b6 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOrder.java +++ b/app/src/main/java/eu/faircode/email/FragmentOrder.java @@ -98,7 +98,7 @@ public class FragmentOrder extends FragmentBase { @Override protected List onExecute(Context context, Bundle args) { DB db = DB.getInstance(context); - return db.account().getSynchronizingAccounts(); + return db.account().getSynchronizingAccounts(null); } @Override diff --git a/app/src/main/java/eu/faircode/email/FragmentRule.java b/app/src/main/java/eu/faircode/email/FragmentRule.java index bd463d49c5..83416373f9 100644 --- a/app/src/main/java/eu/faircode/email/FragmentRule.java +++ b/app/src/main/java/eu/faircode/email/FragmentRule.java @@ -408,7 +408,7 @@ public class FragmentRule extends FragmentBase { @Override protected List onExecute(Context context, Bundle args) { DB db = DB.getInstance(context); - return db.account().getSynchronizingAccounts(); + return db.account().getSynchronizingAccounts(EntityAccount.TYPE_IMAP); } @Override diff --git a/app/src/main/java/eu/faircode/email/FragmentSetup.java b/app/src/main/java/eu/faircode/email/FragmentSetup.java index e48be70198..0cb53202b4 100644 --- a/app/src/main/java/eu/faircode/email/FragmentSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentSetup.java @@ -648,7 +648,7 @@ public class FragmentSetup extends FragmentBase { @Override protected List onExecute(Context context, Bundle args) throws Throwable { DB db = DB.getInstance(context); - return db.account().getSynchronizingAccounts(); + return db.account().getSynchronizingAccounts(null); } @Override diff --git a/app/src/main/java/eu/faircode/email/ServiceExternal.java b/app/src/main/java/eu/faircode/email/ServiceExternal.java index 551d8cde7c..9f32987689 100644 --- a/app/src/main/java/eu/faircode/email/ServiceExternal.java +++ b/app/src/main/java/eu/faircode/email/ServiceExternal.java @@ -148,7 +148,7 @@ public class ServiceExternal extends Service { DB db = DB.getInstance(context); List accounts; if (accountName == null) - accounts = db.account().getSynchronizingAccounts(); + accounts = db.account().getSynchronizingAccounts(null); else { EntityAccount account = db.account().getAccount(accountName); if (account == null)