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

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

Add entry highlight demo

Bug: 244122804
Test: manual - build Spa gallery
Change-Id: Iaefaae5733fc7280b3e7892c412d99581bdedd98
parent c886a83e
Loading
Loading
Loading
Loading
+24 −11
Original line number Diff line number Diff line
@@ -18,14 +18,18 @@ package com.android.settingslib.spa.gallery.home

import android.os.Bundle
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
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.theme.SettingsTheme
import com.android.settingslib.spa.framework.util.getRuntimeArguments
import com.android.settingslib.spa.framework.util.mergeArguments
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
@@ -41,27 +45,36 @@ object HomePageProvider : SettingsPageProvider {
    override val name = SettingsPageProviderEnum.HOME.name

    override fun buildEntry(arguments: Bundle?): List<SettingsEntry> {
        val owner = createSettingsPage(SettingsPageProviderEnum.HOME)
        return listOf(
            PreferenceMainPageProvider.buildInjectEntry().build(),
            ArgumentPageProvider.buildInjectEntry("foo")!!.build(),
            SliderPageProvider.buildInjectEntry().build(),
            SpinnerPageProvider.buildInjectEntry().build(),
            SettingsPagerPageProvider.buildInjectEntry().build(),
            FooterPageProvider.buildInjectEntry().build(),
            IllustrationPageProvider.buildInjectEntry().build(),
            CategoryPageProvider.buildInjectEntry().build(),
            ActionButtonPageProvider.buildInjectEntry().build(),
            PreferenceMainPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),
            ArgumentPageProvider.buildInjectEntry("foo")!!.setLink(fromPage = owner).build(),
            SliderPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),
            SpinnerPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),
            SettingsPagerPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),
            FooterPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),
            IllustrationPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),
            CategoryPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),
            ActionButtonPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),
        )
    }

    @Composable
    override fun Page(arguments: Bundle?) {
        val globalRuntimeArgs = remember { getRuntimeArguments(arguments) }
        HomeScaffold(title = stringResource(R.string.app_name)) {
            for (entry in buildEntry(arguments)) {
                if (entry.owner.isCreateBy(SettingsPageProviderEnum.ARGUMENT.name)) {
                    entry.UiLayout(ArgumentPageModel.buildArgument(intParam = 0))
                    entry.UiLayout(
                        mergeArguments(
                            listOf(
                                globalRuntimeArgs,
                                ArgumentPageModel.buildArgument(intParam = 0)
                            )
                        )
                    )
                } else {
                    entry.UiLayout()
                    entry.UiLayout(globalRuntimeArgs)
                }
            }
        }
+14 −3
Original line number Diff line number Diff line
@@ -18,12 +18,15 @@ package com.android.settingslib.spa.gallery.page

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.theme.SettingsTheme
import com.android.settingslib.spa.framework.util.getRuntimeArguments
import com.android.settingslib.spa.framework.util.mergeArguments
import com.android.settingslib.spa.gallery.SettingsPageProviderEnum
import com.android.settingslib.spa.gallery.createSettingsPage
import com.android.settingslib.spa.widget.preference.Preference
@@ -98,12 +101,20 @@ object ArgumentPageProvider : SettingsPageProvider {

    @Composable
    override fun Page(arguments: Bundle?) {
        val globalRuntimeArgs = remember { getRuntimeArguments(arguments) }
        RegularScaffold(title = ArgumentPageModel.create(arguments).genPageTitle()) {
            for (entry in buildEntry(arguments)) {
                if (entry.owner.isCreateBy(SettingsPageProviderEnum.ARGUMENT.name)) {
                    entry.UiLayout(ArgumentPageModel.buildNextArgument(arguments))
                if (entry.toPage != null) {
                    entry.UiLayout(
                        mergeArguments(
                            listOf(
                                globalRuntimeArgs,
                                ArgumentPageModel.buildNextArgument(arguments)
                            )
                        )
                    )
                } else {
                    entry.UiLayout()
                    entry.UiLayout(globalRuntimeArgs)
                }
            }
        }
+2 −4
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ import androidx.compose.runtime.Composable
import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.NavType
import androidx.navigation.navArgument
import com.android.settingslib.spa.framework.BrowseActivity
import com.android.settingslib.spa.framework.common.EntrySearchData
import com.android.settingslib.spa.framework.common.PageModel
import com.android.settingslib.spa.framework.compose.navigator
@@ -92,14 +91,12 @@ class ArgumentPageModel : PageModel() {
    private var arguments: Bundle? = null
    private var stringParam: String? = null
    private var intParam: Int? = null
    private var highlightName: String? = null

    override fun initialize(arguments: Bundle?) {
        logMsg("init with args " + arguments.toString())
        this.arguments = arguments
        stringParam = parameter.getStringArg(STRING_PARAM_NAME, arguments)
        intParam = parameter.getIntArg(INT_PARAM_NAME, arguments)
        highlightName = arguments?.getString(BrowseActivity.HIGHLIGHT_ENTRY_PARAM_NAME)
    }

    @Composable
@@ -133,7 +130,8 @@ class ArgumentPageModel : PageModel() {
            override val title = genPageTitle()
            override val summary = stateOf(summaryArray.joinToString(", "))
            override val onClick = navigator(
                SettingsPageProviderEnum.ARGUMENT.displayName + parameter.navLink(arguments))
                SettingsPageProviderEnum.ARGUMENT.displayName + parameter.navLink(arguments)
            )
        }
    }
}
+3 −1
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ 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.theme.SettingsTheme
import com.android.settingslib.spa.framework.util.getRuntimeArguments
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
@@ -177,9 +178,10 @@ object PreferencePageProvider : SettingsPageProvider {

    @Composable
    override fun Page(arguments: Bundle?) {
        val globalRuntimeArgs = remember { getRuntimeArguments(arguments) }
        RegularScaffold(title = PAGE_TITLE) {
            for (entry in buildEntry(arguments)) {
                entry.UiLayout()
                entry.UiLayout(globalRuntimeArgs)
            }
        }
    }
+1 −1
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@ import com.android.settingslib.spa.widget.ui.CategoryTitle
private const val TITLE = "Sample Category"

object CategoryPageProvider : SettingsPageProvider {
    override val name = "Spinner"
    override val name = "Category"

    fun buildInjectEntry(): SettingsEntryBuilder {
        return SettingsEntryBuilder.createInject(owner = SettingsPage.create(name))
Loading