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

Commit acba31ba authored by Binyi Wu's avatar Binyi Wu
Browse files

Make entries in Gallery Category page searchable

Bug: 253981143
Test: manual
Change-Id: I6c3652606b42c7b116c050536204a45cf175fa58
parent b48b6a18
Loading
Loading
Loading
Loading
+39 −28
Original line number Diff line number Diff line
@@ -18,16 +18,17 @@ package com.android.settingslib.spa.gallery.ui

import android.os.Bundle
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.tooling.preview.Preview
import com.android.settingslib.spa.framework.common.EntrySearchData
import com.android.settingslib.spa.framework.common.SettingsEntry
import com.android.settingslib.spa.framework.common.SettingsEntryBuilder
import com.android.settingslib.spa.framework.common.SettingsPage
import com.android.settingslib.spa.framework.common.SettingsPageProvider
import com.android.settingslib.spa.framework.common.createSettingsPage
import com.android.settingslib.spa.framework.compose.navigator
import com.android.settingslib.spa.framework.compose.stateOf
import com.android.settingslib.spa.framework.theme.SettingsTheme
import com.android.settingslib.spa.widget.preference.Preference
import com.android.settingslib.spa.widget.preference.PreferenceModel
import com.android.settingslib.spa.widget.preference.SimplePreferenceMacro
import com.android.settingslib.spa.widget.scaffold.RegularScaffold
import com.android.settingslib.spa.widget.ui.Category
import com.android.settingslib.spa.widget.ui.CategoryTitle
@@ -36,50 +37,60 @@ private const val TITLE = "Sample Category"

object CategoryPageProvider : SettingsPageProvider {
    override val name = "Category"
    private val owner = createSettingsPage()

    fun buildInjectEntry(): SettingsEntryBuilder {
        return SettingsEntryBuilder.createInject(owner = SettingsPage.create(name))
        return SettingsEntryBuilder.createInject(owner)
            .setUiLayoutFn {
                Preference(object : PreferenceModel {
                    override val title = TITLE
                    override val onClick = navigator(name)
                })
            }
            .setSearchDataFn { EntrySearchData(title = TITLE) }
    }

    override fun getTitle(arguments: Bundle?): String {
        return TITLE
    }

    override fun buildEntry(arguments: Bundle?): List<SettingsEntry> {
        val entryList = mutableListOf<SettingsEntry>()
        entryList.add(
            SettingsEntryBuilder.create("Preference 1", owner)
                .setMacro { SimplePreferenceMacro(title = "Preference 1", summary = "Summary 1") }
                .build()
        )
        entryList.add(
            SettingsEntryBuilder.create("Preference 2", owner)
                .setMacro { SimplePreferenceMacro(title = "Preference 2", summary = "Summary 2") }
                .build()
        )
        entryList.add(
            SettingsEntryBuilder.create("Preference 3", owner)
                .setMacro { SimplePreferenceMacro(title = "Preference 2", summary = "Summary 3") }
                .build()

        )
        entryList.add(
            SettingsEntryBuilder.create("Preference 4", owner)
                .setMacro { SimplePreferenceMacro(title = "Preference 4", summary = "Summary 4") }
                .build()
        )
        return entryList
    }

    @Composable
    override fun Page(arguments: Bundle?) {
        val entries = buildEntry(arguments)
        RegularScaffold(title = getTitle(arguments)) {
            CategoryTitle("Category A")
            Preference(remember {
                object : PreferenceModel {
                    override val title = "Preference 1"
                    override val summary = stateOf("Summary 1")
                }
            })
            Preference(remember {
                object : PreferenceModel {
                    override val title = "Preference 2"
                    override val summary = stateOf("Summary 2")
                }
            })
            entries[0].UiLayout()
            entries[1].UiLayout()

            Category("Category B") {
                Preference(remember {
                    object : PreferenceModel {
                        override val title = "Preference 3"
                        override val summary = stateOf("Summary 3")
                    }
                })
                Preference(remember {
                    object : PreferenceModel {
                        override val title = "Preference 4"
                        override val summary = stateOf("Summary 4")
                    }
                })
                entries[2].UiLayout()
                entries[3].UiLayout()
            }
        }
    }