Merge "Add SettingsExposedDropdownMenuCheckBox. SettingsExposedDropdownMenuCheckBox requires input index." into main

This commit is contained in:
Charlotte Lu
2023-09-22 10:35:37 +00:00
committed by Android (Google) Code Review
3 changed files with 135 additions and 20 deletions

View File

@@ -34,6 +34,7 @@ import com.android.settings.R
import com.android.settingslib.spa.framework.common.SettingsPageProvider
import com.android.settingslib.spa.framework.compose.stateOf
import com.android.settingslib.spa.widget.editor.SettingsExposedDropdownMenuBox
import com.android.settingslib.spa.widget.editor.SettingsExposedDropdownMenuCheckBox
import com.android.settingslib.spa.widget.editor.SettingsOutlinedTextField
import com.android.settingslib.spa.widget.preference.SwitchPreference
import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel
@@ -86,8 +87,13 @@ fun ApnPage(apnDataCur: MutableState<ApnData>) {
val context = LocalContext.current
val authTypeOptions = stringArrayResource(R.array.apn_auth_entries).toList()
val apnProtocolOptions = stringArrayResource(R.array.apn_protocol_entries).toList()
val bearerOptionsAll = stringArrayResource(R.array.bearer_entries)
val bearerOptions = bearerOptionsAll.drop(1).toList()
val bearerEmptyVal = bearerOptionsAll[0]
val mvnoTypeOptions = stringArrayResource(R.array.mvno_type_entries).toList()
val bearerSelectedOptionsState = remember {
getBearerSelectedOptionsState(apnData.bearer, apnData.bearerBitmask, context)
}
RegularScaffold(
title = stringResource(id = R.string.apn_edit),
) {
@@ -184,6 +190,13 @@ fun ApnPage(apnDataCur: MutableState<ApnData>) {
}
}
)
SettingsExposedDropdownMenuCheckBox(
stringResource(R.string.bearer),
bearerOptions,
bearerSelectedOptionsState,
bearerEmptyVal,
apnData.bearerEnabled
) {}
SettingsExposedDropdownMenuBox(
stringResource(R.string.mvno_type),
mvnoTypeOptions,

View File

@@ -16,8 +16,12 @@
package com.android.settings.network.apn
import android.content.Context
import android.provider.Telephony
import android.telephony.TelephonyManager
import androidx.compose.runtime.mutableStateListOf
import androidx.compose.runtime.snapshots.SnapshotStateList
import com.android.settings.R
data class ApnData(
val name: String = "",
@@ -65,4 +69,29 @@ data class ApnData(
var bearerEnabled = true
var mvnoTypeEnabled = true
var mvnoValueEnabled = false
}
}
fun getBearerSelectedOptionsState(
bearer: Int,
bearerBitmask: Int,
context: Context
): SnapshotStateList<Int> {
val bearerValues = context.resources.getStringArray(R.array.bearer_values)
val bearerSelectedOptionsState = mutableStateListOf<Int>()
if (bearerBitmask != 0) {
var i = 1
var _bearerBitmask = bearerBitmask
while (_bearerBitmask != 0) {
if (_bearerBitmask and 1 == 1 && !bearerSelectedOptionsState.contains(i)) {
bearerSelectedOptionsState.add(bearerValues.indexOf("$i") - 1)
}
_bearerBitmask = _bearerBitmask shr 1
i++
}
}
if (bearer != 0 && !bearerSelectedOptionsState.contains(bearer)) {
// add mBearerInitialVal to bearers
bearerSelectedOptionsState.add(bearerValues.indexOf("$bearer") - 1)
}
return bearerSelectedOptionsState
}