Make entries in Gallery Category page searchable

Bug: 253981143
Test: manual
Change-Id: I6c3652606b42c7b116c050536204a45cf175fa58
This commit is contained in:
Binyi Wu
2023-02-01 11:30:15 +08:00
parent b48b6a1844
commit acba31ba94

View File

@@ -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()
}
}
}