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)
|
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 iconManager: StatusBarIconController.TintedIconManager
|
||||||
|
private val iconContainer: StatusIconContainer
|
||||||
|
private val carrierIconSlots: List<String>
|
||||||
private val qsCarrierGroupController: QSCarrierGroupController
|
private val qsCarrierGroupController: QSCarrierGroupController
|
||||||
private var visible = false
|
private var visible = false
|
||||||
set(value) {
|
set(value) {
|
||||||
@@ -117,10 +118,19 @@ class SplitShadeHeaderController @Inject constructor(
|
|||||||
batteryMeterViewController.ignoreTunerUpdates()
|
batteryMeterViewController.ignoreTunerUpdates()
|
||||||
batteryIcon.setPercentShowMode(BatteryMeterView.MODE_ESTIMATE)
|
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 = StatusBarIconController.TintedIconManager(iconContainer, featureFlags)
|
||||||
iconManager.setTint(Utils.getColorAttrDefaultColor(statusBar.context,
|
iconManager.setTint(Utils.getColorAttrDefaultColor(statusBar.context,
|
||||||
android.R.attr.textColorPrimary))
|
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
|
qsCarrierGroupController = qsCarrierGroupControllerBuilder
|
||||||
.setQSCarrierGroup(statusBar.findViewById(R.id.carrier_group))
|
.setQSCarrierGroup(statusBar.findViewById(R.id.carrier_group))
|
||||||
.build()
|
.build()
|
||||||
@@ -185,9 +195,20 @@ class SplitShadeHeaderController @Inject constructor(
|
|||||||
private fun updateListeners() {
|
private fun updateListeners() {
|
||||||
qsCarrierGroupController.setListening(visible)
|
qsCarrierGroupController.setListening(visible)
|
||||||
if (visible) {
|
if (visible) {
|
||||||
|
updateSingleCarrier(qsCarrierGroupController.isSingleCarrier)
|
||||||
|
qsCarrierGroupController.setOnSingleCarrierChangedListener { updateSingleCarrier(it) }
|
||||||
statusBarIconController.addIconGroup(iconManager)
|
statusBarIconController.addIconGroup(iconManager)
|
||||||
} else {
|
} else {
|
||||||
|
qsCarrierGroupController.setOnSingleCarrierChangedListener(null)
|
||||||
statusBarIconController.removeIconGroup(iconManager)
|
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
|
package com.android.systemui.statusbar.phone
|
||||||
|
|
||||||
import android.test.suitebuilder.annotation.SmallTest
|
|
||||||
import android.testing.AndroidTestingRunner
|
import android.testing.AndroidTestingRunner
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import androidx.test.filters.SmallTest
|
||||||
import com.android.systemui.R
|
import com.android.systemui.R
|
||||||
import com.android.systemui.SysuiTestCase
|
import com.android.systemui.SysuiTestCase
|
||||||
import com.android.systemui.animation.ShadeInterpolation
|
import com.android.systemui.animation.ShadeInterpolation
|
||||||
@@ -42,6 +42,7 @@ class SplitShadeHeaderControllerTest : SysuiTestCase() {
|
|||||||
var viewVisibility = View.GONE
|
var viewVisibility = View.GONE
|
||||||
|
|
||||||
private lateinit var splitShadeHeaderController: SplitShadeHeaderController
|
private lateinit var splitShadeHeaderController: SplitShadeHeaderController
|
||||||
|
private lateinit var carrierIconSlots: List<String>
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setup() {
|
fun setup() {
|
||||||
@@ -67,12 +68,13 @@ class SplitShadeHeaderControllerTest : SysuiTestCase() {
|
|||||||
featureFlags,
|
featureFlags,
|
||||||
batteryMeterViewController
|
batteryMeterViewController
|
||||||
)
|
)
|
||||||
|
carrierIconSlots = listOf(
|
||||||
|
context.getString(com.android.internal.R.string.status_bar_mobile))
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun setVisible_onlyInSplitShade() {
|
fun setVisible_onlyInSplitShade() {
|
||||||
splitShadeHeaderController.splitShadeMode = true
|
makeShadeVisible()
|
||||||
splitShadeHeaderController.shadeExpanded = true
|
|
||||||
assertThat(viewVisibility).isEqualTo(View.VISIBLE)
|
assertThat(viewVisibility).isEqualTo(View.VISIBLE)
|
||||||
|
|
||||||
splitShadeHeaderController.splitShadeMode = false
|
splitShadeHeaderController.splitShadeMode = false
|
||||||
@@ -81,17 +83,38 @@ class SplitShadeHeaderControllerTest : SysuiTestCase() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun updateListeners_registersWhenVisible() {
|
fun updateListeners_registersWhenVisible() {
|
||||||
splitShadeHeaderController.splitShadeMode = true
|
makeShadeVisible()
|
||||||
splitShadeHeaderController.shadeExpanded = true
|
|
||||||
verify(qsCarrierGroupController).setListening(true)
|
verify(qsCarrierGroupController).setListening(true)
|
||||||
verify(statusBarIconController).addIconGroup(any())
|
verify(statusBarIconController).addIconGroup(any())
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun shadeExpandedFraction_updatesAlpha() {
|
fun shadeExpandedFraction_updatesAlpha() {
|
||||||
splitShadeHeaderController.splitShadeMode = true
|
makeShadeVisible()
|
||||||
splitShadeHeaderController.shadeExpanded = true
|
|
||||||
splitShadeHeaderController.shadeExpandedFraction = 0.5f
|
splitShadeHeaderController.shadeExpandedFraction = 0.5f
|
||||||
verify(view).setAlpha(ShadeInterpolation.getContentAlpha(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