kopia lustrzana https://github.com/meshtastic/Meshtastic-Android
detekt
rodzic
39575c2257
commit
d54db0ae4e
|
@ -61,19 +61,16 @@ inline fun <reified T> EditListPreference(
|
||||||
val listState = remember(list) { mutableStateListOf<T>().apply { addAll(list) } }
|
val listState = remember(list) { mutableStateListOf<T>().apply { addAll(list) } }
|
||||||
|
|
||||||
Column(modifier = modifier) {
|
Column(modifier = modifier) {
|
||||||
Text(
|
Text(modifier = modifier.padding(16.dp), text = title, style = MaterialTheme.typography.bodyMedium)
|
||||||
modifier = modifier.padding(16.dp),
|
|
||||||
text = title,
|
|
||||||
style = MaterialTheme.typography.bodyMedium,
|
|
||||||
)
|
|
||||||
listState.forEachIndexed { index, value ->
|
listState.forEachIndexed { index, value ->
|
||||||
val trailingIcon = @Composable {
|
val trailingIcon =
|
||||||
|
@Composable {
|
||||||
IconButton(
|
IconButton(
|
||||||
onClick = {
|
onClick = {
|
||||||
focusManager.clearFocus()
|
focusManager.clearFocus()
|
||||||
listState.removeAt(index)
|
listState.removeAt(index)
|
||||||
onValuesChanged(listState)
|
onValuesChanged(listState)
|
||||||
}
|
},
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.TwoTone.Close,
|
imageVector = Icons.TwoTone.Close,
|
||||||
|
@ -84,7 +81,8 @@ inline fun <reified T> EditListPreference(
|
||||||
}
|
}
|
||||||
|
|
||||||
// handle lora.ignoreIncoming: List<Int>
|
// handle lora.ignoreIncoming: List<Int>
|
||||||
if (value is Int) EditTextPreference(
|
if (value is Int) {
|
||||||
|
EditTextPreference(
|
||||||
title = "${index + 1}/$maxCount",
|
title = "${index + 1}/$maxCount",
|
||||||
value = value,
|
value = value,
|
||||||
enabled = enabled,
|
enabled = enabled,
|
||||||
|
@ -96,9 +94,11 @@ inline fun <reified T> EditListPreference(
|
||||||
modifier = modifier.fillMaxWidth(),
|
modifier = modifier.fillMaxWidth(),
|
||||||
trailingIcon = trailingIcon,
|
trailingIcon = trailingIcon,
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
|
||||||
// handle security.adminKey: List<ByteString>
|
// handle security.adminKey: List<ByteString>
|
||||||
if (value is ByteString) EditBase64Preference(
|
if (value is ByteString) {
|
||||||
|
EditBase64Preference(
|
||||||
title = "${index + 1}/$maxCount",
|
title = "${index + 1}/$maxCount",
|
||||||
value = value,
|
value = value,
|
||||||
enabled = enabled,
|
enabled = enabled,
|
||||||
|
@ -110,6 +110,7 @@ inline fun <reified T> EditListPreference(
|
||||||
modifier = modifier.fillMaxWidth(),
|
modifier = modifier.fillMaxWidth(),
|
||||||
trailingIcon = trailingIcon,
|
trailingIcon = trailingIcon,
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
|
||||||
// handle remoteHardware.availablePins: List<RemoteHardwarePin>
|
// handle remoteHardware.availablePins: List<RemoteHardwarePin>
|
||||||
if (value is RemoteHardwarePin) {
|
if (value is RemoteHardwarePin) {
|
||||||
|
@ -131,9 +132,8 @@ inline fun <reified T> EditListPreference(
|
||||||
maxSize = 14, // name max_size:15
|
maxSize = 14, // name max_size:15
|
||||||
enabled = enabled,
|
enabled = enabled,
|
||||||
isError = false,
|
isError = false,
|
||||||
keyboardOptions = KeyboardOptions.Default.copy(
|
keyboardOptions =
|
||||||
keyboardType = KeyboardType.Text, imeAction = ImeAction.Done
|
KeyboardOptions.Default.copy(keyboardType = KeyboardType.Text, imeAction = ImeAction.Done),
|
||||||
),
|
|
||||||
keyboardActions = keyboardActions,
|
keyboardActions = keyboardActions,
|
||||||
onValueChanged = {
|
onValueChanged = {
|
||||||
listState[index] = value.copy { name = it } as T
|
listState[index] = value.copy { name = it } as T
|
||||||
|
@ -144,7 +144,8 @@ inline fun <reified T> EditListPreference(
|
||||||
DropDownPreference(
|
DropDownPreference(
|
||||||
title = stringResource(R.string.type),
|
title = stringResource(R.string.type),
|
||||||
enabled = enabled,
|
enabled = enabled,
|
||||||
items = RemoteHardwarePinType.entries
|
items =
|
||||||
|
RemoteHardwarePinType.entries
|
||||||
.filter { it != RemoteHardwarePinType.UNRECOGNIZED }
|
.filter { it != RemoteHardwarePinType.UNRECOGNIZED }
|
||||||
.map { it to it.name },
|
.map { it to it.name },
|
||||||
selectedItem = value.type,
|
selectedItem = value.type,
|
||||||
|
@ -159,7 +160,8 @@ inline fun <reified T> EditListPreference(
|
||||||
modifier = Modifier.fillMaxWidth(),
|
modifier = Modifier.fillMaxWidth(),
|
||||||
onClick = {
|
onClick = {
|
||||||
// Add element based on the type T
|
// Add element based on the type T
|
||||||
val newElement = when (T::class) {
|
val newElement =
|
||||||
|
when (T::class) {
|
||||||
Int::class -> 0 as T
|
Int::class -> 0 as T
|
||||||
ByteString::class -> ByteString.EMPTY as T
|
ByteString::class -> ByteString.EMPTY as T
|
||||||
RemoteHardwarePin::class -> remoteHardwarePin {} as T
|
RemoteHardwarePin::class -> remoteHardwarePin {} as T
|
||||||
|
@ -168,7 +170,9 @@ inline fun <reified T> EditListPreference(
|
||||||
listState.add(listState.size, newElement)
|
listState.add(listState.size, newElement)
|
||||||
},
|
},
|
||||||
enabled = maxCount > listState.size,
|
enabled = maxCount > listState.size,
|
||||||
) { Text(text = stringResource(R.string.add)) }
|
) {
|
||||||
|
Text(text = stringResource(R.string.add))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -186,7 +190,8 @@ private fun EditListPreferencePreview() {
|
||||||
)
|
)
|
||||||
EditListPreference(
|
EditListPreference(
|
||||||
title = "Available pins",
|
title = "Available pins",
|
||||||
list = listOf(
|
list =
|
||||||
|
listOf(
|
||||||
remoteHardwarePin {
|
remoteHardwarePin {
|
||||||
gpioPin = 12
|
gpioPin = 12
|
||||||
name = "Front door"
|
name = "Front door"
|
||||||
|
|
Ładowanie…
Reference in New Issue