diff options
author | Chris Wren <cwren@android.com> | 2014-02-12 13:52:21 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-02-12 13:52:22 +0000 |
commit | ad8e18d4908de84550dd45b1104afa31779e7f6e (patch) | |
tree | e8cb197db4630171122d753be23abf15c06ef218 /packages | |
parent | 55f79f509f2aba413e90706b127c243836105a28 (diff) | |
parent | 464c7efcbc4aed97ea7fbf211eeb466b7186d37f (diff) | |
download | frameworks_base-ad8e18d4908de84550dd45b1104afa31779e7f6e.zip frameworks_base-ad8e18d4908de84550dd45b1104afa31779e7f6e.tar.gz frameworks_base-ad8e18d4908de84550dd45b1104afa31779e7f6e.tar.bz2 |
Merge topic 'hun'
* changes:
use private notification for the heads up
explicitly handle clicks on the heads up notification
Diffstat (limited to 'packages')
3 files changed, 37 insertions, 8 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java index a7cfaba..91ae973 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java @@ -624,6 +624,14 @@ public abstract class BaseStatusBar extends SystemUI implements } public boolean inflateViews(NotificationData.Entry entry, ViewGroup parent) { + return inflateViews(entry, parent, false); + } + + public boolean inflateViewsForHeadsUp(NotificationData.Entry entry, ViewGroup parent) { + return inflateViews(entry, parent, true); + } + + public boolean inflateViews(NotificationData.Entry entry, ViewGroup parent, boolean isHeadsUp) { int minHeight = mContext.getResources().getDimensionPixelSize(R.dimen.notification_min_height); int maxHeight = @@ -666,8 +674,8 @@ public abstract class BaseStatusBar extends SystemUI implements PendingIntent contentIntent = sbn.getNotification().contentIntent; if (contentIntent != null) { - final View.OnClickListener listener = new NotificationClicker(contentIntent, - sbn.getPackageName(), sbn.getTag(), sbn.getId()); + final View.OnClickListener listener = makeClicker(contentIntent, + sbn.getPackageName(), sbn.getTag(), sbn.getId(), isHeadsUp); content.setOnClickListener(listener); } else { content.setOnClickListener(null); @@ -778,8 +786,9 @@ public abstract class BaseStatusBar extends SystemUI implements return true; } - public NotificationClicker makeClicker(PendingIntent intent, String pkg, String tag, int id) { - return new NotificationClicker(intent, pkg, tag, id); + public NotificationClicker makeClicker(PendingIntent intent, String pkg, String tag, int id, + boolean forHun) { + return new NotificationClicker(intent, pkg, tag, id, forHun); } protected class NotificationClicker implements View.OnClickListener { @@ -787,12 +796,15 @@ public abstract class BaseStatusBar extends SystemUI implements private String mPkg; private String mTag; private int mId; + private boolean mIsHeadsUp; - public NotificationClicker(PendingIntent intent, String pkg, String tag, int id) { + public NotificationClicker(PendingIntent intent, String pkg, String tag, int id, + boolean forHun) { mIntent = intent; mPkg = pkg; mTag = tag; mId = id; + mIsHeadsUp = forHun; } public void onClick(View v) { @@ -825,6 +837,9 @@ public abstract class BaseStatusBar extends SystemUI implements } try { + if (mIsHeadsUp) { + mHandler.sendEmptyMessage(MSG_HIDE_HEADS_UP); + } mBarService.onNotificationClick(mPkg, mTag, mId); } catch (RemoteException ex) { // system process is dead if we're here. @@ -835,6 +850,7 @@ public abstract class BaseStatusBar extends SystemUI implements visibilityChanged(false); } } + /** * The LEDs are turned o)ff when the notification panel is shown, even just a little bit. * This was added last-minute and is inconsistent with the way the rest of the notifications @@ -1050,7 +1066,7 @@ public abstract class BaseStatusBar extends SystemUI implements } else { if (DEBUG) Log.d(TAG, "updating the current heads up:" + notification); mInterruptingNotificationEntry.notification = notification; - updateNotificationViews(mInterruptingNotificationEntry, notification); + updateHeadsUpViews(mInterruptingNotificationEntry, notification); } } @@ -1108,6 +1124,16 @@ public abstract class BaseStatusBar extends SystemUI implements private void updateNotificationViews(NotificationData.Entry entry, StatusBarNotification notification) { + updateNotificationViews(entry, notification, false); + } + + private void updateHeadsUpViews(NotificationData.Entry entry, + StatusBarNotification notification) { + updateNotificationViews(entry, notification, true); + } + + private void updateNotificationViews(NotificationData.Entry entry, + StatusBarNotification notification, boolean isHeadsUp) { final RemoteViews contentView = notification.getNotification().contentView; final RemoteViews bigContentView = notification.getNotification().bigContentView; final RemoteViews publicContentView @@ -1125,7 +1151,8 @@ public abstract class BaseStatusBar extends SystemUI implements final PendingIntent contentIntent = notification.getNotification().contentIntent; if (contentIntent != null) { final View.OnClickListener listener = makeClicker(contentIntent, - notification.getPackageName(), notification.getTag(), notification.getId()); + notification.getPackageName(), notification.getTag(), notification.getId(), + isHeadsUp); entry.content.setOnClickListener(listener); } else { entry.content.setOnClickListener(null); 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 44e7dac..e5bdd59 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -912,7 +912,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { 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())) { + ViewGroup holder = mHeadsUpNotificationView.getHolder(); + if (inflateViewsForHeadsUp(interruptionCandidate, holder)) { mInterruptingNotificationTime = System.currentTimeMillis(); mInterruptingNotificationEntry = interruptionCandidate; shadeEntry.setInterruption(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpNotificationView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpNotificationView.java index 467e19a..491c35e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpNotificationView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpNotificationView.java @@ -73,6 +73,7 @@ public class HeadsUpNotificationView extends FrameLayout implements SwipeHelper. public boolean setNotification(NotificationData.Entry headsUp) { mHeadsUp = headsUp; mHeadsUp.row.setExpanded(false); + mHeadsUp.row.setShowingPublic(false); if (mContentHolder == null) { // too soon! return false; |