Loading packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt +11 −4 Original line number Diff line number Diff line Loading @@ -195,7 +195,9 @@ constructor( set(value) { if (visible && field != value) { field = value iconContainer.setQsExpansionTransitioning(value > 0f && value < 1.0f) updatePosition() updateIgnoredSlots() } } Loading @@ -216,6 +218,8 @@ constructor( view.onApplyWindowInsets(insets) } private var singleCarrier = false private val demoModeReceiver = object : DemoMode { override fun demoCommands() = listOf(DemoMode.COMMAND_CLOCK) Loading Loading @@ -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) Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusIconContainer.java +9 −1 Original line number Diff line number Diff line Loading @@ -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<>(); Loading @@ -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; } Loading Loading @@ -386,6 +391,7 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout { StatusIconState vs = getViewStateFromChild(child); if (vs != null) { vs.applyToView(child); vs.qsExpansionTransitioning = mQsExpansionTransitioning; } } } Loading Loading @@ -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; Loading Loading @@ -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; Loading packages/SystemUI/tests/src/com/android/systemui/shade/ShadeHeaderControllerTest.kt +11 −0 Original line number Diff line number Diff line Loading @@ -237,10 +237,21 @@ 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() Loading Loading
packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt +11 −4 Original line number Diff line number Diff line Loading @@ -195,7 +195,9 @@ constructor( set(value) { if (visible && field != value) { field = value iconContainer.setQsExpansionTransitioning(value > 0f && value < 1.0f) updatePosition() updateIgnoredSlots() } } Loading @@ -216,6 +218,8 @@ constructor( view.onApplyWindowInsets(insets) } private var singleCarrier = false private val demoModeReceiver = object : DemoMode { override fun demoCommands() = listOf(DemoMode.COMMAND_CLOCK) Loading Loading @@ -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) Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusIconContainer.java +9 −1 Original line number Diff line number Diff line Loading @@ -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<>(); Loading @@ -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; } Loading Loading @@ -386,6 +391,7 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout { StatusIconState vs = getViewStateFromChild(child); if (vs != null) { vs.applyToView(child); vs.qsExpansionTransitioning = mQsExpansionTransitioning; } } } Loading Loading @@ -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; Loading Loading @@ -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; Loading
packages/SystemUI/tests/src/com/android/systemui/shade/ShadeHeaderControllerTest.kt +11 −0 Original line number Diff line number Diff line Loading @@ -237,10 +237,21 @@ 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() Loading