[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
This commit is contained in:
@@ -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
|
||||
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.setMessage(
|
||||
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()
|
||||
|
@@ -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
|
||||
)
|
||||
|
||||
|
||||
val telephonyManagerForNonDds: TelephonyManager? =
|
||||
context.getSystemService(TelephonyManager::class.java)
|
||||
?.createForSubscriptionId(targetNonDds)
|
||||
setAutomaticData(telephonyManagerForNonDds, targetPrimarySimAutoDataSwitch)
|
||||
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(nonDds)
|
||||
setAutomaticData(telephonyManagerForNonDds, targetPrimarySimAutoDataSwitch)
|
||||
}
|
||||
|
||||
// no next action, send finish
|
||||
callback(SimOnboardingActivity.CALLBACK_FINISH)
|
||||
|
@@ -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)
|
||||
|
@@ -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)
|
||||
|
@@ -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)
|
||||
|
@@ -47,7 +47,6 @@ class SimOnboardingSelectSimTest {
|
||||
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)
|
||||
|
Reference in New Issue
Block a user