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

Commit a81a2248 authored by Zekan Qian's avatar Zekan Qian
Browse files

Add function to create SettingsPage from Spp.

With this function, we can get build SettingsPage in browse activity,
and log page event with its pageId.

Bug: 244122804
Test: manual - build Gallery
Change-Id: Ib11ec0b50fa60088f75efc6f0448f4a07ca47b59
parent 7067883f
Loading
Loading
Loading
Loading
+2 −17
Original line number Diff line number Diff line
@@ -16,11 +16,9 @@

package com.android.settingslib.spa.gallery

import android.os.Bundle
import androidx.navigation.NamedNavArgument
import com.android.settingslib.spa.framework.common.SettingsPage
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.home.HomePageProvider
import com.android.settingslib.spa.gallery.page.ArgumentPageProvider
@@ -49,19 +47,6 @@ enum class SettingsPageProviderEnum(val displayName: String) {
    // Add your SPPs
}

fun createSettingsPage(
    SppName: SettingsPageProviderEnum,
    parameter: List<NamedNavArgument> = emptyList(),
    arguments: Bundle? = null
): SettingsPage {
    return SettingsPage.create(
        name = SppName.name,
        displayName = SppName.displayName,
        parameter = parameter,
        arguments = arguments,
    )
}

object GallerySpaEnvironment : SpaEnvironment() {
    override val pageProviderRepository = lazy {
        SettingsPageProviderRepository(
@@ -82,7 +67,7 @@ object GallerySpaEnvironment : SpaEnvironment() {
                ActionButtonPageProvider,
            ),
            rootPages = listOf(
                createSettingsPage(SettingsPageProviderEnum.HOME)
                HomePageProvider.createSettingsPage(),
            )
        )
    }
+3 −2
Original line number Diff line number Diff line
@@ -22,11 +22,11 @@ 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.SettingsPageProvider
import com.android.settingslib.spa.framework.common.createSettingsPage
import com.android.settingslib.spa.framework.theme.SettingsTheme
import com.android.settingslib.spa.gallery.R
import com.android.settingslib.spa.gallery.SettingsPageProviderEnum
import com.android.settingslib.spa.gallery.button.ActionButtonPageProvider
import com.android.settingslib.spa.gallery.createSettingsPage
import com.android.settingslib.spa.gallery.page.ArgumentPageModel
import com.android.settingslib.spa.gallery.page.ArgumentPageProvider
import com.android.settingslib.spa.gallery.page.FooterPageProvider
@@ -40,9 +40,10 @@ import com.android.settingslib.spa.widget.scaffold.HomeScaffold

object HomePageProvider : SettingsPageProvider {
    override val name = SettingsPageProviderEnum.HOME.name
    override val displayName = SettingsPageProviderEnum.HOME.displayName
    private val owner = createSettingsPage()

