BG protection for user switcher on Keyguard.
Also fixes the position.
Bug: 15757197
Bug: 15545213
Change-Id: I9fab98652ab1ccad4e02d5cfa17b212a72a0a0b3
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 6af2cf8..e6b3818 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -44,6 +44,7 @@
import com.android.systemui.statusbar.KeyguardAffordanceView;
import com.android.systemui.statusbar.MirrorView;
import com.android.systemui.statusbar.StatusBarState;
+import com.android.systemui.statusbar.policy.KeyguardUserSwitcher;
import com.android.systemui.statusbar.stack.NotificationStackScrollLayout;
import com.android.systemui.statusbar.stack.StackStateAnimator;
@@ -62,6 +63,7 @@
private KeyguardAffordanceHelper mAfforanceHelper;
private StatusBarHeaderView mHeader;
+ private KeyguardUserSwitcher mKeyguardUserSwitcher;
private KeyguardStatusBarView mKeyguardStatusBar;
private View mQsContainer;
private QSPanel mQsPanel;
@@ -225,11 +227,18 @@
mHeader.post(mUpdateHeader);
}
- lp = (FrameLayout.LayoutParams) mNotificationContainerParent.getLayoutParams();
+ lp = (FrameLayout.LayoutParams) mNotificationStackScroller.getLayoutParams();
if (lp.width != panelWidth) {
lp.width = panelWidth;
lp.gravity = panelGravity;
- mNotificationContainerParent.setLayoutParams(lp);
+ mNotificationStackScroller.setLayoutParams(lp);
+ }
+
+ lp = (FrameLayout.LayoutParams) mScrollView.getLayoutParams();
+ if (lp.width != panelWidth) {
+ lp.width = panelWidth;
+ lp.gravity = panelGravity;
+ mScrollView.setLayoutParams(lp);
}
}
@@ -939,6 +948,9 @@
&& !mStackScrollerOverscrolling && mQsScrimEnabled
? View.VISIBLE
: View.INVISIBLE);
+ if (mKeyguardUserSwitcher != null && mQsExpanded && !mStackScrollerOverscrolling) {
+ mKeyguardUserSwitcher.hide();
+ }
}
private void setQsExpansion(float height) {
@@ -1704,6 +1716,10 @@
}
}
+ public void setKeyguardUserSwitcher(KeyguardUserSwitcher keyguardUserSwitcher) {
+ mKeyguardUserSwitcher = keyguardUserSwitcher;
+ }
+
private final Runnable mUpdateHeader = new Runnable() {
@Override
public void run() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQuickSettingsContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQuickSettingsContainer.java
index 7c6e47c..57b7401 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQuickSettingsContainer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQuickSettingsContainer.java
@@ -35,6 +35,7 @@
private View mScrollView;
private View mUserSwitcher;
private View mStackScroller;
+ private View mKeyguardStatusBar;
private boolean mInflated;
public NotificationsQuickSettingsContainer(Context context, AttributeSet attrs) {
@@ -46,6 +47,7 @@
super.onFinishInflate();
mScrollView = findViewById(R.id.scroll_view);
mStackScroller = findViewById(R.id.notification_stack_scroller);
+ mKeyguardStatusBar = findViewById(R.id.keyguard_header);
ViewStub userSwitcher = (ViewStub) findViewById(R.id.keyguard_user_switcher);
userSwitcher.setOnInflateListener(this);
mUserSwitcher = userSwitcher;
@@ -61,18 +63,30 @@
@Override
protected boolean drawChild(Canvas canvas, View child, long drawingTime) {
boolean userSwitcherVisible = mInflated && mUserSwitcher.getVisibility() == View.VISIBLE;
+ boolean statusBarVisible = mKeyguardStatusBar.getVisibility() == View.VISIBLE;
// Invert the order of the scroll view and user switcher such that the notifications receive
// touches first but the panel gets drawn above.
if (child == mScrollView) {
return super.drawChild(canvas, mStackScroller, drawingTime);
} else if (child == mStackScroller) {
- return super.drawChild(canvas, userSwitcherVisible ? mUserSwitcher : mScrollView,
+ return super.drawChild(canvas,
+ userSwitcherVisible && statusBarVisible ? mUserSwitcher
+ : statusBarVisible ? mKeyguardStatusBar
+ : userSwitcherVisible ? mUserSwitcher
+ : mScrollView,
drawingTime);
} else if (child == mUserSwitcher) {
- return super.drawChild(canvas, userSwitcherVisible ? mScrollView : mUserSwitcher,
+ return super.drawChild(canvas,
+ userSwitcherVisible && statusBarVisible ? mKeyguardStatusBar
+ : mScrollView,
drawingTime);
- } else {
+ } else if (child == mKeyguardStatusBar) {
+ return super.drawChild(canvas,
+ userSwitcherVisible && statusBarVisible ? mScrollView
+ : mScrollView,
+ drawingTime);
+ }else {
return super.drawChild(canvas, child, drawingTime);
}
}
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 e8b167c..1d678af 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -805,7 +805,7 @@
mKeyguardUserSwitcher = new KeyguardUserSwitcher(mContext,
(ViewStub) mStatusBarWindow.findViewById(R.id.keyguard_user_switcher),
- mKeyguardStatusBar, mUserSwitcherController);
+ mKeyguardStatusBar, mNotificationPanel, mUserSwitcherController);
// Set up the quick settings tile panel