diff options
3 files changed, 25 insertions, 5 deletions
diff --git a/core/java/com/android/internal/statusbar/StatusBarNotification.java b/core/java/com/android/internal/statusbar/StatusBarNotification.java index 2b96bf69fff3..cb791be03164 100644 --- a/core/java/com/android/internal/statusbar/StatusBarNotification.java +++ b/core/java/com/android/internal/statusbar/StatusBarNotification.java @@ -35,12 +35,18 @@ if (truncatedTicker != null && truncatedTicker.length() > maxTickerLen) { */ public class StatusBarNotification implements Parcelable { + public static int PRIORITY_JIFFY_EXPRESS = -100; + public static int PRIORITY_NORMAL = 0; + public static int PRIORITY_ONGOING = 100; + public static int PRIORITY_SYSTEM = 200; + public String pkg; public int id; public String tag; public int uid; public int initialPid; public Notification notification; + public int priority = PRIORITY_NORMAL; public StatusBarNotification() { } @@ -56,6 +62,9 @@ public class StatusBarNotification implements Parcelable { this.uid = uid; this.initialPid = initialPid; this.notification = notification; + + this.priority = ((notification.flags & Notification.FLAG_ONGOING_EVENT) != 0) + ? PRIORITY_ONGOING : PRIORITY_NORMAL; } public StatusBarNotification(Parcel in) { @@ -72,6 +81,7 @@ public class StatusBarNotification implements Parcelable { } this.uid = in.readInt(); this.initialPid = in.readInt(); + this.priority = in.readInt(); this.notification = new Notification(in); } @@ -86,6 +96,7 @@ public class StatusBarNotification implements Parcelable { } out.writeInt(this.uid); out.writeInt(this.initialPid); + out.writeInt(this.priority); this.notification.writeToParcel(out, flags); } @@ -114,7 +125,7 @@ public class StatusBarNotification implements Parcelable { public String toString() { return "StatusBarNotification(package=" + pkg + " id=" + id + " tag=" + tag - + " notification=" + notification + ")"; + + " notification=" + notification + " priority=" + priority + ")"; } public boolean isOngoing() { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java index 004174ee611a..3d904ee52bda 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java @@ -48,7 +48,12 @@ public class NotificationData { private final ArrayList<Entry> mEntries = new ArrayList<Entry>(); private final Comparator<Entry> mEntryCmp = new Comparator<Entry>() { public int compare(Entry a, Entry b) { - return (int)(a.notification.notification.when - b.notification.notification.when); + final StatusBarNotification na = a.notification; + final StatusBarNotification nb = b.notification; + int priDiff = na.priority - nb.priority; + return (priDiff != 0) + ? priDiff + : (int)(na.notification.when - nb.notification.when); } }; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java index 6f8074ebb686..4bac07fb44ac 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java @@ -670,7 +670,8 @@ public class TabletStatusBar extends StatusBar implements && oldContentView.getLayoutId() == contentView.getLayoutId(); ViewGroup rowParent = (ViewGroup) oldEntry.row.getParent(); boolean orderUnchanged = notification.notification.when==oldNotification.notification.when - && notification.isOngoing() == oldNotification.isOngoing(); + && notification.priority == oldNotification.priority; + // priority now encompasses isOngoing() boolean isLastAnyway = rowParent.indexOfChild(oldEntry.row) == rowParent.getChildCount()-1; if (contentsUnchanged && (orderUnchanged || isLastAnyway)) { if (DEBUG) Slog.d(TAG, "reusing notification for key: " + key); @@ -1187,7 +1188,10 @@ public class TabletStatusBar extends StatusBar implements } // Add the icon. - mNotns.add(entry); + int pos = mNotns.add(entry); + if (DEBUG) { + Slog.d(TAG, "addNotificationViews: added at " + pos); + } updateNotificationIcons(); return iconView; @@ -1274,7 +1278,7 @@ public class TabletStatusBar extends StatusBar implements for (int i=0; i<toShow.size(); i++) { View v = toShow.get(i); if (v.getParent() == null) { - mPile.addView(toShow.get(i)); + mPile.addView(v, N-1-i); // the notification panel has newest at the bottom } } |