Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 568155ad authored by Chaohui Wang's avatar Chaohui Wang Committed by Android (Google) Code Review
Browse files

Merge "[Spa] Make Gallery more Expressive" into main

parents 00870dc1 da5745db
Loading
Loading
Loading
Loading
+18 −22
Original line number Original line Diff line number Diff line
@@ -18,41 +18,37 @@ package com.android.settingslib.spa.gallery.editor


import android.os.Bundle
import android.os.Bundle
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Composable
import com.android.settingslib.spa.framework.common.SettingsEntry
import com.android.settingslib.spa.framework.common.SettingsPageProvider
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.compose.navigator
import com.android.settingslib.spa.widget.preference.Preference
import com.android.settingslib.spa.widget.preference.Preference
import com.android.settingslib.spa.widget.preference.PreferenceModel
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: Editor"
private const val TITLE = "Category: Editor"


object EditorMainPageProvider : SettingsPageProvider {
object EditorMainPageProvider : SettingsPageProvider {
    override val name = "EditorMain"
    override val name = "EditorMain"
    private val owner = createSettingsPage()

    override fun buildEntry(arguments: Bundle?): List<SettingsEntry> {
        return listOf(
            SettingsOutlinedTextFieldPageProvider.buildInjectEntry().setLink(fromPage = owner)
                .build(),
            SettingsDropdownBoxPageProvider.buildInjectEntry().setLink(fromPage = owner)
                .build(),
            SettingsDropdownCheckBoxProvider.buildInjectEntry().setLink(fromPage = owner)
                .build(),
            SettingsTextFieldPasswordPageProvider.buildInjectEntry().setLink(fromPage = owner)
                .build(),
        )
    }


    @Composable
    @Composable
    fun Entry() {
    fun Entry() {
        Preference(object : PreferenceModel {
        Preference(
            object : PreferenceModel {
                override val title = TITLE
                override val title = TITLE
                override val onClick = navigator(name)
                override val onClick = navigator(name)
        })
            }
        )
    }
    }


    override fun getTitle(arguments: Bundle?): String {
    @Composable
        return TITLE
    override fun Page(arguments: Bundle?) {
        RegularScaffold(TITLE) {
            Category {
                SettingsOutlinedTextFieldPageProvider.Entry()
                SettingsDropdownBoxPageProvider.Entry()
                SettingsDropdownCheckBoxProvider.Entry()
                SettingsTextFieldPasswordPageProvider.Entry()
            }
        }
    }
    }
}
}
+17 −19
Original line number Original line Diff line number Diff line
@@ -23,9 +23,7 @@ import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.runtime.setValue
import androidx.compose.ui.tooling.preview.Preview
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.SettingsPageProvider
import com.android.settingslib.spa.framework.common.createSettingsPage
import com.android.settingslib.spa.framework.compose.navigator
import com.android.settingslib.spa.framework.compose.navigator
import com.android.settingslib.spa.framework.theme.SettingsTheme
import com.android.settingslib.spa.framework.theme.SettingsTheme
import com.android.settingslib.spa.widget.editor.SettingsDropdownBox
import com.android.settingslib.spa.widget.editor.SettingsDropdownBox
@@ -38,10 +36,6 @@ private const val TITLE = "Sample SettingsDropdownBox"
object SettingsDropdownBoxPageProvider : SettingsPageProvider {
object SettingsDropdownBoxPageProvider : SettingsPageProvider {
    override val name = "SettingsDropdownBox"
    override val name = "SettingsDropdownBox"


    override fun getTitle(arguments: Bundle?): String {
        return TITLE
    }

    @Composable
    @Composable
    override fun Page(arguments: Bundle?) {
    override fun Page(arguments: Bundle?) {
        RegularScaffold(title = TITLE) {
        RegularScaffold(title = TITLE) {
@@ -58,7 +52,9 @@ object SettingsDropdownBoxPageProvider : SettingsPageProvider {
            label = "SettingsDropdownBox",
            label = "SettingsDropdownBox",
            options = listOf("item1", "item2", "item3"),
            options = listOf("item1", "item2", "item3"),
            selectedOptionIndex = selectedItem,
            selectedOptionIndex = selectedItem,
        ) { selectedItem = it }
        ) {
            selectedItem = it
        }
    }
    }


    @Composable
    @Composable
@@ -69,7 +65,9 @@ object SettingsDropdownBoxPageProvider : SettingsPageProvider {
            options = listOf("item1", "item2", "item3"),
            options = listOf("item1", "item2", "item3"),
            enabled = false,
            enabled = false,
            selectedOptionIndex = selectedItem,
            selectedOptionIndex = selectedItem,
        ) { selectedItem = it }
        ) {
            selectedItem = it
        }
    }
    }


    @Composable
    @Composable
