Loading packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/home/HomePage.kt +33 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ 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.SettingsPage import com.android.settingslib.spa.framework.common.SettingsPageProvider import com.android.settingslib.spa.framework.theme.SettingsTheme import com.android.settingslib.spa.gallery.R Loading @@ -35,6 +37,37 @@ import com.android.settingslib.spa.widget.scaffold.HomeScaffold object HomePageProvider : SettingsPageProvider { override val name = "Home" override fun buildEntry(arguments: Bundle?): List<SettingsEntry> { val owner = SettingsPage.create(name) val entryList = mutableListOf<SettingsEntry>() entryList.add( PreferenceMainPageProvider.buildInjectEntry() .setLink(fromPage = owner).build() ) entryList.add( SliderPageProvider.buildInjectEntry() .setLink(fromPage = owner).build() ) entryList.add( SpinnerPageProvider.buildInjectEntry() .setLink(fromPage = owner).build() ) entryList.add( SettingsPagerPageProvider.buildInjectEntry() .setLink(fromPage = owner).build() ) entryList.add( FooterPageProvider.buildInjectEntry() .setLink(fromPage = owner).build() ) entryList.add( IllustrationPageProvider.buildInjectEntry() .setLink(fromPage = owner).build() ) return entryList } @Composable override fun Page(arguments: Bundle?) { HomePage() Loading packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/page/FooterPage.kt +37 −10 Original line number Diff line number Diff line Loading @@ -20,6 +20,9 @@ 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.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.compose.navigator import com.android.settingslib.spa.framework.compose.stateOf Loading @@ -34,6 +37,36 @@ private const val TITLE = "Sample Footer" object FooterPageProvider : SettingsPageProvider { override val name = "Footer" override fun buildEntry(arguments: Bundle?): List<SettingsEntry> { val owner = SettingsPage.create(name) val entryList = mutableListOf<SettingsEntry>() entryList.add( SettingsEntryBuilder.create( "Some Preference", owner) .setIsAllowSearch(true) .setUiLayoutFn { Preference(remember { object : PreferenceModel { override val title = "Some Preference" override val summary = stateOf("Some summary") } }) }.build() ) return entryList } fun buildInjectEntry(): SettingsEntryBuilder { return SettingsEntryBuilder.createInject(owner = SettingsPage.create(name)) .setIsAllowSearch(true) .setUiLayoutFn { Preference(object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) }) } } @Composable override fun Page(arguments: Bundle?) { FooterPage() Loading @@ -41,22 +74,16 @@ object FooterPageProvider : SettingsPageProvider { @Composable fun EntryItem() { Preference(object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) }) buildInjectEntry().build().uiLayout.let { it() } } } @Composable private fun FooterPage() { RegularScaffold(title = TITLE) { Preference(remember { object : PreferenceModel { override val title = "Some Preference" override val summary = stateOf("Some summary") for (entry in FooterPageProvider.buildEntry(arguments = null)) { entry.uiLayout() } }) Footer(footerText = "Footer text always at the end of page.") } } Loading packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/page/IllustrationPage.kt +55 −26 Original line number Diff line number Diff line Loading @@ -17,12 +17,11 @@ package com.android.settingslib.spa.gallery.page import android.os.Bundle import androidx.compose.foundation.layout.Column import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview 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.compose.navigator import com.android.settingslib.spa.framework.theme.SettingsTheme Loading @@ -32,27 +31,19 @@ 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" object IllustrationPageProvider : SettingsPageProvider { override val name = "Illustration" @Composable override fun Page(arguments: Bundle?) { IllustrationPage() } @Composable fun EntryItem() { Preference(object : PreferenceModel { override val title = "Sample Illustration" override val onClick = navigator(name) }) } } @Composable private fun IllustrationPage() { Column(Modifier.verticalScroll(rememberScrollState())) { override fun buildEntry(arguments: Bundle?): List<SettingsEntry> { val owner = SettingsPage.create(name) val entryList = mutableListOf<SettingsEntry>() entryList.add( SettingsEntryBuilder.create( "Lottie Illustration", owner) .setUiLayoutFn { Preference(object : PreferenceModel { override val title = "Lottie Illustration" }) Loading @@ -61,7 +52,11 @@ private fun IllustrationPage() { override val resId = R.raw.accessibility_shortcut_type_triple_tap override val resourceType = ResourceType.LOTTIE }) }.build() ) entryList.add( SettingsEntryBuilder.create( "Image Illustration", owner) .setUiLayoutFn { Preference(object : PreferenceModel { override val title = "Image Illustration" }) Loading @@ -70,6 +65,40 @@ private fun IllustrationPage() { override val resId = R.drawable.accessibility_captioning_banner override val resourceType = ResourceType.IMAGE }) }.build() ) return entryList } fun buildInjectEntry(): SettingsEntryBuilder { return SettingsEntryBuilder.createInject(owner = SettingsPage.create(name)) .setIsAllowSearch(true) .setUiLayoutFn { Preference(object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) }) } } @Composable override fun Page(arguments: Bundle?) { IllustrationPage() } @Composable fun EntryItem() { buildInjectEntry().build().uiLayout.let { it() } } } @Composable private fun IllustrationPage() { RegularScaffold(title = TITLE) { for (entry in IllustrationPageProvider.buildEntry(arguments = null)) { entry.uiLayout() } } } Loading packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/page/SettingsPagerPage.kt +14 −4 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ package com.android.settingslib.spa.gallery.page import android.os.Bundle import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.Preview 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.compose.navigator import com.android.settingslib.spa.framework.theme.SettingsTheme Loading @@ -33,6 +35,17 @@ private const val TITLE = "Sample SettingsPager" object SettingsPagerPageProvider : SettingsPageProvider { override val name = "SettingsPager" fun buildInjectEntry(): SettingsEntryBuilder { return SettingsEntryBuilder.createInject(owner = SettingsPage.create(name)) .setIsAllowSearch(true) .setUiLayoutFn { Preference(object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) }) } } @Composable override fun Page(arguments: Bundle?) { SettingsPagerPage() Loading @@ -40,10 +53,7 @@ object SettingsPagerPageProvider : SettingsPageProvider { @Composable fun EntryItem() { Preference(object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) }) buildInjectEntry().build().uiLayout.let { it() } } } Loading packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/page/SliderPage.kt +82 −40 Original line number Diff line number Diff line Loading @@ -27,6 +27,9 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.tooling.preview.Preview 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.compose.navigator import com.android.settingslib.spa.framework.theme.SettingsTheme Loading @@ -41,28 +44,23 @@ private const val TITLE = "Sample Slider" object SliderPageProvider : SettingsPageProvider { override val name = "Slider" @Composable override fun Page(arguments: Bundle?) { SliderPage() } @Composable fun EntryItem() { Preference(object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) }) } } @Composable private fun SliderPage() { RegularScaffold(title = TITLE) { override fun buildEntry(arguments: Bundle?): List<SettingsEntry> { val owner = SettingsPage.create(name) val entryList = mutableListOf<SettingsEntry>() entryList.add( SettingsEntryBuilder.create("Simple Slider", owner) .setIsAllowSearch(true) .setUiLayoutFn { SettingsSlider(object : SettingsSliderModel { override val title = "Slider" override val title = "Simple Slider" override val initValue = 40 }) }.build() ) entryList.add( SettingsEntryBuilder.create("Slider with icon", owner) .setIsAllowSearch(true) .setUiLayoutFn { SettingsSlider(object : SettingsSliderModel { override val title = "Slider with icon" override val initValue = 30 Loading @@ -71,7 +69,12 @@ private fun SliderPage() { } override val icon = Icons.Outlined.AccessAlarm }) }.build() ) entryList.add( SettingsEntryBuilder.create("Slider with changeable icon", owner) .setIsAllowSearch(true) .setUiLayoutFn { val initValue = 0 var icon by remember { mutableStateOf(Icons.Outlined.MusicOff) } var sliderPosition by remember { mutableStateOf(initValue) } Loading @@ -87,13 +90,52 @@ private fun SliderPage() { } override val icon = icon }) }.build() ) entryList.add( SettingsEntryBuilder.create("Slider with steps", owner) .setIsAllowSearch(true) .setUiLayoutFn { SettingsSlider(object : SettingsSliderModel { override val title = "Slider with steps" override val initValue = 2 override val valueRange = 1..5 override val showSteps = true }) }.build() ) return entryList } fun buildInjectEntry(): SettingsEntryBuilder { return SettingsEntryBuilder.createInject(owner = SettingsPage.create(name)) .setIsAllowSearch(true) .setUiLayoutFn { Preference(object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) }) } } @Composable override fun Page(arguments: Bundle?) { SliderPage() } @Composable fun EntryItem() { buildInjectEntry().build().uiLayout.let { it() } } } @Composable private fun SliderPage() { RegularScaffold(title = TITLE) { for (entry in SliderPageProvider.buildEntry(arguments = null)) { entry.uiLayout() } } } Loading Loading
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/home/HomePage.kt +33 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ 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.SettingsPage import com.android.settingslib.spa.framework.common.SettingsPageProvider import com.android.settingslib.spa.framework.theme.SettingsTheme import com.android.settingslib.spa.gallery.R Loading @@ -35,6 +37,37 @@ import com.android.settingslib.spa.widget.scaffold.HomeScaffold object HomePageProvider : SettingsPageProvider { override val name = "Home" override fun buildEntry(arguments: Bundle?): List<SettingsEntry> { val owner = SettingsPage.create(name) val entryList = mutableListOf<SettingsEntry>() entryList.add( PreferenceMainPageProvider.buildInjectEntry() .setLink(fromPage = owner).build() ) entryList.add( SliderPageProvider.buildInjectEntry() .setLink(fromPage = owner).build() ) entryList.add( SpinnerPageProvider.buildInjectEntry() .setLink(fromPage = owner).build() ) entryList.add( SettingsPagerPageProvider.buildInjectEntry() .setLink(fromPage = owner).build() ) entryList.add( FooterPageProvider.buildInjectEntry() .setLink(fromPage = owner).build() ) entryList.add( IllustrationPageProvider.buildInjectEntry() .setLink(fromPage = owner).build() ) return entryList } @Composable override fun Page(arguments: Bundle?) { HomePage() Loading
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/page/FooterPage.kt +37 −10 Original line number Diff line number Diff line Loading @@ -20,6 +20,9 @@ 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.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.compose.navigator import com.android.settingslib.spa.framework.compose.stateOf Loading @@ -34,6 +37,36 @@ private const val TITLE = "Sample Footer" object FooterPageProvider : SettingsPageProvider { override val name = "Footer" override fun buildEntry(arguments: Bundle?): List<SettingsEntry> { val owner = SettingsPage.create(name) val entryList = mutableListOf<SettingsEntry>() entryList.add( SettingsEntryBuilder.create( "Some Preference", owner) .setIsAllowSearch(true) .setUiLayoutFn { Preference(remember { object : PreferenceModel { override val title = "Some Preference" override val summary = stateOf("Some summary") } }) }.build() ) return entryList } fun buildInjectEntry(): SettingsEntryBuilder { return SettingsEntryBuilder.createInject(owner = SettingsPage.create(name)) .setIsAllowSearch(true) .setUiLayoutFn { Preference(object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) }) } } @Composable override fun Page(arguments: Bundle?) { FooterPage() Loading @@ -41,22 +74,16 @@ object FooterPageProvider : SettingsPageProvider { @Composable fun EntryItem() { Preference(object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) }) buildInjectEntry().build().uiLayout.let { it() } } } @Composable private fun FooterPage() { RegularScaffold(title = TITLE) { Preference(remember { object : PreferenceModel { override val title = "Some Preference" override val summary = stateOf("Some summary") for (entry in FooterPageProvider.buildEntry(arguments = null)) { entry.uiLayout() } }) Footer(footerText = "Footer text always at the end of page.") } } Loading
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/page/IllustrationPage.kt +55 −26 Original line number Diff line number Diff line Loading @@ -17,12 +17,11 @@ package com.android.settingslib.spa.gallery.page import android.os.Bundle import androidx.compose.foundation.layout.Column import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview 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.compose.navigator import com.android.settingslib.spa.framework.theme.SettingsTheme Loading @@ -32,27 +31,19 @@ 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" object IllustrationPageProvider : SettingsPageProvider { override val name = "Illustration" @Composable override fun Page(arguments: Bundle?) { IllustrationPage() } @Composable fun EntryItem() { Preference(object : PreferenceModel { override val title = "Sample Illustration" override val onClick = navigator(name) }) } } @Composable private fun IllustrationPage() { Column(Modifier.verticalScroll(rememberScrollState())) { override fun buildEntry(arguments: Bundle?): List<SettingsEntry> { val owner = SettingsPage.create(name) val entryList = mutableListOf<SettingsEntry>() entryList.add( SettingsEntryBuilder.create( "Lottie Illustration", owner) .setUiLayoutFn { Preference(object : PreferenceModel { override val title = "Lottie Illustration" }) Loading @@ -61,7 +52,11 @@ private fun IllustrationPage() { override val resId = R.raw.accessibility_shortcut_type_triple_tap override val resourceType = ResourceType.LOTTIE }) }.build() ) entryList.add( SettingsEntryBuilder.create( "Image Illustration", owner) .setUiLayoutFn { Preference(object : PreferenceModel { override val title = "Image Illustration" }) Loading @@ -70,6 +65,40 @@ private fun IllustrationPage() { override val resId = R.drawable.accessibility_captioning_banner override val resourceType = ResourceType.IMAGE }) }.build() ) return entryList } fun buildInjectEntry(): SettingsEntryBuilder { return SettingsEntryBuilder.createInject(owner = SettingsPage.create(name)) .setIsAllowSearch(true) .setUiLayoutFn { Preference(object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) }) } } @Composable override fun Page(arguments: Bundle?) { IllustrationPage() } @Composable fun EntryItem() { buildInjectEntry().build().uiLayout.let { it() } } } @Composable private fun IllustrationPage() { RegularScaffold(title = TITLE) { for (entry in IllustrationPageProvider.buildEntry(arguments = null)) { entry.uiLayout() } } } Loading
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/page/SettingsPagerPage.kt +14 −4 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ package com.android.settingslib.spa.gallery.page import android.os.Bundle import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.Preview 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.compose.navigator import com.android.settingslib.spa.framework.theme.SettingsTheme Loading @@ -33,6 +35,17 @@ private const val TITLE = "Sample SettingsPager" object SettingsPagerPageProvider : SettingsPageProvider { override val name = "SettingsPager" fun buildInjectEntry(): SettingsEntryBuilder { return SettingsEntryBuilder.createInject(owner = SettingsPage.create(name)) .setIsAllowSearch(true) .setUiLayoutFn { Preference(object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) }) } } @Composable override fun Page(arguments: Bundle?) { SettingsPagerPage() Loading @@ -40,10 +53,7 @@ object SettingsPagerPageProvider : SettingsPageProvider { @Composable fun EntryItem() { Preference(object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) }) buildInjectEntry().build().uiLayout.let { it() } } } Loading
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/page/SliderPage.kt +82 −40 Original line number Diff line number Diff line Loading @@ -27,6 +27,9 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.tooling.preview.Preview 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.compose.navigator import com.android.settingslib.spa.framework.theme.SettingsTheme Loading @@ -41,28 +44,23 @@ private const val TITLE = "Sample Slider" object SliderPageProvider : SettingsPageProvider { override val name = "Slider" @Composable override fun Page(arguments: Bundle?) { SliderPage() } @Composable fun EntryItem() { Preference(object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) }) } } @Composable private fun SliderPage() { RegularScaffold(title = TITLE) { override fun buildEntry(arguments: Bundle?): List<SettingsEntry> { val owner = SettingsPage.create(name) val entryList = mutableListOf<SettingsEntry>() entryList.add( SettingsEntryBuilder.create("Simple Slider", owner) .setIsAllowSearch(true) .setUiLayoutFn { SettingsSlider(object : SettingsSliderModel { override val title = "Slider" override val title = "Simple Slider" override val initValue = 40 }) }.build() ) entryList.add( SettingsEntryBuilder.create("Slider with icon", owner) .setIsAllowSearch(true) .setUiLayoutFn { SettingsSlider(object : SettingsSliderModel { override val title = "Slider with icon" override val initValue = 30 Loading @@ -71,7 +69,12 @@ private fun SliderPage() { } override val icon = Icons.Outlined.AccessAlarm }) }.build() ) entryList.add( SettingsEntryBuilder.create("Slider with changeable icon", owner) .setIsAllowSearch(true) .setUiLayoutFn { val initValue = 0 var icon by remember { mutableStateOf(Icons.Outlined.MusicOff) } var sliderPosition by remember { mutableStateOf(initValue) } Loading @@ -87,13 +90,52 @@ private fun SliderPage() { } override val icon = icon }) }.build() ) entryList.add( SettingsEntryBuilder.create("Slider with steps", owner) .setIsAllowSearch(true) .setUiLayoutFn { SettingsSlider(object : SettingsSliderModel { override val title = "Slider with steps" override val initValue = 2 override val valueRange = 1..5 override val showSteps = true }) }.build() ) return entryList } fun buildInjectEntry(): SettingsEntryBuilder { return SettingsEntryBuilder.createInject(owner = SettingsPage.create(name)) .setIsAllowSearch(true) .setUiLayoutFn { Preference(object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) }) } } @Composable override fun Page(arguments: Bundle?) { SliderPage() } @Composable fun EntryItem() { buildInjectEntry().build().uiLayout.let { it() } } } @Composable private fun SliderPage() { RegularScaffold(title = TITLE) { for (entry in SliderPageProvider.buildEntry(arguments = null)) { entry.uiLayout() } } } Loading