From d54da8a0c86c4214084b359fe97eebb111951553 Mon Sep 17 00:00:00 2001 From: John Spurlock Date: Sun, 3 Aug 2014 23:23:52 -0400 Subject: [PATCH] Doze: coordinate keyguard status bar visibility. Play nice with recent NotificationPanelView changes that also drive its visibility. Bug: 15863249 Change-Id: I60021f415089d5508af7fe9ec792a2871a52910d --- .../phone/NotificationPanelView.java | 25 ++++++++++++++++--- .../statusbar/phone/PhoneStatusBar.java | 7 ++---- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java index c9c7703a970c7..53c474033378f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java @@ -93,6 +93,8 @@ public class NotificationPanelView extends PanelView implements private boolean mQsExpandedWhenExpandingStarted; private boolean mQsFullyExpanded; private boolean mKeyguardShowing; + private boolean mDozing; + private boolean mKeyguardStatusBarTransparent; private int mStatusBarState; private float mInitialHeightOnTouch; private float mInitialTouchX; @@ -897,10 +899,9 @@ public class NotificationPanelView extends PanelView implements alpha *= 2; alpha = Math.min(1, alpha); alpha = 1 - alpha; - if (alpha == 0f) { - mKeyguardStatusBar.setVisibility(View.INVISIBLE); - } else { - mKeyguardStatusBar.setVisibility(View.VISIBLE); + mKeyguardStatusBarTransparent = alpha == 0f; + updateKeyguardStatusBarVisibility(); + if (!mKeyguardStatusBarTransparent) { mKeyguardStatusBar.setAlpha(alpha); } } @@ -1598,4 +1599,20 @@ public class NotificationPanelView extends PanelView implements private static float interpolate(float t, float start, float end) { return (1 - t) * start + t * end; } + + private void updateKeyguardStatusBarVisibility() { + mKeyguardStatusBar.setVisibility(mKeyguardShowing && !mKeyguardStatusBarTransparent + && !mDozing ? VISIBLE : INVISIBLE); + } + + public void setDozing(boolean dozing) { + if (dozing == mDozing) return; + mDozing = dozing; + if (mDozing) { + setBackgroundColor(0xff000000); + } else { + setBackground(null); + } + updateKeyguardStatusBarVisibility(); + } } 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 7d4f90ec2b22d..fe9ea505f0d43 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -3434,15 +3434,12 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, if (mState != StatusBarState.KEYGUARD) { return; } + mNotificationPanel.setDozing(mDozing); if (mDozing) { - mNotificationPanel.setBackgroundColor(0xff000000); - mKeyguardStatusBar.setVisibility(View.INVISIBLE); mKeyguardBottomArea.setVisibility(View.INVISIBLE); mStackScroller.setDark(true, false /*animate*/); } else { - mNotificationPanel.setBackground(null); - mKeyguardStatusBar.setVisibility(View.VISIBLE); - mKeyguardBottomArea.setVisibility(View.VISIBLE); + mKeyguardBottomArea.setVisibility(View.VISIBLE); mStackScroller.setDark(false, false /*animate*/); } mScrimController.setDozing(mDozing);