Loading packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/GallerySpaEnvironment.kt +8 −0 Original line number Diff line number Diff line Loading @@ -23,10 +23,14 @@ 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.dialog.AlertDialogPageProvider import com.android.settingslib.spa.gallery.editor.EditorMainPageProvider import com.android.settingslib.spa.gallery.editor.SettingsExposedDropdownMenuBoxPageProvider import com.android.settingslib.spa.gallery.editor.SettingsExposedDropdownMenuCheckBoxProvider import com.android.settingslib.spa.gallery.home.HomePageProvider import com.android.settingslib.spa.gallery.itemList.ItemListPageProvider import com.android.settingslib.spa.gallery.itemList.ItemOperatePageProvider import com.android.settingslib.spa.gallery.itemList.OperateListPageProvider import com.android.settingslib.spa.gallery.editor.SettingsOutlinedTextFieldPageProvider import com.android.settingslib.spa.gallery.page.ArgumentPageProvider import com.android.settingslib.spa.gallery.page.ChartPageProvider import com.android.settingslib.spa.gallery.page.FooterPageProvider Loading Loading @@ -84,6 +88,10 @@ class GallerySpaEnvironment(context: Context) : SpaEnvironment(context) { ItemListPageProvider, ItemOperatePageProvider, OperateListPageProvider, EditorMainPageProvider, SettingsOutlinedTextFieldPageProvider, SettingsExposedDropdownMenuBoxPageProvider, SettingsExposedDropdownMenuCheckBoxProvider, ), rootPages = listOf( HomePageProvider.createSettingsPage(), Loading packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/editor/EditorMainPageProvider.kt 0 → 100644 +58 −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.editor import android.os.Bundle import com.android.settingslib.spa.framework.common.SettingsEntry import com.android.settingslib.spa.framework.common.SettingsEntryBuilder 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.preference.Preference import com.android.settingslib.spa.widget.preference.PreferenceModel private const val TITLE = "Category: Editor" object EditorMainPageProvider : SettingsPageProvider { override val name = "EditorMain" private val owner = createSettingsPage() override fun buildEntry(arguments: Bundle?): List<SettingsEntry> { return listOf( SettingsOutlinedTextFieldPageProvider.buildInjectEntry().setLink(fromPage = owner) .build(), SettingsExposedDropdownMenuBoxPageProvider.buildInjectEntry().setLink(fromPage = owner) .build(), SettingsExposedDropdownMenuCheckBoxProvider.buildInjectEntry().setLink(fromPage = owner) .build(), ) } fun buildInjectEntry(): SettingsEntryBuilder { return SettingsEntryBuilder.createInject(owner = owner) .setUiLayoutFn { 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/editor/SettingsExposedDropdownMenuBoxPageProvider.kt 0 → 100644 +77 −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.editor import android.os.Bundle import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue 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.SettingsEntryBuilder 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.framework.theme.SettingsTheme import com.android.settingslib.spa.widget.editor.SettingsExposedDropdownMenuBox 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 SettingsExposedDropdownMenuBox" object SettingsExposedDropdownMenuBoxPageProvider : SettingsPageProvider { override val name = "SettingsExposedDropdownMenuBox" private const val exposedDropdownMenuBoxLabel = "ExposedDropdownMenuBoxLabel" override fun getTitle(arguments: Bundle?): String { return TITLE } @Composable override fun Page(arguments: Bundle?) { var selectedItem by remember { mutableStateOf("item1") } val options = listOf("item1", "item2", "item3") RegularScaffold(title = TITLE) { SettingsExposedDropdownMenuBox( label = exposedDropdownMenuBoxLabel, options = options, selectedOptionText = selectedItem, enabled = true, onselectedOptionTextChange = { selectedItem = it }) } } fun buildInjectEntry(): SettingsEntryBuilder { return SettingsEntryBuilder.createInject(owner = createSettingsPage()) .setUiLayoutFn { Preference(object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) }) } } } @Preview(showBackground = true) @Composable private fun SettingsExposedDropdownMenuBoxPagePreview() { SettingsTheme { SettingsExposedDropdownMenuBoxPageProvider.Page(null) } } packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/editor/SettingsExposedDropdownMenuCheckBoxProvider.kt 0 → 100644 +73 −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.editor import android.os.Bundle import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateListOf import androidx.compose.runtime.remember import androidx.compose.ui.tooling.preview.Preview import com.android.settingslib.spa.framework.common.SettingsEntryBuilder 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.framework.theme.SettingsTheme import com.android.settingslib.spa.widget.editor.SettingsExposedDropdownMenuCheckBox 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 SettingsExposedDropdownMenuCheckBox" object SettingsExposedDropdownMenuCheckBoxProvider : SettingsPageProvider { override val name = "SettingsExposedDropdownMenuCheckBox" private const val exposedDropdownMenuCheckBoxLabel = "ExposedDropdownMenuCheckBoxLabel" private val options = listOf("item1", "item2", "item3") private val selectedOptionsState1 = mutableStateListOf("item1", "item2") override fun getTitle(arguments: Bundle?): String { return TITLE } @Composable override fun Page(arguments: Bundle?) { RegularScaffold(title = TITLE) { SettingsExposedDropdownMenuCheckBox(label = exposedDropdownMenuCheckBoxLabel, options = options, selectedOptionsState = remember { selectedOptionsState1 }, enabled = true, onselectedOptionStateChange = {}) } } fun buildInjectEntry(): SettingsEntryBuilder { return SettingsEntryBuilder.createInject(owner = createSettingsPage()).setUiLayoutFn { Preference(object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) }) } } } @Preview(showBackground = true) @Composable private fun SettingsExposedDropdownMenuCheckBoxPagePreview() { SettingsTheme { SettingsExposedDropdownMenuCheckBoxProvider.Page(null) } } No newline at end of file packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/editor/SettingsOutlinedTextFieldPageProvider.kt 0 → 100644 +74 −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.editor import android.os.Bundle import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue 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.SettingsEntryBuilder 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.framework.theme.SettingsTheme import com.android.settingslib.spa.widget.editor.SettingsOutlinedTextField 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 SettingsOutlinedTextField" object SettingsOutlinedTextFieldPageProvider : SettingsPageProvider { override val name = "SettingsOutlinedTextField" override fun getTitle(arguments: Bundle?): String { return TITLE } @Composable override fun Page(arguments: Bundle?) { var value by remember { mutableStateOf("Enabled Value") } RegularScaffold(title = TITLE) { SettingsOutlinedTextField( value = value, label = "OutlinedTextField Enabled", enabled = true, onTextChange = {value = it}) } } fun buildInjectEntry(): SettingsEntryBuilder { return SettingsEntryBuilder.createInject(owner = createSettingsPage()) .setUiLayoutFn { Preference(object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) }) } } } @Preview(showBackground = true) @Composable private fun SettingsOutlinedTextFieldPagePreview() { SettingsTheme { SettingsOutlinedTextFieldPageProvider.Page(null) } } No newline at end of file Loading
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/GallerySpaEnvironment.kt +8 −0 Original line number Diff line number Diff line Loading @@ -23,10 +23,14 @@ 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.dialog.AlertDialogPageProvider import com.android.settingslib.spa.gallery.editor.EditorMainPageProvider import com.android.settingslib.spa.gallery.editor.SettingsExposedDropdownMenuBoxPageProvider import com.android.settingslib.spa.gallery.editor.SettingsExposedDropdownMenuCheckBoxProvider import com.android.settingslib.spa.gallery.home.HomePageProvider import com.android.settingslib.spa.gallery.itemList.ItemListPageProvider import com.android.settingslib.spa.gallery.itemList.ItemOperatePageProvider import com.android.settingslib.spa.gallery.itemList.OperateListPageProvider import com.android.settingslib.spa.gallery.editor.SettingsOutlinedTextFieldPageProvider import com.android.settingslib.spa.gallery.page.ArgumentPageProvider import com.android.settingslib.spa.gallery.page.ChartPageProvider import com.android.settingslib.spa.gallery.page.FooterPageProvider Loading Loading @@ -84,6 +88,10 @@ class GallerySpaEnvironment(context: Context) : SpaEnvironment(context) { ItemListPageProvider, ItemOperatePageProvider, OperateListPageProvider, EditorMainPageProvider, SettingsOutlinedTextFieldPageProvider, SettingsExposedDropdownMenuBoxPageProvider, SettingsExposedDropdownMenuCheckBoxProvider, ), rootPages = listOf( HomePageProvider.createSettingsPage(), Loading
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/editor/EditorMainPageProvider.kt 0 → 100644 +58 −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.editor import android.os.Bundle import com.android.settingslib.spa.framework.common.SettingsEntry import com.android.settingslib.spa.framework.common.SettingsEntryBuilder 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.preference.Preference import com.android.settingslib.spa.widget.preference.PreferenceModel private const val TITLE = "Category: Editor" object EditorMainPageProvider : SettingsPageProvider { override val name = "EditorMain" private val owner = createSettingsPage() override fun buildEntry(arguments: Bundle?): List<SettingsEntry> { return listOf( SettingsOutlinedTextFieldPageProvider.buildInjectEntry().setLink(fromPage = owner) .build(), SettingsExposedDropdownMenuBoxPageProvider.buildInjectEntry().setLink(fromPage = owner) .build(), SettingsExposedDropdownMenuCheckBoxProvider.buildInjectEntry().setLink(fromPage = owner) .build(), ) } fun buildInjectEntry(): SettingsEntryBuilder { return SettingsEntryBuilder.createInject(owner = owner) .setUiLayoutFn { 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/editor/SettingsExposedDropdownMenuBoxPageProvider.kt 0 → 100644 +77 −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.editor import android.os.Bundle import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue 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.SettingsEntryBuilder 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.framework.theme.SettingsTheme import com.android.settingslib.spa.widget.editor.SettingsExposedDropdownMenuBox 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 SettingsExposedDropdownMenuBox" object SettingsExposedDropdownMenuBoxPageProvider : SettingsPageProvider { override val name = "SettingsExposedDropdownMenuBox" private const val exposedDropdownMenuBoxLabel = "ExposedDropdownMenuBoxLabel" override fun getTitle(arguments: Bundle?): String { return TITLE } @Composable override fun Page(arguments: Bundle?) { var selectedItem by remember { mutableStateOf("item1") } val options = listOf("item1", "item2", "item3") RegularScaffold(title = TITLE) { SettingsExposedDropdownMenuBox( label = exposedDropdownMenuBoxLabel, options = options, selectedOptionText = selectedItem, enabled = true, onselectedOptionTextChange = { selectedItem = it }) } } fun buildInjectEntry(): SettingsEntryBuilder { return SettingsEntryBuilder.createInject(owner = createSettingsPage()) .setUiLayoutFn { Preference(object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) }) } } } @Preview(showBackground = true) @Composable private fun SettingsExposedDropdownMenuBoxPagePreview() { SettingsTheme { SettingsExposedDropdownMenuBoxPageProvider.Page(null) } }
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/editor/SettingsExposedDropdownMenuCheckBoxProvider.kt 0 → 100644 +73 −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.editor import android.os.Bundle import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateListOf import androidx.compose.runtime.remember import androidx.compose.ui.tooling.preview.Preview import com.android.settingslib.spa.framework.common.SettingsEntryBuilder 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.framework.theme.SettingsTheme import com.android.settingslib.spa.widget.editor.SettingsExposedDropdownMenuCheckBox 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 SettingsExposedDropdownMenuCheckBox" object SettingsExposedDropdownMenuCheckBoxProvider : SettingsPageProvider { override val name = "SettingsExposedDropdownMenuCheckBox" private const val exposedDropdownMenuCheckBoxLabel = "ExposedDropdownMenuCheckBoxLabel" private val options = listOf("item1", "item2", "item3") private val selectedOptionsState1 = mutableStateListOf("item1", "item2") override fun getTitle(arguments: Bundle?): String { return TITLE } @Composable override fun Page(arguments: Bundle?) { RegularScaffold(title = TITLE) { SettingsExposedDropdownMenuCheckBox(label = exposedDropdownMenuCheckBoxLabel, options = options, selectedOptionsState = remember { selectedOptionsState1 }, enabled = true, onselectedOptionStateChange = {}) } } fun buildInjectEntry(): SettingsEntryBuilder { return SettingsEntryBuilder.createInject(owner = createSettingsPage()).setUiLayoutFn { Preference(object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) }) } } } @Preview(showBackground = true) @Composable private fun SettingsExposedDropdownMenuCheckBoxPagePreview() { SettingsTheme { SettingsExposedDropdownMenuCheckBoxProvider.Page(null) } } No newline at end of file
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/editor/SettingsOutlinedTextFieldPageProvider.kt 0 → 100644 +74 −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.editor import android.os.Bundle import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue 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.SettingsEntryBuilder 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.framework.theme.SettingsTheme import com.android.settingslib.spa.widget.editor.SettingsOutlinedTextField 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 SettingsOutlinedTextField" object SettingsOutlinedTextFieldPageProvider : SettingsPageProvider { override val name = "SettingsOutlinedTextField" override fun getTitle(arguments: Bundle?): String { return TITLE } @Composable override fun Page(arguments: Bundle?) { var value by remember { mutableStateOf("Enabled Value") } RegularScaffold(title = TITLE) { SettingsOutlinedTextField( value = value, label = "OutlinedTextField Enabled", enabled = true, onTextChange = {value = it}) } } fun buildInjectEntry(): SettingsEntryBuilder { return SettingsEntryBuilder.createInject(owner = createSettingsPage()) .setUiLayoutFn { Preference(object : PreferenceModel { override val title = TITLE override val onClick = navigator(name) }) } } } @Preview(showBackground = true) @Composable private fun SettingsOutlinedTextFieldPagePreview() { SettingsTheme { SettingsOutlinedTextFieldPageProvider.Page(null) } } No newline at end of file