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
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 d31d850..d37b2ec 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!!