Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f27877d1 authored by SongFerng Wang's avatar SongFerng Wang Committed by Android (Google) Code Review
Browse files

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
parents 7aee6730 bb7360b1
Loading
Loading
Loading
Loading
+48 −31
Original line number Diff line number Diff line
@@ -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<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 @@ 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,7 +222,6 @@ 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 = {},
@@ -235,7 +253,6 @@ class SimOnboardingActivity : SpaBaseDialogActivity() {
            }
        }
    }
    }

    @Composable
    fun registerSidecarReceiverFlow(){
+20 −8
Original line number Diff line number Diff line
@@ -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"
        )
        ThreadUtils.postOnBackgroundThread {
        activeSubInfoList = SubscriptionUtil.getActiveSubscriptions(subscriptionManager)

        ThreadUtils.postOnBackgroundThread {
            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 @@ class SimOnboardingService {
        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
@@ -212,7 +220,11 @@ class SimOnboardingService {
    }

    fun addCurrentItemForSelectedSim() {
        if (userSelectedSubInfoList.size < getActiveModemCount) {
            userSelectedSubInfoList.addAll(activeSubInfoList)
            Log.d(TAG, "addCurrentItemForSelectedSim: userSelectedSubInfoList:" +
                    ", $userSelectedSubInfoList")
        }
    }

    fun addItemForSelectedSim(selectedSubInfo: SubscriptionInfo) {
+6 −2
Original line number Diff line number Diff line
@@ -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 {
                    LaunchedEffect(Unit) {
                        onboardingService.addCurrentItemForSelectedSim()
                    }
                    SimOnboardingScreen.PrimarySim.name
                }
            SimOnboardingLabelSimImpl(
+2 −1
Original line number Diff line number Diff line
@@ -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