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

Commit c776835d authored by Charlotte Lu's avatar Charlotte Lu
Browse files

Automatically save on return

Test: Visual Test
Fix: 313008844
Change-Id: I795807d1984bbd170db3fdc9e54de700ff85ec69
parent fe934dd0
Loading
Loading
Loading
Loading
+13 −13
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import com.android.settings.network.apn.ApnNetworkTypes.getNetworkTypeDisplayNam
import com.android.settings.network.apn.ApnNetworkTypes.getNetworkTypeSelectedOptionsState
import com.android.settingslib.spa.framework.common.SettingsPageProvider
import com.android.settingslib.spa.framework.compose.LocalNavController
import com.android.settingslib.spa.framework.compose.OnBackEffect
import com.android.settingslib.spa.widget.editor.SettingsExposedDropdownMenuBox
import com.android.settingslib.spa.widget.editor.SettingsExposedDropdownMenuCheckBox
import com.android.settingslib.spa.widget.editor.SettingsOutlinedTextField
@@ -97,10 +98,7 @@ fun ApnPage(apnDataInit: ApnData, apnDataCur: MutableState<ApnData>, uriInit: Ur
    val networkTypeSelectedOptionsState = remember {
        getNetworkTypeSelectedOptionsState(apnData.networkType)
    }
    RegularScaffold(
        title = if(apnDataInit.newApn) stringResource(id = R.string.apn_add) else stringResource(id = R.string.apn_edit),
        actions = {
            IconButton(onClick = {
    OnBackEffect{
        validateAndSaveApnData(
            apnDataInit,
            apnData,
@@ -108,10 +106,12 @@ fun ApnPage(apnDataInit: ApnData, apnDataCur: MutableState<ApnData>, uriInit: Ur
            uriInit,
            networkTypeSelectedOptionsState
        )
            }) { Icon(imageVector = Icons.Outlined.Done, contentDescription = "Save APN") }
    }
    val navController = LocalNavController.current
    RegularScaffold(
        title = if(apnDataInit.newApn) stringResource(id = R.string.apn_add) else stringResource(id = R.string.apn_edit),
    ) {
        Column() {
        Column {
            SettingsOutlinedTextField(
                value = apnData.name,
                label = stringResource(R.string.apn_name),
@@ -203,12 +203,12 @@ fun ApnPage(apnDataInit: ApnData, apnDataCur: MutableState<ApnData>, uriInit: Ur
                enabled = apnData.networkTypeEnabled
            ) {}
            if (!apnData.newApn) {
                val navController = LocalNavController.current
                Preference(
                    object : PreferenceModel {
                        override val title = stringResource(R.string.menu_delete)
                        override val onClick = {
                            deleteApn(uriInit, context)
                            apnData = apnData.copy(saveEnabled = false)
                            navController.navigateBack()
                        }
                    }
+5 −0
Original line number Diff line number Diff line
@@ -69,6 +69,7 @@ data class ApnData(
    val networkTypeEnabled: Boolean = true,
    val newApn: Boolean = false,
    val subId: Int = -1,
    val saveEnabled: Boolean = true,
    val customizedConfig: CustomizedConfig = CustomizedConfig()
) {
    fun getContentValues(context: Context): ContentValues {
@@ -230,6 +231,10 @@ fun validateAndSaveApnData(
    uriInit: Uri,
    networkTypeSelectedOptionsState: SnapshotStateList<Int>
): Boolean {
    // Can not be saved
    if (!apnData.saveEnabled) {
        return false
    }
    // Nothing to do if it's a read only APN
    if (apnData.customizedConfig.readOnlyApn) {
        return true