@@ -79,24 +77,24 @@ object SettingsDropdownBoxPageProvider : SettingsPageProvider {
            label = "Empty",
            label = "Empty",
            options = emptyList(),
            options = emptyList(),
            selectedOptionIndex = selectedItem,
            selectedOptionIndex = selectedItem,
        ) { selectedItem = it }
        ) {
            selectedItem = it
        }
    }
    }


    fun buildInjectEntry(): SettingsEntryBuilder {
    @Composable
        return SettingsEntryBuilder.createInject(owner = createSettingsPage())
    fun Entry() {
            .setUiLayoutFn {
        Preference(
                Preference(object : PreferenceModel {
            object : PreferenceModel {
                override val title = TITLE
                override val title = TITLE
                override val onClick = navigator(name)
                override val onClick = navigator(name)
                })
            }
            }
        )
    }
    }
}
}


@Preview(showBackground = true)
@Preview(showBackground = true)
@Composable
@Composable
private fun SettingsDropdownBoxPagePreview() {
private fun SettingsDropdownBoxPagePreview() {
    SettingsTheme {
    SettingsTheme { SettingsDropdownBoxPageProvider.Page(null) }
        SettingsDropdownBoxPageProvider.Page(null)
    }
}
}
+63 −65
Original line number Original line Diff line number Diff line
@@ -21,9 +21,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.remember
import androidx.compose.ui.tooling.preview.Preview
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.SettingsPageProvider
import com.android.settingslib.spa.framework.common.createSettingsPage
import com.android.settingslib.spa.framework.compose.navigator
import com.android.settingslib.spa.framework.compose.navigator
import com.android.settingslib.spa.framework.theme.SettingsTheme
import com.android.settingslib.spa.framework.theme.SettingsTheme
import com.android.settingslib.spa.widget.editor.SettingsDropdownCheckBox
import com.android.settingslib.spa.widget.editor.SettingsDropdownCheckBox
@@ -37,16 +35,13 @@ private const val TITLE = "Sample SettingsDropdownCheckBox"
object SettingsDropdownCheckBoxProvider : SettingsPageProvider {
object SettingsDropdownCheckBoxProvider : SettingsPageProvider {
    override val name = "SettingsDropdownCheckBox"
    override val name = "SettingsDropdownCheckBox"


    override fun getTitle(arguments: Bundle?): String {
        return TITLE
    }

