Merge topic 'hun'
* changes: use private notification for the heads up explicitly handle clicks on the heads up notification
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user