Improve the number on "Label SIM" page

Bug: 318310357
Test: manual - on Mobile Settings
Change-Id: I79149db550e8d84dd2104cbfd72e144dddeb81cd
This commit is contained in:
Chaohui Wang
2024-03-13 14:55:38 +08:00
parent 8cad117210
commit 08e06a7775
2 changed files with 53 additions and 42 deletions

View File

@@ -16,6 +16,7 @@
package com.android.settings.spa.network
import android.telephony.SubscriptionInfo
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
@@ -63,52 +64,55 @@ fun SimOnboardingLabelSimImpl(
cancelAction
),
) {
labelSimBody(onboardingService)
LabelSimBody(onboardingService)
}
}
@Composable
private fun labelSimBody(onboardingService: SimOnboardingService) {
private fun LabelSimBody(onboardingService: SimOnboardingService) {
Column(Modifier.padding(SettingsDimension.itemPadding)) {
SettingsBody(stringResource(R.string.sim_onboarding_label_sim_msg))
}
for (subInfo in onboardingService.getSelectableSubscriptionInfoList()) {
var titleSimName by remember {
mutableStateOf(
onboardingService.getSubscriptionInfoDisplayName(subInfo)
)
}
var summaryNumber = subInfo.number
// TODO using the SubscriptionUtil.getFormattedPhoneNumber
val alertDialogPresenter = rememberAlertDialogPresenter(
confirmButton = AlertDialogButton(
stringResource(R.string.mobile_network_sim_name_rename)
) {
onboardingService.addItemForRenaming(subInfo, titleSimName)
},
dismissButton = AlertDialogButton(stringResource(R.string.cancel)) {
titleSimName = onboardingService.getSubscriptionInfoDisplayName(subInfo)
},
title = stringResource(R.string.sim_onboarding_label_sim_dialog_title),
text = {
Text(summaryNumber,
modifier = Modifier.padding(bottom = SettingsDimension.itemPaddingVertical))
SettingsOutlinedTextField(
value = titleSimName,
label = stringResource(R.string.sim_onboarding_label_sim_dialog_label),
enabled = true,
shape = MaterialTheme.shapes.extraLarge
) {
titleSimName = it
}
},
)
Preference(object : PreferenceModel {
override val title = titleSimName
override val summary: () -> String
get() = { summaryNumber }
override val onClick = alertDialogPresenter::open
})
LabelSimPreference(onboardingService, subInfo)
}
}
}
@Composable
private fun LabelSimPreference(
onboardingService: SimOnboardingService,
subInfo: SubscriptionInfo,
) {
var titleSimName by remember {
mutableStateOf(onboardingService.getSubscriptionInfoDisplayName(subInfo))
}
val phoneNumber = phoneNumber(subInfo)
val alertDialogPresenter = rememberAlertDialogPresenter(
confirmButton = AlertDialogButton(stringResource(R.string.mobile_network_sim_name_rename)) {
onboardingService.addItemForRenaming(subInfo, titleSimName)
},
dismissButton = AlertDialogButton(stringResource(R.string.cancel)) {
titleSimName = onboardingService.getSubscriptionInfoDisplayName(subInfo)
},
title = stringResource(R.string.sim_onboarding_label_sim_dialog_title),
text = {
Text(
phoneNumber.value ?: "",
modifier = Modifier.padding(bottom = SettingsDimension.itemPaddingVertical)
)
SettingsOutlinedTextField(
value = titleSimName,
label = stringResource(R.string.sim_onboarding_label_sim_dialog_label),
shape = MaterialTheme.shapes.extraLarge
) {
titleSimName = it
}
},
)
Preference(object : PreferenceModel {
override val title = titleSimName
override val summary = { phoneNumber.value ?: "" }
override val onClick = alertDialogPresenter::open
})
}

View File

@@ -25,6 +25,7 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Add
import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
@@ -58,9 +59,7 @@ private fun SimPreference(subInfo: SubscriptionInfo) {
val checked = remember(subInfo.subscriptionId) {
context.isSubscriptionEnabledFlow(subInfo.subscriptionId)
}.collectAsStateWithLifecycle(initialValue = false)
val phoneNumber = remember(subInfo) {
context.phoneNumberFlow(subInfo)
}.collectAsStateWithLifecycle(initialValue = null)
val phoneNumber = phoneNumber(subInfo)
RestrictedTwoTargetSwitchPreference(
model = object : SwitchPreferenceModel {
override val title = subInfo.displayName.toString()
@@ -80,6 +79,14 @@ private fun SimPreference(subInfo: SubscriptionInfo) {
}
}
@Composable
fun phoneNumber(subInfo: SubscriptionInfo): State<String?> {
val context = LocalContext.current
return remember(subInfo) {
context.phoneNumberFlow(subInfo)
}.collectAsStateWithLifecycle(initialValue = null)
}
@Composable
private fun AddSim() {
val context = LocalContext.current