Add arguments in displayName of page.

Bug: 244122804
Test: unit-test & local build gallery
Change-Id: Ic370f271ddbb5316ec4a061ebc07a1f7d5a3cc92
This commit is contained in:
Zekan Qian
2023-02-01 16:24:23 +08:00
parent d57687dfea
commit fc4a3f2626
3 changed files with 16 additions and 6 deletions

View File

@@ -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,
)
}

View File

@@ -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
}

View File

@@ -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()