    @Composable
    @Composable
    override fun Page(arguments: Bundle?) {
    override fun Page(arguments: Bundle?) {
        RegularScaffold(title = TITLE) {
        RegularScaffold(title = TITLE) {
            SettingsDropdownCheckBox(
            SettingsDropdownCheckBox(
                label = "SettingsDropdownCheckBox",
                label = "SettingsDropdownCheckBox",
                options = remember {
                options =
                    remember {
                        listOf(
                        listOf(
                            SettingsDropdownCheckOption("Item 1"),
                            SettingsDropdownCheckOption("Item 1"),
                            SettingsDropdownCheckOption("Item 2"),
                            SettingsDropdownCheckOption("Item 2"),
@@ -54,13 +49,11 @@ object SettingsDropdownCheckBoxProvider : SettingsPageProvider {
                        )
                        )
                    },
                    },
            )
            )
            SettingsDropdownCheckBox(
            SettingsDropdownCheckBox(label = "Empty list", options = emptyList())
                label = "Empty list",
                options = emptyList(),
            )
            SettingsDropdownCheckBox(
            SettingsDropdownCheckBox(
                label = "Disabled",
                label = "Disabled",
                options = remember {
                options =
                    remember {
                        listOf(
                        listOf(
                            SettingsDropdownCheckOption("Item 1", selected = mutableStateOf(true)),
                            SettingsDropdownCheckOption("Item 1", selected = mutableStateOf(true)),
                            SettingsDropdownCheckOption("Item 2"),
                            SettingsDropdownCheckOption("Item 2"),
@@ -71,7 +64,8 @@ object SettingsDropdownCheckBoxProvider : SettingsPageProvider {
            )
            )
            SettingsDropdownCheckBox(
            SettingsDropdownCheckBox(
                label = "With disabled item",
                label = "With disabled item",
                options = remember {
                options =
                    remember {
                        listOf(
                        listOf(
                            SettingsDropdownCheckOption("Enabled item 1"),
                            SettingsDropdownCheckOption("Enabled item 1"),
                            SettingsDropdownCheckOption("Enabled item 2"),
                            SettingsDropdownCheckOption("Enabled item 2"),
@@ -86,7 +80,8 @@ object SettingsDropdownCheckBoxProvider : SettingsPageProvider {
            )
            )
            SettingsDropdownCheckBox(
            SettingsDropdownCheckBox(
                label = "With select all",
                label = "With select all",
                options = remember {
                options =
                    remember {
                        listOf(
                        listOf(
                            SettingsDropdownCheckOption("All", isSelectAll = true),
                            SettingsDropdownCheckOption("All", isSelectAll = true),
                            SettingsDropdownCheckOption("Item 1"),
                            SettingsDropdownCheckOption("Item 1"),
@@ -100,7 +95,11 @@ object SettingsDropdownCheckBoxProvider : SettingsPageProvider {
                options =
                options =
                    remember {
                    remember {
                        listOf(
                        listOf(
                        SettingsDropdownCheckOption("All", isSelectAll = true, changeable = false),
                            SettingsDropdownCheckOption(
                                "All",
                                isSelectAll = true,
                                changeable = false,
                            ),
                            SettingsDropdownCheckOption("Enabled item 1"),
                            SettingsDropdownCheckOption("Enabled item 1"),
                            SettingsDropdownCheckOption("Enabled item 2"),
                            SettingsDropdownCheckOption("Enabled item 2"),
                            SettingsDropdownCheckOption(
                            SettingsDropdownCheckOption(
@@ -115,20 +114,19 @@ object SettingsDropdownCheckBoxProvider : SettingsPageProvider {
        }
        }
    }
    }


    fun buildInjectEntry(): SettingsEntryBuilder {
    @Composable
        return SettingsEntryBuilder.createInject(owner = createSettingsPage()).setUiLayoutFn {
    fun Entry() {
            Preference(object : PreferenceModel {
        Preference(
            object : PreferenceModel {
                override val title = TITLE
                override val title = TITLE
                override val onClick = navigator(name)
                override val onClick = navigator(name)
            })
            }
            }
        )
    }
    }
}
}


@Preview(showBackground = true)
@Preview(showBackground = true)
@Composable
@Composable
private fun SettingsDropdownCheckBoxPagePreview() {
private fun SettingsDropdownCheckBoxPagePreview() {
    SettingsTheme {
    SettingsTheme { SettingsDropdownCheckBoxProvider.Page(null) }
        SettingsDropdownCheckBoxProvider.Page(null)
    }
}
}
+11 −18
Original line number Original line Diff line number Diff line
@@ -23,9 +23,7 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.runtime.setValue
import androidx.compose.ui.tooling.preview.Preview
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.SettingsPageProvider
import com.android.settingslib.spa.framework.common.createSettingsPage
import com.android.settingslib.spa.framework.compose.navigator
import com.android.settingslib.spa.framework.compose.navigator
import com.android.settingslib.spa.framework.theme.SettingsTheme
import com.android.settingslib.spa.framework.theme.SettingsTheme
import com.android.settingslib.spa.widget.editor.SettingsOutlinedTextField
import com.android.settingslib.spa.widget.editor.SettingsOutlinedTextField
@@ -38,10 +36,6 @@ private const val TITLE = "Sample SettingsOutlinedTextField"
object SettingsOutlinedTextFieldPageProvider : SettingsPageProvider {
object SettingsOutlinedTextFieldPageProvider : SettingsPageProvider {
    override val name = "SettingsOutlinedTextField"
    override val name = "SettingsOutlinedTextField"


    override fun getTitle(arguments: Bundle?): String {
        return TITLE
    }

    @Composable
    @Composable
    override fun Page(arguments: Bundle?) {
    override fun Page(arguments: Bundle?) {
        var value by remember { mutableStateOf("Enabled Value") }
        var value by remember { mutableStateOf("Enabled Value") }
@@ -50,25 +44,24 @@ object SettingsOutlinedTextFieldPageProvider : SettingsPageProvider {
                value = value,
                value = value,
                label = "OutlinedTextField Enabled",
                label = "OutlinedTextField Enabled",
                enabled = true,
                enabled = true,
                onTextChange = {value = it})
                onTextChange = { value = it },
            )
        }
        }
    }
    }


    fun buildInjectEntry(): SettingsEntryBuilder {
    @Composable
        return SettingsEntryBuilder.createInject(owner = createSettingsPage())
    fun Entry() {
            .setUiLayoutFn {
        Preference(
                Preference(object : PreferenceModel {
            object : PreferenceModel {
                override val title = TITLE
                override val title = TITLE
                override val onClick = navigator(name)
                override val onClick = navigator(name)
                })
            }
            }
        )
    }
    }
}
}


@Preview(showBackground = true)
@Preview(showBackground = true)
@Composable
@Composable
private fun SettingsOutlinedTextFieldPagePreview() {
private fun SettingsOutlinedTextFieldPagePreview() {
    SettingsTheme {
    SettingsTheme { SettingsOutlinedTextFieldPageProvider.Page(null) }
        SettingsOutlinedTextFieldPageProvider.Page(null)
    }
}
}
+10 −21
Original line number Original line Diff line number Diff line
@@ -23,9 +23,7 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.runtime.setValue
import androidx.compose.ui.tooling.preview.Preview
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.SettingsPageProvider
import com.android.settingslib.spa.framework.common.createSettingsPage
import com.android.settingslib.spa.framework.compose.navigator
import com.android.settingslib.spa.framework.compose.navigator
import com.android.settingslib.spa.framework.theme.SettingsTheme
import com.android.settingslib.spa.framework.theme.SettingsTheme
import com.android.settingslib.spa.widget.editor.SettingsTextFieldPassword
import com.android.settingslib.spa.widget.editor.SettingsTextFieldPassword
@@ -38,36 +36,27 @@ private const val TITLE = "Sample SettingsTextFieldPassword"
object SettingsTextFieldPasswordPageProvider : SettingsPageProvider {
object SettingsTextFieldPasswordPageProvider : SettingsPageProvider {
    override val name = "SettingsTextFieldPassword"
    override val name = "SettingsTextFieldPassword"


    override fun getTitle(arguments: Bundle?): String {
        return TITLE
    }

    @Composable
    @Composable
    override fun Page(arguments: Bundle?) {
    override fun Page(arguments: Bundle?) {
        var value by remember { mutableStateOf("value") }
        var value by remember { mutableStateOf("value") }
        RegularScaffold(title = TITLE) {
        RegularScaffold(title = TITLE) {
            SettingsTextFieldPassword(
            SettingsTextFieldPassword(value = value, label = "label", onTextChange = { value = it })
                value = value,
                label = "label",
                onTextChange = { value = it })
        }
        }
    }
    }


    fun buildInjectEntry(): SettingsEntryBuilder {
    @Composable
        return SettingsEntryBuilder.createInject(owner = createSettingsPage())
    fun Entry() {
            .setUiLayoutFn {
        Preference(
                Preference(object : PreferenceModel {
            object : PreferenceModel {
                override val title = TITLE
                override val title = TITLE
                override val onClick = navigator(name)
                override val onClick = navigator(name)
                })
            }
            }
        )
    }
    }
}
}


@Preview(showBackground = true)
@Preview(showBackground = true)
@Composable
@Composable
private fun SettingsTextFieldPasswordPagePreview() {
private fun SettingsTextFieldPasswordPagePreview() {
    SettingsTheme {
    SettingsTheme { SettingsTextFieldPasswordPageProvider.Page(null) }
        SettingsTextFieldPasswordPageProvider.Page(null)
    }
}
}
Loading