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

Commit 18d3483d authored by Zekan Qian's avatar Zekan Qian
Browse files

Some code refactoring.

Move unique id generation logic into separate file.
Move createSettingsPage function to Spp.
Add getPageProvider API in Spp for ease use.
Add NullPageProvider instance.

Bug: 244122804
Test: unit-test & local build gallery
Change-Id: Ic99ab6a99db98d0666a4c5c59d8841e18d628eeb
parent 15b949b5
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -161,7 +161,7 @@ class DebugProvider : ContentProvider() {
                .add(ColumnEnum.PAGE_ROUTE.id, page.buildRoute())
                .add(ColumnEnum.PAGE_INTENT_URI.id, intent.toUri(URI_INTENT_SCHEME))
                .add(ColumnEnum.PAGE_ENTRY_COUNT.id, pageWithEntry.entries.size)
                .add(ColumnEnum.HAS_RUNTIME_PARAM.id, if (page.hasRuntimeParam()) 1 else 0)
                .add(ColumnEnum.PAGE_BROWSABLE.id, if (page.isBrowsable()) 1 else 0)
        }
        return cursor
    }
+2 −2
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ enum class ColumnEnum(val id: String) {
    PAGE_ROUTE("pageRoute"),
    PAGE_INTENT_URI("pageIntent"),
    PAGE_ENTRY_COUNT("entryCount"),
    HAS_RUNTIME_PARAM("hasRuntimeParam"),
    PAGE_BROWSABLE("pageBrowsable"),
    PAGE_START_ADB("pageStartAdb"),

    // Columns related to entry
@@ -67,7 +67,7 @@ enum class QueryEnum(
            ColumnEnum.PAGE_ROUTE,
            ColumnEnum.PAGE_INTENT_URI,
            ColumnEnum.PAGE_ENTRY_COUNT,
            ColumnEnum.HAS_RUNTIME_PARAM,
            ColumnEnum.PAGE_BROWSABLE,
        )
    ),

+3 −4
Original line number Diff line number Diff line
@@ -39,7 +39,7 @@ import androidx.core.view.WindowCompat
import androidx.navigation.NavGraph.Companion.findStartDestination
import com.android.settingslib.spa.R
import com.android.settingslib.spa.framework.common.LogCategory
import com.android.settingslib.spa.framework.common.SettingsPage
import com.android.settingslib.spa.framework.common.NullPageProvider
import com.android.settingslib.spa.framework.common.SettingsPageProvider
import com.android.settingslib.spa.framework.common.SettingsPageProviderRepository
import com.android.settingslib.spa.framework.common.SpaEnvironmentFactory
@@ -106,14 +106,13 @@ fun BrowseContent(sppRepository: SettingsPageProviderRepository, initialIntent:

@Composable
private fun NavControllerWrapperImpl.NavContent(allProvider: Collection<SettingsPageProvider>) {
    val nullPage = SettingsPage.createNull()
    AnimatedNavHost(
        navController = navController,
        startDestination = nullPage.sppName,
        startDestination = NullPageProvider.name,
    ) {
        val slideEffect = tween<IntOffset>(durationMillis = 300)
        val fadeEffect = tween<Float>(durationMillis = 300)
        composable(nullPage.sppName) {}
        composable(NullPageProvider.name) {}
        for (spp in allProvider) {
            composable(
                route = spp.name + spp.parameter.navRoute(),
+2 −6
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import androidx.compose.runtime.ProvidedValue
import androidx.compose.runtime.compositionLocalOf
import androidx.compose.runtime.remember
import com.android.settingslib.spa.framework.compose.LocalNavController
import com.android.settingslib.spa.framework.util.genEntryId

private const val INJECT_ENTRY_NAME = "INJECT"
private const val ROOT_ENTRY_NAME = "ROOT"
@@ -188,7 +189,7 @@ class SettingsEntryBuilder(private val name: String, private val owner: Settings
        val page = fromPage ?: owner
        val isEnabled = page.isEnabled()
        return SettingsEntry(
            id = id(),
            id = genEntryId(name, owner, fromPage, toPage),
            name = name,
            owner = owner,
            displayName = displayName,
@@ -274,11 +275,6 @@ class SettingsEntryBuilder(private val name: String, private val owner: Settings
        return this
    }

    // The unique id of this entry, which is computed by name + owner + fromPage + toPage.
    private fun id(): String {
        return "$name:${owner.id}(${fromPage?.id}-${toPage?.id})".toHashId()
    }

    companion object {
        fun create(entryName: String, owner: SettingsPage): SettingsEntryBuilder {
            return SettingsEntryBuilder(entryName, owner)
+1 −1
Original line number Diff line number Diff line
@@ -49,7 +49,7 @@ class SettingsEntryRepository(private val sppRepository: SettingsPageProviderRep
        entryMap = mutableMapOf()
        pageWithEntryMap = mutableMapOf()

        val nullPage = SettingsPage.createNull()
        val nullPage = NullPageProvider.createSettingsPage()
        val entryQueue = LinkedList<SettingsEntry>()
        for (page in sppRepository.getAllRootPages()) {
            val rootEntry =
Loading