From 3e34da5d7efbb3e1ed027db9204075c4ca5b3a66 Mon Sep 17 00:00:00 2001 From: Zekan Qian Date: Tue, 6 Sep 2022 10:20:51 +0800 Subject: [PATCH] Followup SppRepo refactor in Settings Bug: 244122804 Test: manual - build SettingsGoogle Change-Id: Ib0d75d7a34a6f8d922749916b793dcb81b9fd0fd --- src/com/android/settings/spa/SpaActivity.kt | 2 +- .../android/settings/spa/SpaEnvironment.kt | 36 +++++++++++++------ src/com/android/settings/spa/home/HomePage.kt | 14 ++++++++ 3 files changed, 40 insertions(+), 12 deletions(-) diff --git a/src/com/android/settings/spa/SpaActivity.kt b/src/com/android/settings/spa/SpaActivity.kt index 729668e6032..fab0e081f65 100644 --- a/src/com/android/settings/spa/SpaActivity.kt +++ b/src/com/android/settings/spa/SpaActivity.kt @@ -20,7 +20,7 @@ import android.content.Context import android.content.Intent import com.android.settingslib.spa.framework.BrowseActivity -class SpaActivity : BrowseActivity(settingsPageProviders) { +class SpaActivity : BrowseActivity(SpaEnvironment.settingsPageProviders) { companion object { @JvmStatic fun startSpaActivity(context: Context, startDestination: String) { diff --git a/src/com/android/settings/spa/SpaEnvironment.kt b/src/com/android/settings/spa/SpaEnvironment.kt index 28de3edd8b9..7da253af25c 100644 --- a/src/com/android/settings/spa/SpaEnvironment.kt +++ b/src/com/android/settings/spa/SpaEnvironment.kt @@ -18,20 +18,34 @@ package com.android.settings.spa import com.android.settings.spa.app.InstallUnknownAppsListProvider import com.android.settings.spa.home.HomePageProvider +import com.android.settingslib.spa.framework.common.SettingsEntryRepository +import com.android.settingslib.spa.framework.common.SettingsPage import com.android.settings.spa.notification.AppListNotificationsPageProvider import com.android.settings.spa.notification.NotificationMainPageProvider import com.android.settingslib.spa.framework.common.SettingsPageProviderRepository import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListTemplate -private val togglePermissionAppListTemplate = TogglePermissionAppListTemplate( - allProviders = listOf(InstallUnknownAppsListProvider), -) +object SpaEnvironment { + val settingsPageProviders: SettingsPageProviderRepository by + lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + val togglePermissionAppListTemplate = TogglePermissionAppListTemplate( + allProviders = listOf(InstallUnknownAppsListProvider), + ) + SettingsPageProviderRepository( + allPageProviders = listOf( + HomePageProvider, + NotificationMainPageProvider, + AppListNotificationsPageProvider, + ) + togglePermissionAppListTemplate.createPageProviders(), + rootPages = listOf( + SettingsPage(HomePageProvider.name), + ), + ) + } + val settingsEntryRepository: SettingsEntryRepository by + lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + SettingsEntryRepository(settingsPageProviders) + } -val settingsPageProviders = SettingsPageProviderRepository( - allPagesList = listOf( - HomePageProvider, - NotificationMainPageProvider, - AppListNotificationsPageProvider, - ) + togglePermissionAppListTemplate.createPageProviders(), - rootPages = listOf(HomePageProvider.name), -) + // TODO: add other environment setup here. +} diff --git a/src/com/android/settings/spa/home/HomePage.kt b/src/com/android/settings/spa/home/HomePage.kt index 47dffb85ff5..3b8fb84310d 100644 --- a/src/com/android/settings/spa/home/HomePage.kt +++ b/src/com/android/settings/spa/home/HomePage.kt @@ -17,9 +17,12 @@ package com.android.settings.spa.home import android.os.Bundle +import androidx.compose.material3.Button +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import com.android.settings.R +import com.android.settings.spa.SpaEnvironment import com.android.settings.spa.app.InstallUnknownAppsListProvider import com.android.settings.spa.notification.NotificationMainPageProvider import com.android.settingslib.spa.framework.common.SettingsPageProvider @@ -39,5 +42,16 @@ private fun HomePage() { HomeScaffold(title = stringResource(R.string.settings_label)) { InstallUnknownAppsListProvider.EntryItem() NotificationMainPageProvider.EntryItem() + + /** + * A test button to generate hierarchy. + * TODO: remove it once the content provider is ready. + */ + Button(onClick = { + SpaEnvironment.settingsEntryRepository.printAllPages() + SpaEnvironment.settingsEntryRepository.printAllEntries() + }) { + Text(text = "Generate Entry") + } } }