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

Commit 3a4f6eb2 authored by Kelly Zhang's avatar Kelly Zhang Committed by Android (Google) Code Review
Browse files

Merge "Add build entries for SPA gallery pages."

parents f711f480 34823ffa
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
@@ -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
@@ -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()
+37 −10
Original line number Diff line number Diff line
@@ -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
@@ -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()
@@ -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.")
    }
}
+55 −26
Original line number Diff line number Diff line
@@ -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
@@ -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"
                    })
@@ -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"
                    })
@@ -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()
        }
    }
}

+14 −4
Original line number Diff line number Diff line
@@ -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
@@ -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()
@@ -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() }
    }
}

+82 −40
Original line number Diff line number Diff line
@@ -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
@@ -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
@@ -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) }
@@ -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