Merge "Use default Page() function in spa.HomePage"

This commit is contained in:
Zekan Qian
2022-11-14 07:17:40 +00:00
committed by Android (Google) Code Review
4 changed files with 73 additions and 79 deletions

View File

@@ -27,6 +27,8 @@ 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.SpaEnvironmentFactory
import com.android.settingslib.spa.framework.common.createSettingsPage
import com.android.settingslib.spa.framework.compose.navigator
import com.android.settingslib.spa.framework.compose.toState
import com.android.settingslib.spa.widget.preference.Preference
@@ -36,14 +38,19 @@ import com.android.settingslib.spa.widget.ui.SettingsIcon
object AppsMainPageProvider : SettingsPageProvider {
override val name = "AppsMain"
private val owner = createSettingsPage()
@Composable
override fun Page(arguments: Bundle?) {
AppsMain()
RegularScaffold(title = getTitle(arguments)) {
AllAppListPageProvider.buildInjectEntry().build().UiLayout()
SpecialAppAccessPageProvider.EntryItem()
}
}
@Composable
fun EntryItem() {
fun buildInjectEntry() =
SettingsEntryBuilder.createInject(owner = owner).setIsAllowSearch(false)
.setUiLayoutFn {
Preference(object : PreferenceModel {
override val title = stringResource(R.string.apps_dashboard_title)
override val summary =
@@ -55,22 +62,14 @@ object AppsMainPageProvider : SettingsPageProvider {
})
}
fun buildInjectEntry() =
SettingsEntryBuilder.createInject(owner = SettingsPage.create(name)).setIsAllowSearch(false)
override fun getTitle(arguments: Bundle?): String {
return SpaEnvironmentFactory.instance.appContext.getString(R.string.apps_dashboard_title)
}
override fun buildEntry(arguments: Bundle?): List<SettingsEntry> {
val owner = SettingsPage.create(name, parameter = parameter, arguments = arguments)
return listOf(
AllAppListPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),
SpecialAppAccessPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),
)
}
}
@Composable
private fun AppsMain() {
RegularScaffold(title = stringResource(R.string.apps_dashboard_title)) {
AllAppListPageProvider.buildInjectEntry().build().UiLayout()
SpecialAppAccessPageProvider.EntryItem()
}
}

View File

@@ -17,38 +17,28 @@
package com.android.settings.spa.home
import android.os.Bundle
import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource
import com.android.settings.R
import com.android.settings.spa.app.AppsMainPageProvider
import com.android.settings.spa.notification.NotificationMainPageProvider
import com.android.settings.spa.system.SystemMainPageProvider
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.widget.scaffold.HomeScaffold
import com.android.settingslib.spa.framework.common.SpaEnvironmentFactory
import com.android.settingslib.spa.framework.common.createSettingsPage
object HomePageProvider : SettingsPageProvider {
override val name = "Home"
@Composable
override fun Page(arguments: Bundle?) {
HomePage()
}
private val owner = createSettingsPage()
override fun buildEntry(arguments: Bundle?): List<SettingsEntry> {
val owner = SettingsPage.create(name, parameter = parameter, arguments = arguments)
return listOf(
AppsMainPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),
NotificationMainPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),
SystemMainPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),
)
}
}
@Composable
private fun HomePage() {
HomeScaffold(title = stringResource(R.string.settings_label)) {
AppsMainPageProvider.EntryItem()
NotificationMainPageProvider.EntryItem()
SystemMainPageProvider.EntryItem()
override fun getTitle(arguments: Bundle?): String {
return SpaEnvironmentFactory.instance.appContext.getString(R.string.settings_label)
}
}

View File

@@ -22,24 +22,35 @@ import androidx.compose.material.icons.outlined.Notifications
import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource
import com.android.settings.R
import com.android.settingslib.spa.framework.common.SettingsEntryBuilder
import com.android.settingslib.spa.framework.common.SettingsPageProvider
import com.android.settingslib.spa.framework.common.SpaEnvironmentFactory
import com.android.settingslib.spa.framework.compose.navigator
import com.android.settingslib.spa.framework.compose.toState
import com.android.settingslib.spa.widget.preference.Preference
import com.android.settingslib.spa.widget.preference.PreferenceModel
import com.android.settingslib.spa.widget.scaffold.RegularScaffold
import com.android.settingslib.spa.widget.ui.SettingsIcon
import com.android.settingslib.spa.framework.common.createSettingsPage
object NotificationMainPageProvider : SettingsPageProvider {
override val name = "NotificationMain"
private val owner = createSettingsPage()
@Composable
override fun Page(arguments: Bundle?) {
NotificationMain()
RegularScaffold(title = getTitle(arguments)) {
AppListNotificationsPageProvider.EntryItem()
}
}
@Composable
fun EntryItem() {
override fun getTitle(arguments: Bundle?): String {
return SpaEnvironmentFactory.instance.appContext.getString(R.string.configure_notification_settings)
}
fun buildInjectEntry(): SettingsEntryBuilder {
return SettingsEntryBuilder.createInject(owner = owner).setIsAllowSearch(false)
.setUiLayoutFn {
Preference(object : PreferenceModel {
override val title = stringResource(R.string.configure_notification_settings)
override val summary = stringResource(R.string.notification_dashboard_summary).toState()
@@ -50,10 +61,4 @@ object NotificationMainPageProvider : SettingsPageProvider {
})
}
}
@Composable
private fun NotificationMain() {
RegularScaffold(title = stringResource(R.string.configure_notification_settings)) {
AppListNotificationsPageProvider.EntryItem()
}
}

View File

@@ -23,8 +23,9 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource
import com.android.settings.R
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.SpaEnvironmentFactory
import com.android.settingslib.spa.framework.common.createSettingsPage
import com.android.settingslib.spa.framework.compose.navigator
import com.android.settingslib.spa.framework.compose.toState
import com.android.settingslib.spa.widget.preference.Preference
@@ -34,14 +35,22 @@ import com.android.settingslib.spa.widget.ui.SettingsIcon
object SystemMainPageProvider : SettingsPageProvider {
override val name = "SystemMain"
private val owner = createSettingsPage()
@Composable
override fun Page(arguments: Bundle?) {
SystemMain()
RegularScaffold(title = getTitle(arguments)) {
LanguageAndInputPageProvider.EntryItem()
}
}
@Composable
fun EntryItem() {
override fun getTitle(arguments: Bundle?): String {
return SpaEnvironmentFactory.instance.appContext.getString(R.string.header_category_system)
}
fun buildInjectEntry(): SettingsEntryBuilder {
return SettingsEntryBuilder.createInject(owner = owner).setIsAllowSearch(false)
.setUiLayoutFn {
Preference(object : PreferenceModel {
override val title = stringResource(R.string.header_category_system)
override val summary = stringResource(R.string.system_dashboard_summary).toState()
@@ -51,14 +60,5 @@ object SystemMainPageProvider : SettingsPageProvider {
}
})
}
fun buildInjectEntry() =
SettingsEntryBuilder.createInject(owner = SettingsPage.create(name)).setIsAllowSearch(false)
}
@Composable
private fun SystemMain() {
RegularScaffold(title = stringResource(R.string.header_category_system)) {
LanguageAndInputPageProvider.EntryItem()
}
}