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
This commit is contained in:
SongFerng Wang
2024-02-29 03:27:42 +00:00
committed by Android (Google) Code Review
4 changed files with 76 additions and 42 deletions

View File

@@ -16,7 +16,6 @@
package com.android.settings.network package com.android.settings.network
import android.app.ProgressDialog
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
@@ -51,7 +50,6 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign 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.R
import com.android.settings.SidecarFragment import com.android.settings.SidecarFragment
import com.android.settings.network.telephony.SubscriptionActionDialogActivity 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.SpaActivity.Companion.startSpaActivity
import com.android.settings.spa.network.SimOnboardingPageProvider.getRoute import com.android.settings.spa.network.SimOnboardingPageProvider.getRoute
import com.android.settingslib.spa.SpaBaseDialogActivity import com.android.settingslib.spa.SpaBaseDialogActivity
@@ -79,7 +78,7 @@ class SimOnboardingActivity : SpaBaseDialogActivity() {
lateinit var scope: CoroutineScope lateinit var scope: CoroutineScope
lateinit var showBottomSheet: MutableState<Boolean> lateinit var showBottomSheet: MutableState<Boolean>
lateinit var showError: MutableState<Boolean> lateinit var showError: MutableState<Boolean>
lateinit var showDialog: MutableState<Boolean> lateinit var showProgressDialog: MutableState<Boolean>
private var switchToEuiccSubscriptionSidecar: SwitchToEuiccSubscriptionSidecar? = null private var switchToEuiccSubscriptionSidecar: SwitchToEuiccSubscriptionSidecar? = null
private var switchToRemovableSlotSidecar: SwitchToRemovableSlotSidecar? = null private var switchToRemovableSlotSidecar: SwitchToRemovableSlotSidecar? = null
@@ -101,6 +100,16 @@ class SimOnboardingActivity : SpaBaseDialogActivity() {
return 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) switchToEuiccSubscriptionSidecar = SwitchToEuiccSubscriptionSidecar.get(fragmentManager)
switchToRemovableSlotSidecar = SwitchToRemovableSlotSidecar.get(fragmentManager) switchToRemovableSlotSidecar = SwitchToRemovableSlotSidecar.get(fragmentManager)
enableMultiSimSidecar = EnableMultiSimSidecar.get(fragmentManager) enableMultiSimSidecar = EnableMultiSimSidecar.get(fragmentManager)
@@ -153,7 +162,10 @@ class SimOnboardingActivity : SpaBaseDialogActivity() {
} }
fun setProgressDialog(enable: Boolean) { fun setProgressDialog(enable: Boolean) {
showDialog.value = enable if (!this::showProgressDialog.isInitialized) {
return
}
showProgressDialog.value = enable
val progressState = if (enable) { val progressState = if (enable) {
SubscriptionActionDialogActivity.PROGRESS_IS_SHOWING SubscriptionActionDialogActivity.PROGRESS_IS_SHOWING
} else { } else {
@@ -165,9 +177,9 @@ class SimOnboardingActivity : SpaBaseDialogActivity() {
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
override fun Content() { override fun Content() {
showBottomSheet = remember { mutableStateOf(true) } showBottomSheet = remember { mutableStateOf(false) }
showError = remember { mutableStateOf(false) } showError = remember { mutableStateOf(false) }
showDialog = remember { mutableStateOf(false) } showProgressDialog = remember { mutableStateOf(false) }
scope = rememberCoroutineScope() scope = rememberCoroutineScope()
registerSidecarReceiverFlow() registerSidecarReceiverFlow()
@@ -176,6 +188,11 @@ class SimOnboardingActivity : SpaBaseDialogActivity() {
// show error // show error
return return
} }
LaunchedEffect(Unit) {
if (onboardingService.activeSubInfoList.isNotEmpty()) {
showBottomSheet.value = true
}
}
if (showBottomSheet.value) { if (showBottomSheet.value) {
var sheetState = rememberModalBottomSheetState() var sheetState = rememberModalBottomSheetState()
@@ -195,7 +212,9 @@ class SimOnboardingActivity : SpaBaseDialogActivity() {
}, },
cancelAction = { finish() }, cancelAction = { finish() },
) )
} else { }
if(showProgressDialog.value) {
ProgressDialogImpl() ProgressDialogImpl()
} }
} }
@@ -203,7 +222,6 @@ class SimOnboardingActivity : SpaBaseDialogActivity() {
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
fun ProgressDialogImpl() { fun ProgressDialogImpl() {
if(showDialog.value) {
// TODO: Create the SPA's ProgressDialog and using SPA's widget // TODO: Create the SPA's ProgressDialog and using SPA's widget
BasicAlertDialog( BasicAlertDialog(
onDismissRequest = {}, onDismissRequest = {},
@@ -235,7 +253,6 @@ class SimOnboardingActivity : SpaBaseDialogActivity() {
} }
} }
} }
}
@Composable @Composable
fun registerSidecarReceiverFlow(){ fun registerSidecarReceiverFlow(){

View File

@@ -141,18 +141,16 @@ class SimOnboardingService {
subscriptionManager = context.getSystemService(SubscriptionManager::class.java) subscriptionManager = context.getSystemService(SubscriptionManager::class.java)
telephonyManager = context.getSystemService(TelephonyManager::class.java) telephonyManager = context.getSystemService(TelephonyManager::class.java)
Log.d( Log.d(
TAG, "startInit: targetSubId:$targetSubId" TAG, "startInit: targetSubId:$targetSubId, activeSubInfoList: $activeSubInfoList"
) )
ThreadUtils.postOnBackgroundThread {
activeSubInfoList = SubscriptionUtil.getActiveSubscriptions(subscriptionManager) activeSubInfoList = SubscriptionUtil.getActiveSubscriptions(subscriptionManager)
ThreadUtils.postOnBackgroundThread {
availableSubInfoList = SubscriptionUtil.getAvailableSubscriptions(context) availableSubInfoList = SubscriptionUtil.getAvailableSubscriptions(context)
targetSubInfo = targetSubInfo =
availableSubInfoList.find { subInfo -> subInfo.subscriptionId == targetSubId } availableSubInfoList.find { subInfo -> subInfo.subscriptionId == targetSubId }
targetSubInfo?.let { userSelectedSubInfoList.add(it) } targetSubInfo?.let { userSelectedSubInfoList.add(it) }
Log.d( Log.d(TAG, "targetSubId: $targetSubId , targetSubInfo: $targetSubInfo")
TAG, "targetSubId: $targetSubId" + ", targetSubInfo: $targetSubInfo" +
". activeSubInfoList: $activeSubInfoList"
)
slotInfoList = telephonyManager?.uiccSlotsInfo?.toList() ?: listOf() slotInfoList = telephonyManager?.uiccSlotsInfo?.toList() ?: listOf()
Log.d(TAG, "slotInfoList: $slotInfoList.") Log.d(TAG, "slotInfoList: $slotInfoList.")
uiccCardInfoList = telephonyManager?.uiccCardsInfo!! uiccCardInfoList = telephonyManager?.uiccCardsInfo!!
@@ -196,6 +194,16 @@ class SimOnboardingService {
return userSelectedSubInfoList.toList() 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) { fun addItemForRenaming(subInfo: SubscriptionInfo, newName: String) {
if (subInfo.displayName == newName) { if (subInfo.displayName == newName) {
return return
@@ -211,8 +219,12 @@ class SimOnboardingService {
return renameMutableMap[subInfo.subscriptionId] ?: subInfo.displayName.toString() return renameMutableMap[subInfo.subscriptionId] ?: subInfo.displayName.toString()
} }
fun addCurrentItemForSelectedSim(){ fun addCurrentItemForSelectedSim() {
if (userSelectedSubInfoList.size < getActiveModemCount) {
userSelectedSubInfoList.addAll(activeSubInfoList) userSelectedSubInfoList.addAll(activeSubInfoList)
Log.d(TAG, "addCurrentItemForSelectedSim: userSelectedSubInfoList:" +
", $userSelectedSubInfoList")
}
} }
fun addItemForSelectedSim(selectedSubInfo: SubscriptionInfo) { fun addItemForSelectedSim(selectedSubInfo: SubscriptionInfo) {

View File

@@ -24,6 +24,7 @@ import android.os.Bundle
import android.util.Log import android.util.Log
import androidx.annotation.VisibleForTesting import androidx.annotation.VisibleForTesting
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.navigation.NavHostController import androidx.navigation.NavHostController
import androidx.navigation.NavType import androidx.navigation.NavType
@@ -101,10 +102,13 @@ fun PageImpl(onboardingService:SimOnboardingService,navHostController: NavHostCo
) { ) {
composable(route = SimOnboardingScreen.LabelSim.name) { composable(route = SimOnboardingScreen.LabelSim.name) {
val nextPage = val nextPage =
if (onboardingService.isMultipleEnabledProfilesSupported && onboardingService.isAllOfSlotAssigned) { if (onboardingService.isMultipleEnabledProfilesSupported
&& onboardingService.isAllOfSlotAssigned) {
SimOnboardingScreen.SelectSim.name SimOnboardingScreen.SelectSim.name
} else { } else {
LaunchedEffect(Unit) {
onboardingService.addCurrentItemForSelectedSim() onboardingService.addCurrentItemForSelectedSim()
}
SimOnboardingScreen.PrimarySim.name SimOnboardingScreen.PrimarySim.name
} }
SimOnboardingLabelSimImpl( SimOnboardingLabelSimImpl(

View File

@@ -77,7 +77,8 @@ fun SimOnboardingPrimarySimImpl(
SettingsBody(stringResource(id = R.string.sim_onboarding_primary_sim_msg)) SettingsBody(stringResource(id = R.string.sim_onboarding_primary_sim_msg))
} }
var selectedSubscriptionInfoList = onboardingService.getSelectedSubscriptionInfoList() var selectedSubscriptionInfoList =
onboardingService.getSelectedSubscriptionInfoListWithRenaming()
callsSelectedId.intValue = onboardingService.targetPrimarySimCalls callsSelectedId.intValue = onboardingService.targetPrimarySimCalls
textsSelectedId.intValue = onboardingService.targetPrimarySimTexts textsSelectedId.intValue = onboardingService.targetPrimarySimTexts
mobileDataSelectedId.intValue = onboardingService.targetPrimarySimMobileData mobileDataSelectedId.intValue = onboardingService.targetPrimarySimMobileData