diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt | 48 |
1 files changed, 29 insertions, 19 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt index 0f5aef7eeec1..1eb7e2168a6a 100644 --- a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt @@ -103,6 +103,22 @@ class ControlsUiControllerImpl @Inject constructor ( private lateinit var dismissGlobalActions: Runnable private val popupThemedContext = ContextThemeWrapper(context, R.style.Control_ListPopupWindow) + private val collator = Collator.getInstance(context.resources.configuration.locales[0]) + private val localeComparator = compareBy<SelectionItem, CharSequence>(collator) { + it.getTitle() + } + + private val onSeedingComplete = Consumer<Boolean> { + accepted -> + if (accepted) { + selectedStructure = controlsController.get().getFavorites().maxBy { + it.controls.size + } ?: EMPTY_STRUCTURE + updatePreferences(selectedStructure) + } + reload(parent) + } + override val available: Boolean get() = controlsController.get().available @@ -113,22 +129,13 @@ class ControlsUiControllerImpl @Inject constructor ( ): ControlsListingController.ControlsListingCallback { return object : ControlsListingController.ControlsListingCallback { override fun onServicesUpdated(serviceInfos: List<ControlsServiceInfo>) { - bgExecutor.execute { - val collator = Collator.getInstance(context.resources.configuration.locales[0]) - val localeComparator = compareBy<ControlsServiceInfo, CharSequence>(collator) { - it.loadLabel() - } - - val mList = serviceInfos.toMutableList() - mList.sortWith(localeComparator) - lastItems = mList.map { - SelectionItem(it.loadLabel(), "", it.loadIcon(), it.componentName) - } - uiExecutor.execute { - parent.removeAllViews() - if (lastItems.size > 0) { - onResult(lastItems) - } + val lastItems = serviceInfos.map { + SelectionItem(it.loadLabel(), "", it.loadIcon(), it.componentName) + } + uiExecutor.execute { + parent.removeAllViews() + if (lastItems.size > 0) { + onResult(lastItems) } } } @@ -144,8 +151,7 @@ class ControlsUiControllerImpl @Inject constructor ( allStructures = controlsController.get().getFavorites() selectedStructure = loadPreference(allStructures) - val cb = Consumer<Boolean> { _ -> reload(parent) } - if (controlsController.get().addSeedingFavoritesCallback(cb)) { + if (controlsController.get().addSeedingFavoritesCallback(onSeedingComplete)) { listingCallback = createCallback(::showSeedingView) } else if (selectedStructure.controls.isEmpty() && allStructures.size <= 1) { // only show initial view if there are really no favorites across any structure @@ -309,9 +315,12 @@ class ControlsUiControllerImpl @Inject constructor ( } val itemsByComponent = items.associateBy { it.componentName } - val itemsWithStructure = allStructures.mapNotNull { + val itemsWithStructure = mutableListOf<SelectionItem>() + allStructures.mapNotNullTo(itemsWithStructure) { itemsByComponent.get(it.componentName)?.copy(structure = it.structure) } + itemsWithStructure.sortWith(localeComparator) + val selectionItem = findSelectionItem(selectedStructure, itemsWithStructure) ?: items[0] var adapter = ItemAdapter(context, R.layout.controls_spinner_item).apply { @@ -441,6 +450,7 @@ class ControlsUiControllerImpl @Inject constructor ( } private fun updatePreferences(si: StructureInfo) { + if (si == EMPTY_STRUCTURE) return sharedPreferences.edit() .putString(PREF_COMPONENT, si.componentName.flattenToString()) .putString(PREF_STRUCTURE, si.structure.toString()) |