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 Change-Id: Idd2819fbe3d8b2b23f89999052cb900698ac4b11
This commit is contained in:
committed by
Michał Brzeziński
parent
9e699657d8
commit
bf09696f91
@@ -49,8 +49,9 @@ class SplitShadeHeaderController @Inject constructor(
|
||||
}
|
||||
|
||||
private val combinedHeaders = featureFlags.isEnabled(Flags.COMBINED_QS_HEADERS)
|
||||
// TODO(b/194178072) Handle RSSI hiding when multi carrier
|
||||
private val iconManager: StatusBarIconController.TintedIconManager
|
||||
private val iconContainer: StatusIconContainer
|
||||
private val carrierIconSlots: List<String>
|
||||
private val qsCarrierGroupController: QSCarrierGroupController
|
||||
private var visible = false
|
||||
set(value) {
|
||||
@@ -117,10 +118,19 @@ class SplitShadeHeaderController @Inject constructor(
|
||||
batteryMeterViewController.ignoreTunerUpdates()
|
||||
batteryIcon.setPercentShowMode(BatteryMeterView.MODE_ESTIMATE)
|
||||
|
||||
val iconContainer: StatusIconContainer = statusBar.findViewById(R.id.statusIcons)
|
||||
iconContainer = statusBar.findViewById(R.id.statusIcons)
|
||||
iconManager = StatusBarIconController.TintedIconManager(iconContainer, featureFlags)
|
||||
iconManager.setTint(Utils.getColorAttrDefaultColor(statusBar.context,
|
||||
android.R.attr.textColorPrimary))
|
||||
|
||||
carrierIconSlots = if (featureFlags.isEnabled(Flags.COMBINED_STATUS_BAR_SIGNAL_ICONS)) {
|
||||
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))
|
||||
}
|
||||
qsCarrierGroupController = qsCarrierGroupControllerBuilder
|
||||
.setQSCarrierGroup(statusBar.findViewById(R.id.carrier_group))
|
||||
.build()
|
||||
@@ -185,9 +195,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
|
||||
@@ -42,6 +42,7 @@ class SplitShadeHeaderControllerTest : SysuiTestCase() {
|
||||
var viewVisibility = View.GONE
|
||||
|
||||
private lateinit var splitShadeHeaderController: SplitShadeHeaderController
|
||||
private lateinit var carrierIconSlots: List<String>
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
@@ -67,12 +68,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
|
||||
@@ -81,17 +83,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