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

Commit e7ea9466 authored by Chris Wren's avatar Chris Wren Committed by Android Git Automerger
Browse files

am 6ccf0aff: Merge "heads up notifications always take the top spot"

* commit '6ccf0aff':
  heads up notifications always take the top spot
parents cf67ae06 6ccf0aff
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);