diff options
author | Christoph Studer <chstuder@google.com> | 2014-09-02 15:22:15 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-09-02 15:22:17 +0000 |
commit | e0320054a787593594c197098ef6ee8d7001f2ea (patch) | |
tree | 0e40d6c840a671e90d4790fd61500beb9d3c33ec /packages/SystemUI/src | |
parent | 2debc99efa952e2da912b459ec51c3264d3deccc (diff) | |
parent | d722f273237ed4c77ebf9a261cff776125d562e1 (diff) | |
download | frameworks_base-e0320054a787593594c197098ef6ee8d7001f2ea.zip frameworks_base-e0320054a787593594c197098ef6ee8d7001f2ea.tar.gz frameworks_base-e0320054a787593594c197098ef6ee8d7001f2ea.tar.bz2 |
Merge "SysUI: Ignore group children when summary is present" into lmp-dev
Diffstat (limited to 'packages/SystemUI/src')
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java | 18 | ||||
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java | 16 |
2 files changed, 27 insertions, 7 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java index 399742a..77cc4e6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java @@ -365,6 +365,24 @@ public abstract class BaseStatusBar extends SystemUI implements Notification n = sbn.getNotification(); boolean isUpdate = mNotificationData.get(sbn.getKey()) != null || isHeadsUp(sbn.getKey()); + + // Ignore children of notifications that have a summary, since we're not + // going to show them anyway. This is true also when the summary is canceled, + // because children are automatically canceled by NoMan in that case. + if (n.isGroupChild() && + mNotificationData.isGroupWithSummary(sbn.getGroupKey())) { + if (DEBUG) { + Log.d(TAG, "Ignoring group child due to existing summary: " + sbn); + } + + // Remove existing notification to avoid stale data. + if (isUpdate) { + removeNotification(sbn.getKey(), rankingMap); + } else { + mNotificationData.updateRanking(rankingMap); + } + return; + } if (isUpdate) { updateNotification(sbn, rankingMap); } else { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java index 7e37336..454041c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java @@ -89,6 +89,7 @@ public class NotificationData { private final ArrayMap<String, Entry> mEntries = new ArrayMap<>(); private final ArrayList<Entry> mSortedAndFiltered = new ArrayList<>(); + private ArraySet<String> mGroupsWithSummaries = new ArraySet<>(); private RankingMap mRankingMap; private final Ranking mTmpRanking = new Ranking(); @@ -183,8 +184,8 @@ public class NotificationData { // anything changed, and this class should call back the UI so it updates itself. public void filterAndSort() { mSortedAndFiltered.clear(); + mGroupsWithSummaries.clear(); - ArraySet<String> groupsWithSummaries = null; final int N = mEntries.size(); for (int i = 0; i < N; i++) { Entry entry = mEntries.valueAt(i); @@ -195,22 +196,19 @@ public class NotificationData { } if (sbn.getNotification().isGroupSummary()) { - if (groupsWithSummaries == null) { - groupsWithSummaries = new ArraySet<>(); - } - groupsWithSummaries.add(sbn.getGroupKey()); + mGroupsWithSummaries.add(sbn.getGroupKey()); } mSortedAndFiltered.add(entry); } // Second pass: Filter out group children with summary. - if (groupsWithSummaries != null) { + if (!mGroupsWithSummaries.isEmpty()) { final int M = mSortedAndFiltered.size(); for (int i = M - 1; i >= 0; i--) { Entry ent = mSortedAndFiltered.get(i); StatusBarNotification sbn = ent.notification; if (sbn.getNotification().isGroupChild() && - groupsWithSummaries.contains(sbn.getGroupKey())) { + mGroupsWithSummaries.contains(sbn.getGroupKey())) { mSortedAndFiltered.remove(i); } } @@ -219,6 +217,10 @@ public class NotificationData { Collections.sort(mSortedAndFiltered, mRankingComparator); } + public boolean isGroupWithSummary(String groupKey) { + return mGroupsWithSummaries.contains(groupKey); + } + private boolean shouldFilterOut(StatusBarNotification sbn) { if (!(mEnvironment.isDeviceProvisioned() || showNotificationEvenIfUnprovisioned(sbn))) { |