mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-04-02 21:23:24 -04:00
add new configs
This commit is contained in:
@@ -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())
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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 }
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user