Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8ce6beda authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Controls UI - Properly sort, and set default on seed" into rvc-dev am: f21036b4

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11851787

Change-Id: I9ac3608af845f6d5a02523ff8e787e6053300181
parents 4f52c1aa f21036b4
Loading
Loading
Loading
Loading
+29 −19
Original line number Diff line number Diff line
@@ -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,15 +129,7 @@ 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 {
                val lastItems = serviceInfos.map {
                    SelectionItem(it.loadLabel(), "", it.loadIcon(), it.componentName)
                }
                uiExecutor.execute {
@@ -133,7 +141,6 @@ class ControlsUiControllerImpl @Inject constructor (
            }
        }
    }
    }

    override fun show(parent: ViewGroup, dismissGlobalActions: Runnable) {
        Log.d(ControlsUiController.TAG, "show()")
@@ -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())