    override fun buildEntry(arguments: Bundle?): List<SettingsEntry> {
        val owner = createSettingsPage(SettingsPageProviderEnum.HOME)
        return listOf(
            PreferenceMainPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),
            ArgumentPageProvider.buildInjectEntry("foo")!!.setLink(fromPage = owner).build(),
+4 −4
Original line number Diff line number Diff line
@@ -23,9 +23,9 @@ 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.common.createSettingsPage
import com.android.settingslib.spa.framework.theme.SettingsTheme
import com.android.settingslib.spa.gallery.SettingsPageProviderEnum
import com.android.settingslib.spa.gallery.createSettingsPage
import com.android.settingslib.spa.widget.preference.Preference
import com.android.settingslib.spa.widget.scaffold.RegularScaffold

@@ -43,13 +43,13 @@ object ArgumentPageProvider : SettingsPageProvider {
    }

    override val name = SettingsPageProviderEnum.ARGUMENT.name

    override val displayName = SettingsPageProviderEnum.ARGUMENT.displayName
    override val parameter = ArgumentPageModel.parameter

    override fun buildEntry(arguments: Bundle?): List<SettingsEntry> {
        if (!ArgumentPageModel.isValidArgument(arguments)) return emptyList()

        val owner = createSettingsPage(SettingsPageProviderEnum.ARGUMENT, parameter, arguments)
        val owner = createSettingsPage(arguments)
        val entryList = mutableListOf<SettingsEntry>()
        entryList.add(
            createEntry(owner, EntryEnum.STRING_PARAM)
@@ -86,7 +86,7 @@ object ArgumentPageProvider : SettingsPageProvider {
        if (!ArgumentPageModel.isValidArgument(arguments)) return null

        return SettingsEntryBuilder.createInject(
            owner = createSettingsPage(SettingsPageProviderEnum.ARGUMENT, parameter, arguments),
            owner = createSettingsPage(arguments),
            displayName = "${name}_$stringParam",
        )
            // Set attributes
+7 −9
Original line number Diff line number Diff line
@@ -20,8 +20,8 @@ import android.os.Bundle
import androidx.compose.runtime.Composable
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.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
@@ -31,22 +31,20 @@ private const val TITLE = "Category: Preference"

object PreferenceMainPageProvider : SettingsPageProvider {
    override val name = "PreferenceMain"
    private val owner = createSettingsPage()

    override fun buildEntry(arguments: Bundle?): List<SettingsEntry> {
        return listOf(
            PreferencePageProvider.buildInjectEntry()
                .setLink(fromPage = SettingsPage.create(name)).build(),
            SwitchPreferencePageProvider.buildInjectEntry()
                .setLink(fromPage = SettingsPage.create(name)).build(),
            MainSwitchPreferencePageProvider.buildInjectEntry()
                .setLink(fromPage = SettingsPage.create(name)).build(),
            PreferencePageProvider.buildInjectEntry().setLink(fromPage = owner).build(),
            SwitchPreferencePageProvider.buildInjectEntry().setLink(fromPage = owner).build(),
            MainSwitchPreferencePageProvider.buildInjectEntry().setLink(fromPage = owner).build(),
            TwoTargetSwitchPreferencePageProvider.buildInjectEntry()
                .setLink(fromPage = SettingsPage.create(name)).build(),
                .setLink(fromPage = owner).build(),
        )
    }

    fun buildInjectEntry(): SettingsEntryBuilder {
        return SettingsEntryBuilder.createInject(owner = SettingsPage.create(name))
        return SettingsEntryBuilder.createInject(owner = owner)
            .setIsAllowSearch(true)
            .setUiLayoutFn {
                Preference(object : PreferenceModel {
+3 −2
Original line number Diff line number Diff line
@@ -30,11 +30,11 @@ import com.android.settingslib.spa.framework.common.EntrySearchData
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.toState
import com.android.settingslib.spa.framework.theme.SettingsTheme
import com.android.settingslib.spa.gallery.R
import com.android.settingslib.spa.gallery.SettingsPageProviderEnum
import com.android.settingslib.spa.gallery.createSettingsPage
import com.android.settingslib.spa.gallery.preference.PreferencePageModel.Companion.ASYNC_PREFERENCE_TITLE
import com.android.settingslib.spa.gallery.preference.PreferencePageModel.Companion.AUTO_UPDATE_PREFERENCE_TITLE
import com.android.settingslib.spa.gallery.preference.PreferencePageModel.Companion.DISABLE_PREFERENCE_SUMMARY
@@ -66,7 +66,8 @@ object PreferencePageProvider : SettingsPageProvider {
    }

    override val name = SettingsPageProviderEnum.PREFERENCE.name
    private val owner = createSettingsPage(SettingsPageProviderEnum.PREFERENCE)
    override val displayName = SettingsPageProviderEnum.PREFERENCE.displayName
    private val owner = createSettingsPage()

    private fun createEntry(entry: EntryEnum): SettingsEntryBuilder {
        return SettingsEntryBuilder.create(owner, entry.name, entry.displayName)
Loading