From 45697cf9c9e12924cab03629071f97ef8dac5210 Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Mon, 18 Apr 2022 15:22:04 -0400 Subject: [PATCH] Respect disable flag in LargeScreenHeader LargeScreenHeader should respect the disable flag and not show its contents when QS is disabled. Test: manual in landscape and split shade. Fixes: 218873788 Change-Id: I085f36a30dd654cd49a35b3b3f3dfd71745226cb --- .../CentralSurfacesCommandQueueCallbacks.java | 2 ++ .../phone/LargeScreenShadeHeaderController.kt | 13 ++++++++++++- .../phone/NotificationPanelViewController.java | 4 ++++ .../LargeScreenShadeHeaderControllerTest.kt | 18 ++++++++++++++++++ 4 files changed, 36 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacks.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacks.java index c4e655a45ca69..9060d5f67913a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacks.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacks.java @@ -296,6 +296,8 @@ public class CentralSurfacesCommandQueueCallbacks implements CommandQueue.Callba mShadeController.animateCollapsePanels(); } } + + mNotificationPanelViewController.disable(state1, state2, animate); } /** diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LargeScreenShadeHeaderController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LargeScreenShadeHeaderController.kt index 925414ffb1276..289dfc889e75c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LargeScreenShadeHeaderController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LargeScreenShadeHeaderController.kt @@ -16,6 +16,7 @@ package com.android.systemui.statusbar.phone +import android.app.StatusBarManager import android.view.View import androidx.constraintlayout.motion.widget.MotionLayout import com.android.settingslib.Utils @@ -68,6 +69,9 @@ class LargeScreenShadeHeaderController @Inject constructor( private val iconContainer: StatusIconContainer private val carrierIconSlots: List private val qsCarrierGroupController: QSCarrierGroupController + + private var qsDisabled = false + private var visible = false set(value) { if (field == value) { @@ -177,6 +181,13 @@ class LargeScreenShadeHeaderController @Inject constructor( updateConstraints() } + fun disable(state1: Int, state2: Int, animate: Boolean) { + val disabled = state2 and StatusBarManager.DISABLE2_QUICK_SETTINGS != 0 + if (disabled == qsDisabled) return + qsDisabled = disabled + updateVisibility() + } + private fun updateScrollY() { if (!active && combinedHeaders) { header.scrollY = qsScrollY @@ -204,7 +215,7 @@ class LargeScreenShadeHeaderController @Inject constructor( } private fun updateVisibility() { - val visibility = if (!active && !combinedHeaders) { + val visibility = if (!active && !combinedHeaders || qsDisabled) { View.GONE } else if (shadeExpanded) { View.VISIBLE diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java index c1142edec77cb..20dbf739dc13a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java @@ -4135,6 +4135,10 @@ public class NotificationPanelViewController extends PanelViewController { return mNotificationStackScrollLayoutController; } + public void disable(int state1, int state2, boolean animated) { + mLargeScreenShadeHeaderController.disable(state1, state2, animated); + } + /** * Close the keyguard user switcher if it is open and capable of closing. * diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LargeScreenShadeHeaderControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LargeScreenShadeHeaderControllerTest.kt index b086d681adf52..01e95950e45a2 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LargeScreenShadeHeaderControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LargeScreenShadeHeaderControllerTest.kt @@ -1,5 +1,6 @@ package com.android.systemui.statusbar.phone +import android.app.StatusBarManager import android.testing.AndroidTestingRunner import android.view.View import androidx.test.filters.SmallTest @@ -116,6 +117,23 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() { verify(statusIcons).addIgnoredSlots(carrierIconSlots) } + @Test + fun disableQS_notDisabled_visible() { + makeShadeVisible() + mLargeScreenShadeHeaderController.disable(0, 0, false) + + assertThat(viewVisibility).isEqualTo(View.VISIBLE) + } + + @Test + fun disableQS_disabled_gone() { + makeShadeVisible() + mLargeScreenShadeHeaderController.disable(0, StatusBarManager.DISABLE2_QUICK_SETTINGS, + false) + + assertThat(viewVisibility).isEqualTo(View.GONE) + } + private fun makeShadeVisible() { mLargeScreenShadeHeaderController.active = true mLargeScreenShadeHeaderController.shadeExpanded = true