add a setting for the heads up: base part
also fix a crash if the feature is disabled and then enabled
while a heads up is active.
Bug: 13208692
Change-Id: I6847f7a5f275aee2f608de0237dab0e45c39b33f
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 40bbbd4..b0892e3 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -6100,6 +6100,16 @@
}
/**
+ * Defines global heads up toggle. One of HEADS_UP_OFF, HEADS_UP_ON.
+ *
+ * @hide
+ */
+ public static final String HEADS_UP = "heads_up_enabled";
+
+ /** @hide */ public static final int HEADS_UP_OFF = 0;
+ /** @hide */ public static final int HEADS_UP_ON = 1;
+
+ /**
* Settings to backup. This is here so that it's in the same place as the settings
* keys and easy to update.
*
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index 8509701..fb11743 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -96,7 +96,6 @@
protected static final boolean ENABLE_HEADS_UP = true;
// scores above this threshold should be displayed in heads up mode.
protected static final int INTERRUPTION_THRESHOLD = 11;
- protected static final String SETTING_HEADS_UP = "heads_up_enabled";
protected static final String SETTING_HEADS_UP_TICKER = "ticker_gets_heads_up";
// Should match the value in PhoneWindowManager
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 1464b39..7694a9f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -312,15 +312,17 @@
@Override
public void onChange(boolean selfChange) {
boolean wasUsing = mUseHeadsUp;
- mUseHeadsUp = ENABLE_HEADS_UP && 0 != Settings.Global.getInt(
- mContext.getContentResolver(), SETTING_HEADS_UP, 0);
+ mUseHeadsUp = ENABLE_HEADS_UP && Settings.Global.HEADS_UP_OFF != Settings.Global.getInt(
+ mContext.getContentResolver(), Settings.Global.HEADS_UP,
+ Settings.Global.HEADS_UP_OFF);
mHeadsUpTicker = mUseHeadsUp && 0 != Settings.Global.getInt(
mContext.getContentResolver(), SETTING_HEADS_UP_TICKER, 0);
Log.d(TAG, "heads up is " + (mUseHeadsUp ? "enabled" : "disabled"));
if (wasUsing != mUseHeadsUp) {
if (!mUseHeadsUp) {
Log.d(TAG, "dismissing any existing heads up notification on disable event");
- mHandler.sendEmptyMessage(MSG_HIDE_HEADS_UP);
+ setHeadsUpVisibility(false);
+ mHeadsUpNotificationView.setNotification(null);
removeHeadsUpView();
} else {
addHeadsUpView();
@@ -375,7 +377,7 @@
mHeadsUpObserver.onChange(true); // set up
if (ENABLE_HEADS_UP) {
mContext.getContentResolver().registerContentObserver(
- Settings.Global.getUriFor(SETTING_HEADS_UP), true,
+ Settings.Global.getUriFor(Settings.Global.HEADS_UP), true,
mHeadsUpObserver);
mContext.getContentResolver().registerContentObserver(
Settings.Global.getUriFor(SETTING_HEADS_UP_TICKER), true,
@@ -2212,6 +2214,7 @@
pw.println(BarTransitions.modeToString(mStatusBarMode));
pw.print(" mZenMode=");
pw.println(Settings.Global.zenModeToString(mZenMode));
+ pw.print(" mUseHeadsUp=" + mUseHeadsUp);
dumpBarTransitions(pw, "mStatusBarView", mStatusBarView.getBarTransitions());
if (mNavigationBarView != null) {
pw.print(" mNavigationBarWindowState=");
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 f4bc4a4..79932a7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpNotificationView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpNotificationView.java
@@ -73,19 +73,24 @@
public boolean setNotification(NotificationData.Entry headsUp) {
mHeadsUp = headsUp;
- mHeadsUp.row.setExpanded(true);
- mHeadsUp.row.setShowingPublic(false);
- if (mContentHolder == null) {
- // too soon!
- return false;
+ if (mContentHolder != null) {
+ mContentHolder.removeAllViews();
}
- mContentHolder.setX(0);
- mContentHolder.setVisibility(View.VISIBLE);
- mContentHolder.setAlpha(1f);
- mContentHolder.removeAllViews();
- mContentHolder.addView(mHeadsUp.row);
- mSwipeHelper.snapChild(mContentHolder, 1f);
- mStartTouchTime = System.currentTimeMillis() + mTouchSensitivityDelay;
+
+ if (mHeadsUp != null) {
+ mHeadsUp.row.setExpanded(true);
+ mHeadsUp.row.setShowingPublic(false);
+ if (mContentHolder == null) {
+ // too soon!
+ return false;
+ }
+ mContentHolder.setX(0);
+ mContentHolder.setVisibility(View.VISIBLE);
+ mContentHolder.setAlpha(1f);
+ mContentHolder.addView(mHeadsUp.row);
+ mSwipeHelper.snapChild(mContentHolder, 1f);
+ mStartTouchTime = System.currentTimeMillis() + mTouchSensitivityDelay;
+ }
return true;
}