Added option to hide all read unified folders

pull/207/head
M66B 2 years ago
parent f6b5e6174f
commit a525a56322

@ -90,6 +90,7 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
private boolean show_flagged;
private boolean subscribed_only;
private boolean sort_unread_atop;
private boolean folder_hide_read;
private IFolderSelectedListener listener;
private Context context;
@ -1194,6 +1195,7 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
this.subscriptions = prefs.getBoolean("subscriptions", false);
this.subscribed_only = prefs.getBoolean("subscribed_only", false) && subscriptions;
this.sort_unread_atop = prefs.getBoolean("sort_unread_atop", false);
this.folder_hide_read = prefs.getBoolean("folder_hide_read", false);
this.dp3 = Helper.dp2pixels(context, 3);
this.dp12 = Helper.dp2pixels(context, 12);
@ -1252,27 +1254,45 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
}
}
void setHideRead(boolean folder_hide_read) {
if (this.folder_hide_read != folder_hide_read) {
this.folder_hide_read = folder_hide_read;
set(all);
}
}
void setDisabled(List<Long> ids) {
disabledIds = ids;
}
public void set(@NonNull List<TupleFolderEx> folders) {
Log.i("Set folders=" + folders.size() + " search=" + search);
Log.i("Set folders=" + folders.size() + " search=" + search +
" atop=" + sort_unread_atop + " hide=" + folder_hide_read);
all = folders;
List<TupleFolderEx> hierarchical;
if (account < 0 && !primary) {
if (folders.size() > 0)
Collections.sort(folders, folders.get(0).getComparator(context));
hierarchical = folders;
List<TupleFolderEx> selected;
if (folder_hide_read) {
selected = new ArrayList<>();
for (TupleFolderEx folder : folders)
if (folder.unseen > 0)
selected.add(folder);
} else
selected = folders;
if (selected.size() > 0)
Collections.sort(selected, folders.get(0).getComparator(context));
if (sort_unread_atop)
Collections.sort(hierarchical, new Comparator<TupleFolderEx>() {
Collections.sort(selected, new Comparator<TupleFolderEx>() {
@Override
public int compare(TupleFolderEx f1, TupleFolderEx f2) {
return -Boolean.compare(f1.unseen > 0, f2.unseen > 0);
}
});
hierarchical = selected;
} else {
List<TupleFolderEx> parents = new ArrayList<>();
Map<Long, TupleFolderEx> idFolder = new HashMap<>();

@ -663,6 +663,7 @@ public class FragmentFolders extends FragmentBase {
boolean subscriptions = prefs.getBoolean("subscriptions", false);
boolean subscribed_only = prefs.getBoolean("subscribed_only", false);
boolean sort_unread_atop = prefs.getBoolean("sort_unread_atop", false);
boolean folder_hide_read = prefs.getBoolean("folder_hide_read", false);
menu.findItem(R.id.menu_unified).setVisible(account < 0 || primary);
menu.findItem(R.id.menu_compact).setChecked(compact);
@ -672,6 +673,9 @@ public class FragmentFolders extends FragmentBase {
menu.findItem(R.id.menu_subscribed_only).setChecked(subscribed_only);
menu.findItem(R.id.menu_subscribed_only).setVisible(subscriptions);
menu.findItem(R.id.menu_sort_unread_atop).setChecked(sort_unread_atop);
menu.findItem(R.id.menu_hide_read)
.setChecked(folder_hide_read)
.setVisible(account < 0 && !primary);
menu.findItem(R.id.menu_apply_all).setVisible(account >= 0 && imap);
menu.findItem(R.id.menu_edit_account_name).setVisible(account >= 0);
@ -705,6 +709,9 @@ public class FragmentFolders extends FragmentBase {
} else if (itemId == R.id.menu_sort_unread_atop) {
onMenuSortUnreadAtop();
return true;
} else if (itemId == R.id.menu_hide_read) {
onMenuHideRead();
return true;
} else if (itemId == R.id.menu_search_folder) {
onMenuSearchFolder(item);
return true;
@ -809,6 +816,14 @@ public class FragmentFolders extends FragmentBase {
adapter.setSortUnreadAtop(sort_unread_atop);
}
private void onMenuHideRead() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
boolean folder_hide_read = !prefs.getBoolean("folder_hide_read", false);
prefs.edit().putBoolean("folder_hide_read", folder_hide_read).apply();
invalidateOptionsMenu();
adapter.setHideRead(folder_hide_read);
}
private void onMenuSearchFolder(MenuItem item) {
if (item.isActionViewExpanded())
item.collapseActionView();

@ -53,6 +53,12 @@
android:checkable="true"
android:title="@string/title_sort_unread_atop"
app:showAsAction="never" />
<item
android:id="@+id/menu_hide_read"
android:checkable="true"
android:title="@string/title_hide_read"
app:showAsAction="never" />
</group>
<group android:id="@+id/group_operations">

@ -1060,6 +1060,7 @@
<string name="title_show_flagged">Show starred message count</string>
<string name="title_subscribed_only">Subscribed only</string>
<string name="title_sort_unread_atop">Sort unread on top</string>
<string name="title_hide_read">Hide all read</string>
<string name="title_search_folder">Search for folder</string>
<string name="title_apply_to_all">Apply to all</string>
<string name="title_edit_account_name">Edit account name</string>

Loading…
Cancel
Save