From c9d5568dc66239fe492f17bd145e7f2d36a44d99 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 19 Feb 2024 17:53:32 +0100 Subject: [PATCH] Added menu item to disable folders for accounts --- .../eu/faircode/email/AdapterAccount.java | 32 ++++++++++++++++--- .../eu/faircode/email/FragmentAccounts.java | 22 ++++++++++--- app/src/main/res/menu/menu_accounts.xml | 6 ++++ 3 files changed, 51 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/AdapterAccount.java b/app/src/main/java/eu/faircode/email/AdapterAccount.java index b9574e12c8..50e2f01f97 100644 --- a/app/src/main/java/eu/faircode/email/AdapterAccount.java +++ b/app/src/main/java/eu/faircode/email/AdapterAccount.java @@ -79,6 +79,7 @@ public class AdapterAccount extends RecyclerView.Adapter all = new ArrayList<>(); private List items = new ArrayList<>(); private NumberFormat NF = NumberFormat.getNumberInstance(); @@ -858,10 +860,11 @@ public class AdapterAccount extends RecyclerView.Adapter accounts) { Log.i("Set accounts=" + accounts.size()); - if (accounts.size() > 0) - TupleAccountFolder.sort(accounts, true, context); + this.all = accounts; - DiffUtil.DiffResult diff = DiffUtil.calculateDiff(new DiffCallback(items, accounts), false); + List filtered; + if (show_folders) + filtered = all; + else { + filtered = new ArrayList<>(); + for (TupleAccountFolder account : accounts) + if (account.folderName == null) + filtered.add(account); + } - items = accounts; + if (filtered.size() > 0) + TupleAccountFolder.sort(filtered, true, context); + + DiffUtil.DiffResult diff = DiffUtil.calculateDiff(new DiffCallback(items, filtered), false); + + items = filtered; diff.dispatchUpdatesTo(new ListUpdateCallback() { @Override @@ -938,6 +953,13 @@ public class AdapterAccount extends RecyclerView.Adapter prev = new ArrayList<>(); private List next = new ArrayList<>(); diff --git a/app/src/main/java/eu/faircode/email/FragmentAccounts.java b/app/src/main/java/eu/faircode/email/FragmentAccounts.java index 60964e39db..6709d1593f 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAccounts.java +++ b/app/src/main/java/eu/faircode/email/FragmentAccounts.java @@ -58,12 +58,9 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.android.material.snackbar.Snackbar; -import java.text.Collator; import java.util.ArrayList; import java.util.Collections; -import java.util.Comparator; import java.util.List; -import java.util.Locale; import java.util.Objects; public class FragmentAccounts extends FragmentBase { @@ -72,6 +69,7 @@ public class FragmentAccounts extends FragmentBase { private boolean cards; private boolean dividers; private boolean compact; + private boolean show_folders; private ViewGroup view; private SwipeRefreshLayout swipeRefresh; @@ -97,6 +95,7 @@ public class FragmentAccounts extends FragmentBase { cards = prefs.getBoolean("cards", true); dividers = prefs.getBoolean("dividers", true); compact = prefs.getBoolean("compact_accounts", false) && !settings; + show_folders = prefs.getBoolean("folders_accounts", true) && !settings; } @Override @@ -222,7 +221,7 @@ public class FragmentAccounts extends FragmentBase { }; rvAccount.addItemDecoration(categoryDecorator); - adapter = new AdapterAccount(this, settings, compact); + adapter = new AdapterAccount(this, settings, compact, show_folders); rvAccount.setAdapter(adapter); fab.setOnClickListener(new View.OnClickListener() { @@ -359,6 +358,8 @@ public class FragmentAccounts extends FragmentBase { menu.findItem(R.id.menu_outbox).setVisible(!settings); menu.findItem(R.id.menu_compact).setChecked(compact); menu.findItem(R.id.menu_compact).setVisible(!settings); + menu.findItem(R.id.menu_show_folders).setChecked(show_folders); + menu.findItem(R.id.menu_show_folders).setVisible(!settings); menu.findItem(R.id.menu_theme).setVisible(!settings); menu.findItem(R.id.menu_force_sync).setVisible(!settings); @@ -380,6 +381,9 @@ public class FragmentAccounts extends FragmentBase { } else if (itemId == R.id.menu_compact) { onMenuCompact(); return true; + } else if (itemId == R.id.menu_show_folders) { + onMenuShowFolders(); + return true; } else if (itemId == R.id.menu_theme) { onMenuTheme(); return true; @@ -433,6 +437,16 @@ public class FragmentAccounts extends FragmentBase { }); } + private void onMenuShowFolders() { + show_folders = !show_folders; + + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); + prefs.edit().putBoolean("folders_accounts", show_folders).apply(); + + invalidateOptionsMenu(); + adapter.setShowFolders(show_folders); + } + private void onMenuTheme() { new FragmentDialogTheme().show(getParentFragmentManager(), "messages:theme"); } diff --git a/app/src/main/res/menu/menu_accounts.xml b/app/src/main/res/menu/menu_accounts.xml index c3845a0cc9..d586307f93 100644 --- a/app/src/main/res/menu/menu_accounts.xml +++ b/app/src/main/res/menu/menu_accounts.xml @@ -27,6 +27,12 @@ android:title="@string/title_compact" app:showAsAction="never" /> + +