Loading packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/GalleryDebugActivity.kt +5 −1 Original line number Diff line number Diff line Loading @@ -18,4 +18,8 @@ package com.android.settingslib.spa.gallery import com.android.settingslib.spa.framework.DebugActivity class GalleryDebugActivity : DebugActivity(SpaEnvironment.EntryRepository, MainActivity::class.java) class GalleryDebugActivity : DebugActivity( SpaEnvironment.EntryRepository, MainActivity::class.java, "com.android.spa.gallery.provider", ) packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/SpaEnvironment.kt +29 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.settingslib.spa.gallery import android.os.Bundle import androidx.navigation.NamedNavArgument import com.android.settingslib.spa.framework.common.SettingsEntryRepository import com.android.settingslib.spa.framework.common.SettingsPage import com.android.settingslib.spa.framework.common.SettingsPageProviderRepository Loading @@ -34,6 +36,32 @@ import com.android.settingslib.spa.gallery.preference.TwoTargetSwitchPreferenceP import com.android.settingslib.spa.gallery.ui.CategoryPageProvider import com.android.settingslib.spa.gallery.ui.SpinnerPageProvider /** * Enum to define all SPP name here. * Since the SPP name would be used in log, DO NOT change it once it is set. One can still change * the display name for better readability if necessary. */ enum class SettingsPageProviderEnum(val displayName: String) { HOME("home"), PREFERENCE("preference"), ARGUMENT("argument"), // Add your SPPs } fun createSettingsPage( SppName: SettingsPageProviderEnum, parameter: List<NamedNavArgument> = emptyList(), arguments: Bundle? = null ): SettingsPage { return SettingsPage( name = SppName.name, displayName = SppName.displayName, parameter = parameter, arguments = arguments, ) } object SpaEnvironment { val PageProviderRepository: SettingsPageProviderRepository by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { Loading @@ -55,7 +83,7 @@ object SpaEnvironment { ActionButtonPageProvider, ), rootPages = listOf( SettingsPage.create(HomePageProvider.name) createSettingsPage(SettingsPageProviderEnum.HOME) ) ) } Loading packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/home/HomePage.kt +12 −13 Original line number Diff line number Diff line Loading @@ -21,10 +21,10 @@ 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.SettingsPage import com.android.settingslib.spa.framework.common.SettingsPageProvider import com.android.settingslib.spa.framework.theme.SettingsTheme import com.android.settingslib.spa.gallery.R import com.android.settingslib.spa.gallery.SettingsPageProviderEnum import com.android.settingslib.spa.gallery.button.ActionButtonPageProvider import com.android.settingslib.spa.gallery.page.ArgumentPageModel import com.android.settingslib.spa.gallery.page.ArgumentPageProvider Loading @@ -38,20 +38,19 @@ import com.android.settingslib.spa.gallery.ui.SpinnerPageProvider import com.android.settingslib.spa.widget.scaffold.HomeScaffold object HomePageProvider : SettingsPageProvider { override val name = "Home" override val name = SettingsPageProviderEnum.HOME.name override fun buildEntry(arguments: Bundle?): List<SettingsEntry> { val owner = SettingsPage.create(name) return listOf( PreferenceMainPageProvider.buildInjectEntry().setLink(fromPage = owner).build(), ArgumentPageProvider.buildInjectEntry("foo")!!.setLink(fromPage = owner).build(), SliderPageProvider.buildInjectEntry().setLink(fromPage = owner).build(), SpinnerPageProvider.buildInjectEntry().setLink(fromPage = owner).build(), SettingsPagerPageProvider.buildInjectEntry().setLink(fromPage = owner).build(), FooterPageProvider.buildInjectEntry().setLink(fromPage = owner).build(), IllustrationPageProvider.buildInjectEntry().setLink(fromPage = owner).build(), CategoryPageProvider.buildInjectEntry().setLink(fromPage = owner).build(), ActionButtonPageProvider.buildInjectEntry().setLink(fromPage = owner).build(), PreferenceMainPageProvider.buildInjectEntry().build(), ArgumentPageProvider.buildInjectEntry("foo")!!.build(), SliderPageProvider.buildInjectEntry().build(), SpinnerPageProvider.buildInjectEntry().build(), SettingsPagerPageProvider.buildInjectEntry().build(), FooterPageProvider.buildInjectEntry().build(), IllustrationPageProvider.buildInjectEntry().build(), CategoryPageProvider.buildInjectEntry().build(), ActionButtonPageProvider.buildInjectEntry().build(), ) } Loading @@ -59,7 +58,7 @@ object HomePageProvider : SettingsPageProvider { override fun Page(arguments: Bundle?) { HomeScaffold(title = stringResource(R.string.app_name)) { for (entry in buildEntry(arguments)) { if (entry.name.startsWith(ArgumentPageModel.name)) { if (entry.owner.isCreateBy(SettingsPageProviderEnum.ARGUMENT.name)) { entry.UiLayout(ArgumentPageModel.buildArgument(intParam = 0)) } else { entry.UiLayout() Loading packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/page/ArgumentPage.kt +24 −7 Original line number Diff line number Diff line Loading @@ -24,23 +24,38 @@ 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.theme.SettingsTheme import com.android.settingslib.spa.gallery.SettingsPageProviderEnum import com.android.settingslib.spa.gallery.createSettingsPage import com.android.settingslib.spa.widget.preference.Preference import com.android.settingslib.spa.widget.scaffold.RegularScaffold object ArgumentPageProvider : SettingsPageProvider { override val name = ArgumentPageModel.name // Defines all entry name in this page. // Note that entry name would be used in log. DO NOT change it once it is set. // One can still change the display name for better readability if necessary. private enum class EntryEnum(val displayName: String) { STRING_PARAM("string_param"), INT_PARAM("int_param"), } private fun createEntry(owner: SettingsPage, entry: EntryEnum): SettingsEntryBuilder { return SettingsEntryBuilder.create(owner, entry.name, entry.displayName) } override val name = SettingsPageProviderEnum.ARGUMENT.name override val parameter = ArgumentPageModel.parameter override fun buildEntry(arguments: Bundle?): List<SettingsEntry> { if (!ArgumentPageModel.isValidArgument(arguments)) return emptyList() val owner = SettingsPage.create(name, parameter, arguments) val owner = createSettingsPage(SettingsPageProviderEnum.ARGUMENT, parameter, arguments) val entryList = mutableListOf<SettingsEntry>() entryList.add( SettingsEntryBuilder.create("string_param", owner) createEntry(owner, EntryEnum.STRING_PARAM) // Set attributes .setIsAllowSearch(true) .setSearchDataFn { ArgumentPageModel.genStringParamSearchData() } .setUiLayoutFn { // Set ui rendering Preference(ArgumentPageModel.create(it).genStringParamPreferenceModel()) Loading @@ -48,9 +63,10 @@ object ArgumentPageProvider : SettingsPageProvider { ) entryList.add( SettingsEntryBuilder.create("int_param", owner) createEntry(owner, EntryEnum.INT_PARAM) // Set attributes .setIsAllowSearch(true) .setSearchDataFn { ArgumentPageModel.genIntParamSearchData() } .setUiLayoutFn { // Set ui rendering Preference(ArgumentPageModel.create(it).genIntParamPreferenceModel()) Loading @@ -68,11 +84,12 @@ object ArgumentPageProvider : SettingsPageProvider { if (!ArgumentPageModel.isValidArgument(arguments)) return null return SettingsEntryBuilder.createInject( entryName = "${name}_$stringParam", owner = SettingsPage.create(name, parameter, arguments) owner = createSettingsPage(SettingsPageProviderEnum.ARGUMENT, parameter, arguments), displayName = "${name}_$stringParam", ) // Set attributes .setIsAllowSearch(false) .setSearchDataFn { ArgumentPageModel.genInjectSearchData() } .setUiLayoutFn { // Set ui rendering Preference(ArgumentPageModel.create(it).genInjectPreferenceModel()) Loading @@ -83,7 +100,7 @@ object ArgumentPageProvider : SettingsPageProvider { override fun Page(arguments: Bundle?) { RegularScaffold(title = ArgumentPageModel.create(arguments).genPageTitle()) { for (entry in buildEntry(arguments)) { if (entry.name.startsWith(name)) { if (entry.owner.isCreateBy(SettingsPageProviderEnum.ARGUMENT.name)) { entry.UiLayout(ArgumentPageModel.buildNextArgument(arguments)) } else { entry.UiLayout() Loading packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/page/ArgumentPageModel.kt +25 −6 Original line number Diff line number Diff line Loading @@ -23,22 +23,28 @@ import androidx.lifecycle.viewmodel.compose.viewModel import androidx.navigation.NavType import androidx.navigation.navArgument import com.android.settingslib.spa.framework.BrowseActivity import com.android.settingslib.spa.framework.common.EntrySearchData import com.android.settingslib.spa.framework.common.PageModel import com.android.settingslib.spa.framework.compose.navigator import com.android.settingslib.spa.framework.compose.stateOf import com.android.settingslib.spa.framework.util.getIntArg import com.android.settingslib.spa.framework.util.getStringArg import com.android.settingslib.spa.framework.util.navLink import com.android.settingslib.spa.gallery.SettingsPageProviderEnum import com.android.settingslib.spa.widget.preference.PreferenceModel private const val TITLE = "Sample page with arguments" // Defines all the resources for this page. // In real Settings App, resources data is defined in xml, rather than SPP. private const val PAGE_TITLE = "Sample page with arguments" private const val STRING_PARAM_TITLE = "String param value" private const val INT_PARAM_TITLE = "Int param value" private const val STRING_PARAM_NAME = "stringParam" private const val INT_PARAM_NAME = "intParam" private val ARGUMENT_PAGE_KEYWORDS = listOf("argument keyword1", "argument keyword2") class ArgumentPageModel : PageModel() { companion object { const val name = "Argument" val parameter = listOf( navArgument(STRING_PARAM_NAME) { type = NavType.StringType }, navArgument(INT_PARAM_NAME) { type = NavType.IntType }, Loading @@ -62,6 +68,18 @@ class ArgumentPageModel : PageModel() { return (stringParam != null && listOf("foo", "bar").contains(stringParam)) } fun genStringParamSearchData(): EntrySearchData { return EntrySearchData(title = STRING_PARAM_TITLE) } fun genIntParamSearchData(): EntrySearchData { return EntrySearchData(title = INT_PARAM_TITLE) } fun genInjectSearchData(): EntrySearchData { return EntrySearchData(title = PAGE_TITLE, keyword = ARGUMENT_PAGE_KEYWORDS) } @Composable fun create(arguments: Bundle?): ArgumentPageModel { val pageModel: ArgumentPageModel = viewModel(key = arguments.toString()) Loading @@ -70,7 +88,7 @@ class ArgumentPageModel : PageModel() { } } private val title = TITLE private val title = PAGE_TITLE private var arguments: Bundle? = null private var stringParam: String? = null private var intParam: Int? = null Loading @@ -92,7 +110,7 @@ class ArgumentPageModel : PageModel() { @Composable fun genStringParamPreferenceModel(): PreferenceModel { return object : PreferenceModel { override val title = "String param value" override val title = STRING_PARAM_TITLE override val summary = stateOf(stringParam!!) } } Loading @@ -100,7 +118,7 @@ class ArgumentPageModel : PageModel() { @Composable fun genIntParamPreferenceModel(): PreferenceModel { return object : PreferenceModel { override val title = "Int param value" override val title = INT_PARAM_TITLE override val summary = stateOf(intParam!!.toString()) } } Loading @@ -114,7 +132,8 @@ class ArgumentPageModel : PageModel() { return object : PreferenceModel { override val title = genPageTitle() override val summary = stateOf(summaryArray.joinToString(", ")) override val onClick = navigator(name + parameter.navLink(arguments)) override val onClick = navigator( SettingsPageProviderEnum.ARGUMENT.displayName + parameter.navLink(arguments)) } } } Loading Loading
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/GalleryDebugActivity.kt +5 −1 Original line number Diff line number Diff line Loading @@ -18,4 +18,8 @@ package com.android.settingslib.spa.gallery import com.android.settingslib.spa.framework.DebugActivity class GalleryDebugActivity : DebugActivity(SpaEnvironment.EntryRepository, MainActivity::class.java) class GalleryDebugActivity : DebugActivity( SpaEnvironment.EntryRepository, MainActivity::class.java, "com.android.spa.gallery.provider", )
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/SpaEnvironment.kt +29 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.settingslib.spa.gallery import android.os.Bundle import androidx.navigation.NamedNavArgument import com.android.settingslib.spa.framework.common.SettingsEntryRepository import com.android.settingslib.spa.framework.common.SettingsPage import com.android.settingslib.spa.framework.common.SettingsPageProviderRepository Loading @@ -34,6 +36,32 @@ import com.android.settingslib.spa.gallery.preference.TwoTargetSwitchPreferenceP import com.android.settingslib.spa.gallery.ui.CategoryPageProvider import com.android.settingslib.spa.gallery.ui.SpinnerPageProvider /** * Enum to define all SPP name here. * Since the SPP name would be used in log, DO NOT change it once it is set. One can still change * the display name for better readability if necessary. */ enum class SettingsPageProviderEnum(val displayName: String) { HOME("home"), PREFERENCE("preference"), ARGUMENT("argument"), // Add your SPPs } fun createSettingsPage( SppName: SettingsPageProviderEnum, parameter: List<NamedNavArgument> = emptyList(), arguments: Bundle? = null ): SettingsPage { return SettingsPage( name = SppName.name, displayName = SppName.displayName, parameter = parameter, arguments = arguments, ) } object SpaEnvironment { val PageProviderRepository: SettingsPageProviderRepository by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { Loading @@ -55,7 +83,7 @@ object SpaEnvironment { ActionButtonPageProvider, ), rootPages = listOf( SettingsPage.create(HomePageProvider.name) createSettingsPage(SettingsPageProviderEnum.HOME) ) ) } Loading
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/home/HomePage.kt +12 −13 Original line number Diff line number Diff line Loading @@ -21,10 +21,10 @@ 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.SettingsPage import com.android.settingslib.spa.framework.common.SettingsPageProvider import com.android.settingslib.spa.framework.theme.SettingsTheme import com.android.settingslib.spa.gallery.R import com.android.settingslib.spa.gallery.SettingsPageProviderEnum import com.android.settingslib.spa.gallery.button.ActionButtonPageProvider import com.android.settingslib.spa.gallery.page.ArgumentPageModel import com.android.settingslib.spa.gallery.page.ArgumentPageProvider Loading @@ -38,20 +38,19 @@ import com.android.settingslib.spa.gallery.ui.SpinnerPageProvider import com.android.settingslib.spa.widget.scaffold.HomeScaffold object HomePageProvider : SettingsPageProvider { override val name = "Home" override val name = SettingsPageProviderEnum.HOME.name override fun buildEntry(arguments: Bundle?): List<SettingsEntry> { val owner = SettingsPage.create(name) return listOf( PreferenceMainPageProvider.buildInjectEntry().setLink(fromPage = owner).build(), ArgumentPageProvider.buildInjectEntry("foo")!!.setLink(fromPage = owner).build(), SliderPageProvider.buildInjectEntry().setLink(fromPage = owner).build(), SpinnerPageProvider.buildInjectEntry().setLink(fromPage = owner).build(), SettingsPagerPageProvider.buildInjectEntry().setLink(fromPage = owner).build(), FooterPageProvider.buildInjectEntry().setLink(fromPage = owner).build(), IllustrationPageProvider.buildInjectEntry().setLink(fromPage = owner).build(), CategoryPageProvider.buildInjectEntry().setLink(fromPage = owner).build(), ActionButtonPageProvider.buildInjectEntry().setLink(fromPage = owner).build(), PreferenceMainPageProvider.buildInjectEntry().build(), ArgumentPageProvider.buildInjectEntry("foo")!!.build(), SliderPageProvider.buildInjectEntry().build(), SpinnerPageProvider.buildInjectEntry().build(), SettingsPagerPageProvider.buildInjectEntry().build(), FooterPageProvider.buildInjectEntry().build(), IllustrationPageProvider.buildInjectEntry().build(), CategoryPageProvider.buildInjectEntry().build(), ActionButtonPageProvider.buildInjectEntry().build(), ) } Loading @@ -59,7 +58,7 @@ object HomePageProvider : SettingsPageProvider { override fun Page(arguments: Bundle?) { HomeScaffold(title = stringResource(R.string.app_name)) { for (entry in buildEntry(arguments)) { if (entry.name.startsWith(ArgumentPageModel.name)) { if (entry.owner.isCreateBy(SettingsPageProviderEnum.ARGUMENT.name)) { entry.UiLayout(ArgumentPageModel.buildArgument(intParam = 0)) } else { entry.UiLayout() Loading
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/page/ArgumentPage.kt +24 −7 Original line number Diff line number Diff line Loading @@ -24,23 +24,38 @@ 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.theme.SettingsTheme import com.android.settingslib.spa.gallery.SettingsPageProviderEnum import com.android.settingslib.spa.gallery.createSettingsPage import com.android.settingslib.spa.widget.preference.Preference import com.android.settingslib.spa.widget.scaffold.RegularScaffold object ArgumentPageProvider : SettingsPageProvider { override val name = ArgumentPageModel.name // Defines all entry name in this page. // Note that entry name would be used in log. DO NOT change it once it is set. // One can still change the display name for better readability if necessary. private enum class EntryEnum(val displayName: String) { STRING_PARAM("string_param"), INT_PARAM("int_param"), } private fun createEntry(owner: SettingsPage, entry: EntryEnum): SettingsEntryBuilder { return SettingsEntryBuilder.create(owner, entry.name, entry.displayName) } override val name = SettingsPageProviderEnum.ARGUMENT.name override val parameter = ArgumentPageModel.parameter override fun buildEntry(arguments: Bundle?): List<SettingsEntry> { if (!ArgumentPageModel.isValidArgument(arguments)) return emptyList() val owner = SettingsPage.create(name, parameter, arguments) val owner = createSettingsPage(SettingsPageProviderEnum.ARGUMENT, parameter, arguments) val entryList = mutableListOf<SettingsEntry>() entryList.add( SettingsEntryBuilder.create("string_param", owner) createEntry(owner, EntryEnum.STRING_PARAM) // Set attributes .setIsAllowSearch(true) .setSearchDataFn { ArgumentPageModel.genStringParamSearchData() } .setUiLayoutFn { // Set ui rendering Preference(ArgumentPageModel.create(it).genStringParamPreferenceModel()) Loading @@ -48,9 +63,10 @@ object ArgumentPageProvider : SettingsPageProvider { ) entryList.add( SettingsEntryBuilder.create("int_param", owner) createEntry(owner, EntryEnum.INT_PARAM) // Set attributes .setIsAllowSearch(true) .setSearchDataFn { ArgumentPageModel.genIntParamSearchData() } .setUiLayoutFn { // Set ui rendering Preference(ArgumentPageModel.create(it).genIntParamPreferenceModel()) Loading @@ -68,11 +84,12 @@ object ArgumentPageProvider : SettingsPageProvider { if (!ArgumentPageModel.isValidArgument(arguments)) return null return SettingsEntryBuilder.createInject( entryName = "${name}_$stringParam", owner = SettingsPage.create(name, parameter, arguments) owner = createSettingsPage(SettingsPageProviderEnum.ARGUMENT, parameter, arguments), displayName = "${name}_$stringParam", ) // Set attributes .setIsAllowSearch(false) .setSearchDataFn { ArgumentPageModel.genInjectSearchData() } .setUiLayoutFn { // Set ui rendering Preference(ArgumentPageModel.create(it).genInjectPreferenceModel()) Loading @@ -83,7 +100,7 @@ object ArgumentPageProvider : SettingsPageProvider { override fun Page(arguments: Bundle?) { RegularScaffold(title = ArgumentPageModel.create(arguments).genPageTitle()) { for (entry in buildEntry(arguments)) { if (entry.name.startsWith(name)) { if (entry.owner.isCreateBy(SettingsPageProviderEnum.ARGUMENT.name)) { entry.UiLayout(ArgumentPageModel.buildNextArgument(arguments)) } else { entry.UiLayout() Loading
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/page/ArgumentPageModel.kt +25 −6 Original line number Diff line number Diff line Loading @@ -23,22 +23,28 @@ import androidx.lifecycle.viewmodel.compose.viewModel import androidx.navigation.NavType import androidx.navigation.navArgument import com.android.settingslib.spa.framework.BrowseActivity import com.android.settingslib.spa.framework.common.EntrySearchData import com.android.settingslib.spa.framework.common.PageModel import com.android.settingslib.spa.framework.compose.navigator import com.android.settingslib.spa.framework.compose.stateOf import com.android.settingslib.spa.framework.util.getIntArg import com.android.settingslib.spa.framework.util.getStringArg import com.android.settingslib.spa.framework.util.navLink import com.android.settingslib.spa.gallery.SettingsPageProviderEnum import com.android.settingslib.spa.widget.preference.PreferenceModel private const val TITLE = "Sample page with arguments" // Defines all the resources for this page. // In real Settings App, resources data is defined in xml, rather than SPP. private const val PAGE_TITLE = "Sample page with arguments" private const val STRING_PARAM_TITLE = "String param value" private const val INT_PARAM_TITLE = "Int param value" private const val STRING_PARAM_NAME = "stringParam" private const val INT_PARAM_NAME = "intParam" private val ARGUMENT_PAGE_KEYWORDS = listOf("argument keyword1", "argument keyword2") class ArgumentPageModel : PageModel() { companion object { const val name = "Argument" val parameter = listOf( navArgument(STRING_PARAM_NAME) { type = NavType.StringType }, navArgument(INT_PARAM_NAME) { type = NavType.IntType }, Loading @@ -62,6 +68,18 @@ class ArgumentPageModel : PageModel() { return (stringParam != null && listOf("foo", "bar").contains(stringParam)) } fun genStringParamSearchData(): EntrySearchData { return EntrySearchData(title = STRING_PARAM_TITLE) } fun genIntParamSearchData(): EntrySearchData { return EntrySearchData(title = INT_PARAM_TITLE) } fun genInjectSearchData(): EntrySearchData { return EntrySearchData(title = PAGE_TITLE, keyword = ARGUMENT_PAGE_KEYWORDS) } @Composable fun create(arguments: Bundle?): ArgumentPageModel { val pageModel: ArgumentPageModel = viewModel(key = arguments.toString()) Loading @@ -70,7 +88,7 @@ class ArgumentPageModel : PageModel() { } } private val title = TITLE private val title = PAGE_TITLE private var arguments: Bundle? = null private var stringParam: String? = null private var intParam: Int? = null Loading @@ -92,7 +110,7 @@ class ArgumentPageModel : PageModel() { @Composable fun genStringParamPreferenceModel(): PreferenceModel { return object : PreferenceModel { override val title = "String param value" override val title = STRING_PARAM_TITLE override val summary = stateOf(stringParam!!) } } Loading @@ -100,7 +118,7 @@ class ArgumentPageModel : PageModel() { @Composable fun genIntParamPreferenceModel(): PreferenceModel { return object : PreferenceModel { override val title = "Int param value" override val title = INT_PARAM_TITLE override val summary = stateOf(intParam!!.toString()) } } Loading @@ -114,7 +132,8 @@ class ArgumentPageModel : PageModel() { return object : PreferenceModel { override val title = genPageTitle() override val summary = stateOf(summaryArray.joinToString(", ")) override val onClick = navigator(name + parameter.navLink(arguments)) override val onClick = navigator( SettingsPageProviderEnum.ARGUMENT.displayName + parameter.navLink(arguments)) } } } Loading