Merge topic 'hun'

* changes:
  use private notification for the heads up
  explicitly handle clicks on the heads up notification
This commit is contained in:
Chris Wren
2014-02-12 13:52:21 +00:00
committed by Android (Google) Code Review
3 changed files with 37 additions and 8 deletions

View File

@@ -624,6 +624,14 @@ public abstract class BaseStatusBar extends SystemUI implements
} }
public boolean inflateViews(NotificationData.Entry entry, ViewGroup parent) { 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 = int minHeight =
mContext.getResources().getDimensionPixelSize(R.dimen.notification_min_height); mContext.getResources().getDimensionPixelSize(R.dimen.notification_min_height);
int maxHeight = int maxHeight =
@@ -666,8 +674,8 @@ public abstract class BaseStatusBar extends SystemUI implements
PendingIntent contentIntent = sbn.getNotification().contentIntent; PendingIntent contentIntent = sbn.getNotification().contentIntent;
if (contentIntent != null) { if (contentIntent != null) {
final View.OnClickListener listener = new NotificationClicker(contentIntent, final View.OnClickListener listener = makeClicker(contentIntent,
sbn.getPackageName(), sbn.getTag(), sbn.getId()); sbn.getPackageName(), sbn.getTag(), sbn.getId(), isHeadsUp);
content.setOnClickListener(listener); content.setOnClickListener(listener);
} else { } else {
content.setOnClickListener(null); content.setOnClickListener(null);
@@ -778,8 +786,9 @@ public abstract class BaseStatusBar extends SystemUI implements
return true; return true;
} }
public NotificationClicker makeClicker(PendingIntent intent, String pkg, String tag, int id) { public NotificationClicker makeClicker(PendingIntent intent, String pkg, String tag, int id,
return new NotificationClicker(intent, pkg, tag, id); boolean forHun) {
return new NotificationClicker(intent, pkg, tag, id, forHun);
} }
protected class NotificationClicker implements View.OnClickListener { protected class NotificationClicker implements View.OnClickListener {
@@ -787,12 +796,15 @@ public abstract class BaseStatusBar extends SystemUI implements
private String mPkg; private String mPkg;
private String mTag; private String mTag;
private int mId; 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; mIntent = intent;
mPkg = pkg; mPkg = pkg;
mTag = tag; mTag = tag;
mId = id; mId = id;
mIsHeadsUp = forHun;
} }
public void onClick(View v) { public void onClick(View v) {
@@ -825,6 +837,9 @@ public abstract class BaseStatusBar extends SystemUI implements
} }
try { try {
if (mIsHeadsUp) {
mHandler.sendEmptyMessage(MSG_HIDE_HEADS_UP);
}
mBarService.onNotificationClick(mPkg, mTag, mId); mBarService.onNotificationClick(mPkg, mTag, mId);
} catch (RemoteException ex) { } catch (RemoteException ex) {
// system process is dead if we're here. // system process is dead if we're here.
@@ -835,6 +850,7 @@ public abstract class BaseStatusBar extends SystemUI implements
visibilityChanged(false); visibilityChanged(false);
} }
} }
/** /**
* The LEDs are turned o)ff when the notification panel is shown, even just a little bit. * 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 * 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 { } else {
if (DEBUG) Log.d(TAG, "updating the current heads up:" + notification); if (DEBUG) Log.d(TAG, "updating the current heads up:" + notification);
mInterruptingNotificationEntry.notification = 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, private void updateNotificationViews(NotificationData.Entry entry,
StatusBarNotification notification) { 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 contentView = notification.getNotification().contentView;
final RemoteViews bigContentView = notification.getNotification().bigContentView; final RemoteViews bigContentView = notification.getNotification().bigContentView;
final RemoteViews publicContentView final RemoteViews publicContentView
@@ -1125,7 +1151,8 @@ public abstract class BaseStatusBar extends SystemUI implements
final PendingIntent contentIntent = notification.getNotification().contentIntent; final PendingIntent contentIntent = notification.getNotification().contentIntent;
if (contentIntent != null) { if (contentIntent != null) {
final View.OnClickListener listener = makeClicker(contentIntent, final View.OnClickListener listener = makeClicker(contentIntent,
notification.getPackageName(), notification.getTag(), notification.getId()); notification.getPackageName(), notification.getTag(), notification.getId(),
isHeadsUp);
entry.content.setOnClickListener(listener); entry.content.setOnClickListener(listener);
} else { } else {
entry.content.setOnClickListener(null); entry.content.setOnClickListener(null);

View File

@@ -912,7 +912,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode {
if (mUseHeadsUp && shouldInterrupt(notification)) { if (mUseHeadsUp && shouldInterrupt(notification)) {
if (DEBUG) Log.d(TAG, "launching notification in heads up mode"); if (DEBUG) Log.d(TAG, "launching notification in heads up mode");
Entry interruptionCandidate = new Entry(key, notification, null); Entry interruptionCandidate = new Entry(key, notification, null);
if (inflateViews(interruptionCandidate, mHeadsUpNotificationView.getHolder())) { ViewGroup holder = mHeadsUpNotificationView.getHolder();
if (inflateViewsForHeadsUp(interruptionCandidate, holder)) {
mInterruptingNotificationTime = System.currentTimeMillis(); mInterruptingNotificationTime = System.currentTimeMillis();
mInterruptingNotificationEntry = interruptionCandidate; mInterruptingNotificationEntry = interruptionCandidate;
shadeEntry.setInterruption(); shadeEntry.setInterruption();

View File

@@ -73,6 +73,7 @@ public class HeadsUpNotificationView extends FrameLayout implements SwipeHelper.
public boolean setNotification(NotificationData.Entry headsUp) { public boolean setNotification(NotificationData.Entry headsUp) {
mHeadsUp = headsUp; mHeadsUp = headsUp;
mHeadsUp.row.setExpanded(false); mHeadsUp.row.setExpanded(false);
mHeadsUp.row.setShowingPublic(false);
if (mContentHolder == null) { if (mContentHolder == null) {
// too soon! // too soon!
return false; return false;