Merge changes I0d3c2163,I5602713b,Ica2a26ea into main
* changes:
Fix PrimarySim show the same sim in the preference list
Start simOnboarding when active sim > 0
[SimOnbarding] correct the sim name at the Primary Sim
diff --git a/src/com/android/settings/network/SimOnboardingActivity.kt b/src/com/android/settings/network/SimOnboardingActivity.kt
index abeeb6c..6347d7b 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.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 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 @@
lateinit var scope: CoroutineScope
lateinit var showBottomSheet: MutableState<Boolean>
lateinit var showError: MutableState<Boolean>
- lateinit var showDialog: MutableState<Boolean>
+ lateinit var showProgressDialog: MutableState<Boolean>
private var switchToEuiccSubscriptionSidecar: SwitchToEuiccSubscriptionSidecar? = null
private var switchToRemovableSlotSidecar: SwitchToRemovableSlotSidecar? = null
@@ -101,6 +100,16 @@
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 @@
}
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 @@
@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 @@
// show error
return
}
+ LaunchedEffect(Unit) {
+ if (onboardingService.activeSubInfoList.isNotEmpty()) {
+ showBottomSheet.value = true
+ }
+ }
if (showBottomSheet.value) {
var sheetState = rememberModalBottomSheetState()
@@ -195,7 +212,9 @@
},
cancelAction = { finish() },
)
- } else {
+ }
+
+ if(showProgressDialog.value) {
ProgressDialogImpl()
}
}
@@ -203,34 +222,32 @@
@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 f33abf6..5387ad4 100644
--- a/src/com/android/settings/network/SimOnboardingService.kt
+++ b/src/com/android/settings/network/SimOnboardingService.kt
@@ -141,18 +141,16 @@
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!!
@@ -196,6 +194,16 @@
return userSelectedSubInfoList.toList()
}
+ fun getSelectedSubscriptionInfoListWithRenaming(): List<SubscriptionInfo> {
+ 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
@@ -211,8 +219,12 @@
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 c60ac88..cc17f93 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.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 @@
) {
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(
diff --git a/src/com/android/settings/spa/network/SimOnboardingPrimarySim.kt b/src/com/android/settings/spa/network/SimOnboardingPrimarySim.kt
index a5f55d0..b984966 100644
--- a/src/com/android/settings/spa/network/SimOnboardingPrimarySim.kt
+++ b/src/com/android/settings/spa/network/SimOnboardingPrimarySim.kt
@@ -77,7 +77,8 @@
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