Fixing displaying two carriers in split shade header
For dual carriers all carrier information will be displayed inside QSCarrierGroupController and carrier information in StatusIconContainer should be hidden. The difference in split shade is that for single carrier name of the carrier will be also displayed on the left side in QSCarrierGroupController. Test: SplitShadeHeaderControllerTest and too much mocking Fixes: 194178072 Merged-In: Idd2819fbe3d8b2b23f89999052cb900698ac4b11 Change-Id: Idd2819fbe3d8b2b23f89999052cb900698ac4b11
This commit is contained in:
@@ -46,10 +46,11 @@ class SplitShadeHeaderController @Inject constructor(
|
||||
private val SPLIT_HEADER_TRANSITION_ID = R.id.split_header_transition
|
||||
}
|
||||
|
||||
private val carrierIconSlots: List<String>
|
||||
private val combinedHeaders = featureFlags.useCombinedQSHeaders()
|
||||
// TODO(b/194178072) Handle RSSI hiding when multi carrier
|
||||
private val iconManager: StatusBarIconController.IconManager
|
||||
private val qsCarrierGroupController: QSCarrierGroupController
|
||||
private val iconContainer: StatusIconContainer
|
||||
private var visible = false
|
||||
set(value) {
|
||||
if (field == value) {
|
||||
@@ -115,7 +116,16 @@ class SplitShadeHeaderController @Inject constructor(
|
||||
batteryMeterViewController.ignoreTunerUpdates()
|
||||
batteryIcon.setPercentShowMode(BatteryMeterView.MODE_ESTIMATE)
|
||||
|
||||
val iconContainer: StatusIconContainer = statusBar.findViewById(R.id.statusIcons)
|
||||
carrierIconSlots = if (featureFlags.isCombinedStatusBarSignalIconsEnabled) {
|
||||
listOf(
|
||||
statusBar.context.getString(com.android.internal.R.string.status_bar_no_calling),
|
||||
statusBar.context.getString(com.android.internal.R.string.status_bar_call_strength)
|
||||
)
|
||||
} else {
|
||||
listOf(statusBar.context.getString(com.android.internal.R.string.status_bar_mobile))
|
||||
}
|
||||
|
||||
iconContainer = statusBar.findViewById(R.id.statusIcons)
|
||||
iconManager = StatusBarIconController.IconManager(iconContainer, featureFlags)
|
||||
qsCarrierGroupController = qsCarrierGroupControllerBuilder
|
||||
.setQSCarrierGroup(statusBar.findViewById(R.id.carrier_group))
|
||||
@@ -181,9 +191,20 @@ class SplitShadeHeaderController @Inject constructor(
|
||||
private fun updateListeners() {
|
||||
qsCarrierGroupController.setListening(visible)
|
||||
if (visible) {
|
||||
updateSingleCarrier(qsCarrierGroupController.isSingleCarrier)
|
||||
qsCarrierGroupController.setOnSingleCarrierChangedListener { updateSingleCarrier(it) }
|
||||
statusBarIconController.addIconGroup(iconManager)
|
||||
} else {
|
||||
qsCarrierGroupController.setOnSingleCarrierChangedListener(null)
|
||||
statusBarIconController.removeIconGroup(iconManager)
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateSingleCarrier(singleCarrier: Boolean) {
|
||||
if (singleCarrier) {
|
||||
iconContainer.removeIgnoredSlots(carrierIconSlots)
|
||||
} else {
|
||||
iconContainer.addIgnoredSlots(carrierIconSlots)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.android.systemui.statusbar.phone
|
||||
|
||||
import android.test.suitebuilder.annotation.SmallTest
|
||||
import android.testing.AndroidTestingRunner
|
||||
import android.view.View
|
||||
import androidx.test.filters.SmallTest
|
||||
import com.android.systemui.R
|
||||
import com.android.systemui.SysuiTestCase
|
||||
import com.android.systemui.animation.ShadeInterpolation
|
||||
@@ -41,6 +41,7 @@ class SplitShadeHeaderControllerTest : SysuiTestCase() {
|
||||
var viewVisibility = View.GONE
|
||||
|
||||
private lateinit var splitShadeHeaderController: SplitShadeHeaderController
|
||||
private lateinit var carrierIconSlots: List<String>
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
@@ -66,12 +67,13 @@ class SplitShadeHeaderControllerTest : SysuiTestCase() {
|
||||
featureFlags,
|
||||
batteryMeterViewController
|
||||
)
|
||||
carrierIconSlots = listOf(
|
||||
context.getString(com.android.internal.R.string.status_bar_mobile))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun setVisible_onlyInSplitShade() {
|
||||
splitShadeHeaderController.splitShadeMode = true
|
||||
splitShadeHeaderController.shadeExpanded = true
|
||||
makeShadeVisible()
|
||||
assertThat(viewVisibility).isEqualTo(View.VISIBLE)
|
||||
|
||||
splitShadeHeaderController.splitShadeMode = false
|
||||
@@ -80,17 +82,38 @@ class SplitShadeHeaderControllerTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun updateListeners_registersWhenVisible() {
|
||||
splitShadeHeaderController.splitShadeMode = true
|
||||
splitShadeHeaderController.shadeExpanded = true
|
||||
makeShadeVisible()
|
||||
verify(qsCarrierGroupController).setListening(true)
|
||||
verify(statusBarIconController).addIconGroup(any())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun shadeExpandedFraction_updatesAlpha() {
|
||||
splitShadeHeaderController.splitShadeMode = true
|
||||
splitShadeHeaderController.shadeExpanded = true
|
||||
makeShadeVisible()
|
||||
splitShadeHeaderController.shadeExpandedFraction = 0.5f
|
||||
verify(view).setAlpha(ShadeInterpolation.getContentAlpha(0.5f))
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun singleCarrier_enablesCarrierIconsInStatusIcons() {
|
||||
whenever(qsCarrierGroupController.isSingleCarrier).thenReturn(true)
|
||||
|
||||
makeShadeVisible()
|
||||
|
||||
verify(statusIcons).removeIgnoredSlots(carrierIconSlots)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun dualCarrier_disablesCarrierIconsInStatusIcons() {
|
||||
whenever(qsCarrierGroupController.isSingleCarrier).thenReturn(false)
|
||||
|
||||
makeShadeVisible()
|
||||
|
||||
verify(statusIcons).addIgnoredSlots(carrierIconSlots)
|
||||
}
|
||||
|
||||
private fun makeShadeVisible() {
|
||||
splitShadeHeaderController.splitShadeMode = true
|
||||
splitShadeHeaderController.shadeExpanded = true
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user