From e5d91ac61907696553e343603320d95205eb900c Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 23 May 2019 08:40:35 +0200 Subject: [PATCH] Take hidden folders into account for collapsible --- .../main/java/eu/faircode/email/AdapterFolder.java | 13 ++++++++++--- app/src/main/java/eu/faircode/email/DaoFolder.java | 3 +++ .../main/java/eu/faircode/email/TupleFolderEx.java | 4 +++- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/AdapterFolder.java b/app/src/main/java/eu/faircode/email/AdapterFolder.java index 902e054fee..f663ee5749 100644 --- a/app/src/main/java/eu/faircode/email/AdapterFolder.java +++ b/app/src/main/java/eu/faircode/email/AdapterFolder.java @@ -76,6 +76,7 @@ public class AdapterFolder extends RecyclerView.Adapter 0 ? View.VISIBLE : View.INVISIBLE)); + ivExpander.setVisibility(account < 0 || !folder_collapsible ? View.GONE : (folder.childs > 0 ? View.VISIBLE : View.INVISIBLE)); ivNotify.setVisibility(folder.notify ? View.VISIBLE : View.GONE); ivSubscribed.setVisibility(subscriptions && folder.subscribed != null && folder.subscribed ? View.VISIBLE : View.GONE); @@ -707,14 +710,18 @@ public class AdapterFolder extends RecyclerView.Adapter 0) { this.collapsable = true; + this.collapsable_hidden = (folder.childs - folder.hidden_childs > 0); break; } - } else + } else { this.collapsable = true; + this.collapsable_hidden = true; + } final Collator collator = Collator.getInstance(Locale.getDefault()); collator.setStrength(Collator.SECONDARY); // Case insensitive, process accents etc diff --git a/app/src/main/java/eu/faircode/email/DaoFolder.java b/app/src/main/java/eu/faircode/email/DaoFolder.java index fabc254bbf..e7fe44bf37 100644 --- a/app/src/main/java/eu/faircode/email/DaoFolder.java +++ b/app/src/main/java/eu/faircode/email/DaoFolder.java @@ -57,6 +57,7 @@ public interface DaoFolder { ", SUM(CASE WHEN message.ui_seen = 0 THEN 1 ELSE 0 END) AS unseen" + ", (SELECT COUNT(operation.id) FROM operation WHERE operation.folder = folder.id AND operation.state = 'executing') AS executing" + ", (SELECT COUNT(child.id) FROM folder child WHERE child.parent = folder.id) AS childs" + + ", (SELECT COUNT(child.id) FROM folder child WHERE child.parent = folder.id AND child.hide) AS hidden_childs" + " FROM folder" + " LEFT JOIN account ON account.id = folder.account" + " LEFT JOIN message ON message.folder = folder.id AND NOT message.ui_hide" + @@ -75,6 +76,7 @@ public interface DaoFolder { ", SUM(CASE WHEN message.ui_seen = 0 THEN 1 ELSE 0 END) AS unseen" + ", (SELECT COUNT(operation.id) FROM operation WHERE operation.folder = folder.id AND operation.state = 'executing') AS executing" + ", (SELECT COUNT(child.id) FROM folder child WHERE child.parent = folder.id) AS childs" + + ", (SELECT COUNT(child.id) FROM folder child WHERE child.parent = folder.id AND child.hide) AS hidden_childs" + " FROM folder" + " JOIN account ON account.id = folder.account" + " LEFT JOIN message ON message.folder = folder.id AND NOT message.ui_hide" + @@ -115,6 +117,7 @@ public interface DaoFolder { ", SUM(CASE WHEN message.ui_seen = 0 THEN 1 ELSE 0 END) AS unseen" + ", (SELECT COUNT(operation.id) FROM operation WHERE operation.folder = folder.id AND operation.state = 'executing') AS executing" + ", (SELECT COUNT(child.id) FROM folder child WHERE child.parent = folder.id) AS childs" + + ", (SELECT COUNT(child.id) FROM folder child WHERE child.parent = folder.id AND child.hide) AS hidden_childs" + " FROM folder" + " LEFT JOIN account ON account.id = folder.account" + " LEFT JOIN message ON message.folder = folder.id AND NOT message.ui_hide" + diff --git a/app/src/main/java/eu/faircode/email/TupleFolderEx.java b/app/src/main/java/eu/faircode/email/TupleFolderEx.java index 44ea64c9f2..2c7b57a45c 100644 --- a/app/src/main/java/eu/faircode/email/TupleFolderEx.java +++ b/app/src/main/java/eu/faircode/email/TupleFolderEx.java @@ -40,6 +40,7 @@ public class TupleFolderEx extends EntityFolder implements Serializable { public int unseen; public int executing; public int childs; + public int hidden_childs; @Override public boolean equals(Object obj) { @@ -53,7 +54,8 @@ public class TupleFolderEx extends EntityFolder implements Serializable { this.content == other.content && this.unseen == other.unseen && this.executing == other.executing && - this.childs == other.childs); + this.childs == other.childs && + this.hidden_childs == other.hidden_childs); } else return false; }