diff options
| -rw-r--r-- | core/java/com/android/internal/widget/MessagingLayout.java | 21 | ||||
| -rw-r--r-- | core/java/com/android/internal/widget/MessagingMessage.java | 2 |
2 files changed, 22 insertions, 1 deletions
diff --git a/core/java/com/android/internal/widget/MessagingLayout.java b/core/java/com/android/internal/widget/MessagingLayout.java index af9aae3c318d..538ea11b6aa9 100644 --- a/core/java/com/android/internal/widget/MessagingLayout.java +++ b/core/java/com/android/internal/widget/MessagingLayout.java @@ -436,10 +436,29 @@ public class MessagingLayout extends FrameLayout { } private void updateHistoricMessageVisibility() { - for (int i = 0; i < mHistoricMessages.size(); i++) { + int numHistoric = mHistoricMessages.size(); + for (int i = 0; i < numHistoric; i++) { MessagingMessage existing = mHistoricMessages.get(i); existing.setVisibility(mShowHistoricMessages ? VISIBLE : GONE); } + int numGroups = mGroups.size(); + for (int i = 0; i < numGroups; i++) { + MessagingGroup group = mGroups.get(i); + int visibleChildren = 0; + List<MessagingMessage> messages = group.getMessages(); + int numGroupMessages = messages.size(); + for (int j = 0; j < numGroupMessages; j++) { + MessagingMessage message = messages.get(j); + if (message.getVisibility() != GONE) { + visibleChildren++; + } + } + if (visibleChildren > 0 && group.getVisibility() == GONE) { + group.setVisibility(VISIBLE); + } else if (visibleChildren == 0 && group.getVisibility() != GONE) { + group.setVisibility(GONE); + } + } } @Override diff --git a/core/java/com/android/internal/widget/MessagingMessage.java b/core/java/com/android/internal/widget/MessagingMessage.java index d2b670fa2d66..ffcb50309feb 100644 --- a/core/java/com/android/internal/widget/MessagingMessage.java +++ b/core/java/com/android/internal/widget/MessagingMessage.java @@ -145,4 +145,6 @@ public interface MessagingMessage extends MessagingLinearLayout.MessagingChild { MessagingMessageState getState(); void setVisibility(int visibility); + + int getVisibility(); } |