From c776835da5a48f8c328ebe7d331c6fb45f5998dc Mon Sep 17 00:00:00 2001 From: Charlotte Lu Date: Fri, 24 Nov 2023 13:37:56 +0800 Subject: [PATCH] Automatically save on return Test: Visual Test Fix: 313008844 Change-Id: I795807d1984bbd170db3fdc9e54de700ff85ec69 --- .../network/apn/ApnEditPageProvider.kt | 26 +++++++++---------- .../android/settings/network/apn/ApnStatus.kt | 5 ++++ 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/com/android/settings/network/apn/ApnEditPageProvider.kt b/src/com/android/settings/network/apn/ApnEditPageProvider.kt index 86d7456470e..5026958cba1 100644 --- a/src/com/android/settings/network/apn/ApnEditPageProvider.kt +++ b/src/com/android/settings/network/apn/ApnEditPageProvider.kt @@ -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, 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, 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() } } diff --git a/src/com/android/settings/network/apn/ApnStatus.kt b/src/com/android/settings/network/apn/ApnStatus.kt index a479868b107..d81a8e3e956 100644 --- a/src/com/android/settings/network/apn/ApnStatus.kt +++ b/src/com/android/settings/network/apn/ApnStatus.kt @@ -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 ): 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