summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI/src
diff options
context:
space:
mode:
authorChristoph Studer <chstuder@google.com>2014-09-02 15:22:15 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-09-02 15:22:17 +0000
commite0320054a787593594c197098ef6ee8d7001f2ea (patch)
tree0e40d6c840a671e90d4790fd61500beb9d3c33ec /packages/SystemUI/src
parent2debc99efa952e2da912b459ec51c3264d3deccc (diff)
parentd722f273237ed4c77ebf9a261cff776125d562e1 (diff)
downloadframeworks_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.java18
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java16
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))) {