Merge "Automatically save on return" into main

This commit is contained in:
Charlotte Lu
2023-11-28 06:21:03 +00:00
committed by Android (Google) Code Review
2 changed files with 18 additions and 13 deletions

View File

@@ -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,21 +98,20 @@ fun ApnPage(apnDataInit: ApnData, apnDataCur: MutableState<ApnData>, uriInit: Ur
val networkTypeSelectedOptionsState = remember {
getNetworkTypeSelectedOptionsState(apnData.networkType)
}
OnBackEffect{
validateAndSaveApnData(
apnDataInit,
apnData,
context,
uriInit,
networkTypeSelectedOptionsState
)
}
val navController = LocalNavController.current
RegularScaffold(
title = if(apnDataInit.newApn) stringResource(id = R.string.apn_add) else stringResource(id = R.string.apn_edit),
actions = {
IconButton(onClick = {
validateAndSaveApnData(
apnDataInit,
apnData,
context,
uriInit,
networkTypeSelectedOptionsState
)
}) { Icon(imageVector = Icons.Outlined.Done, contentDescription = "Save APN") }
}
) {
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()
}
}

View File

@@ -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