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.SettingsEntryBuilder
import com.android.settingslib.spa.framework.common.SettingsPage import com.android.settingslib.spa.framework.common.SettingsPage
import com.android.settingslib.spa.framework.common.SettingsPageProvider 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.navigator
import com.android.settingslib.spa.framework.compose.toState import com.android.settingslib.spa.framework.compose.toState
import com.android.settingslib.spa.widget.preference.Preference import com.android.settingslib.spa.widget.preference.Preference
@@ -36,41 +38,38 @@ import com.android.settingslib.spa.widget.ui.SettingsIcon
object AppsMainPageProvider : SettingsPageProvider { object AppsMainPageProvider : SettingsPageProvider {
override val name = "AppsMain" override val name = "AppsMain"
private val owner = createSettingsPage()
@Composable @Composable
override fun Page(arguments: Bundle?) { override fun Page(arguments: Bundle?) {
AppsMain() RegularScaffold(title = getTitle(arguments)) {
} AllAppListPageProvider.buildInjectEntry().build().UiLayout()
SpecialAppAccessPageProvider.EntryItem()
@Composable }
fun EntryItem() {
Preference(object : PreferenceModel {
override val title = stringResource(R.string.apps_dashboard_title)
override val summary =
stringResource(R.string.app_and_notification_dashboard_summary).toState()
override val onClick = navigator(name)
override val icon = @Composable {
SettingsIcon(imageVector = Icons.Outlined.Apps)
}
})
} }
fun buildInjectEntry() = fun buildInjectEntry() =
SettingsEntryBuilder.createInject(owner = SettingsPage.create(name)).setIsAllowSearch(false) SettingsEntryBuilder.createInject(owner = owner).setIsAllowSearch(false)
.setUiLayoutFn {
Preference(object : PreferenceModel {
override val title = stringResource(R.string.apps_dashboard_title)
override val summary =
stringResource(R.string.app_and_notification_dashboard_summary).toState()
override val onClick = navigator(name)
override val icon = @Composable {
SettingsIcon(imageVector = Icons.Outlined.Apps)
}
})
}
override fun getTitle(arguments: Bundle?): String {
return SpaEnvironmentFactory.instance.appContext.getString(R.string.apps_dashboard_title)
}
override fun buildEntry(arguments: Bundle?): List<SettingsEntry> { override fun buildEntry(arguments: Bundle?): List<SettingsEntry> {
val owner = SettingsPage.create(name, parameter = parameter, arguments = arguments)
return listOf( return listOf(
AllAppListPageProvider.buildInjectEntry().setLink(fromPage = owner).build(), AllAppListPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),
SpecialAppAccessPageProvider.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 package com.android.settings.spa.home
import android.os.Bundle import android.os.Bundle
import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource
import com.android.settings.R import com.android.settings.R
import com.android.settings.spa.app.AppsMainPageProvider import com.android.settings.spa.app.AppsMainPageProvider
import com.android.settings.spa.notification.NotificationMainPageProvider import com.android.settings.spa.notification.NotificationMainPageProvider
import com.android.settings.spa.system.SystemMainPageProvider import com.android.settings.spa.system.SystemMainPageProvider
import com.android.settingslib.spa.framework.common.SettingsEntry 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.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 { object HomePageProvider : SettingsPageProvider {
override val name = "Home" override val name = "Home"
private val owner = createSettingsPage()
@Composable
override fun Page(arguments: Bundle?) {
HomePage()
}
override fun buildEntry(arguments: Bundle?): List<SettingsEntry> { override fun buildEntry(arguments: Bundle?): List<SettingsEntry> {
val owner = SettingsPage.create(name, parameter = parameter, arguments = arguments)
return listOf( return listOf(
AppsMainPageProvider.buildInjectEntry().setLink(fromPage = owner).build(), AppsMainPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),
NotificationMainPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),
SystemMainPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),
) )
} }
}
@Composable override fun getTitle(arguments: Bundle?): String {
private fun HomePage() { return SpaEnvironmentFactory.instance.appContext.getString(R.string.settings_label)
HomeScaffold(title = stringResource(R.string.settings_label)) {
AppsMainPageProvider.EntryItem()
NotificationMainPageProvider.EntryItem()
SystemMainPageProvider.EntryItem()
} }
} }

View File

@@ -22,38 +22,43 @@ import androidx.compose.material.icons.outlined.Notifications
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import com.android.settings.R 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.SettingsPageProvider
import com.android.settingslib.spa.framework.common.SpaEnvironmentFactory
import com.android.settingslib.spa.framework.compose.navigator import com.android.settingslib.spa.framework.compose.navigator
import com.android.settingslib.spa.framework.compose.toState import com.android.settingslib.spa.framework.compose.toState
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.scaffold.RegularScaffold
import com.android.settingslib.spa.widget.ui.SettingsIcon import com.android.settingslib.spa.widget.ui.SettingsIcon
import com.android.settingslib.spa.framework.common.createSettingsPage
object NotificationMainPageProvider : SettingsPageProvider { object NotificationMainPageProvider : SettingsPageProvider {
override val name = "NotificationMain" override val name = "NotificationMain"
private val owner = createSettingsPage()
@Composable @Composable
override fun Page(arguments: Bundle?) { override fun Page(arguments: Bundle?) {
NotificationMain() RegularScaffold(title = getTitle(arguments)) {
AppListNotificationsPageProvider.EntryItem()
}
} }
@Composable override fun getTitle(arguments: Bundle?): String {
fun EntryItem() { return SpaEnvironmentFactory.instance.appContext.getString(R.string.configure_notification_settings)
Preference(object : PreferenceModel { }
override val title = stringResource(R.string.configure_notification_settings)
override val summary = stringResource(R.string.notification_dashboard_summary).toState() fun buildInjectEntry(): SettingsEntryBuilder {
override val onClick = navigator(name) return SettingsEntryBuilder.createInject(owner = owner).setIsAllowSearch(false)
override val icon = @Composable { .setUiLayoutFn {
SettingsIcon(imageVector = Icons.Outlined.Notifications) Preference(object : PreferenceModel {
override val title = stringResource(R.string.configure_notification_settings)
override val summary = stringResource(R.string.notification_dashboard_summary).toState()
override val onClick = navigator(name)
override val icon = @Composable {
SettingsIcon(imageVector = Icons.Outlined.Notifications)
}
})
} }
})
}
}
@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 androidx.compose.ui.res.stringResource
import com.android.settings.R import com.android.settings.R
import com.android.settingslib.spa.framework.common.SettingsEntryBuilder 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.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.navigator
import com.android.settingslib.spa.framework.compose.toState import com.android.settingslib.spa.framework.compose.toState
import com.android.settingslib.spa.widget.preference.Preference import com.android.settingslib.spa.widget.preference.Preference
@@ -34,31 +35,30 @@ import com.android.settingslib.spa.widget.ui.SettingsIcon
object SystemMainPageProvider : SettingsPageProvider { object SystemMainPageProvider : SettingsPageProvider {
override val name = "SystemMain" override val name = "SystemMain"
private val owner = createSettingsPage()
@Composable @Composable
override fun Page(arguments: Bundle?) { override fun Page(arguments: Bundle?) {
SystemMain() RegularScaffold(title = getTitle(arguments)) {
LanguageAndInputPageProvider.EntryItem()
}
} }
@Composable override fun getTitle(arguments: Bundle?): String {
fun EntryItem() { return SpaEnvironmentFactory.instance.appContext.getString(R.string.header_category_system)
Preference(object : PreferenceModel { }
override val title = stringResource(R.string.header_category_system)
override val summary = stringResource(R.string.system_dashboard_summary).toState() fun buildInjectEntry(): SettingsEntryBuilder {
override val onClick = navigator(name) return SettingsEntryBuilder.createInject(owner = owner).setIsAllowSearch(false)
override val icon = @Composable { .setUiLayoutFn {
SettingsIcon(imageVector = Icons.Outlined.Info) Preference(object : PreferenceModel {
override val title = stringResource(R.string.header_category_system)
override val summary = stringResource(R.string.system_dashboard_summary).toState()
override val onClick = navigator(name)
override val icon = @Composable {
SettingsIcon(imageVector = Icons.Outlined.Info)
}
})
} }
})
}
fun buildInjectEntry() =
SettingsEntryBuilder.createInject(owner = SettingsPage.create(name)).setIsAllowSearch(false)
}
@Composable
private fun SystemMain() {
RegularScaffold(title = stringResource(R.string.header_category_system)) {
LanguageAndInputPageProvider.EntryItem()
} }
} }