Add arguments in displayName of page.
Bug: 244122804 Test: unit-test & local build gallery Change-Id: Ic370f271ddbb5316ec4a061ebc07a1f7d5a3cc92
This commit is contained in:
@@ -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,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user