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

Commit c54004f2 authored by Chaohui Wang's avatar Chaohui Wang
Browse files

Add startDestination arg to SpaActivity

To let other activity open Spa pages.

Bug: 235727273
Test: Manual with Gallery App
Change-Id: I33b391813c0f40fdca6a52d7a9fd3114b2eb89be
parent a6fae494
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@
        android:label="@string/app_label"
        android:supportsRtl="true">
        <activity
            android:name="com.android.settingslib.spa.gallery.MainActivity"
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
+20 −12
Original line number Diff line number Diff line
@@ -36,17 +36,22 @@ open class SpaActivity(
    override fun onCreate(savedInstanceState: Bundle?) {
        setTheme(R.style.Theme_SpaLib_DayNight)
        super.onCreate(savedInstanceState)

        setContent {
            SettingsTheme {
                MainContent()
            }
        }
    }

    @Composable
    private fun MainContent() {
        SettingsTheme {
        val startDestination =
            intent?.getStringExtra(KEY_START_DESTINATION) ?: settingsPageRepository.startDestination

        val navController = rememberNavController()
        CompositionLocalProvider(navController.localNavController()) {
                NavHost(navController, settingsPageRepository.startDestination) {
            NavHost(navController, startDestination) {
                for (page in settingsPageRepository.allPages) {
                    composable(
                        route = page.route,
@@ -58,8 +63,11 @@ open class SpaActivity(
            }
        }
    }
    }

    private val SettingsPageProvider.route: String
        get() = name + arguments.joinToString("") { argument -> "/{${argument.name}}" }

    companion object {
        const val KEY_START_DESTINATION = "spa:SpaActivity:startDestination"
    }
}