Loading packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/GallerySpaEnvironment.kt +51 −47 Original line number Diff line number Diff line Loading @@ -21,8 +21,8 @@ import com.android.settingslib.spa.debug.DebugLogger import com.android.settingslib.spa.framework.common.SettingsPageProviderRepository import com.android.settingslib.spa.framework.common.SpaEnvironment import com.android.settingslib.spa.framework.common.createSettingsPage import com.android.settingslib.spa.gallery.button.ActionButtonPageProvider import com.android.settingslib.spa.gallery.banner.BannerPageProvider import com.android.settingslib.spa.gallery.button.ActionButtonPageProvider import com.android.settingslib.spa.gallery.card.CardPageProvider import com.android.settingslib.spa.gallery.chart.ChartPageProvider import com.android.settingslib.spa.gallery.dialog.DialogMainPageProvider Loading @@ -30,15 +30,14 @@ import com.android.settingslib.spa.gallery.dialog.NavDialogProvider import com.android.settingslib.spa.gallery.editor.EditorMainPageProvider import com.android.settingslib.spa.gallery.editor.SettingsDropdownBoxPageProvider import com.android.settingslib.spa.gallery.editor.SettingsDropdownCheckBoxProvider import com.android.settingslib.spa.gallery.home.HomePageProvider import com.android.settingslib.spa.gallery.editor.SettingsOutlinedTextFieldPageProvider import com.android.settingslib.spa.gallery.editor.SettingsTextFieldPasswordPageProvider import com.android.settingslib.spa.gallery.home.HomePageProvider import com.android.settingslib.spa.gallery.page.ArgumentPageProvider import com.android.settingslib.spa.gallery.page.FooterPageProvider import com.android.settingslib.spa.gallery.page.IllustrationPageProvider 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 Loading @@ -51,12 +50,15 @@ import com.android.settingslib.spa.gallery.preference.TopIntroPreferencePageProv 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.restricted.GalleryRestrictedRepository import com.android.settingslib.spa.gallery.restricted.RestrictedSwitchPreferencePageProvider import com.android.settingslib.spa.gallery.scaffold.GlifScaffoldPageProvider import com.android.settingslib.spa.gallery.scaffold.NonScrollablePagerPageProvider import com.android.settingslib.spa.gallery.scaffold.PagerMainPageProvider import com.android.settingslib.spa.gallery.scaffold.ScrollablePagerPageProvider import com.android.settingslib.spa.gallery.scaffold.SearchScaffoldPageProvider import com.android.settingslib.spa.gallery.scaffold.GlifScaffoldPageProvider import com.android.settingslib.spa.gallery.ui.CategoryPageProvider import com.android.settingslib.spa.gallery.ui.CopyablePageProvider import com.android.settingslib.spa.gallery.scaffold.ScrollablePagerPageProvider import com.android.settingslib.spa.gallery.ui.SpinnerPageProvider /** Loading @@ -73,7 +75,8 @@ enum class SettingsPageProviderEnum(val displayName: String) { class GallerySpaEnvironment(context: Context) : SpaEnvironment(context) { override val pageProviderRepository = lazy { SettingsPageProviderRepository( allPageProviders = listOf( allPageProviders = listOf( HomePageProvider, PreferenceMainPageProvider, PreferencePageProvider, Loading Loading @@ -111,10 +114,9 @@ class GallerySpaEnvironment(context: Context) : SpaEnvironment(context) { CheckBoxPreferencePageProvider, TwoTargetButtonPreferencePageProvider, CardPageProvider, RestrictedSwitchPreferencePageProvider, ), rootPages = listOf( HomePageProvider.createSettingsPage(), ) rootPages = listOf(HomePageProvider.createSettingsPage()), ) } Loading @@ -126,4 +128,6 @@ class GallerySpaEnvironment(context: Context) : SpaEnvironment(context) { override val searchProviderAuthorities = "com.android.spa.gallery.search.provider" override val isSpaExpressiveEnabled = true override fun getRestrictedRepository(context: Context) = GalleryRestrictedRepository(context) } packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/home/HomePageProvider.kt +2 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import com.android.settingslib.spa.gallery.page.LoadingBarPageProvider import com.android.settingslib.spa.gallery.page.ProgressBarPageProvider import com.android.settingslib.spa.gallery.page.SliderPageProvider import com.android.settingslib.spa.gallery.preference.PreferenceMainPageProvider import com.android.settingslib.spa.gallery.restricted.RestrictedSwitchPreferencePageProvider import com.android.settingslib.spa.gallery.scaffold.PagerMainPageProvider import com.android.settingslib.spa.gallery.scaffold.SearchScaffoldPageProvider import com.android.settingslib.spa.gallery.scaffold.GlifScaffoldPageProvider Loading @@ -61,6 +62,7 @@ object HomePageProvider : SettingsPageProvider { HomeScaffold(title) { Category { PreferenceMainPageProvider.Entry() RestrictedSwitchPreferencePageProvider.Entry() } Category { SearchScaffoldPageProvider.Entry() Loading packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/restricted/GalleryRestrictedRepository.kt 0 → 100644 +38 −0 Original line number Diff line number Diff line /* * Copyright (C) 2025 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.restricted import android.content.Context import android.content.Intent import com.android.settingslib.spa.restricted.BlockedWithDetails import com.android.settingslib.spa.restricted.NoRestricted import com.android.settingslib.spa.restricted.RestrictedMode import com.android.settingslib.spa.restricted.RestrictedRepository import com.android.settingslib.spa.restricted.Restrictions class GalleryRestrictedRepository(private val context: Context) : RestrictedRepository { override fun getRestrictedMode(restrictions: Restrictions): RestrictedMode { check(restrictions is GalleryRestrictions) if (restrictions.isRestricted) return object : BlockedWithDetails { override fun showDetails() { context.startActivity(Intent("android.settings.SHOW_ADMIN_SUPPORT_DETAILS")) } } return NoRestricted } } packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/restricted/GalleryRestrictions.kt 0 → 100644 +23 −0 Original line number Diff line number Diff line /* * Copyright (C) 2025 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.restricted import com.android.settingslib.spa.restricted.Restrictions data class GalleryRestrictions(val isRestricted: Boolean) : Restrictions { override fun isEmpty() = !isRestricted } packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/restricted/RestrictedSwitchPreferencePageProvider.kt 0 → 100644 +67 −0 Original line number Diff line number Diff line /* * Copyright (C) 2025 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.restricted import android.os.Bundle 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.restricted.RestrictedSwitchPreference 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 import com.android.settingslib.spa.widget.ui.Category private const val TITLE = "Sample RestrictedSwitchPreference" object RestrictedSwitchPreferencePageProvider : SettingsPageProvider { override val name = "RestrictedSwitchPreference" @Composable override fun Page(arguments: Bundle?) { RegularScaffold(TITLE) { Category { SampleRestrictedSwitchPreference() } } } @Composable fun Entry() { Preference( object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) } ) } } @Composable private fun SampleRestrictedSwitchPreference() { var checked by rememberSaveable { mutableStateOf(false) } RestrictedSwitchPreference( model = object : SwitchPreferenceModel { override val title = "RestrictedSwitchPreference" override val checked = { checked } override val onCheckedChange = { newChecked: Boolean -> checked = newChecked } }, restrictions = GalleryRestrictions(isRestricted = true), ) } Loading
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/GallerySpaEnvironment.kt +51 −47 Original line number Diff line number Diff line Loading @@ -21,8 +21,8 @@ import com.android.settingslib.spa.debug.DebugLogger import com.android.settingslib.spa.framework.common.SettingsPageProviderRepository import com.android.settingslib.spa.framework.common.SpaEnvironment import com.android.settingslib.spa.framework.common.createSettingsPage import com.android.settingslib.spa.gallery.button.ActionButtonPageProvider import com.android.settingslib.spa.gallery.banner.BannerPageProvider import com.android.settingslib.spa.gallery.button.ActionButtonPageProvider import com.android.settingslib.spa.gallery.card.CardPageProvider import com.android.settingslib.spa.gallery.chart.ChartPageProvider import com.android.settingslib.spa.gallery.dialog.DialogMainPageProvider Loading @@ -30,15 +30,14 @@ import com.android.settingslib.spa.gallery.dialog.NavDialogProvider import com.android.settingslib.spa.gallery.editor.EditorMainPageProvider import com.android.settingslib.spa.gallery.editor.SettingsDropdownBoxPageProvider import com.android.settingslib.spa.gallery.editor.SettingsDropdownCheckBoxProvider import com.android.settingslib.spa.gallery.home.HomePageProvider import com.android.settingslib.spa.gallery.editor.SettingsOutlinedTextFieldPageProvider import com.android.settingslib.spa.gallery.editor.SettingsTextFieldPasswordPageProvider import com.android.settingslib.spa.gallery.home.HomePageProvider import com.android.settingslib.spa.gallery.page.ArgumentPageProvider import com.android.settingslib.spa.gallery.page.FooterPageProvider import com.android.settingslib.spa.gallery.page.IllustrationPageProvider 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 Loading @@ -51,12 +50,15 @@ import com.android.settingslib.spa.gallery.preference.TopIntroPreferencePageProv 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.restricted.GalleryRestrictedRepository import com.android.settingslib.spa.gallery.restricted.RestrictedSwitchPreferencePageProvider import com.android.settingslib.spa.gallery.scaffold.GlifScaffoldPageProvider import com.android.settingslib.spa.gallery.scaffold.NonScrollablePagerPageProvider import com.android.settingslib.spa.gallery.scaffold.PagerMainPageProvider import com.android.settingslib.spa.gallery.scaffold.ScrollablePagerPageProvider import com.android.settingslib.spa.gallery.scaffold.SearchScaffoldPageProvider import com.android.settingslib.spa.gallery.scaffold.GlifScaffoldPageProvider import com.android.settingslib.spa.gallery.ui.CategoryPageProvider import com.android.settingslib.spa.gallery.ui.CopyablePageProvider import com.android.settingslib.spa.gallery.scaffold.ScrollablePagerPageProvider import com.android.settingslib.spa.gallery.ui.SpinnerPageProvider /** Loading @@ -73,7 +75,8 @@ enum class SettingsPageProviderEnum(val displayName: String) { class GallerySpaEnvironment(context: Context) : SpaEnvironment(context) { override val pageProviderRepository = lazy { SettingsPageProviderRepository( allPageProviders = listOf( allPageProviders = listOf( HomePageProvider, PreferenceMainPageProvider, PreferencePageProvider, Loading Loading @@ -111,10 +114,9 @@ class GallerySpaEnvironment(context: Context) : SpaEnvironment(context) { CheckBoxPreferencePageProvider, TwoTargetButtonPreferencePageProvider, CardPageProvider, RestrictedSwitchPreferencePageProvider, ), rootPages = listOf( HomePageProvider.createSettingsPage(), ) rootPages = listOf(HomePageProvider.createSettingsPage()), ) } Loading @@ -126,4 +128,6 @@ class GallerySpaEnvironment(context: Context) : SpaEnvironment(context) { override val searchProviderAuthorities = "com.android.spa.gallery.search.provider" override val isSpaExpressiveEnabled = true override fun getRestrictedRepository(context: Context) = GalleryRestrictedRepository(context) }
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/home/HomePageProvider.kt +2 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import com.android.settingslib.spa.gallery.page.LoadingBarPageProvider import com.android.settingslib.spa.gallery.page.ProgressBarPageProvider import com.android.settingslib.spa.gallery.page.SliderPageProvider import com.android.settingslib.spa.gallery.preference.PreferenceMainPageProvider import com.android.settingslib.spa.gallery.restricted.RestrictedSwitchPreferencePageProvider import com.android.settingslib.spa.gallery.scaffold.PagerMainPageProvider import com.android.settingslib.spa.gallery.scaffold.SearchScaffoldPageProvider import com.android.settingslib.spa.gallery.scaffold.GlifScaffoldPageProvider Loading @@ -61,6 +62,7 @@ object HomePageProvider : SettingsPageProvider { HomeScaffold(title) { Category { PreferenceMainPageProvider.Entry() RestrictedSwitchPreferencePageProvider.Entry() } Category { SearchScaffoldPageProvider.Entry() Loading
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/restricted/GalleryRestrictedRepository.kt 0 → 100644 +38 −0 Original line number Diff line number Diff line /* * Copyright (C) 2025 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.restricted import android.content.Context import android.content.Intent import com.android.settingslib.spa.restricted.BlockedWithDetails import com.android.settingslib.spa.restricted.NoRestricted import com.android.settingslib.spa.restricted.RestrictedMode import com.android.settingslib.spa.restricted.RestrictedRepository import com.android.settingslib.spa.restricted.Restrictions class GalleryRestrictedRepository(private val context: Context) : RestrictedRepository { override fun getRestrictedMode(restrictions: Restrictions): RestrictedMode { check(restrictions is GalleryRestrictions) if (restrictions.isRestricted) return object : BlockedWithDetails { override fun showDetails() { context.startActivity(Intent("android.settings.SHOW_ADMIN_SUPPORT_DETAILS")) } } return NoRestricted } }
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/restricted/GalleryRestrictions.kt 0 → 100644 +23 −0 Original line number Diff line number Diff line /* * Copyright (C) 2025 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.restricted import com.android.settingslib.spa.restricted.Restrictions data class GalleryRestrictions(val isRestricted: Boolean) : Restrictions { override fun isEmpty() = !isRestricted }
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/restricted/RestrictedSwitchPreferencePageProvider.kt 0 → 100644 +67 −0 Original line number Diff line number Diff line /* * Copyright (C) 2025 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.restricted import android.os.Bundle 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.restricted.RestrictedSwitchPreference 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 import com.android.settingslib.spa.widget.ui.Category private const val TITLE = "Sample RestrictedSwitchPreference" object RestrictedSwitchPreferencePageProvider : SettingsPageProvider { override val name = "RestrictedSwitchPreference" @Composable override fun Page(arguments: Bundle?) { RegularScaffold(TITLE) { Category { SampleRestrictedSwitchPreference() } } } @Composable fun Entry() { Preference( object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) } ) } } @Composable private fun SampleRestrictedSwitchPreference() { var checked by rememberSaveable { mutableStateOf(false) } RestrictedSwitchPreference( model = object : SwitchPreferenceModel { override val title = "RestrictedSwitchPreference" override val checked = { checked } override val onCheckedChange = { newChecked: Boolean -> checked = newChecked } }, restrictions = GalleryRestrictions(isRestricted = true), ) }