summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java11
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java15
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java10
3 files changed, 26 insertions, 10 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index 7025240..8c54b69 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -818,10 +818,10 @@ public abstract class BaseStatusBar extends SystemUI implements
return entry.notification;
}
- protected StatusBarIconView addNotificationViews(IBinder key,
+ protected NotificationData.Entry createNotificationViews(IBinder key,
StatusBarNotification notification) {
if (DEBUG) {
- Log.d(TAG, "addNotificationViews(key=" + key + ", notification=" + notification);
+ Log.d(TAG, "createNotificationViews(key=" + key + ", notification=" + notification);
}
// Construct the icon.
final StatusBarIconView iconView = new StatusBarIconView(mContext,
@@ -846,7 +846,10 @@ public abstract class BaseStatusBar extends SystemUI implements
+ notification);
return null;
}
+ return entry;
+ }
+ protected void addNotificationViews(NotificationData.Entry entry) {
// Add the expanded view and icon.
int pos = mNotificationData.add(entry);
if (DEBUG) {
@@ -854,8 +857,10 @@ public abstract class BaseStatusBar extends SystemUI implements
}
updateExpansionStates();
updateNotificationIcons();
+ }
- return iconView;
+ private void addNotificationViews(IBinder key, StatusBarNotification notification) {
+ addNotificationViews(createNotificationViews(key, notification));
}
protected void updateExpansionStates() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java
index 23950fc..5264998 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java
@@ -39,6 +39,7 @@ public class NotificationData {
public View expanded; // the inflated RemoteViews
public ImageView largeIcon;
private View expandedBig;
+ private boolean interruption;
public Entry() {}
public Entry(IBinder key, StatusBarNotification n, StatusBarIconView ic) {
this.key = key;
@@ -58,6 +59,10 @@ public class NotificationData {
public void setUserLocked(boolean userLocked) {
row.setUserLocked(userLocked);
}
+
+ public void setInterruption() {
+ interruption = true;
+ }
}
private final ArrayList<Entry> mEntries = new ArrayList<Entry>();
private final Comparator<Entry> mEntryCmp = new Comparator<Entry>() {
@@ -66,9 +71,13 @@ public class NotificationData {
final StatusBarNotification na = a.notification;
final StatusBarNotification nb = b.notification;
int d = na.getScore() - nb.getScore();
- return (d != 0)
- ? d
- : (int)(na.getNotification().when - nb.getNotification().when);
+ if (a.interruption != b.interruption) {
+ return a.interruption ? 1 : -1;
+ } else if (d != 0) {
+ return d;
+ } else {
+ return (int) (na.getNotification().when - nb.getNotification().when);
+ }
}
};
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index 6189a12..db738c4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -897,15 +897,17 @@ public class PhoneStatusBar extends BaseStatusBar {
public void addNotification(IBinder key, StatusBarNotification notification) {
if (DEBUG) Log.d(TAG, "addNotification score=" + notification.getScore());
- StatusBarIconView iconView = addNotificationViews(key, notification);
- if (iconView == null) return;
-
+ Entry shadeEntry = createNotificationViews(key, notification);
+ if (shadeEntry == null) {
+ return;
+ }
if (mUseHeadsUp && shouldInterrupt(notification)) {
if (DEBUG) Log.d(TAG, "launching notification in heads up mode");
Entry interruptionCandidate = new Entry(key, notification, null);
if (inflateViews(interruptionCandidate, mHeadsUpNotificationView.getHolder())) {
mInterruptingNotificationTime = System.currentTimeMillis();
mInterruptingNotificationEntry = interruptionCandidate;
+ shadeEntry.setInterruption();
// 1. Populate mHeadsUpNotificationView
mHeadsUpNotificationView.setNotification(mInterruptingNotificationEntry);
@@ -935,7 +937,7 @@ public class PhoneStatusBar extends BaseStatusBar {
tick(null, notification, true);
}
}
-
+ addNotificationViews(shadeEntry);
// Recalculate the position of the sliding windows and the titles.
setAreThereNotifications();
updateExpandedViewPos(EXPANDED_LEAVE_ALONE);