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

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

Add reset for preview support in SpaEnvironmentFactory.

Bug: 244122804
Test: manual - build gallery
Change-Id: I5ecf2f32a61deb76ee8d84295903e4b74dd26a57
parent a84a36c0
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ 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.SpaEnvironmentFactory
import com.android.settingslib.spa.framework.common.createSettingsPage
import com.android.settingslib.spa.framework.theme.SettingsTheme
import com.android.settingslib.spa.gallery.R
@@ -76,6 +77,7 @@ object HomePageProvider : SettingsPageProvider {
@Preview(showBackground = true)
@Composable
private fun HomeScreenPreview() {
    SpaEnvironmentFactory.resetForPreview()
    SettingsTheme {
        HomePageProvider.Page(null)
    }
+2 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ 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.theme.SettingsTheme
import com.android.settingslib.spa.gallery.SettingsPageProviderEnum
@@ -115,6 +116,7 @@ object ArgumentPageProvider : SettingsPageProvider {
@Preview(showBackground = true)
@Composable
private fun ArgumentPagePreview() {
    SpaEnvironmentFactory.resetForPreview()
    SettingsTheme {
        ArgumentPageProvider.Page(
            ArgumentPageModel.buildArgument(stringParam = "foo", intParam = 0)
+1 −0
Original line number Diff line number Diff line
@@ -217,6 +217,7 @@ object PreferencePageProvider : SettingsPageProvider {
@Preview(showBackground = true)
@Composable
private fun PreferencePagePreview() {
    SpaEnvironmentFactory.resetForPreview()
    SettingsTheme {
        PreferencePageProvider.Page(null)
    }
+19 −1
Original line number Diff line number Diff line
@@ -19,6 +19,8 @@ package com.android.settingslib.spa.framework.common
import android.app.Activity
import android.content.Context
import android.util.Log
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext

private const val TAG = "SpaEnvironment"

@@ -30,6 +32,20 @@ object SpaEnvironmentFactory {
        Log.d(TAG, "reset")
    }

    @Composable
    fun resetForPreview() {
        val context = LocalContext.current
        spaEnvironment = object : SpaEnvironment(context) {
            override val pageProviderRepository = lazy {
                SettingsPageProviderRepository(
                    allPageProviders = emptyList(),
                    rootPages = emptyList()
                )
            }
        }
        Log.d(TAG, "resetForPreview")
    }

    val instance: SpaEnvironment
        get() {
            if (spaEnvironment == null)
@@ -38,11 +54,13 @@ object SpaEnvironmentFactory {
        }
}

abstract class SpaEnvironment(val context: Context) {
abstract class SpaEnvironment(context: Context) {
    abstract val pageProviderRepository: Lazy<SettingsPageProviderRepository>

    val entryRepository = lazy { SettingsEntryRepository(pageProviderRepository.value) }

    val appContext: Context = context.applicationContext

    open val browseActivityClass: Class<out Activity>? = null

    open val entryProviderAuthorities: String? = null