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

Commit 6d0b41af authored by songferngwang's avatar songferngwang
Browse files

[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
parent a70f208d
Loading
Loading
Loading
Loading
+40 −16
Original line number Diff line number Diff line
@@ -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
            }
        }
        dialog.setMessage(
        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.setCancelable(false)

        if(showDialog.value) {
            dialog.show()
                        }
                    }
                }
            }
        }
    }

    @Composable
    fun registerSidecarReceiverFlow(){
        switchToEuiccSubscriptionSidecar?.sidecarReceiverFlow()
+20 −15
Original line number Diff line number Diff line
@@ -45,7 +45,6 @@ class SimOnboardingService {
    var activeSubInfoList: List<SubscriptionInfo> = listOf()
    var slotInfoList: List<UiccSlotInfo> = listOf()
    var uiccCardInfoList: List<UiccCardInfo> = listOf()
    var selectedSubInfoList: MutableList<SubscriptionInfo> = 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
            )


            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(targetNonDds)
                        ?.createForSubscriptionId(nonDds)
                setAutomaticData(telephonyManagerForNonDds, targetPrimarySimAutoDataSwitch)
            }

            // no next action, send finish
            callback(SimOnboardingActivity.CALLBACK_FINISH)
+0 −1
Original line number Diff line number Diff line
@@ -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)
+0 −1
Original line number Diff line number Diff line
@@ -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)
+0 −1
Original line number Diff line number Diff line
@@ -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)
Loading