diff options
3 files changed, 31 insertions, 5 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt b/packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt index 3af75cef3d4c..8789a8b3b7f4 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt +++ b/packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt @@ -195,7 +195,9 @@ constructor( set(value) { if (visible && field != value) { field = value + iconContainer.setQsExpansionTransitioning(value > 0f && value < 1.0f) updatePosition() + updateIgnoredSlots() } } @@ -216,6 +218,8 @@ constructor( view.onApplyWindowInsets(insets) } + private var singleCarrier = false + private val demoModeReceiver = object : DemoMode { override fun demoCommands() = listOf(DemoMode.COMMAND_CLOCK) @@ -479,17 +483,20 @@ constructor( private fun updateListeners() { mShadeCarrierGroupController.setListening(visible) if (visible) { - updateSingleCarrier(mShadeCarrierGroupController.isSingleCarrier) + singleCarrier = mShadeCarrierGroupController.isSingleCarrier + updateIgnoredSlots() mShadeCarrierGroupController.setOnSingleCarrierChangedListener { - updateSingleCarrier(it) + singleCarrier = it + updateIgnoredSlots() } } else { mShadeCarrierGroupController.setOnSingleCarrierChangedListener(null) } } - private fun updateSingleCarrier(singleCarrier: Boolean) { - if (singleCarrier) { + private fun updateIgnoredSlots() { + // switching from QQS to QS state halfway through the transition + if (singleCarrier || qsExpandedFraction < 0.5) { iconContainer.removeIgnoredSlots(carrierIconSlots) } else { iconContainer.addIgnoredSlots(carrierIconSlots) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusIconContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusIconContainer.java index c3322808b2b8..604b1f5008db 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusIconContainer.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusIconContainer.java @@ -64,6 +64,7 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout { private boolean mNeedsUnderflow; // Individual StatusBarIconViews draw their etc dots centered in this width private int mIconDotFrameWidth; + private boolean mQsExpansionTransitioning; private boolean mShouldRestrictIcons = true; // Used to count which states want to be visible during layout private ArrayList<StatusIconState> mLayoutStates = new ArrayList<>(); @@ -87,6 +88,10 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout { super.onFinishInflate(); } + public void setQsExpansionTransitioning(boolean expansionTransitioning) { + mQsExpansionTransitioning = expansionTransitioning; + } + public void setShouldRestrictIcons(boolean should) { mShouldRestrictIcons = should; } @@ -386,6 +391,7 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout { StatusIconState vs = getViewStateFromChild(child); if (vs != null) { vs.applyToView(child); + vs.qsExpansionTransitioning = mQsExpansionTransitioning; } } } @@ -420,6 +426,7 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout { /// StatusBarIconView.STATE_* public int visibleState = STATE_ICON; public boolean justAdded = true; + public boolean qsExpansionTransitioning = false; // How far we are from the end of the view actually is the most relevant for animation float distanceToViewEnd = -1; @@ -462,12 +469,13 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout { } icon.setVisibleState(visibleState, animateVisibility); - if (animationProperties != null) { + if (animationProperties != null && !qsExpansionTransitioning) { animateTo(view, animationProperties); } else { super.applyToView(view); } + qsExpansionTransitioning = false; justAdded = false; distanceToViewEnd = currentDistanceToEnd; diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/ShadeHeaderControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/ShadeHeaderControllerTest.kt index 2da2e9238d0a..f542ab099517 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/shade/ShadeHeaderControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/ShadeHeaderControllerTest.kt @@ -237,11 +237,22 @@ class ShadeHeaderControllerTest : SysuiTestCase() { whenever(mShadeCarrierGroupController.isSingleCarrier).thenReturn(false) makeShadeVisible() + shadeHeaderController.qsExpandedFraction = 1.0f verify(statusIcons).addIgnoredSlots(carrierIconSlots) } @Test + fun dualCarrier_enablesCarrierIconsInStatusIcons_qsExpanded() { + whenever(mShadeCarrierGroupController.isSingleCarrier).thenReturn(false) + + makeShadeVisible() + shadeHeaderController.qsExpandedFraction = 0.0f + + verify(statusIcons, times(2)).removeIgnoredSlots(carrierIconSlots) + } + + @Test fun disableQS_notDisabled_visible() { makeShadeVisible() shadeHeaderController.disable(0, 0, false) |