From 6d0b41af5a9f58f23d8974d3fa3caac796124a0b Mon Sep 17 00:00:00 2001 From: songferngwang Date: Mon, 19 Feb 2024 02:58:43 +0000 Subject: [PATCH] [SimUiEnhancement] Fix Automatic Data switch UI at SimOnboarding - Automatic Data switch can't set value to framework, since the nonDds is -1 - update the ProgressDialog as compose UI Bug: 318310357 Bug: 298898436 Bug: 298891941 Test: Build pass Change-Id: Ifeca38b42b3a51e8a967c0e744eeae06338f6ddc --- .../settings/network/SimOnboardingActivity.kt | 56 +++++++++++++------ .../settings/network/SimOnboardingService.kt | 35 +++++++----- .../spa/network/SimOnboardingLabelSimTest.kt | 1 - .../network/SimOnboardingPageProviderTest.kt | 1 - .../network/SimOnboardingPrimarySimTest.kt | 1 - .../spa/network/SimOnboardingSelectSimTest.kt | 1 - 6 files changed, 60 insertions(+), 35 deletions(-) diff --git a/src/com/android/settings/network/SimOnboardingActivity.kt b/src/com/android/settings/network/SimOnboardingActivity.kt index f5dc88667fb..abeeb6c733a 100644 --- a/src/com/android/settings/network/SimOnboardingActivity.kt +++ b/src/com/android/settings/network/SimOnboardingActivity.kt @@ -22,19 +22,25 @@ import android.content.Intent import android.os.Bundle import android.telephony.SubscriptionManager import android.util.Log -import android.view.MotionEvent import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.SignalCellularAlt +import androidx.compose.material3.AlertDialogDefaults +import androidx.compose.material3.BasicAlertDialog import androidx.compose.material3.Button +import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ModalBottomSheet import androidx.compose.material3.SheetState +import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable @@ -58,6 +64,7 @@ import com.android.settings.spa.network.SimOnboardingPageProvider.getRoute import com.android.settingslib.spa.SpaBaseDialogActivity import com.android.settingslib.spa.framework.theme.SettingsDimension import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle +import com.android.settingslib.spa.widget.dialog.getDialogWidth import com.android.settingslib.spa.widget.ui.SettingsTitle import com.android.settingslib.spaprivileged.framework.common.userManager import kotlinx.coroutines.CoroutineScope @@ -193,26 +200,43 @@ class SimOnboardingActivity : SpaBaseDialogActivity() { } } + @OptIn(ExperimentalMaterial3Api::class) @Composable fun ProgressDialogImpl() { - // TODO: 1. Create the SPA's ProgressDialog and using SPA's widget - val dialog: ProgressDialog = object : ProgressDialog(this) { - override fun onTouchEvent(event: MotionEvent): Boolean { - return true + if(showDialog.value) { + // TODO: Create the SPA's ProgressDialog and using SPA's widget + BasicAlertDialog( + onDismissRequest = {}, + modifier = Modifier.width( + getDialogWidth() + ), + ) { + Surface( + color = AlertDialogDefaults.containerColor, + shape = AlertDialogDefaults.shape + ) { + 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 ?: "" + ) + ) + } + } + } } } - dialog.setMessage( - stringResource( - R.string.sim_onboarding_progressbar_turning_sim_on, - onboardingService.targetSubInfo?.displayName ?: "" - ) - ) - dialog.setCancelable(false) - - if(showDialog.value) { - dialog.show() - } } + @Composable fun registerSidecarReceiverFlow(){ switchToEuiccSubscriptionSidecar?.sidecarReceiverFlow() diff --git a/src/com/android/settings/network/SimOnboardingService.kt b/src/com/android/settings/network/SimOnboardingService.kt index 86793851f71..f33abf67b64 100644 --- a/src/com/android/settings/network/SimOnboardingService.kt +++ b/src/com/android/settings/network/SimOnboardingService.kt @@ -45,7 +45,6 @@ class SimOnboardingService { var activeSubInfoList: List = listOf() var slotInfoList: List = listOf() var uiccCardInfoList: List = listOf() - var selectedSubInfoList: MutableList = mutableListOf() var targetPrimarySimCalls: Int = SubscriptionManager.INVALID_SUBSCRIPTION_ID var targetPrimarySimTexts: Int = SubscriptionManager.INVALID_SUBSCRIPTION_ID var targetPrimarySimMobileData: Int = SubscriptionManager.INVALID_SUBSCRIPTION_ID @@ -56,10 +55,8 @@ class SimOnboardingService { Log.w(TAG, "No DDS") return SubscriptionManager.INVALID_SUBSCRIPTION_ID } - return selectedSubInfoList - .filter { info -> - (info.simSlotIndex != -1) && (info.subscriptionId != targetPrimarySimMobileData) - } + return userSelectedSubInfoList + .filter { info -> info.subscriptionId != targetPrimarySimMobileData } .map { it.subscriptionId } .firstOrNull() ?: SubscriptionManager.INVALID_SUBSCRIPTION_ID } @@ -118,7 +115,6 @@ class SimOnboardingService { && targetSubInfo != null && activeSubInfoList.isNotEmpty() && slotInfoList.isNotEmpty() - && selectedSubInfoList.isNotEmpty() } fun clear() { @@ -128,7 +124,6 @@ class SimOnboardingService { activeSubInfoList = listOf() slotInfoList = listOf() uiccCardInfoList = listOf() - selectedSubInfoList = mutableListOf() targetPrimarySimCalls = -1 targetPrimarySimTexts = -1 targetPrimarySimMobileData = -1 @@ -151,7 +146,8 @@ class SimOnboardingService { ThreadUtils.postOnBackgroundThread { activeSubInfoList = SubscriptionUtil.getActiveSubscriptions(subscriptionManager) availableSubInfoList = SubscriptionUtil.getAvailableSubscriptions(context) - targetSubInfo = availableSubInfoList.find { subInfo -> subInfo.subscriptionId == targetSubId } + targetSubInfo = + availableSubInfoList.find { subInfo -> subInfo.subscriptionId == targetSubId } targetSubInfo?.let { userSelectedSubInfoList.add(it) } Log.d( TAG, "targetSubId: $targetSubId" + ", targetSubInfo: $targetSubInfo" + @@ -186,7 +182,6 @@ class SimOnboardingService { targetSubInfo?.let { list.add(it) } } - Log.d(TAG, "list: $list") return list.toList() } @@ -206,7 +201,10 @@ class SimOnboardingService { return } renameMutableMap[subInfo.subscriptionId] = newName - Log.d(TAG, "renameMutableMap add ${subInfo.subscriptionId} & $newName into: $renameMutableMap") + Log.d( + TAG, + "renameMutableMap add ${subInfo.subscriptionId} & $newName into: $renameMutableMap" + ) } fun getSubscriptionInfoDisplayName(subInfo: SubscriptionInfo): String { @@ -278,11 +276,18 @@ class SimOnboardingService { targetPrimarySimMobileData ) - - val telephonyManagerForNonDds: TelephonyManager? = - context.getSystemService(TelephonyManager::class.java) - ?.createForSubscriptionId(targetNonDds) - setAutomaticData(telephonyManagerForNonDds, targetPrimarySimAutoDataSwitch) + var nonDds = targetNonDds + Log.d( + TAG, + "setAutomaticData: targetNonDds: $nonDds," + + " targetPrimarySimAutoDataSwitch: $targetPrimarySimAutoDataSwitch" + ) + if (nonDds != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + val telephonyManagerForNonDds: TelephonyManager? = + context.getSystemService(TelephonyManager::class.java) + ?.createForSubscriptionId(nonDds) + setAutomaticData(telephonyManagerForNonDds, targetPrimarySimAutoDataSwitch) + } // no next action, send finish callback(SimOnboardingActivity.CALLBACK_FINISH) diff --git a/tests/spa_unit/src/com/android/settings/spa/network/SimOnboardingLabelSimTest.kt b/tests/spa_unit/src/com/android/settings/spa/network/SimOnboardingLabelSimTest.kt index 8e12b20cd98..44a5037e576 100644 --- a/tests/spa_unit/src/com/android/settings/spa/network/SimOnboardingLabelSimTest.kt +++ b/tests/spa_unit/src/com/android/settings/spa/network/SimOnboardingLabelSimTest.kt @@ -47,7 +47,6 @@ class SimOnboardingLabelSimTest { on { activeSubInfoList }.doReturn(listOf()) on { slotInfoList }.doReturn(listOf()) on { uiccCardInfoList }.doReturn(listOf()) - on { selectedSubInfoList }.doReturn(mutableListOf()) on { targetPrimarySimCalls }.doReturn(PRIMARY_SIM_ASK_EVERY_TIME) on { targetPrimarySimTexts }.doReturn(PRIMARY_SIM_ASK_EVERY_TIME) diff --git a/tests/spa_unit/src/com/android/settings/spa/network/SimOnboardingPageProviderTest.kt b/tests/spa_unit/src/com/android/settings/spa/network/SimOnboardingPageProviderTest.kt index 82dba76c7b7..d1847c8d48f 100644 --- a/tests/spa_unit/src/com/android/settings/spa/network/SimOnboardingPageProviderTest.kt +++ b/tests/spa_unit/src/com/android/settings/spa/network/SimOnboardingPageProviderTest.kt @@ -47,7 +47,6 @@ class SimOnboardingPageProviderTest { on { activeSubInfoList }.doReturn(listOf()) on { slotInfoList }.doReturn(listOf()) on { uiccCardInfoList }.doReturn(listOf()) - on { selectedSubInfoList }.doReturn(mutableListOf()) on { targetPrimarySimCalls }.doReturn(PRIMARY_SIM_ASK_EVERY_TIME) on { targetPrimarySimTexts }.doReturn(PRIMARY_SIM_ASK_EVERY_TIME) diff --git a/tests/spa_unit/src/com/android/settings/spa/network/SimOnboardingPrimarySimTest.kt b/tests/spa_unit/src/com/android/settings/spa/network/SimOnboardingPrimarySimTest.kt index 9cb8909a542..d9c762db332 100644 --- a/tests/spa_unit/src/com/android/settings/spa/network/SimOnboardingPrimarySimTest.kt +++ b/tests/spa_unit/src/com/android/settings/spa/network/SimOnboardingPrimarySimTest.kt @@ -48,7 +48,6 @@ class SimOnboardingPrimarySimTest { on { activeSubInfoList }.doReturn(listOf()) on { slotInfoList }.doReturn(listOf()) on { uiccCardInfoList }.doReturn(listOf()) - on { selectedSubInfoList }.doReturn(mutableListOf()) on { targetPrimarySimCalls }.doReturn(PRIMARY_SIM_ASK_EVERY_TIME) on { targetPrimarySimTexts }.doReturn(PRIMARY_SIM_ASK_EVERY_TIME) diff --git a/tests/spa_unit/src/com/android/settings/spa/network/SimOnboardingSelectSimTest.kt b/tests/spa_unit/src/com/android/settings/spa/network/SimOnboardingSelectSimTest.kt index 45667ef00ef..e063f69717d 100644 --- a/tests/spa_unit/src/com/android/settings/spa/network/SimOnboardingSelectSimTest.kt +++ b/tests/spa_unit/src/com/android/settings/spa/network/SimOnboardingSelectSimTest.kt @@ -47,7 +47,6 @@ class SimOnboardingSelectSimTest { on { activeSubInfoList }.doReturn(listOf()) on { slotInfoList }.doReturn(listOf()) on { uiccCardInfoList }.doReturn(listOf()) - on { selectedSubInfoList }.doReturn(mutableListOf()) on { targetPrimarySimCalls }.doReturn(PRIMARY_SIM_ASK_EVERY_TIME) on { targetPrimarySimTexts }.doReturn(PRIMARY_SIM_ASK_EVERY_TIME)