summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt36
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt2
2 files changed, 24 insertions, 14 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt
index 6c49c82acdc0..118fcbb20f26 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt
@@ -252,10 +252,17 @@ class ControlsControllerImpl @Inject constructor (
it.controlId in favoritesForComponentKeys
)
}
+ val removedControls = mutableListOf<ControlStatus>()
+ Favorites.getStructuresForComponent(componentName).forEach { st ->
+ st.controls.forEach {
+ if (it.controlId in removed) {
+ val r = createRemovedStatus(componentName, it, st.structure)
+ removedControls.add(r)
+ }
+ }
+ }
val loadData = createLoadDataObject(
- Favorites.getControlsForComponent(componentName)
- .filter { it.controlId in removed }
- .map { createRemovedStatus(componentName, it) } +
+ removedControls +
controlsWithFavorite,
favoritesForComponentKeys
)
@@ -266,17 +273,15 @@ class ControlsControllerImpl @Inject constructor (
override fun error(message: String) {
loadCanceller = null
executor.execute {
- val loadData = Favorites.getControlsForComponent(componentName)
- .let { controls ->
- val keys = controls.map { it.controlId }
- createLoadDataObject(
- controls.map {
- createRemovedStatus(componentName, it, false)
- },
- keys,
- true
- )
- }
+ val controls = Favorites.getStructuresForComponent(componentName)
+ .flatMap { st ->
+ st.controls.map {
+ createRemovedStatus(componentName, it, st.structure,
+ false)
+ }
+ }
+ val keys = controls.map { it.control.controlId }
+ val loadData = createLoadDataObject(controls, keys, true)
dataCallback.accept(loadData)
}
}
@@ -372,6 +377,7 @@ class ControlsControllerImpl @Inject constructor (
private fun createRemovedStatus(
componentName: ComponentName,
controlInfo: ControlInfo,
+ structure: CharSequence,
setRemoved: Boolean = true
): ControlStatus {
val intent = Intent(Intent.ACTION_MAIN).apply {
@@ -384,6 +390,8 @@ class ControlsControllerImpl @Inject constructor (
0)
val control = Control.StatelessBuilder(controlInfo.controlId, pendingIntent)
.setTitle(controlInfo.controlTitle)
+ .setSubtitle(controlInfo.controlSubtitle)
+ .setStructure(structure)
.setDeviceType(controlInfo.deviceType)
.build()
return ControlStatus(control, componentName, true, setRemoved)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt
index d5a654dc2b6f..eb4d438600d8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt
@@ -307,6 +307,7 @@ class ControlsControllerImplTest : SysuiTestCase() {
assertEquals(1, controls.size)
val controlStatus = controls[0]
assertEquals(TEST_CONTROL_ID, controlStatus.control.controlId)
+ assertEquals(TEST_STRUCTURE_INFO.structure, controlStatus.control.structure)
assertTrue(controlStatus.favorite)
assertTrue(controlStatus.removed)
@@ -337,6 +338,7 @@ class ControlsControllerImplTest : SysuiTestCase() {
assertEquals(1, controls.size)
val controlStatus = controls[0]
assertEquals(TEST_CONTROL_ID, controlStatus.control.controlId)
+ assertEquals(TEST_STRUCTURE_INFO.structure, controlStatus.control.structure)
assertTrue(controlStatus.favorite)
assertFalse(controlStatus.removed)