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

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

Add arguments in displayName of page.

Bug: 244122804
Test: unit-test & local build gallery
Change-Id: Ic370f271ddbb5316ec4a061ebc07a1f7d5a3cc92
parent d57687df
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import androidx.navigation.NamedNavArgument
import com.android.settingslib.spa.framework.util.isRuntimeParam
import com.android.settingslib.spa.framework.util.navLink
import com.android.settingslib.spa.framework.util.normalize
import com.android.settingslib.spa.framework.util.normalizeArgList

private const val NULL_PAGE_NAME = "NULL"

@@ -114,9 +115,10 @@ data class SettingsPage(
fun SettingsPageProvider.createSettingsPage(arguments: Bundle? = null): SettingsPage {
    return SettingsPage.create(
        name = name,
        displayName = displayName,
        displayName = displayName + parameter.normalizeArgList(arguments, eraseRuntimeValues = true)
            .joinToString("") { arg -> "/$arg" },
        parameter = parameter,
        arguments = arguments
        arguments = arguments,
    )
}

+10 −2
Original line number Diff line number Diff line
@@ -29,8 +29,16 @@ fun List<NamedNavArgument>.navRoute(): String {
}

fun List<NamedNavArgument>.navLink(arguments: Bundle? = null): String {
    return normalizeArgList(arguments).joinToString("") { arg -> "/$arg" }
}

fun List<NamedNavArgument>.normalizeArgList(
    arguments: Bundle? = null,
    eraseRuntimeValues: Boolean = false
): List<String> {
    val argsArray = mutableListOf<String>()
    for (navArg in this) {
        if (eraseRuntimeValues && navArg.isRuntimeParam()) continue
        if (arguments == null || !arguments.containsKey(navArg.name)) {
            argsArray.add(UNSET_PARAM_VALUE)
            continue
@@ -44,7 +52,7 @@ fun List<NamedNavArgument>.navLink(arguments: Bundle? = null): String {
            }
        }
    }
    return argsArray.joinToString("") { arg -> "/$arg" }
    return argsArray
}

fun List<NamedNavArgument>.normalize(
@@ -55,7 +63,7 @@ fun List<NamedNavArgument>.normalize(
    val normArgs = Bundle()
    for (navArg in this) {
        // Erase value of runtime parameters.
        if (navArg.isRuntimeParam() && eraseRuntimeValues) {
        if (eraseRuntimeValues && navArg.isRuntimeParam()) {
            normArgs.putString(navArg.name, null)
            continue
        }
+2 −2
Original line number Diff line number Diff line
@@ -75,7 +75,7 @@ class SettingsPageTest {
            )
        )
        assertThat(page.sppName).isEqualTo("SppWithParam")
        assertThat(page.displayName).isEqualTo("SppWithParam")
        assertThat(page.displayName).isEqualTo("SppWithParam/myStr/10")
        assertThat(page.buildRoute()).isEqualTo("SppWithParam/myStr/10")
        assertThat(page.isCreateBy("SppWithParam")).isTrue()
        assertThat(page.hasRuntimeParam()).isFalse()
@@ -100,7 +100,7 @@ class SettingsPageTest {
            )
        )
        assertThat(page.sppName).isEqualTo("SppWithRtParam")
        assertThat(page.displayName).isEqualTo("SppWithRtParam")
        assertThat(page.displayName).isEqualTo("SppWithRtParam/myStr/10")
        assertThat(page.buildRoute()).isEqualTo("SppWithRtParam/myStr/10/rtStr")
        assertThat(page.isCreateBy("SppWithRtParam")).isTrue()
        assertThat(page.hasRuntimeParam()).isTrue()