Merge "Add SettingsExposedDropdownMenuCheckBox. SettingsExposedDropdownMenuCheckBox requires input index." into main
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user