From e83d8b22bcf946f51384beb7147f3dee856bc6ce Mon Sep 17 00:00:00 2001 From: songferngwang Date: Thu, 22 Feb 2024 09:38:59 +0000 Subject: [PATCH 1/3] [SimOnbarding] correct the sim name at the Primary Sim The user can modify the name at Label sim page. The primary sim page should show the name which is modified by the user. Bug: 318310357 Bug: 298898436 Bug: 298891941 Test: manual test and verify the UI display the correct name. Change-Id: Ica2a26ead4ec7d61a59bb3846ea07f278d7a1144 --- .../android/settings/network/SimOnboardingService.kt | 10 ++++++++++ .../settings/spa/network/SimOnboardingPrimarySim.kt | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/network/SimOnboardingService.kt b/src/com/android/settings/network/SimOnboardingService.kt index f33abf67b64..d31d850f5a9 100644 --- a/src/com/android/settings/network/SimOnboardingService.kt +++ b/src/com/android/settings/network/SimOnboardingService.kt @@ -196,6 +196,16 @@ class SimOnboardingService { return userSelectedSubInfoList.toList() } + fun getSelectedSubscriptionInfoListWithRenaming(): List { + if (userSelectedSubInfoList.isEmpty()){ + Log.d(TAG, "userSelectedSubInfoList is empty") + return activeSubInfoList + } + return userSelectedSubInfoList.map { + SubscriptionInfo.Builder(it).setDisplayName(getSubscriptionInfoDisplayName(it)).build() + }.toList() + } + fun addItemForRenaming(subInfo: SubscriptionInfo, newName: String) { if (subInfo.displayName == newName) { return diff --git a/src/com/android/settings/spa/network/SimOnboardingPrimarySim.kt b/src/com/android/settings/spa/network/SimOnboardingPrimarySim.kt index a5f55d09ff5..b9849666e53 100644 --- a/src/com/android/settings/spa/network/SimOnboardingPrimarySim.kt +++ b/src/com/android/settings/spa/network/SimOnboardingPrimarySim.kt @@ -77,7 +77,8 @@ fun SimOnboardingPrimarySimImpl( SettingsBody(stringResource(id = R.string.sim_onboarding_primary_sim_msg)) } - var selectedSubscriptionInfoList = onboardingService.getSelectedSubscriptionInfoList() + var selectedSubscriptionInfoList = + onboardingService.getSelectedSubscriptionInfoListWithRenaming() callsSelectedId.intValue = onboardingService.targetPrimarySimCalls textsSelectedId.intValue = onboardingService.targetPrimarySimTexts mobileDataSelectedId.intValue = onboardingService.targetPrimarySimMobileData From 09603308d4293ca718033e0a51bd4172e78662f5 Mon Sep 17 00:00:00 2001 From: songferngwang Date: Wed, 28 Feb 2024 21:09:23 +0000 Subject: [PATCH 2/3] Start simOnboarding when active sim > 0 If active sim = 0, using old way If active sim > 0, using sim onboarding Bug: 324353868 Test: manual test Change-Id: I5602713b5f4fef0625338787ee0682257e12e34f --- .../settings/network/SimOnboardingActivity.kt | 79 +++++++++++-------- .../settings/network/SimOnboardingService.kt | 10 +-- 2 files changed, 52 insertions(+), 37 deletions(-) diff --git a/src/com/android/settings/network/SimOnboardingActivity.kt b/src/com/android/settings/network/SimOnboardingActivity.kt index abeeb6c733a..6347d7b62f4 100644 --- a/src/com/android/settings/network/SimOnboardingActivity.kt +++ b/src/com/android/settings/network/SimOnboardingActivity.kt @@ -16,7 +16,6 @@ package com.android.settings.network -import android.app.ProgressDialog import android.content.Context import android.content.Intent import android.os.Bundle @@ -51,7 +50,6 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalLifecycleOwner import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign @@ -59,6 +57,7 @@ import androidx.compose.ui.text.style.TextOverflow import com.android.settings.R import com.android.settings.SidecarFragment import com.android.settings.network.telephony.SubscriptionActionDialogActivity +import com.android.settings.network.telephony.ToggleSubscriptionDialogActivity import com.android.settings.spa.SpaActivity.Companion.startSpaActivity import com.android.settings.spa.network.SimOnboardingPageProvider.getRoute import com.android.settingslib.spa.SpaBaseDialogActivity @@ -79,7 +78,7 @@ class SimOnboardingActivity : SpaBaseDialogActivity() { lateinit var scope: CoroutineScope lateinit var showBottomSheet: MutableState lateinit var showError: MutableState - lateinit var showDialog: MutableState + lateinit var showProgressDialog: MutableState private var switchToEuiccSubscriptionSidecar: SwitchToEuiccSubscriptionSidecar? = null private var switchToRemovableSlotSidecar: SwitchToRemovableSlotSidecar? = null @@ -101,6 +100,16 @@ class SimOnboardingActivity : SpaBaseDialogActivity() { return } + if (onboardingService.activeSubInfoList.isEmpty()) { + // TODO: refactor and replace the ToggleSubscriptionDialogActivity + Log.e(TAG, "onboardingService.activeSubInfoList is empty" + + ", start ToggleSubscriptionDialogActivity") + this.startActivity(ToggleSubscriptionDialogActivity + .getIntent(this.applicationContext, targetSubId, true)) + finish() + return + } + switchToEuiccSubscriptionSidecar = SwitchToEuiccSubscriptionSidecar.get(fragmentManager) switchToRemovableSlotSidecar = SwitchToRemovableSlotSidecar.get(fragmentManager) enableMultiSimSidecar = EnableMultiSimSidecar.get(fragmentManager) @@ -153,7 +162,10 @@ class SimOnboardingActivity : SpaBaseDialogActivity() { } fun setProgressDialog(enable: Boolean) { - showDialog.value = enable + if (!this::showProgressDialog.isInitialized) { + return + } + showProgressDialog.value = enable val progressState = if (enable) { SubscriptionActionDialogActivity.PROGRESS_IS_SHOWING } else { @@ -165,9 +177,9 @@ class SimOnboardingActivity : SpaBaseDialogActivity() { @OptIn(ExperimentalMaterial3Api::class) @Composable override fun Content() { - showBottomSheet = remember { mutableStateOf(true) } + showBottomSheet = remember { mutableStateOf(false) } showError = remember { mutableStateOf(false) } - showDialog = remember { mutableStateOf(false) } + showProgressDialog = remember { mutableStateOf(false) } scope = rememberCoroutineScope() registerSidecarReceiverFlow() @@ -176,6 +188,11 @@ class SimOnboardingActivity : SpaBaseDialogActivity() { // show error return } + LaunchedEffect(Unit) { + if (onboardingService.activeSubInfoList.isNotEmpty()) { + showBottomSheet.value = true + } + } if (showBottomSheet.value) { var sheetState = rememberModalBottomSheetState() @@ -195,7 +212,9 @@ class SimOnboardingActivity : SpaBaseDialogActivity() { }, cancelAction = { finish() }, ) - } else { + } + + if(showProgressDialog.value) { ProgressDialogImpl() } } @@ -203,34 +222,32 @@ class SimOnboardingActivity : SpaBaseDialogActivity() { @OptIn(ExperimentalMaterial3Api::class) @Composable fun ProgressDialogImpl() { - if(showDialog.value) { - // TODO: Create the SPA's ProgressDialog and using SPA's widget - BasicAlertDialog( - onDismissRequest = {}, - modifier = Modifier.width( - getDialogWidth() - ), + // TODO: Create the SPA's ProgressDialog and using SPA's widget + BasicAlertDialog( + onDismissRequest = {}, + modifier = Modifier.width( + getDialogWidth() + ), + ) { + Surface( + color = AlertDialogDefaults.containerColor, + shape = AlertDialogDefaults.shape ) { - Surface( - color = AlertDialogDefaults.containerColor, - shape = AlertDialogDefaults.shape - ) { - Row( - modifier = Modifier + Row( + modifier = Modifier .fillMaxWidth() .padding(SettingsDimension.itemPaddingStart), - verticalAlignment = Alignment.CenterVertically - ) { - CircularProgressIndicator() - Column(modifier = Modifier - .padding(start = SettingsDimension.itemPaddingStart)) { - SettingsTitle( - stringResource( - R.string.sim_onboarding_progressbar_turning_sim_on, - onboardingService.targetSubInfo?.displayName ?: "" - ) + verticalAlignment = Alignment.CenterVertically + ) { + CircularProgressIndicator() + Column(modifier = Modifier + .padding(start = SettingsDimension.itemPaddingStart)) { + SettingsTitle( + stringResource( + R.string.sim_onboarding_progressbar_turning_sim_on, + onboardingService.targetSubInfo?.displayName ?: "" ) - } + ) } } } diff --git a/src/com/android/settings/network/SimOnboardingService.kt b/src/com/android/settings/network/SimOnboardingService.kt index d31d850f5a9..d37b2ecaecf 100644 --- a/src/com/android/settings/network/SimOnboardingService.kt +++ b/src/com/android/settings/network/SimOnboardingService.kt @@ -141,18 +141,16 @@ class SimOnboardingService { subscriptionManager = context.getSystemService(SubscriptionManager::class.java) telephonyManager = context.getSystemService(TelephonyManager::class.java) Log.d( - TAG, "startInit: targetSubId:$targetSubId" + TAG, "startInit: targetSubId:$targetSubId, activeSubInfoList: $activeSubInfoList" ) + activeSubInfoList = SubscriptionUtil.getActiveSubscriptions(subscriptionManager) + ThreadUtils.postOnBackgroundThread { - activeSubInfoList = SubscriptionUtil.getActiveSubscriptions(subscriptionManager) availableSubInfoList = SubscriptionUtil.getAvailableSubscriptions(context) targetSubInfo = availableSubInfoList.find { subInfo -> subInfo.subscriptionId == targetSubId } targetSubInfo?.let { userSelectedSubInfoList.add(it) } - Log.d( - TAG, "targetSubId: $targetSubId" + ", targetSubInfo: $targetSubInfo" + - ". activeSubInfoList: $activeSubInfoList" - ) + Log.d(TAG, "targetSubId: $targetSubId , targetSubInfo: $targetSubInfo") slotInfoList = telephonyManager?.uiccSlotsInfo?.toList() ?: listOf() Log.d(TAG, "slotInfoList: $slotInfoList.") uiccCardInfoList = telephonyManager?.uiccCardsInfo!! From bb7360b1481011846396c404b6867c327ff86055 Mon Sep 17 00:00:00 2001 From: songferngwang Date: Wed, 28 Feb 2024 21:40:07 +0000 Subject: [PATCH 3/3] Fix PrimarySim show the same sim in the preference list Bug: 327425969 Test: manual test, verify the UI Change-Id: I0d3c2163a43a00ec0e4e627b34281e95cc611751 --- src/com/android/settings/network/SimOnboardingService.kt | 8 ++++++-- .../settings/spa/network/SimOnboardingPageProvider.kt | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/network/SimOnboardingService.kt b/src/com/android/settings/network/SimOnboardingService.kt index d37b2ecaecf..5387ad45d8d 100644 --- a/src/com/android/settings/network/SimOnboardingService.kt +++ b/src/com/android/settings/network/SimOnboardingService.kt @@ -219,8 +219,12 @@ class SimOnboardingService { return renameMutableMap[subInfo.subscriptionId] ?: subInfo.displayName.toString() } - fun addCurrentItemForSelectedSim(){ - userSelectedSubInfoList.addAll(activeSubInfoList) + fun addCurrentItemForSelectedSim() { + if (userSelectedSubInfoList.size < getActiveModemCount) { + userSelectedSubInfoList.addAll(activeSubInfoList) + Log.d(TAG, "addCurrentItemForSelectedSim: userSelectedSubInfoList:" + + ", $userSelectedSubInfoList") + } } fun addItemForSelectedSim(selectedSubInfo: SubscriptionInfo) { diff --git a/src/com/android/settings/spa/network/SimOnboardingPageProvider.kt b/src/com/android/settings/spa/network/SimOnboardingPageProvider.kt index c60ac883637..cc17f93e424 100644 --- a/src/com/android/settings/spa/network/SimOnboardingPageProvider.kt +++ b/src/com/android/settings/spa/network/SimOnboardingPageProvider.kt @@ -24,6 +24,7 @@ import android.os.Bundle import android.util.Log import androidx.annotation.VisibleForTesting import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.platform.LocalContext import androidx.navigation.NavHostController import androidx.navigation.NavType @@ -101,10 +102,13 @@ fun PageImpl(onboardingService:SimOnboardingService,navHostController: NavHostCo ) { composable(route = SimOnboardingScreen.LabelSim.name) { val nextPage = - if (onboardingService.isMultipleEnabledProfilesSupported && onboardingService.isAllOfSlotAssigned) { + if (onboardingService.isMultipleEnabledProfilesSupported + && onboardingService.isAllOfSlotAssigned) { SimOnboardingScreen.SelectSim.name } else { - onboardingService.addCurrentItemForSelectedSim() + LaunchedEffect(Unit) { + onboardingService.addCurrentItemForSelectedSim() + } SimOnboardingScreen.PrimarySim.name } SimOnboardingLabelSimImpl(