Implement default build Page function in SPP.
Implement getTitle function in gallery pages. Use default build Page function in gallery if possible. Bug: 244122804 Test: manual - build gallery Change-Id: I67e35ec473209c27043f1a2c3d05bd4fd532cb46
This commit is contained in:
@@ -18,7 +18,6 @@ package com.android.settingslib.spa.gallery.home
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import com.android.settingslib.spa.framework.common.SettingsEntry
|
||||
import com.android.settingslib.spa.framework.common.SettingsPageProvider
|
||||
@@ -60,9 +59,13 @@ object HomePageProvider : SettingsPageProvider {
|
||||
)
|
||||
}
|
||||
|
||||
override fun getTitle(arguments: Bundle?): String {
|
||||
return SpaEnvironmentFactory.instance.appContext.getString(R.string.app_name)
|
||||
}
|
||||
|
||||
@Composable
|
||||
override fun Page(arguments: Bundle?) {
|
||||
HomeScaffold(title = stringResource(R.string.app_name)) {
|
||||
HomeScaffold(title = getTitle(arguments)) {
|
||||
for (entry in buildEntry(arguments)) {
|
||||
if (entry.owner.isCreateBy(SettingsPageProviderEnum.ARGUMENT.name)) {
|
||||
entry.UiLayout(ArgumentPageModel.buildArgument(intParam = 0))
|
||||
|
||||
@@ -99,9 +99,13 @@ object ArgumentPageProvider : SettingsPageProvider {
|
||||
}
|
||||
}
|
||||
|
||||
override fun getTitle(arguments: Bundle?): String {
|
||||
return ArgumentPageModel.genPageTitle()
|
||||
}
|
||||
|
||||
@Composable
|
||||
override fun Page(arguments: Bundle?) {
|
||||
RegularScaffold(title = ArgumentPageModel.create(arguments).genPageTitle()) {
|
||||
RegularScaffold(title = getTitle(arguments)) {
|
||||
for (entry in buildEntry(arguments)) {
|
||||
if (entry.toPage != null) {
|
||||
entry.UiLayout(ArgumentPageModel.buildNextArgument(arguments))
|
||||
|
||||
@@ -81,6 +81,10 @@ class ArgumentPageModel : PageModel() {
|
||||
return EntrySearchData(title = PAGE_TITLE, keyword = ARGUMENT_PAGE_KEYWORDS)
|
||||
}
|
||||
|
||||
fun genPageTitle(): String {
|
||||
return PAGE_TITLE
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun create(arguments: Bundle?): ArgumentPageModel {
|
||||
val pageModel: ArgumentPageModel = viewModel(key = arguments.toString())
|
||||
@@ -89,7 +93,6 @@ class ArgumentPageModel : PageModel() {
|
||||
}
|
||||
}
|
||||
|
||||
private val title = PAGE_TITLE
|
||||
private var arguments: Bundle? = null
|
||||
private var stringParam: String? = null
|
||||
private var intParam: Int? = null
|
||||
@@ -103,11 +106,6 @@ class ArgumentPageModel : PageModel() {
|
||||
intParam = parameter.getIntArg(INT_PARAM_NAME, arguments)
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun genPageTitle(): String {
|
||||
return title
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun genStringParamPreferenceModel(): PreferenceModel {
|
||||
return object : PreferenceModel {
|
||||
@@ -131,7 +129,7 @@ class ArgumentPageModel : PageModel() {
|
||||
"$INT_PARAM_NAME=" + intParam!!
|
||||
)
|
||||
return object : PreferenceModel {
|
||||
override val title = genPageTitle()
|
||||
override val title = PAGE_TITLE
|
||||
override val summary = stateOf(summaryArray.joinToString(", "))
|
||||
override val onClick = navigator(
|
||||
SettingsPageProviderEnum.ARGUMENT.displayName + parameter.navLink(arguments)
|
||||
|
||||
@@ -67,9 +67,13 @@ object FooterPageProvider : SettingsPageProvider {
|
||||
}
|
||||
}
|
||||
|
||||
override fun getTitle(arguments: Bundle?): String {
|
||||
return TITLE
|
||||
}
|
||||
|
||||
@Composable
|
||||
override fun Page(arguments: Bundle?) {
|
||||
RegularScaffold(title = TITLE) {
|
||||
RegularScaffold(title = getTitle(arguments)) {
|
||||
for (entry in buildEntry(arguments)) {
|
||||
entry.UiLayout()
|
||||
}
|
||||
|
||||
@@ -31,7 +31,6 @@ import com.android.settingslib.spa.widget.IllustrationModel
|
||||
import com.android.settingslib.spa.widget.ResourceType
|
||||
import com.android.settingslib.spa.widget.preference.Preference
|
||||
import com.android.settingslib.spa.widget.preference.PreferenceModel
|
||||
import com.android.settingslib.spa.widget.scaffold.RegularScaffold
|
||||
|
||||
private const val TITLE = "Sample Illustration"
|
||||
|
||||
@@ -82,13 +81,8 @@ object IllustrationPageProvider : SettingsPageProvider {
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
override fun Page(arguments: Bundle?) {
|
||||
RegularScaffold(title = TITLE) {
|
||||
for (entry in buildEntry(arguments)) {
|
||||
entry.UiLayout()
|
||||
}
|
||||
}
|
||||
override fun getTitle(arguments: Bundle?): String {
|
||||
return TITLE
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -60,6 +60,10 @@ object ProgressBarPageProvider : SettingsPageProvider {
|
||||
}
|
||||
}
|
||||
|
||||
override fun getTitle(arguments: Bundle?): String {
|
||||
return TITLE
|
||||
}
|
||||
|
||||
@Composable
|
||||
override fun Page(arguments: Bundle?) {
|
||||
// Mocks a loading time of 2 seconds.
|
||||
@@ -69,7 +73,7 @@ object ProgressBarPageProvider : SettingsPageProvider {
|
||||
loading = false
|
||||
}
|
||||
|
||||
RegularScaffold(title = TITLE) {
|
||||
RegularScaffold(title = getTitle(arguments)) {
|
||||
// Auto update the progress and finally jump tp 0.4f.
|
||||
var progress by remember { mutableStateOf(0f) }
|
||||
LaunchedEffect(Unit) {
|
||||
|
||||
@@ -49,9 +49,13 @@ object SettingsPagerPageProvider : SettingsPageProvider {
|
||||
}
|
||||
}
|
||||
|
||||
override fun getTitle(arguments: Bundle?): String {
|
||||
return TITLE
|
||||
}
|
||||
|
||||
@Composable
|
||||
override fun Page(arguments: Bundle?) {
|
||||
SettingsScaffold(title = TITLE) { paddingValues ->
|
||||
SettingsScaffold(title = getTitle(arguments)) { paddingValues ->
|
||||
Box(Modifier.padding(paddingValues)) {
|
||||
SettingsPager(listOf("Personal", "Work")) {
|
||||
PlaceholderTitle("Page $it")
|
||||
|
||||
@@ -37,7 +37,6 @@ import com.android.settingslib.spa.widget.preference.SliderPreference
|
||||
import com.android.settingslib.spa.widget.preference.SliderPreferenceModel
|
||||
import com.android.settingslib.spa.widget.preference.Preference
|
||||
import com.android.settingslib.spa.widget.preference.PreferenceModel
|
||||
import com.android.settingslib.spa.widget.scaffold.RegularScaffold
|
||||
|
||||
private const val TITLE = "Sample Slider"
|
||||
|
||||
@@ -119,13 +118,8 @@ object SliderPageProvider : SettingsPageProvider {
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
override fun Page(arguments: Bundle?) {
|
||||
RegularScaffold(title = TITLE) {
|
||||
for (entry in buildEntry(arguments)) {
|
||||
entry.UiLayout()
|
||||
}
|
||||
}
|
||||
override fun getTitle(arguments: Bundle?): String {
|
||||
return TITLE
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -33,7 +33,6 @@ import com.android.settingslib.spa.widget.preference.MainSwitchPreference
|
||||
import com.android.settingslib.spa.widget.preference.Preference
|
||||
import com.android.settingslib.spa.widget.preference.PreferenceModel
|
||||
import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel
|
||||
import com.android.settingslib.spa.widget.scaffold.RegularScaffold
|
||||
|
||||
private const val TITLE = "Sample MainSwitchPreference"
|
||||
|
||||
@@ -72,13 +71,8 @@ object MainSwitchPreferencePageProvider : SettingsPageProvider {
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
override fun Page(arguments: Bundle?) {
|
||||
RegularScaffold(title = TITLE) {
|
||||
for (entry in buildEntry(arguments)) {
|
||||
entry.UiLayout()
|
||||
}
|
||||
}
|
||||
override fun getTitle(arguments: Bundle?): String {
|
||||
return TITLE
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package com.android.settingslib.spa.gallery.preference
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.compose.runtime.Composable
|
||||
import com.android.settingslib.spa.framework.common.SettingsEntry
|
||||
import com.android.settingslib.spa.framework.common.SettingsEntryBuilder
|
||||
import com.android.settingslib.spa.framework.common.SettingsPageProvider
|
||||
@@ -25,7 +24,6 @@ import com.android.settingslib.spa.framework.common.createSettingsPage
|
||||
import com.android.settingslib.spa.framework.compose.navigator
|
||||
import com.android.settingslib.spa.widget.preference.Preference
|
||||
import com.android.settingslib.spa.widget.preference.PreferenceModel
|
||||
import com.android.settingslib.spa.widget.scaffold.RegularScaffold
|
||||
|
||||
private const val TITLE = "Category: Preference"
|
||||
|
||||
@@ -54,12 +52,7 @@ object PreferenceMainPageProvider : SettingsPageProvider {
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
override fun Page(arguments: Bundle?) {
|
||||
RegularScaffold(title = TITLE) {
|
||||
for (entry in buildEntry(arguments)) {
|
||||
entry.UiLayout()
|
||||
}
|
||||
}
|
||||
override fun getTitle(arguments: Bundle?): String {
|
||||
return TITLE
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,7 +49,6 @@ import com.android.settingslib.spa.gallery.preference.PreferencePageModel.Compan
|
||||
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.SettingsIcon
|
||||
|
||||
private const val TAG = "PreferencePage"
|
||||
@@ -204,13 +203,8 @@ object PreferencePageProvider : SettingsPageProvider {
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
override fun Page(arguments: Bundle?) {
|
||||
RegularScaffold(title = PAGE_TITLE) {
|
||||
for (entry in buildEntry(arguments)) {
|
||||
entry.UiLayout()
|
||||
}
|
||||
}
|
||||
override fun getTitle(arguments: Bundle?): String {
|
||||
return PAGE_TITLE
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,6 @@ import com.android.settingslib.spa.widget.preference.Preference
|
||||
import com.android.settingslib.spa.widget.preference.PreferenceModel
|
||||
import com.android.settingslib.spa.widget.preference.SwitchPreference
|
||||
import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel
|
||||
import com.android.settingslib.spa.widget.scaffold.RegularScaffold
|
||||
import kotlinx.coroutines.delay
|
||||
|
||||
private const val TITLE = "Sample SwitchPreference"
|
||||
@@ -88,13 +87,8 @@ object SwitchPreferencePageProvider : SettingsPageProvider {
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
override fun Page(arguments: Bundle?) {
|
||||
RegularScaffold(title = TITLE) {
|
||||
for (entry in buildEntry(arguments)) {
|
||||
entry.UiLayout()
|
||||
}
|
||||
}
|
||||
override fun getTitle(arguments: Bundle?): String {
|
||||
return TITLE
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,6 @@ import com.android.settingslib.spa.widget.preference.Preference
|
||||
import com.android.settingslib.spa.widget.preference.PreferenceModel
|
||||
import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel
|
||||
import com.android.settingslib.spa.widget.preference.TwoTargetSwitchPreference
|
||||
import com.android.settingslib.spa.widget.scaffold.RegularScaffold
|
||||
import kotlinx.coroutines.delay
|
||||
|
||||
private const val TITLE = "Sample TwoTargetSwitchPreference"
|
||||
@@ -88,13 +87,8 @@ object TwoTargetSwitchPreferencePageProvider : SettingsPageProvider {
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
override fun Page(arguments: Bundle?) {
|
||||
RegularScaffold(title = TITLE) {
|
||||
for (entry in buildEntry(arguments)) {
|
||||
entry.UiLayout()
|
||||
}
|
||||
}
|
||||
override fun getTitle(arguments: Bundle?): String {
|
||||
return TITLE
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -48,41 +48,40 @@ object CategoryPageProvider : SettingsPageProvider {
|
||||
}
|
||||
}
|
||||
|
||||
override fun getTitle(arguments: Bundle?): String {
|
||||
return TITLE
|
||||
}
|
||||
|
||||
@Composable
|
||||
override fun Page(arguments: Bundle?) {
|
||||
CategoryPage()
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun CategoryPage() {
|
||||
RegularScaffold(title = TITLE) {
|
||||
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")
|
||||
}
|
||||
})
|
||||
Category("Category B") {
|
||||
RegularScaffold(title = getTitle(arguments)) {
|
||||
CategoryTitle("Category A")
|
||||
Preference(remember {
|
||||
object : PreferenceModel {
|
||||
override val title = "Preference 3"
|
||||
override val summary = stateOf("Summary 3")
|
||||
override val title = "Preference 1"
|
||||
override val summary = stateOf("Summary 1")
|
||||
}
|
||||
})
|
||||
Preference(remember {
|
||||
object : PreferenceModel {
|
||||
override val title = "Preference 4"
|
||||
override val summary = stateOf("Summary 4")
|
||||
override val title = "Preference 2"
|
||||
override val summary = stateOf("Summary 2")
|
||||
}
|
||||
})
|
||||
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")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,9 +49,13 @@ object SpinnerPageProvider : SettingsPageProvider {
|
||||
}
|
||||
}
|
||||
|
||||
override fun getTitle(arguments: Bundle?): String {
|
||||
return TITLE
|
||||
}
|
||||
|
||||
@Composable
|
||||
override fun Page(arguments: Bundle?) {
|
||||
RegularScaffold(title = TITLE) {
|
||||
RegularScaffold(title = getTitle(arguments)) {
|
||||
val selectedIndex = rememberSaveable { mutableStateOf(0) }
|
||||
Spinner(
|
||||
options = (1..3).map { "Option $it" },
|
||||
|
||||
@@ -19,6 +19,7 @@ package com.android.settingslib.spa.framework.common
|
||||
import android.os.Bundle
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.navigation.NamedNavArgument
|
||||
import com.android.settingslib.spa.widget.scaffold.RegularScaffold
|
||||
|
||||
/**
|
||||
* An SettingsPageProvider which is used to create Settings page instances.
|
||||
@@ -36,13 +37,19 @@ interface SettingsPageProvider {
|
||||
val parameter: List<NamedNavArgument>
|
||||
get() = emptyList()
|
||||
|
||||
/** The [Composable] used to render this page. */
|
||||
@Composable
|
||||
fun Page(arguments: Bundle?)
|
||||
fun getTitle(arguments: Bundle?): String = displayName ?: name
|
||||
|
||||
fun buildEntry(arguments: Bundle?): List<SettingsEntry> = emptyList()
|
||||
|
||||
fun getTitle(arguments: Bundle?): String = displayName ?: name
|
||||
/** The [Composable] used to render this page. */
|
||||
@Composable
|
||||
fun Page(arguments: Bundle?) {
|
||||
RegularScaffold(title = getTitle(arguments)) {
|
||||
for (entry in buildEntry(arguments)) {
|
||||
entry.UiLayout()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun SettingsPageProvider.createSettingsPage(arguments: Bundle? = null): SettingsPage {
|
||||
|
||||
Reference in New Issue
Block a user