Loading packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/GallerySpaEnvironment.kt +4 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import com.android.settingslib.spa.gallery.page.LoadingBarPageProvider import com.android.settingslib.spa.gallery.page.ProgressBarPageProvider import com.android.settingslib.spa.gallery.scaffold.NonScrollablePagerPageProvider import com.android.settingslib.spa.gallery.page.SliderPageProvider import com.android.settingslib.spa.gallery.preference.CheckBoxPreferencePageProvider import com.android.settingslib.spa.gallery.preference.IntroPreferencePageProvider import com.android.settingslib.spa.gallery.preference.ListPreferencePageProvider import com.android.settingslib.spa.gallery.preference.MainSwitchPreferencePageProvider Loading @@ -46,6 +47,7 @@ import com.android.settingslib.spa.gallery.preference.PreferenceMainPageProvider import com.android.settingslib.spa.gallery.preference.PreferencePageProvider import com.android.settingslib.spa.gallery.preference.SwitchPreferencePageProvider import com.android.settingslib.spa.gallery.preference.TopIntroPreferencePageProvider import com.android.settingslib.spa.gallery.preference.TwoTargetButtonPreferencePageProvider import com.android.settingslib.spa.gallery.preference.TwoTargetSwitchPreferencePageProvider import com.android.settingslib.spa.gallery.preference.ZeroStatePreferencePageProvider import com.android.settingslib.spa.gallery.scaffold.PagerMainPageProvider Loading Loading @@ -105,6 +107,8 @@ class GallerySpaEnvironment(context: Context) : SpaEnvironment(context) { CopyablePageProvider, IntroPreferencePageProvider, TopIntroPreferencePageProvider, CheckBoxPreferencePageProvider, TwoTargetButtonPreferencePageProvider, ), rootPages = listOf( HomePageProvider.createSettingsPage(), Loading packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/dialog/DialogMainPageProvider.kt +71 −28 Original line number Diff line number Diff line Loading @@ -19,50 +19,93 @@ package com.android.settingslib.spa.gallery.dialog import android.os.Bundle import androidx.compose.material3.Text import androidx.compose.runtime.Composable import com.android.settingslib.spa.framework.common.SettingsEntry import com.android.settingslib.spa.framework.common.SettingsEntryBuilder import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue 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.widget.dialog.AlertDialogButton import com.android.settingslib.spa.widget.dialog.SettingsAlertDialogWithIcon import com.android.settingslib.spa.widget.dialog.rememberAlertDialogPresenter import com.android.settingslib.spa.widget.preference.Preference import com.android.settingslib.spa.widget.preference.PreferenceModel import com.android.settingslib.spa.widget.scaffold.RegularScaffold import com.android.settingslib.spa.widget.ui.Category private const val TITLE = "Category: Dialog" object DialogMainPageProvider : SettingsPageProvider { override val name = "DialogMain" private val owner = createSettingsPage() override fun buildEntry(arguments: Bundle?): List<SettingsEntry> = listOf( SettingsEntryBuilder.create("AlertDialog", owner).setUiLayoutFn { val alertDialogPresenter = rememberAlertDialogPresenter( @Composable override fun Page(arguments: Bundle?) { RegularScaffold(TITLE) { Category { AlertDialog() AlertDialogWithIcon() NavDialog() } } } @Composable fun Entry() { Preference( object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) } ) } override fun getTitle(arguments: Bundle?) = TITLE } @Composable private fun AlertDialog() { val alertDialogPresenter = rememberAlertDialogPresenter( confirmButton = AlertDialogButton("Ok"), dismissButton = AlertDialogButton("Cancel"), title = "Title", text = { Text("Text") }, ) Preference(object : PreferenceModel { Preference( object : PreferenceModel { override val title = "Show AlertDialog" override val onClick = alertDialogPresenter::open }) }.build(), SettingsEntryBuilder.create("NavDialog", owner).setUiLayoutFn { Preference(object : PreferenceModel { override val title = "Navigate to Dialog" override val onClick = navigator(route = NavDialogProvider.name) }) }.build(), } ) } @Composable fun Entry() { Preference(object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) }) private fun AlertDialogWithIcon() { var openDialog by rememberSaveable { mutableStateOf(false) } val close = { openDialog = false } val open = { openDialog = true } if (openDialog) { SettingsAlertDialogWithIcon( title = "Title", onDismissRequest = close, confirmButton = AlertDialogButton("OK", onClick = close), dismissButton = AlertDialogButton("Dismiss", onClick = close), ) {} } Preference( object : PreferenceModel { override val title = "Show AlertDialogWithIcon" override val onClick = open } ) } override fun getTitle(arguments: Bundle?) = TITLE @Composable private fun NavDialog() { Preference( object : PreferenceModel { override val title = "Navigate to Dialog" override val onClick = navigator(route = NavDialogProvider.name) } ) } packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/preference/CheckBoxPreferencePageProvider.kt 0 → 100644 +99 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settingslib.spa.gallery.preference import android.os.Bundle import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.AirplanemodeActive import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import com.android.settingslib.spa.framework.common.SettingsPageProvider import com.android.settingslib.spa.framework.compose.navigator import com.android.settingslib.spa.widget.preference.CheckboxPreference import com.android.settingslib.spa.widget.preference.CheckboxPreferenceModel import com.android.settingslib.spa.widget.preference.Preference import com.android.settingslib.spa.widget.preference.PreferenceModel import com.android.settingslib.spa.widget.scaffold.RegularScaffold import com.android.settingslib.spa.widget.ui.Category import com.android.settingslib.spa.widget.ui.SettingsIcon private const val TITLE = "Sample CheckBoxPreference" object CheckBoxPreferencePageProvider : SettingsPageProvider { override val name = "CheckBoxPreference" @Composable override fun Page(arguments: Bundle?) { RegularScaffold(TITLE) { Category { var checked1 by rememberSaveable { mutableStateOf(true) } CheckboxPreference( object : CheckboxPreferenceModel { override val title = "Use Dark theme" override val checked = { checked1 } override val onCheckedChange = { newChecked: Boolean -> checked1 = newChecked } } ) var checked2 by rememberSaveable { mutableStateOf(false) } CheckboxPreference( object : CheckboxPreferenceModel { override val title = "Use Dark theme" override val summary = { "Summary" } override val checked = { checked2 } override val onCheckedChange = { newChecked: Boolean -> checked2 = newChecked } } ) var checked3 by rememberSaveable { mutableStateOf(true) } CheckboxPreference( object : CheckboxPreferenceModel { override val title = "Use Dark theme" override val summary = { "Summary" } override val checked = { checked3 } override val onCheckedChange = { newChecked: Boolean -> checked3 = newChecked } override val icon = @Composable { SettingsIcon(imageVector = Icons.Outlined.AirplanemodeActive) } } ) } } } @Composable fun Entry() { Preference( object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) } ) } override fun getTitle(arguments: Bundle?): String { return TITLE } } packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/preference/PreferenceMainPageProvider.kt +2 −0 Original line number Diff line number Diff line Loading @@ -36,11 +36,13 @@ object PreferenceMainPageProvider : SettingsPageProvider { Category { PreferencePageProvider.Entry() ListPreferencePageProvider.Entry() CheckBoxPreferencePageProvider.Entry() } Category { SwitchPreferencePageProvider.Entry() MainSwitchPreferencePageProvider.Entry() TwoTargetSwitchPreferencePageProvider.Entry() TwoTargetButtonPreferencePageProvider.Entry() } Category { ZeroStatePreferencePageProvider.Entry() Loading packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/preference/TwoTargetButtonPreferencePageProvider.kt 0 → 100644 +80 −0 Original line number Diff line number Diff line /* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settingslib.spa.gallery.preference import android.os.Bundle import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Add import androidx.compose.material.icons.outlined.Info import androidx.compose.runtime.Composable import com.android.settingslib.spa.framework.common.SettingsPageProvider 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.preference.TwoTargetButtonPreference import com.android.settingslib.spa.widget.scaffold.RegularScaffold import com.android.settingslib.spa.widget.ui.Category private const val TITLE = "Sample TwoTargetButtonPreference" object TwoTargetButtonPreferencePageProvider : SettingsPageProvider { override val name = "TwoTargetButtonPreference" @Composable override fun Page(arguments: Bundle?) { RegularScaffold(TITLE) { Category { SampleTwoTargetButtonPreference() SampleTwoTargetButtonPreferenceWithSummary() } } } @Composable fun Entry() { Preference( object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) } ) } } @Composable private fun SampleTwoTargetButtonPreference() { TwoTargetButtonPreference( title = "TwoTargetButton", summary = { "" }, buttonIcon = Icons.Outlined.Info, buttonIconDescription = "info", onClick = {}, onButtonClick = {}, ) } @Composable private fun SampleTwoTargetButtonPreferenceWithSummary() { TwoTargetButtonPreference( title = "TwoTargetButton", summary = { "summary" }, buttonIcon = Icons.Outlined.Add, buttonIconDescription = "info", onClick = {}, onButtonClick = {}, ) } Loading
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/GallerySpaEnvironment.kt +4 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import com.android.settingslib.spa.gallery.page.LoadingBarPageProvider import com.android.settingslib.spa.gallery.page.ProgressBarPageProvider import com.android.settingslib.spa.gallery.scaffold.NonScrollablePagerPageProvider import com.android.settingslib.spa.gallery.page.SliderPageProvider import com.android.settingslib.spa.gallery.preference.CheckBoxPreferencePageProvider import com.android.settingslib.spa.gallery.preference.IntroPreferencePageProvider import com.android.settingslib.spa.gallery.preference.ListPreferencePageProvider import com.android.settingslib.spa.gallery.preference.MainSwitchPreferencePageProvider Loading @@ -46,6 +47,7 @@ import com.android.settingslib.spa.gallery.preference.PreferenceMainPageProvider import com.android.settingslib.spa.gallery.preference.PreferencePageProvider import com.android.settingslib.spa.gallery.preference.SwitchPreferencePageProvider import com.android.settingslib.spa.gallery.preference.TopIntroPreferencePageProvider import com.android.settingslib.spa.gallery.preference.TwoTargetButtonPreferencePageProvider import com.android.settingslib.spa.gallery.preference.TwoTargetSwitchPreferencePageProvider import com.android.settingslib.spa.gallery.preference.ZeroStatePreferencePageProvider import com.android.settingslib.spa.gallery.scaffold.PagerMainPageProvider Loading Loading @@ -105,6 +107,8 @@ class GallerySpaEnvironment(context: Context) : SpaEnvironment(context) { CopyablePageProvider, IntroPreferencePageProvider, TopIntroPreferencePageProvider, CheckBoxPreferencePageProvider, TwoTargetButtonPreferencePageProvider, ), rootPages = listOf( HomePageProvider.createSettingsPage(), Loading
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/dialog/DialogMainPageProvider.kt +71 −28 Original line number Diff line number Diff line Loading @@ -19,50 +19,93 @@ package com.android.settingslib.spa.gallery.dialog import android.os.Bundle import androidx.compose.material3.Text import androidx.compose.runtime.Composable import com.android.settingslib.spa.framework.common.SettingsEntry import com.android.settingslib.spa.framework.common.SettingsEntryBuilder import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue 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.widget.dialog.AlertDialogButton import com.android.settingslib.spa.widget.dialog.SettingsAlertDialogWithIcon import com.android.settingslib.spa.widget.dialog.rememberAlertDialogPresenter import com.android.settingslib.spa.widget.preference.Preference import com.android.settingslib.spa.widget.preference.PreferenceModel import com.android.settingslib.spa.widget.scaffold.RegularScaffold import com.android.settingslib.spa.widget.ui.Category private const val TITLE = "Category: Dialog" object DialogMainPageProvider : SettingsPageProvider { override val name = "DialogMain" private val owner = createSettingsPage() override fun buildEntry(arguments: Bundle?): List<SettingsEntry> = listOf( SettingsEntryBuilder.create("AlertDialog", owner).setUiLayoutFn { val alertDialogPresenter = rememberAlertDialogPresenter( @Composable override fun Page(arguments: Bundle?) { RegularScaffold(TITLE) { Category { AlertDialog() AlertDialogWithIcon() NavDialog() } } } @Composable fun Entry() { Preference( object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) } ) } override fun getTitle(arguments: Bundle?) = TITLE } @Composable private fun AlertDialog() { val alertDialogPresenter = rememberAlertDialogPresenter( confirmButton = AlertDialogButton("Ok"), dismissButton = AlertDialogButton("Cancel"), title = "Title", text = { Text("Text") }, ) Preference(object : PreferenceModel { Preference( object : PreferenceModel { override val title = "Show AlertDialog" override val onClick = alertDialogPresenter::open }) }.build(), SettingsEntryBuilder.create("NavDialog", owner).setUiLayoutFn { Preference(object : PreferenceModel { override val title = "Navigate to Dialog" override val onClick = navigator(route = NavDialogProvider.name) }) }.build(), } ) } @Composable fun Entry() { Preference(object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) }) private fun AlertDialogWithIcon() { var openDialog by rememberSaveable { mutableStateOf(false) } val close = { openDialog = false } val open = { openDialog = true } if (openDialog) { SettingsAlertDialogWithIcon( title = "Title", onDismissRequest = close, confirmButton = AlertDialogButton("OK", onClick = close), dismissButton = AlertDialogButton("Dismiss", onClick = close), ) {} } Preference( object : PreferenceModel { override val title = "Show AlertDialogWithIcon" override val onClick = open } ) } override fun getTitle(arguments: Bundle?) = TITLE @Composable private fun NavDialog() { Preference( object : PreferenceModel { override val title = "Navigate to Dialog" override val onClick = navigator(route = NavDialogProvider.name) } ) }
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/preference/CheckBoxPreferencePageProvider.kt 0 → 100644 +99 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settingslib.spa.gallery.preference import android.os.Bundle import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.AirplanemodeActive import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import com.android.settingslib.spa.framework.common.SettingsPageProvider import com.android.settingslib.spa.framework.compose.navigator import com.android.settingslib.spa.widget.preference.CheckboxPreference import com.android.settingslib.spa.widget.preference.CheckboxPreferenceModel import com.android.settingslib.spa.widget.preference.Preference import com.android.settingslib.spa.widget.preference.PreferenceModel import com.android.settingslib.spa.widget.scaffold.RegularScaffold import com.android.settingslib.spa.widget.ui.Category import com.android.settingslib.spa.widget.ui.SettingsIcon private const val TITLE = "Sample CheckBoxPreference" object CheckBoxPreferencePageProvider : SettingsPageProvider { override val name = "CheckBoxPreference" @Composable override fun Page(arguments: Bundle?) { RegularScaffold(TITLE) { Category { var checked1 by rememberSaveable { mutableStateOf(true) } CheckboxPreference( object : CheckboxPreferenceModel { override val title = "Use Dark theme" override val checked = { checked1 } override val onCheckedChange = { newChecked: Boolean -> checked1 = newChecked } } ) var checked2 by rememberSaveable { mutableStateOf(false) } CheckboxPreference( object : CheckboxPreferenceModel { override val title = "Use Dark theme" override val summary = { "Summary" } override val checked = { checked2 } override val onCheckedChange = { newChecked: Boolean -> checked2 = newChecked } } ) var checked3 by rememberSaveable { mutableStateOf(true) } CheckboxPreference( object : CheckboxPreferenceModel { override val title = "Use Dark theme" override val summary = { "Summary" } override val checked = { checked3 } override val onCheckedChange = { newChecked: Boolean -> checked3 = newChecked } override val icon = @Composable { SettingsIcon(imageVector = Icons.Outlined.AirplanemodeActive) } } ) } } } @Composable fun Entry() { Preference( object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) } ) } override fun getTitle(arguments: Bundle?): String { return TITLE } }
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/preference/PreferenceMainPageProvider.kt +2 −0 Original line number Diff line number Diff line Loading @@ -36,11 +36,13 @@ object PreferenceMainPageProvider : SettingsPageProvider { Category { PreferencePageProvider.Entry() ListPreferencePageProvider.Entry() CheckBoxPreferencePageProvider.Entry() } Category { SwitchPreferencePageProvider.Entry() MainSwitchPreferencePageProvider.Entry() TwoTargetSwitchPreferencePageProvider.Entry() TwoTargetButtonPreferencePageProvider.Entry() } Category { ZeroStatePreferencePageProvider.Entry() Loading
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/preference/TwoTargetButtonPreferencePageProvider.kt 0 → 100644 +80 −0 Original line number Diff line number Diff line /* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settingslib.spa.gallery.preference import android.os.Bundle import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Add import androidx.compose.material.icons.outlined.Info import androidx.compose.runtime.Composable import com.android.settingslib.spa.framework.common.SettingsPageProvider 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.preference.TwoTargetButtonPreference import com.android.settingslib.spa.widget.scaffold.RegularScaffold import com.android.settingslib.spa.widget.ui.Category private const val TITLE = "Sample TwoTargetButtonPreference" object TwoTargetButtonPreferencePageProvider : SettingsPageProvider { override val name = "TwoTargetButtonPreference" @Composable override fun Page(arguments: Bundle?) { RegularScaffold(TITLE) { Category { SampleTwoTargetButtonPreference() SampleTwoTargetButtonPreferenceWithSummary() } } } @Composable fun Entry() { Preference( object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) } ) } } @Composable private fun SampleTwoTargetButtonPreference() { TwoTargetButtonPreference( title = "TwoTargetButton", summary = { "" }, buttonIcon = Icons.Outlined.Info, buttonIconDescription = "info", onClick = {}, onButtonClick = {}, ) } @Composable private fun SampleTwoTargetButtonPreferenceWithSummary() { TwoTargetButtonPreference( title = "TwoTargetButton", summary = { "summary" }, buttonIcon = Icons.Outlined.Add, buttonIconDescription = "info", onClick = {}, onButtonClick = {}, ) }