From 44c0dfd52fcee80adbf1b5fd034a03350dac0d46 Mon Sep 17 00:00:00 2001 From: Dan Sandler Date: Mon, 9 Jun 2014 11:26:16 -0400 Subject: [PATCH] Pour one out for the old notification ticker. Heads-up notifications are what it always wanted to be, anyway. Bug: 14588447 Change-Id: I64aa1ed85fb162d8577468019e68df9de183a992 --- packages/SystemUI/res/layout/status_bar.xml | 48 +++----------- .../SystemUI/res/layout/status_bar_ticker.xml | 62 +++++++++++++++++++ packages/SystemUI/res/values/config.xml | 5 ++ .../statusbar/phone/PhoneStatusBar.java | 41 +++++++++--- .../systemui/statusbar/phone/TickerView.java | 2 +- 5 files changed, 107 insertions(+), 51 deletions(-) create mode 100644 packages/SystemUI/res/layout/status_bar_ticker.xml diff --git a/packages/SystemUI/res/layout/status_bar.xml b/packages/SystemUI/res/layout/status_bar.xml index eaa2558633959..aa62daa22a192 100644 --- a/packages/SystemUI/res/layout/status_bar.xml +++ b/packages/SystemUI/res/layout/status_bar.xml @@ -111,47 +111,13 @@ /> - - - - - - - - - - - + /> + diff --git a/packages/SystemUI/res/layout/status_bar_ticker.xml b/packages/SystemUI/res/layout/status_bar_ticker.xml new file mode 100644 index 0000000000000..5096305c2a0d1 --- /dev/null +++ b/packages/SystemUI/res/layout/status_bar_ticker.xml @@ -0,0 +1,62 @@ +$ +$ + + + + + + + + + + + + diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index 79a1df41d2a81..1ef5bcd128bd1 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -141,5 +141,10 @@ 300 + + + false 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 ac9866cadfaad..4749b9ce3a973 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -81,6 +81,7 @@ import android.view.ViewAnimationUtils; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.ViewPropertyAnimator; +import android.view.ViewStub; import android.view.ViewTreeObserver; import android.view.WindowManager; import android.view.animation.AccelerateInterpolator; @@ -289,6 +290,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, int mTrackingPosition; // the position of the top of the tracking view. // ticker + private boolean mTickerEnabled; private Ticker mTicker; private View mTickerView; private boolean mTicking; @@ -644,7 +646,6 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, mMoreIcon = mStatusBarView.findViewById(R.id.moreIcon); mNotificationIcons.setOverflowIndicator(mMoreIcon); mStatusBarContents = (LinearLayout)mStatusBarView.findViewById(R.id.status_bar_contents); - mTickerView = mStatusBarView.findViewById(R.id.ticker); mStackScroller = (NotificationStackScrollLayout) mStatusBarWindow.findViewById( R.id.notification_stack_scroller); @@ -684,10 +685,17 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, mDateTimeView.setEnabled(true); } - mTicker = new MyTicker(context, mStatusBarView); + mTickerEnabled = res.getBoolean(R.bool.enable_ticker); + if (mTickerEnabled) { + final ViewStub tickerStub = (ViewStub) mStatusBarView.findViewById(R.id.ticker_stub); + if (tickerStub != null) { + mTickerView = tickerStub.inflate(); + mTicker = new MyTicker(context, mStatusBarView); - TickerView tickerView = (TickerView)mStatusBarView.findViewById(R.id.tickerText); - tickerView.mTicker = mTicker; + TickerView tickerView = (TickerView) mStatusBarView.findViewById(R.id.tickerText); + tickerView.mTicker = mTicker; + } + } mEdgeBorder = res.getDimensionPixelSize(R.dimen.status_bar_edge_ignore); @@ -1145,7 +1153,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, if (old != null) { // Cancel the ticker if it's still running - mTicker.removeEntry(old); + if (mTickerEnabled) { + mTicker.removeEntry(old); + } // Recalculate the position of the sliding windows and the titles. updateExpandedViewPos(EXPANDED_LEAVE_ALONE); @@ -2118,6 +2128,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, @Override protected void tick(StatusBarNotification n, boolean firstTime) { + if (!mTickerEnabled) return; + // no ticking in lights-out mode if (!areLightsOn()) return; @@ -2134,7 +2146,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, if (n.getNotification().tickerText != null && mStatusBarWindow != null && mStatusBarWindow.getWindowToken() != null) { if (0 == (mDisabled & (StatusBarManager.DISABLE_NOTIFICATION_ICONS - | StatusBarManager.DISABLE_NOTIFICATION_TICKER))) { + | StatusBarManager.DISABLE_NOTIFICATION_TICKER))) { mTicker.addEntry(n); } } @@ -2143,10 +2155,14 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, private class MyTicker extends Ticker { MyTicker(Context context, View sb) { super(context, sb); + if (!mTickerEnabled) { + Log.w(TAG, "MyTicker instantiated with mTickerEnabled=false", new Throwable()); + } } @Override public void tickerStarting() { + if (!mTickerEnabled) return; mTicking = true; mStatusBarContents.setVisibility(View.GONE); mTickerView.setVisibility(View.VISIBLE); @@ -2156,6 +2172,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, @Override public void tickerDone() { + if (!mTickerEnabled) return; mStatusBarContents.setVisibility(View.VISIBLE); mTickerView.setVisibility(View.GONE); mStatusBarContents.startAnimation(loadAnim(com.android.internal.R.anim.push_down_in, null)); @@ -2164,6 +2181,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, } public void tickerHalting() { + if (!mTickerEnabled) return; if (mStatusBarContents.getVisibility() != View.VISIBLE) { mStatusBarContents.setVisibility(View.VISIBLE); mStatusBarContents @@ -2202,11 +2220,14 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, pw.println("Current Status Bar state:"); pw.println(" mExpandedVisible=" + mExpandedVisible + ", mTrackingPosition=" + mTrackingPosition); - pw.println(" mTicking=" + mTicking); + pw.println(" mTickerEnabled=" + mTickerEnabled); + if (mTickerEnabled) { + pw.println(" mTicking=" + mTicking); + pw.println(" mTickerView: " + viewInfo(mTickerView)); + } pw.println(" mTracking=" + mTracking); pw.println(" mDisplayMetrics=" + mDisplayMetrics); pw.println(" mStackScroller: " + viewInfo(mStackScroller)); - pw.println(" mTickerView: " + viewInfo(mTickerView)); pw.println(" mStackScroller: " + viewInfo(mStackScroller) + " scroll " + mStackScroller.getScrollX() + "," + mStackScroller.getScrollY()); @@ -2676,7 +2697,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, @Override protected void haltTicker() { - mTicker.halt(); + if (mTickerEnabled) { + mTicker.halt(); + } } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/TickerView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/TickerView.java index 8aa3837ea2ad3..bf1375134fffd 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/TickerView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/TickerView.java @@ -32,7 +32,7 @@ public class TickerView extends TextSwitcher @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); - mTicker.reflowText(); + if (mTicker != null) mTicker.reflowText(); } public void setTicker(Ticker t) {