add new configs

This commit is contained in:
andrekir
2023-01-03 21:45:41 -03:00
parent 5a6b5a7202
commit 807337ca9b
4 changed files with 57 additions and 0 deletions

View File

@@ -367,6 +367,11 @@ class UIViewModel @Inject constructor(
setModuleConfig(moduleConfig { audio = data })
}
inline fun updateRemoteHardwareConfig(crossinline body: (ModuleConfig.RemoteHardwareConfig) -> ModuleConfig.RemoteHardwareConfig) {
val data = body(module.remoteHardware)
setModuleConfig(moduleConfig { remoteHardware = data })
}
fun setModuleConfig(config: ModuleConfig) {
meshService?.setModuleConfig(config.toByteArray())
}

View File

@@ -45,6 +45,7 @@ class ModuleConfigRepository @Inject constructor(
if (config.hasTelemetry()) setTelemetryConfig(config.telemetry)
if (config.hasCannedMessage()) setCannedMessageConfig(config.cannedMessage)
if (config.hasAudio()) setAudioConfig(config.audio)
if (config.hasRemoteHardware()) setRemoteHardwareConfig(config.remoteHardware)
}
private suspend fun setMQTTConfig(config: ModuleConfig.MQTTConfig) {
@@ -95,6 +96,12 @@ class ModuleConfigRepository @Inject constructor(
}
}
private suspend fun setRemoteHardwareConfig(config: ModuleConfig.RemoteHardwareConfig) {
moduleConfigStore.updateData { preference ->
preference.toBuilder().setRemoteHardware(config).build()
}
}
suspend fun fetchInitialModuleConfig() = moduleConfigStore.data.first()
}

View File

@@ -603,6 +603,25 @@ fun DeviceSettingsItemList(viewModel: UIViewModel) {
}
item { Divider() }
item {
DropDownPreference(title = "Display mode",
enabled = connected,
items = ConfigProtos.Config.DisplayConfig.DisplayMode.values()
.filter { it != ConfigProtos.Config.DisplayConfig.DisplayMode.UNRECOGNIZED }
.map { it to it.name },
selectedItem = displayInput.displaymode,
onItemSelected = { displayInput = displayInput.copy { displaymode = it } })
}
item { Divider() }
item {
SwitchPreference(title = "Heading bold",
checked = displayInput.headingBold,
enabled = connected,
onCheckedChange = { displayInput = displayInput.copy { headingBold = it } })
}
item { Divider() }
item {
PreferenceFooter(
enabled = displayInput != localConfig.display,

View File

@@ -44,6 +44,7 @@ fun ModuleSettingsItemList(viewModel: UIViewModel) {
var telemetryInput by remember(moduleConfig.telemetry) { mutableStateOf(moduleConfig.telemetry) }
var cannedMessageInput by remember(moduleConfig.cannedMessage) { mutableStateOf(moduleConfig.cannedMessage) }
var audioInput by remember(moduleConfig.audio) { mutableStateOf(moduleConfig.audio) }
var remoteHardwareInput by remember(moduleConfig.remoteHardware) { mutableStateOf(moduleConfig.remoteHardware) }
LazyColumn(
modifier = Modifier.fillMaxSize()
@@ -743,6 +744,31 @@ fun ModuleSettingsItemList(viewModel: UIViewModel) {
viewModel.updateAudioConfig { audioInput }
})
}
item { PreferenceCategory(text = "Remote Hardware Config") }
item {
SwitchPreference(title = "Remote Hardware enabled",
checked = remoteHardwareInput.enabled,
enabled = connected,
onCheckedChange = {
remoteHardwareInput = remoteHardwareInput.copy { enabled = it }
})
}
item { Divider() }
item {
PreferenceFooter(
enabled = remoteHardwareInput != moduleConfig.remoteHardware,
onCancelClicked = {
focusManager.clearFocus()
remoteHardwareInput = moduleConfig.remoteHardware
},
onSaveClicked = {
focusManager.clearFocus()
viewModel.updateRemoteHardwareConfig { remoteHardwareInput }
})
}
}
}