Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6ccf0aff authored by Chris Wren's avatar Chris Wren Committed by Android (Google) Code Review
Browse files

Merge "heads up notifications always take the top spot"

parents 137e5a3b f0048ce6
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -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() {
+12 −3
Original line number Diff line number Diff line
@@ -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);
            }
        }
    };

+6 −4
Original line number Diff line number Diff line
@@ -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);