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

Commit 9f02af79 authored by Chaohui Wang's avatar Chaohui Wang Committed by Android (Google) Code Review
Browse files

Merge "Make SimOnboardingPageProvider Expressive" into main

parents 573919d3 0684bed2
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -40,7 +40,8 @@ import com.android.settingslib.spa.widget.editor.SettingsOutlinedTextField
import com.android.settingslib.spa.widget.preference.Preference
import com.android.settingslib.spa.widget.preference.PreferenceModel
import com.android.settingslib.spa.widget.scaffold.BottomAppBarButton
import com.android.settingslib.spa.widget.scaffold.SuwScaffold
import com.android.settingslib.spa.widget.scaffold.GlifScaffold
import com.android.settingslib.spa.widget.ui.Category

/**
 * the sim onboarding label compose
@@ -51,9 +52,10 @@ fun SimOnboardingLabelSimImpl(
    cancelAction: () -> Unit,
    onboardingService: SimOnboardingService
) {
    SuwScaffold(
    GlifScaffold(
        imageVector = Icons.Outlined.SignalCellularAlt,
        title = stringResource(R.string.sim_onboarding_label_sim_title),
        description = stringResource(R.string.sim_onboarding_label_sim_msg),
        actionButton = BottomAppBarButton(
            text = stringResource(R.string.sim_onboarding_next),
            onClick = nextAction
@@ -63,14 +65,12 @@ fun SimOnboardingLabelSimImpl(
            onClick = cancelAction
        ),
    ) {
        LabelSimBody(onboardingService)
        Category { LabelSimBody(onboardingService) }
    }
}

@Composable
private fun LabelSimBody(onboardingService: SimOnboardingService) {
    SimOnboardingMessage(stringResource(R.string.sim_onboarding_label_sim_msg))

    for (subInfo in onboardingService.getSelectableSubscriptionInfoList()) {
        LabelSimPreference(onboardingService, subInfo)
    }
+0 −18
Original line number Diff line number Diff line
@@ -21,11 +21,8 @@ import android.content.Context
import android.content.ContextWrapper
import android.os.Bundle
import androidx.annotation.VisibleForTesting
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.navigation.NavHostController
import androidx.navigation.NavType
@@ -41,10 +38,8 @@ import com.android.settingslib.spa.framework.common.SettingsEntryBuilder
import com.android.settingslib.spa.framework.common.SettingsPageProvider
import com.android.settingslib.spa.framework.common.createSettingsPage
import com.android.settingslib.spa.framework.compose.navigator
import com.android.settingslib.spa.framework.theme.SettingsDimension
import com.android.settingslib.spa.widget.preference.Preference
import com.android.settingslib.spa.widget.preference.PreferenceModel
import com.android.settingslib.spa.widget.ui.SettingsBody

const val SUB_ID = "subId"

@@ -141,16 +136,3 @@ fun PageImpl(onboardingService:SimOnboardingService,navHostController: NavHostCo
        }
    }
}

@Composable
fun SimOnboardingMessage(text: String) {
    Column(
        Modifier.padding(
            start = SettingsDimension.itemPaddingStart,
            end = SettingsDimension.itemPaddingEnd,
            bottom = SettingsDimension.paddingExtraLarge,
        )
    ) {
        SettingsBody(text)
    }
}
+32 −27
Original line number Diff line number Diff line
@@ -35,7 +35,8 @@ import com.android.settingslib.spa.widget.preference.ListPreference
import com.android.settingslib.spa.widget.preference.ListPreferenceModel
import com.android.settingslib.spa.widget.preference.ListPreferenceOption
import com.android.settingslib.spa.widget.scaffold.BottomAppBarButton
import com.android.settingslib.spa.widget.scaffold.SuwScaffold
import com.android.settingslib.spa.widget.scaffold.GlifScaffold
import com.android.settingslib.spa.widget.ui.Category
import com.android.settingslib.spa.widget.ui.SettingsIcon
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.flow
@@ -50,9 +51,10 @@ fun SimOnboardingPrimarySimImpl(
    cancelAction: () -> Unit,
    onboardingService: SimOnboardingService
) {
    SuwScaffold(
    GlifScaffold(
        imageVector = Icons.Outlined.SignalCellularAlt,
        title = stringResource(id = R.string.sim_onboarding_primary_sim_title),
        description = stringResource(id = R.string.sim_onboarding_primary_sim_msg),
        actionButton = BottomAppBarButton(
            text = stringResource(id = R.string.done),
            onClick = nextAction
@@ -72,8 +74,6 @@ fun SimOnboardingPrimarySimImpl(
            mutableIntStateOf(SubscriptionManager.INVALID_SUBSCRIPTION_ID)
        }

        SimOnboardingMessage(stringResource(id = R.string.sim_onboarding_primary_sim_msg))

        val context = LocalContext.current
        val primarySimInfo = remember {
            flow {
@@ -81,13 +81,14 @@ fun SimOnboardingPrimarySimImpl(
                    onboardingService.getSelectedSubscriptionInfoListWithRenaming()
                emit(PrimarySimRepository(context).getPrimarySimInfo(selectableSubInfoList))
            }.flowOn(Dispatchers.Default)
        }.collectAsStateWithLifecycle(initialValue = null).value ?: return@SuwScaffold
        }.collectAsStateWithLifecycle(initialValue = null).value ?: return@GlifScaffold
        callsSelectedId.intValue = onboardingService.targetPrimarySimCalls
        textsSelectedId.intValue = onboardingService.targetPrimarySimTexts
        mobileDataSelectedId.intValue = onboardingService.targetPrimarySimMobileData
        val isAutoDataEnabled by
            onboardingService.targetPrimarySimAutoDataSwitch
                .collectAsStateWithLifecycle(initialValue = null)
        Category {
            PrimarySimImpl(
                primarySimInfo = primarySimInfo,
                callsSelectedId = callsSelectedId,
@@ -106,12 +107,16 @@ fun SimOnboardingPrimarySimImpl(
                    onboardingService.targetPrimarySimMobileData = it
                }
            )
        AutomaticDataSwitchingPreference(isAutoDataEnabled = { isAutoDataEnabled },
        }
        Category {
            AutomaticDataSwitchingPreference(
                isAutoDataEnabled = { isAutoDataEnabled },
                setAutoDataEnabled = { newEnabled ->
                    onboardingService.targetPrimarySimAutoDataSwitch.value = newEnabled
                })
        }
    }
}

@Composable
fun CreatePrimarySimListPreference(
+5 −5
Original line number Diff line number Diff line
@@ -29,7 +29,8 @@ import com.android.settings.network.SimOnboardingService
import com.android.settingslib.spa.widget.preference.CheckboxPreference
import com.android.settingslib.spa.widget.preference.CheckboxPreferenceModel
import com.android.settingslib.spa.widget.scaffold.BottomAppBarButton
import com.android.settingslib.spa.widget.scaffold.SuwScaffold
import com.android.settingslib.spa.widget.scaffold.GlifScaffold
import com.android.settingslib.spa.widget.ui.Category

/**
 * the sim onboarding select sim compose
@@ -42,9 +43,10 @@ fun SimOnboardingSelectSimImpl(
) {
    var actionButtonController = rememberSaveable { mutableStateOf(false) }

    SuwScaffold(
    GlifScaffold(
        imageVector = Icons.Outlined.SignalCellularAlt,
        title = stringResource(id = R.string.sim_onboarding_select_sim_title),
        description = stringResource(id = R.string.sim_onboarding_select_sim_msg),
        actionButton = BottomAppBarButton(
            text = stringResource(id = R.string.sim_onboarding_next),
            enabled = actionButtonController.value,
@@ -55,7 +57,7 @@ fun SimOnboardingSelectSimImpl(
            onClick = cancelAction
        ),
    ) {
        SelectSimBody(onboardingService, actionButtonController)
        Category { SelectSimBody(onboardingService, actionButtonController) }
    }
}

@@ -64,8 +66,6 @@ private fun SelectSimBody(
    onboardingService: SimOnboardingService,
    isFinished: MutableState<Boolean>
) {
    SimOnboardingMessage(stringResource(id = R.string.sim_onboarding_select_sim_msg))

    isFinished.value = onboardingService.isSimSelectionFinished
    for (subInfo in onboardingService.getSelectableSubscriptionInfoList()) {
        var title = onboardingService.getSubscriptionInfoDisplayName(subInfo)