diff --git a/.skills/compose-ui/strings-index.txt b/.skills/compose-ui/strings-index.txt
index a904a74473..7c52a0d1f1 100644
--- a/.skills/compose-ui/strings-index.txt
+++ b/.skills/compose-ui/strings-index.txt
@@ -244,7 +244,6 @@ config_lora_modem_preset_licensed_summary
config_lora_modem_preset_summary
config_lora_region_summary
config_network_udp_enabled_summary
-config_position_broadcast_smart_minimum_interval_secs_summary
config_saved_restarting
config_security_private_key
config_security_private_key_remote
@@ -455,7 +454,6 @@ distance_filters
distance_filters_description
distance_measurements
distance_measurements_description
-dns
### DOC ###
doc_clear_search
doc_keywords_app_functions
@@ -708,7 +706,6 @@ firmware_update_wipe_confirm_warning
firmware_update_wipe_label
firmware_update_wipe_usb_detail
firmware_version
-fixed_pin
fixed_position
for_more_information_see_our_privacy_policy
### FORMAT ###
@@ -722,7 +719,6 @@ free_memory
free_memory_description
freq
gas_resistance
-gateway
generate_qr_code
### GEOFENCE ###
geofence
@@ -823,7 +819,6 @@ layer_type_geojson
layer_type_kml
layer_type_network
learn_more
-led_heartbeat
legacy_admin_channel
library_count
license
@@ -971,11 +966,9 @@ map_overlay_precipitation
map_overlay_weather_radar
map_purge_fail
map_purge_success
-map_reporting
map_reporting_consent_header
map_reporting_consent_text
map_reporting_interval_seconds
-map_reporting_summary
map_select_download_region
map_start_download
map_style_selection
@@ -1006,7 +999,6 @@ mesh_beacon_interval_error
mesh_beacon_invitations_title
mesh_beacon_listen
mesh_beacon_listen_summary
-mesh_beacon_message
mesh_beacon_message_error
mesh_beacon_no_channels
mesh_beacon_notification_body
@@ -1437,7 +1429,6 @@ refresh
refresh_metadata
regenerate_keys_confirmation
regenerate_private_key
-region_frequency_plan
relays
### REMOTE ###
remote
@@ -1668,7 +1659,6 @@ stay_connected_anywhere
stop_connecting
store_forward
store_forward_config
-subnet
success
super_deep_sleep_duration_seconds
supported
@@ -1681,7 +1671,6 @@ system_settings
### TAK ###
tak
tak_config
-tak_role
tak_server
tak_server_channel
tak_server_channel_desc
@@ -1713,7 +1702,6 @@ tak_server_test_results_v2
tak_server_test_run
tak_server_test_running
tak_server_v1_fallback_notice
-tak_team
telemetry
telemetry_config
temperature
@@ -1722,10 +1710,8 @@ theme_dark
theme_light
theme_system
time
-time_zone
timeout
timestamp
-tls_enabled
tls_enabled_public_broker_summary
toggle_my_position
trace_route
diff --git a/core/resources/src/commonMain/composeResources/values/strings.xml b/core/resources/src/commonMain/composeResources/values/strings.xml
index 47ec0b6417..883fec89a9 100644
--- a/core/resources/src/commonMain/composeResources/values/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values/strings.xml
@@ -268,7 +268,6 @@
Available modem presets, default is Long Fast.
The region where you will be using your radios.
Enable broadcasting packets via UDP over the local network.
- The fastest that position updates will be sent if the minimum distance has been satisfied.
The node is restarting and will be briefly unreachable.
Used to create a shared key with a remote device.
The device does not share its private key over remote administration. You can set a new key, but it can never be read back.
@@ -485,7 +484,6 @@
Filter the node list and mesh map based on proximity to your phone.
Distance Measurements
Display the distance between your phone and other Meshtastic nodes with positions.
- DNS
Clear search
system ai,gemini,assistant,functions,automation,voice
@@ -738,7 +736,6 @@
Erase device during update
Wipes the device's flash completely, then installs the selected firmware from scratch.
Firmware version: %1$s
- Fixed PIN
Fixed Position
For more information, see our privacy policy.
@@ -752,7 +749,6 @@
Available system memory in bytes
Freq
Gas Resistance
- Gateway
Generate QR Code
Geofence
@@ -853,7 +849,6 @@
KML
Network layer
Learn more
- LED Heartbeat
Legacy Admin channel
%1$d libraries
License
@@ -1007,11 +1002,9 @@
Weather radar
SQL Cache purge failed, see logcat for details
SQL Cache purged for %1$s
- Map reporting
Consent to Share Unencrypted Node Data via MQTT
By enabling this feature, you acknowledge and expressly consent to the transmission of your device’s real-time geographic location over the MQTT protocol without encryption. This location data may be used for purposes such as live map reporting, device tracking, and related telemetry functions.
Map reporting interval (seconds)
- Your node will periodically send an unencrypted map report packet to the configured MQTT server, this includes id, long and short name, approximate location, hardware model, role, firmware version, LoRa region, modem preset and primary channel name.
Select download region
Start Download
Map style selection
@@ -1042,7 +1035,6 @@
Mesh invitations
Listen for beacons
Capture invitations advertised by nearby meshes
- Beacon message
Maximum %1$d bytes
No channels available
A nearby mesh invited you to join
@@ -1485,7 +1477,6 @@
Refresh metadata
Are you sure you want to regenerate your Private Key?\n\nNodes that may have previously exchanged keys with this node will need to Remove that node and re-exchange keys in order to resume secure communication.
Regenerate Private Key
- Region
- Heard %1$d relay
- Heard %1$d relays
@@ -1719,7 +1710,6 @@
Stop Connecting
Store & Forward
Store & Forward Config
- Subnet
Success
Super deep sleep duration
Supported
@@ -1732,7 +1722,6 @@
TAK (ATAK)
TAK Configuration
- Member Role
TAK Server
TAK Mesh Channel
Meshtastic channel used for outgoing TAK traffic
@@ -1767,7 +1756,6 @@
Run
Running: %1$s
Connected node firmware doesn't support full TAK integration — only location and chat messages will bridge to ATAK. Markers and other event types need firmware 2.8.0 or newer.
- Team Color
Telemetry
Telemetry Config
Temp
@@ -1776,10 +1764,8 @@
Light
System default
Time
- Time Zone
Timeout
Timestamp
- TLS enabled
When this phone relays MQTT it always connects to mqtt.meshtastic.org over TLS. This setting applies when the radio reaches the broker over its own Wi-Fi or Ethernet.
Toggle my position
Trace Route
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/AmbientLightingConfigItemList.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/AmbientLightingConfigItemList.kt
index 612fbf748c..11f1d2439a 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/AmbientLightingConfigItemList.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/AmbientLightingConfigItemList.kt
@@ -29,10 +29,15 @@ import org.meshtastic.core.resources.Res
import org.meshtastic.core.resources.ambient_lighting
import org.meshtastic.core.resources.ambient_lighting_config
import org.meshtastic.core.resources.schema_ambientlighting_blue
+import org.meshtastic.core.resources.schema_ambientlighting_blue_description
import org.meshtastic.core.resources.schema_ambientlighting_current
+import org.meshtastic.core.resources.schema_ambientlighting_current_description
import org.meshtastic.core.resources.schema_ambientlighting_green
+import org.meshtastic.core.resources.schema_ambientlighting_green_description
import org.meshtastic.core.resources.schema_ambientlighting_led_state
+import org.meshtastic.core.resources.schema_ambientlighting_led_state_description
import org.meshtastic.core.resources.schema_ambientlighting_red
+import org.meshtastic.core.resources.schema_ambientlighting_red_description
import org.meshtastic.core.ui.component.SwitchPreference
import org.meshtastic.core.ui.component.TitledCard
import org.meshtastic.feature.settings.radio.RadioConfigViewModel
@@ -68,6 +73,7 @@ fun AmbientLightingConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> U
TitledCard(title = stringResource(Res.string.ambient_lighting_config)) {
SwitchPreference(
title = stringResource(Res.string.schema_ambientlighting_led_state),
+ summary = stringResource(Res.string.schema_ambientlighting_led_state_description),
checked = formState.value.led_state,
enabled = state.connected,
onCheckedChange = {
@@ -97,6 +103,7 @@ private fun LedColorFields(
androidx.compose.foundation.layout.Column {
BoundedIntEditTextPreference(
title = stringResource(Res.string.schema_ambientlighting_current),
+ summary = stringResource(Res.string.schema_ambientlighting_current_description),
value = config.current,
metadata = ModuleConfig.AmbientLightingConfig.current,
enabled = enabled,
@@ -105,6 +112,7 @@ private fun LedColorFields(
)
BoundedIntEditTextPreference(
title = stringResource(Res.string.schema_ambientlighting_red),
+ summary = stringResource(Res.string.schema_ambientlighting_red_description),
value = config.red,
metadata = ModuleConfig.AmbientLightingConfig.red,
enabled = enabled,
@@ -113,6 +121,7 @@ private fun LedColorFields(
)
BoundedIntEditTextPreference(
title = stringResource(Res.string.schema_ambientlighting_green),
+ summary = stringResource(Res.string.schema_ambientlighting_green_description),
value = config.green,
metadata = ModuleConfig.AmbientLightingConfig.green,
enabled = enabled,
@@ -121,6 +130,7 @@ private fun LedColorFields(
)
BoundedIntEditTextPreference(
title = stringResource(Res.string.schema_ambientlighting_blue),
+ summary = stringResource(Res.string.schema_ambientlighting_blue_description),
value = config.blue,
metadata = ModuleConfig.AmbientLightingConfig.blue,
enabled = enabled,
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/AudioConfigItemList.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/AudioConfigItemList.kt
index 9b3f98fd23..21a7ae0c43 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/AudioConfigItemList.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/AudioConfigItemList.kt
@@ -28,12 +28,15 @@ import org.meshtastic.core.resources.Res
import org.meshtastic.core.resources.audio
import org.meshtastic.core.resources.audio_config
import org.meshtastic.core.resources.schema_audio_bitrate
+import org.meshtastic.core.resources.schema_audio_bitrate_description
import org.meshtastic.core.resources.schema_audio_codec2_enabled
+import org.meshtastic.core.resources.schema_audio_codec2_enabled_description
import org.meshtastic.core.resources.schema_audio_i2s_din
import org.meshtastic.core.resources.schema_audio_i2s_sck
import org.meshtastic.core.resources.schema_audio_i2s_sd
import org.meshtastic.core.resources.schema_audio_i2s_ws
import org.meshtastic.core.resources.schema_audio_ptt_pin
+import org.meshtastic.core.resources.schema_audio_ptt_pin_description
import org.meshtastic.core.ui.component.DropDownPreference
import org.meshtastic.core.ui.component.EditTextPreference
import org.meshtastic.core.ui.component.SwitchPreference
@@ -66,6 +69,7 @@ fun AudioConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
TitledCard(title = stringResource(Res.string.audio_config)) {
SwitchPreference(
title = stringResource(Res.string.schema_audio_codec2_enabled),
+ summary = stringResource(Res.string.schema_audio_codec2_enabled_description),
checked = formState.value.codec2_enabled,
enabled = state.connected,
onCheckedChange = {
@@ -76,6 +80,7 @@ fun AudioConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
HorizontalDivider()
EditTextPreference(
title = stringResource(Res.string.schema_audio_ptt_pin),
+ summary = stringResource(Res.string.schema_audio_ptt_pin_description),
value = formState.value.ptt_pin,
enabled = state.connected,
keyboardActions = KeyboardActions(onDone = { focusManager.clearFocus() }),
@@ -85,6 +90,7 @@ fun AudioConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
)
DropDownPreference(
title = stringResource(Res.string.schema_audio_bitrate),
+ summary = stringResource(Res.string.schema_audio_bitrate_description),
enabled = state.connected,
selectedItem = formState.value.bitrate,
onItemSelected = {
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/BluetoothConfigItemList.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/BluetoothConfigItemList.kt
index 4636e80655..d34541dbd0 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/BluetoothConfigItemList.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/BluetoothConfigItemList.kt
@@ -33,9 +33,11 @@ import org.jetbrains.compose.resources.stringResource
import org.meshtastic.core.resources.Res
import org.meshtastic.core.resources.bluetooth
import org.meshtastic.core.resources.bluetooth_config
-import org.meshtastic.core.resources.fixed_pin
import org.meshtastic.core.resources.schema_bluetooth_enabled
+import org.meshtastic.core.resources.schema_bluetooth_enabled_description
+import org.meshtastic.core.resources.schema_bluetooth_fixed_pin
import org.meshtastic.core.resources.schema_bluetooth_mode
+import org.meshtastic.core.resources.schema_bluetooth_mode_description
import org.meshtastic.core.ui.component.DropDownPreference
import org.meshtastic.core.ui.component.EditTextPreference
import org.meshtastic.core.ui.component.SwitchPreference
@@ -70,6 +72,7 @@ fun BluetoothConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
TitledCard(title = stringResource(Res.string.bluetooth_config)) {
SwitchPreference(
title = stringResource(Res.string.schema_bluetooth_enabled),
+ summary = stringResource(Res.string.schema_bluetooth_enabled_description),
checked = formState.value.enabled,
enabled = state.connected,
onCheckedChange = {
@@ -80,6 +83,7 @@ fun BluetoothConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
HorizontalDivider()
DropDownPreference(
title = stringResource(Res.string.schema_bluetooth_mode),
+ summary = stringResource(Res.string.schema_bluetooth_mode_description),
enabled = state.connected,
items =
Config.BluetoothConfig.PairingMode.entries
@@ -116,7 +120,7 @@ private fun FixedPinPreference(
var pinState by remember(pinValue) { mutableStateOf(pinValue.toString().padStart(PIN_LENGTH, '0')) }
val pinIsError = pinState.length != PIN_LENGTH || !pinState.all { it.isDigit() }
EditTextPreference(
- title = stringResource(Res.string.fixed_pin),
+ title = stringResource(Res.string.schema_bluetooth_fixed_pin),
value = pinState,
enabled = enabled,
isError = pinIsError,
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/CannedMessageConfigItemList.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/CannedMessageConfigItemList.kt
index ecc445db11..7ebf161a47 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/CannedMessageConfigItemList.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/CannedMessageConfigItemList.kt
@@ -39,14 +39,23 @@ import org.meshtastic.core.resources.canned_message_config
import org.meshtastic.core.resources.canned_message_enabled
import org.meshtastic.core.resources.messages
import org.meshtastic.core.resources.schema_cannedmessage_inputbroker_event_ccw
+import org.meshtastic.core.resources.schema_cannedmessage_inputbroker_event_ccw_description
import org.meshtastic.core.resources.schema_cannedmessage_inputbroker_event_cw
+import org.meshtastic.core.resources.schema_cannedmessage_inputbroker_event_cw_description
import org.meshtastic.core.resources.schema_cannedmessage_inputbroker_event_press
+import org.meshtastic.core.resources.schema_cannedmessage_inputbroker_event_press_description
import org.meshtastic.core.resources.schema_cannedmessage_inputbroker_pin_a
+import org.meshtastic.core.resources.schema_cannedmessage_inputbroker_pin_a_description
import org.meshtastic.core.resources.schema_cannedmessage_inputbroker_pin_b
+import org.meshtastic.core.resources.schema_cannedmessage_inputbroker_pin_b_description
import org.meshtastic.core.resources.schema_cannedmessage_inputbroker_pin_press
+import org.meshtastic.core.resources.schema_cannedmessage_inputbroker_pin_press_description
import org.meshtastic.core.resources.schema_cannedmessage_rotary1_enabled
+import org.meshtastic.core.resources.schema_cannedmessage_rotary1_enabled_description
import org.meshtastic.core.resources.schema_cannedmessage_send_bell
+import org.meshtastic.core.resources.schema_cannedmessage_send_bell_description
import org.meshtastic.core.resources.schema_cannedmessage_updown1_enabled
+import org.meshtastic.core.resources.schema_cannedmessage_updown1_enabled_description
import org.meshtastic.core.ui.component.DropDownPreference
import org.meshtastic.core.ui.component.EditTextPreference
import org.meshtastic.core.ui.component.SwitchPreference
@@ -105,6 +114,7 @@ fun CannedMessageConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Uni
}
SwitchPreference(
title = stringResource(Res.string.schema_cannedmessage_rotary1_enabled),
+ summary = stringResource(Res.string.schema_cannedmessage_rotary1_enabled_description),
checked = formState.value.rotary1_enabled,
enabled = state.connected,
onCheckedChange = {
@@ -115,6 +125,7 @@ fun CannedMessageConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Uni
HorizontalDivider()
EditTextPreference(
title = stringResource(Res.string.schema_cannedmessage_inputbroker_pin_a),
+ summary = stringResource(Res.string.schema_cannedmessage_inputbroker_pin_a_description),
value = formState.value.inputbroker_pin_a,
enabled = state.connected,
keyboardActions = KeyboardActions(onDone = { focusManager.clearFocus() }),
@@ -124,6 +135,7 @@ fun CannedMessageConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Uni
)
EditTextPreference(
title = stringResource(Res.string.schema_cannedmessage_inputbroker_pin_b),
+ summary = stringResource(Res.string.schema_cannedmessage_inputbroker_pin_b_description),
value = formState.value.inputbroker_pin_b,
enabled = state.connected,
keyboardActions = KeyboardActions(onDone = { focusManager.clearFocus() }),
@@ -133,6 +145,7 @@ fun CannedMessageConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Uni
)
EditTextPreference(
title = stringResource(Res.string.schema_cannedmessage_inputbroker_pin_press),
+ summary = stringResource(Res.string.schema_cannedmessage_inputbroker_pin_press_description),
value = formState.value.inputbroker_pin_press,
enabled = state.connected,
keyboardActions = KeyboardActions(onDone = { focusManager.clearFocus() }),
@@ -143,6 +156,7 @@ fun CannedMessageConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Uni
)
DropDownPreference(
title = stringResource(Res.string.schema_cannedmessage_inputbroker_event_press),
+ summary = stringResource(Res.string.schema_cannedmessage_inputbroker_event_press_description),
enabled = state.connected,
selectedItem = formState.value.inputbroker_event_press,
onItemSelected = {
@@ -153,6 +167,7 @@ fun CannedMessageConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Uni
HorizontalDivider()
DropDownPreference(
title = stringResource(Res.string.schema_cannedmessage_inputbroker_event_cw),
+ summary = stringResource(Res.string.schema_cannedmessage_inputbroker_event_cw_description),
enabled = state.connected,
selectedItem = formState.value.inputbroker_event_cw,
onItemSelected = {
@@ -163,6 +178,7 @@ fun CannedMessageConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Uni
HorizontalDivider()
DropDownPreference(
title = stringResource(Res.string.schema_cannedmessage_inputbroker_event_ccw),
+ summary = stringResource(Res.string.schema_cannedmessage_inputbroker_event_ccw_description),
enabled = state.connected,
selectedItem = formState.value.inputbroker_event_ccw,
onItemSelected = {
@@ -173,6 +189,7 @@ fun CannedMessageConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Uni
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_cannedmessage_updown1_enabled),
+ summary = stringResource(Res.string.schema_cannedmessage_updown1_enabled_description),
checked = formState.value.updown1_enabled,
enabled = state.connected,
onCheckedChange = {
@@ -204,6 +221,7 @@ fun CannedMessageConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Uni
}
SwitchPreference(
title = stringResource(Res.string.schema_cannedmessage_send_bell),
+ summary = stringResource(Res.string.schema_cannedmessage_send_bell_description),
checked = formState.value.send_bell,
enabled = state.connected,
onCheckedChange = {
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/DetectionSensorConfigItemList.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/DetectionSensorConfigItemList.kt
index d7d2e8215e..9612930332 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/DetectionSensorConfigItemList.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/DetectionSensorConfigItemList.kt
@@ -33,11 +33,17 @@ import org.meshtastic.core.resources.detection_sensor
import org.meshtastic.core.resources.detection_sensor_config
import org.meshtastic.core.resources.minimum_broadcast_seconds
import org.meshtastic.core.resources.schema_detectionsensor_detection_trigger_type
+import org.meshtastic.core.resources.schema_detectionsensor_detection_trigger_type_description
import org.meshtastic.core.resources.schema_detectionsensor_enabled
+import org.meshtastic.core.resources.schema_detectionsensor_enabled_description
import org.meshtastic.core.resources.schema_detectionsensor_monitor_pin
+import org.meshtastic.core.resources.schema_detectionsensor_monitor_pin_description
import org.meshtastic.core.resources.schema_detectionsensor_name
+import org.meshtastic.core.resources.schema_detectionsensor_name_description
import org.meshtastic.core.resources.schema_detectionsensor_send_bell
+import org.meshtastic.core.resources.schema_detectionsensor_send_bell_description
import org.meshtastic.core.resources.schema_detectionsensor_use_pullup
+import org.meshtastic.core.resources.schema_detectionsensor_use_pullup_description
import org.meshtastic.core.resources.state_broadcast_seconds
import org.meshtastic.core.ui.component.DropDownPreference
import org.meshtastic.core.ui.component.EditTextPreference
@@ -75,6 +81,7 @@ fun DetectionSensorConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> U
TitledCard(title = stringResource(Res.string.detection_sensor_config)) {
SwitchPreference(
title = stringResource(Res.string.schema_detectionsensor_enabled),
+ summary = stringResource(Res.string.schema_detectionsensor_enabled_description),
checked = formState.value.enabled,
enabled = state.connected,
onCheckedChange = {
@@ -111,6 +118,7 @@ fun DetectionSensorConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> U
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_detectionsensor_send_bell),
+ summary = stringResource(Res.string.schema_detectionsensor_send_bell_description),
checked = formState.value.send_bell,
enabled = state.connected,
onCheckedChange = {
@@ -121,6 +129,7 @@ fun DetectionSensorConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> U
HorizontalDivider()
EditTextPreference(
title = stringResource(Res.string.schema_detectionsensor_name),
+ summary = stringResource(Res.string.schema_detectionsensor_name_description),
value = formState.value.name,
maxSize = 19, // name max_size:20
enabled = state.connected,
@@ -136,6 +145,7 @@ fun DetectionSensorConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> U
val pins = remember { gpioPins }
DropDownPreference(
title = stringResource(Res.string.schema_detectionsensor_monitor_pin),
+ summary = stringResource(Res.string.schema_detectionsensor_monitor_pin_description),
items = pins,
selectedItem = formState.value.monitor_pin,
enabled = state.connected,
@@ -146,6 +156,7 @@ fun DetectionSensorConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> U
HorizontalDivider()
DropDownPreference(
title = stringResource(Res.string.schema_detectionsensor_detection_trigger_type),
+ summary = stringResource(Res.string.schema_detectionsensor_detection_trigger_type_description),
enabled = state.connected,
selectedItem = formState.value.detection_trigger_type,
onItemSelected = {
@@ -156,6 +167,7 @@ fun DetectionSensorConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> U
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_detectionsensor_use_pullup),
+ summary = stringResource(Res.string.schema_detectionsensor_use_pullup_description),
checked = formState.value.use_pullup,
enabled = state.connected,
onCheckedChange = {
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/DeviceConfigScreen.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/DeviceConfigScreen.kt
index 6c5880dd09..76ec11e63e 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/DeviceConfigScreen.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/DeviceConfigScreen.kt
@@ -70,18 +70,21 @@ import org.meshtastic.core.resources.files_available
import org.meshtastic.core.resources.gpio
import org.meshtastic.core.resources.hardware
import org.meshtastic.core.resources.i_know_what_i_m_doing
-import org.meshtastic.core.resources.led_heartbeat
import org.meshtastic.core.resources.no_files_manifested
import org.meshtastic.core.resources.options
-import org.meshtastic.core.resources.role
import org.meshtastic.core.resources.router_role_confirmation_text
import org.meshtastic.core.resources.schema_device_button_gpio
+import org.meshtastic.core.resources.schema_device_button_gpio_description
import org.meshtastic.core.resources.schema_device_buzzer_gpio
+import org.meshtastic.core.resources.schema_device_buzzer_gpio_description
import org.meshtastic.core.resources.schema_device_double_tap_as_button_press
import org.meshtastic.core.resources.schema_device_double_tap_as_button_press_description
+import org.meshtastic.core.resources.schema_device_led_heartbeat_disabled
import org.meshtastic.core.resources.schema_device_node_info_broadcast_secs
+import org.meshtastic.core.resources.schema_device_node_info_broadcast_secs_description
import org.meshtastic.core.resources.schema_device_rebroadcast_mode
-import org.meshtastic.core.resources.time_zone
+import org.meshtastic.core.resources.schema_device_role
+import org.meshtastic.core.resources.schema_device_tzdef
import org.meshtastic.core.resources.triple_click_adhoc_ping
import org.meshtastic.core.ui.component.DropDownPreference
import org.meshtastic.core.ui.component.EditTextPreference
@@ -138,7 +141,7 @@ fun DeviceConfigScreenCommon(viewModel: RadioConfigViewModel, onBack: () -> Unit
TitledCard(title = stringResource(Res.string.options)) {
val currentRole = formState.value.role
DropDownPreference(
- title = stringResource(Res.string.role),
+ title = stringResource(Res.string.schema_device_role),
enabled = state.connected,
selectedItem = currentRole,
onItemSelected = { selectedRole = it },
@@ -164,6 +167,7 @@ fun DeviceConfigScreenCommon(viewModel: RadioConfigViewModel, onBack: () -> Unit
val nodeInfoBroadcastIntervals = remember { IntervalConfiguration.NODE_INFO_BROADCAST.allowedIntervals }
DropDownPreference(
title = stringResource(Res.string.schema_device_node_info_broadcast_secs),
+ summary = stringResource(Res.string.schema_device_node_info_broadcast_secs_description),
selectedItem = formState.value.node_info_broadcast_secs.toLong(),
enabled = state.connected,
items = nodeInfoBroadcastIntervals.map { it.value to it.toDisplayString() },
@@ -206,7 +210,7 @@ fun DeviceConfigScreenCommon(viewModel: RadioConfigViewModel, onBack: () -> Unit
InsetDivider()
SwitchPreference(
- title = stringResource(Res.string.led_heartbeat),
+ title = stringResource(Res.string.schema_device_led_heartbeat_disabled),
summary = stringResource(Res.string.config_device_ledHeartbeatEnabled_summary),
checked = !formState.value.led_heartbeat_disabled,
enabled = state.connected,
@@ -219,7 +223,7 @@ fun DeviceConfigScreenCommon(viewModel: RadioConfigViewModel, onBack: () -> Unit
}
}
item {
- TitledCard(title = stringResource(Res.string.time_zone)) {
+ TitledCard(title = stringResource(Res.string.schema_device_tzdef)) {
val appTzPosixString = rememberSystemTimeZonePosixString()
EditTextPreference(
@@ -276,6 +280,7 @@ fun DeviceConfigScreenCommon(viewModel: RadioConfigViewModel, onBack: () -> Unit
TitledCard(title = stringResource(Res.string.gpio)) {
EditTextPreference(
title = stringResource(Res.string.schema_device_button_gpio),
+ summary = stringResource(Res.string.schema_device_button_gpio_description),
value = formState.value.button_gpio,
enabled = state.connected,
keyboardActions = KeyboardActions(onDone = { focusManager.clearFocus() }),
@@ -288,6 +293,7 @@ fun DeviceConfigScreenCommon(viewModel: RadioConfigViewModel, onBack: () -> Unit
EditTextPreference(
title = stringResource(Res.string.schema_device_buzzer_gpio),
+ summary = stringResource(Res.string.schema_device_buzzer_gpio_description),
value = formState.value.buzzer_gpio,
enabled = state.connected,
keyboardActions = KeyboardActions(onDone = { focusManager.clearFocus() }),
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/DisplayConfigItemList.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/DisplayConfigItemList.kt
index 11d7d4e13b..226152dbb3 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/DisplayConfigItemList.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/DisplayConfigItemList.kt
@@ -33,6 +33,7 @@ import org.meshtastic.core.resources.schema_display_auto_screen_carousel_secs_de
import org.meshtastic.core.resources.schema_display_compass_north_top
import org.meshtastic.core.resources.schema_display_compass_north_top_description
import org.meshtastic.core.resources.schema_display_compass_orientation
+import org.meshtastic.core.resources.schema_display_compass_orientation_description
import org.meshtastic.core.resources.schema_display_displaymode
import org.meshtastic.core.resources.schema_display_displaymode_description
import org.meshtastic.core.resources.schema_display_flip_screen
@@ -216,6 +217,7 @@ fun DisplayConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
HorizontalDivider()
DropDownPreference(
title = stringResource(Res.string.schema_display_compass_orientation),
+ summary = stringResource(Res.string.schema_display_compass_orientation_description),
enabled = state.connected,
selectedItem = formState.value.compass_orientation,
onItemSelected = {
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/ExternalNotificationConfigScreen.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/ExternalNotificationConfigScreen.kt
index a283e81568..46cb0e7e50 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/ExternalNotificationConfigScreen.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/ExternalNotificationConfigScreen.kt
@@ -42,18 +42,31 @@ import org.meshtastic.core.resources.notifications_on_message_receipt
import org.meshtastic.core.resources.output_duration_milliseconds
import org.meshtastic.core.resources.ringtone
import org.meshtastic.core.resources.schema_externalnotification_active
+import org.meshtastic.core.resources.schema_externalnotification_active_description
import org.meshtastic.core.resources.schema_externalnotification_alert_bell
import org.meshtastic.core.resources.schema_externalnotification_alert_bell_buzzer
+import org.meshtastic.core.resources.schema_externalnotification_alert_bell_buzzer_description
+import org.meshtastic.core.resources.schema_externalnotification_alert_bell_description
import org.meshtastic.core.resources.schema_externalnotification_alert_bell_vibra
+import org.meshtastic.core.resources.schema_externalnotification_alert_bell_vibra_description
import org.meshtastic.core.resources.schema_externalnotification_alert_message
import org.meshtastic.core.resources.schema_externalnotification_alert_message_buzzer
+import org.meshtastic.core.resources.schema_externalnotification_alert_message_buzzer_description
+import org.meshtastic.core.resources.schema_externalnotification_alert_message_description
import org.meshtastic.core.resources.schema_externalnotification_alert_message_vibra
+import org.meshtastic.core.resources.schema_externalnotification_alert_message_vibra_description
import org.meshtastic.core.resources.schema_externalnotification_enabled
+import org.meshtastic.core.resources.schema_externalnotification_enabled_description
import org.meshtastic.core.resources.schema_externalnotification_output
import org.meshtastic.core.resources.schema_externalnotification_output_buzzer
+import org.meshtastic.core.resources.schema_externalnotification_output_buzzer_description
+import org.meshtastic.core.resources.schema_externalnotification_output_description
import org.meshtastic.core.resources.schema_externalnotification_output_vibra
+import org.meshtastic.core.resources.schema_externalnotification_output_vibra_description
import org.meshtastic.core.resources.schema_externalnotification_use_i2s_as_buzzer
+import org.meshtastic.core.resources.schema_externalnotification_use_i2s_as_buzzer_description
import org.meshtastic.core.resources.schema_externalnotification_use_pwm
+import org.meshtastic.core.resources.schema_externalnotification_use_pwm_description
import org.meshtastic.core.ui.component.DropDownPreference
import org.meshtastic.core.ui.component.EditTextPreference
import org.meshtastic.core.ui.component.SwitchPreference
@@ -107,6 +120,7 @@ fun ExternalNotificationConfigScreenCommon(
TitledCard(title = stringResource(Res.string.external_notification_config)) {
SwitchPreference(
title = stringResource(Res.string.schema_externalnotification_enabled),
+ summary = stringResource(Res.string.schema_externalnotification_enabled_description),
checked = formState.value.enabled,
enabled = state.connected,
onCheckedChange = {
@@ -121,6 +135,7 @@ fun ExternalNotificationConfigScreenCommon(
TitledCard(title = stringResource(Res.string.notifications_on_message_receipt)) {
SwitchPreference(
title = stringResource(Res.string.schema_externalnotification_alert_message),
+ summary = stringResource(Res.string.schema_externalnotification_alert_message_description),
checked = formState.value.alert_message,
enabled = state.connected,
onCheckedChange = {
@@ -131,6 +146,7 @@ fun ExternalNotificationConfigScreenCommon(
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_externalnotification_alert_message_buzzer),
+ summary = stringResource(Res.string.schema_externalnotification_alert_message_buzzer_description),
checked = formState.value.alert_message_buzzer,
enabled = state.connected,
onCheckedChange = {
@@ -142,6 +158,7 @@ fun ExternalNotificationConfigScreenCommon(
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_externalnotification_alert_message_vibra),
+ summary = stringResource(Res.string.schema_externalnotification_alert_message_vibra_description),
checked = formState.value.alert_message_vibra,
enabled = state.connected,
onCheckedChange = {
@@ -157,6 +174,7 @@ fun ExternalNotificationConfigScreenCommon(
TitledCard(title = stringResource(Res.string.notifications_on_alert_bell_receipt)) {
SwitchPreference(
title = stringResource(Res.string.schema_externalnotification_alert_bell),
+ summary = stringResource(Res.string.schema_externalnotification_alert_bell_description),
checked = formState.value.alert_bell,
enabled = state.connected,
onCheckedChange = {
@@ -167,6 +185,7 @@ fun ExternalNotificationConfigScreenCommon(
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_externalnotification_alert_bell_buzzer),
+ summary = stringResource(Res.string.schema_externalnotification_alert_bell_buzzer_description),
checked = formState.value.alert_bell_buzzer,
enabled = state.connected,
onCheckedChange = {
@@ -177,6 +196,7 @@ fun ExternalNotificationConfigScreenCommon(
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_externalnotification_alert_bell_vibra),
+ summary = stringResource(Res.string.schema_externalnotification_alert_bell_vibra_description),
checked = formState.value.alert_bell_vibra,
enabled = state.connected,
onCheckedChange = {
@@ -192,6 +212,7 @@ fun ExternalNotificationConfigScreenCommon(
val gpio = remember { org.meshtastic.feature.settings.util.gpioPins }
DropDownPreference(
title = stringResource(Res.string.schema_externalnotification_output),
+ summary = stringResource(Res.string.schema_externalnotification_output_description),
items = gpio,
selectedItem = formState.value.output.toLong(),
enabled = state.connected,
@@ -203,6 +224,7 @@ fun ExternalNotificationConfigScreenCommon(
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_externalnotification_active),
+ summary = stringResource(Res.string.schema_externalnotification_active_description),
checked = formState.value.active,
enabled = state.connected,
onCheckedChange = {
@@ -214,6 +236,7 @@ fun ExternalNotificationConfigScreenCommon(
HorizontalDivider()
DropDownPreference(
title = stringResource(Res.string.schema_externalnotification_output_buzzer),
+ summary = stringResource(Res.string.schema_externalnotification_output_buzzer_description),
items = gpio,
selectedItem = formState.value.output_buzzer.toLong(),
enabled = state.connected,
@@ -226,6 +249,7 @@ fun ExternalNotificationConfigScreenCommon(
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_externalnotification_use_pwm),
+ summary = stringResource(Res.string.schema_externalnotification_use_pwm_description),
checked = formState.value.use_pwm,
enabled = state.connected,
onCheckedChange = {
@@ -237,6 +261,7 @@ fun ExternalNotificationConfigScreenCommon(
HorizontalDivider()
DropDownPreference(
title = stringResource(Res.string.schema_externalnotification_output_vibra),
+ summary = stringResource(Res.string.schema_externalnotification_output_vibra_description),
items = gpio,
selectedItem = formState.value.output_vibra.toLong(),
enabled = state.connected,
@@ -290,6 +315,7 @@ fun ExternalNotificationConfigScreenCommon(
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_externalnotification_use_i2s_as_buzzer),
+ summary = stringResource(Res.string.schema_externalnotification_use_i2s_as_buzzer_description),
checked = formState.value.use_i2s_as_buzzer,
enabled = state.connected,
onCheckedChange = {
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/LoRaConfigItemList.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/LoRaConfigItemList.kt
index 1cefa81175..ab4319115f 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/LoRaConfigItemList.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/LoRaConfigItemList.kt
@@ -46,7 +46,6 @@ import org.meshtastic.core.resources.config_lora_modem_preset_summary
import org.meshtastic.core.resources.config_lora_region_summary
import org.meshtastic.core.resources.lora
import org.meshtastic.core.resources.options
-import org.meshtastic.core.resources.region_frequency_plan
import org.meshtastic.core.resources.schema_lora_bandwidth
import org.meshtastic.core.resources.schema_lora_channel_num
import org.meshtastic.core.resources.schema_lora_channel_num_description
@@ -55,15 +54,22 @@ import org.meshtastic.core.resources.schema_lora_config_ok_to_mqtt
import org.meshtastic.core.resources.schema_lora_hop_limit
import org.meshtastic.core.resources.schema_lora_hop_limit_description
import org.meshtastic.core.resources.schema_lora_ignore_mqtt
+import org.meshtastic.core.resources.schema_lora_ignore_mqtt_description
import org.meshtastic.core.resources.schema_lora_modem_preset
import org.meshtastic.core.resources.schema_lora_override_duty_cycle
import org.meshtastic.core.resources.schema_lora_override_frequency
import org.meshtastic.core.resources.schema_lora_pa_fan_disabled
+import org.meshtastic.core.resources.schema_lora_region
import org.meshtastic.core.resources.schema_lora_spread_factor
+import org.meshtastic.core.resources.schema_lora_spread_factor_description
import org.meshtastic.core.resources.schema_lora_sx126x_rx_boosted_gain
+import org.meshtastic.core.resources.schema_lora_sx126x_rx_boosted_gain_description
import org.meshtastic.core.resources.schema_lora_tx_enabled
+import org.meshtastic.core.resources.schema_lora_tx_enabled_description
import org.meshtastic.core.resources.schema_lora_tx_power
+import org.meshtastic.core.resources.schema_lora_tx_power_description
import org.meshtastic.core.resources.schema_lora_use_preset
+import org.meshtastic.core.resources.schema_lora_use_preset_description
import org.meshtastic.core.ui.component.DropDownItem
import org.meshtastic.core.ui.component.DropDownPreference
import org.meshtastic.core.ui.component.EditTextPreference
@@ -180,7 +186,7 @@ fun LoRaConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
}
val presetsGated = presetConstraint?.isGated(state.localIsLicensed) == true
DropDownPreference(
- title = stringResource(Res.string.region_frequency_plan),
+ title = stringResource(Res.string.schema_lora_region),
summary = stringResource(Res.string.config_lora_region_summary),
enabled = state.connected,
items =
@@ -210,6 +216,7 @@ fun LoRaConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_lora_use_preset),
+ summary = stringResource(Res.string.schema_lora_use_preset_description),
checked = formState.value.use_preset,
enabled = state.connected,
onCheckedChange = {
@@ -258,6 +265,7 @@ fun LoRaConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
TitledCard(title = stringResource(Res.string.advanced)) {
SwitchPreference(
title = stringResource(Res.string.schema_lora_ignore_mqtt),
+ summary = stringResource(Res.string.schema_lora_ignore_mqtt_description),
checked = formState.value.ignore_mqtt,
enabled = state.connected,
onCheckedChange = {
@@ -278,6 +286,7 @@ fun LoRaConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_lora_tx_enabled),
+ summary = stringResource(Res.string.schema_lora_tx_enabled_description),
checked = formState.value.tx_enabled,
enabled = state.connected,
onCheckedChange = {
@@ -334,6 +343,7 @@ fun LoRaConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_lora_sx126x_rx_boosted_gain),
+ summary = stringResource(Res.string.schema_lora_sx126x_rx_boosted_gain_description),
checked = formState.value.sx126x_rx_boosted_gain,
enabled = state.connected,
onCheckedChange = {
@@ -362,6 +372,7 @@ fun LoRaConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
HorizontalDivider()
SignedIntegerEditTextPreference(
title = stringResource(Res.string.schema_lora_tx_power),
+ summary = stringResource(Res.string.schema_lora_tx_power_description),
value = formState.value.tx_power,
enabled = state.connected,
keyboardActions = KeyboardActions(onDone = { focusManager.clearFocus() }),
@@ -406,6 +417,7 @@ private fun ManualModemSettings(
HorizontalDivider()
EditTextPreference(
title = stringResource(Res.string.schema_lora_spread_factor),
+ summary = stringResource(Res.string.schema_lora_spread_factor_description),
value = config.spread_factor,
enabled = enabled,
isError = config.spread_factor !in SPREAD_FACTOR_RANGE,
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/MQTTConfigItemList.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/MQTTConfigItemList.kt
index d72b9f6802..77145e57f8 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/MQTTConfigItemList.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/MQTTConfigItemList.kt
@@ -55,7 +55,6 @@ import org.meshtastic.core.model.MqttProbeStatus
import org.meshtastic.core.network.repository.effectiveTlsEnabled
import org.meshtastic.core.resources.Res
import org.meshtastic.core.resources.json_output_enabled
-import org.meshtastic.core.resources.map_reporting
import org.meshtastic.core.resources.mqtt
import org.meshtastic.core.resources.mqtt_config
import org.meshtastic.core.resources.mqtt_probe_dns_failure
@@ -79,14 +78,21 @@ import org.meshtastic.core.resources.mqtt_status_reconnecting_with_attempt
import org.meshtastic.core.resources.mqtt_status_topics_refused_all
import org.meshtastic.core.resources.mqtt_status_topics_refused_some
import org.meshtastic.core.resources.mqtt_test_connection
-import org.meshtastic.core.resources.password
import org.meshtastic.core.resources.schema_mqtt_address
+import org.meshtastic.core.resources.schema_mqtt_address_description
import org.meshtastic.core.resources.schema_mqtt_enabled
+import org.meshtastic.core.resources.schema_mqtt_enabled_description
import org.meshtastic.core.resources.schema_mqtt_encryption_enabled
+import org.meshtastic.core.resources.schema_mqtt_encryption_enabled_description
+import org.meshtastic.core.resources.schema_mqtt_map_reporting_enabled
+import org.meshtastic.core.resources.schema_mqtt_password
import org.meshtastic.core.resources.schema_mqtt_proxy_to_client_enabled
+import org.meshtastic.core.resources.schema_mqtt_proxy_to_client_enabled_description
import org.meshtastic.core.resources.schema_mqtt_root
+import org.meshtastic.core.resources.schema_mqtt_root_description
+import org.meshtastic.core.resources.schema_mqtt_tls_enabled
import org.meshtastic.core.resources.schema_mqtt_username
-import org.meshtastic.core.resources.tls_enabled
+import org.meshtastic.core.resources.schema_mqtt_username_description
import org.meshtastic.core.resources.tls_enabled_public_broker_summary
import org.meshtastic.core.ui.component.EditPasswordPreference
import org.meshtastic.core.ui.component.EditTextPreference
@@ -172,6 +178,7 @@ fun MQTTConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
TitledCard(title = stringResource(Res.string.mqtt_config)) {
SwitchPreference(
title = stringResource(Res.string.schema_mqtt_enabled),
+ summary = stringResource(Res.string.schema_mqtt_enabled_description),
checked = formState.value.enabled,
enabled = state.connected,
onCheckedChange = {
@@ -191,6 +198,7 @@ fun MQTTConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
HorizontalDivider()
EditTextPreference(
title = stringResource(Res.string.schema_mqtt_username),
+ summary = stringResource(Res.string.schema_mqtt_username_description),
value = formState.value.username,
maxSize = 63, // username max_size:64
enabled = state.connected,
@@ -204,7 +212,7 @@ fun MQTTConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
)
HorizontalDivider()
EditPasswordPreference(
- title = stringResource(Res.string.password),
+ title = stringResource(Res.string.schema_mqtt_password),
value = formState.value.password,
maxSize = 63, // password max_size:64
enabled = state.connected,
@@ -216,6 +224,7 @@ fun MQTTConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_mqtt_encryption_enabled),
+ summary = stringResource(Res.string.schema_mqtt_encryption_enabled_description),
checked = formState.value.encryption_enabled,
enabled = state.connected,
onCheckedChange = {
@@ -247,6 +256,7 @@ fun MQTTConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
HorizontalDivider()
EditTextPreference(
title = stringResource(Res.string.schema_mqtt_root),
+ summary = stringResource(Res.string.schema_mqtt_root_description),
value = formState.value.root,
maxSize = 31, // root max_size:32
enabled = state.connected,
@@ -261,6 +271,7 @@ fun MQTTConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_mqtt_proxy_to_client_enabled),
+ summary = stringResource(Res.string.schema_mqtt_proxy_to_client_enabled_description),
checked = formState.value.proxy_to_client_enabled,
enabled = state.connected,
onCheckedChange = {
@@ -273,7 +284,7 @@ fun MQTTConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
}
item {
- TitledCard(title = stringResource(Res.string.map_reporting)) {
+ TitledCard(title = stringResource(Res.string.schema_mqtt_map_reporting_enabled)) {
val mapReportSettings =
formState.value.map_report_settings ?: ModuleConfig.MapReportSettings.Builder().build()
MapReportingPreference(
@@ -332,7 +343,7 @@ internal fun MqttTlsPreference(
val resolvedAddress = address.ifEmpty { DEFAULT_MQTT_ADDRESS }
val relayForcesTls = effectiveTlsEnabled(resolvedAddress, tlsEnabled = false)
SwitchPreference(
- title = stringResource(Res.string.tls_enabled),
+ title = stringResource(Res.string.schema_mqtt_tls_enabled),
summary = if (relayForcesTls) stringResource(Res.string.tls_enabled_public_broker_summary) else "",
checked = tlsEnabled,
enabled = enabled,
@@ -408,6 +419,7 @@ private fun MqttAddressAndProbe(
) {
EditTextPreference(
title = stringResource(Res.string.schema_mqtt_address),
+ summary = stringResource(Res.string.schema_mqtt_address_description),
value = formState.value.address,
maxSize = 63, // address max_size:64
enabled = enabled,
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/MapReportingPreference.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/MapReportingPreference.kt
index 8c6e552932..44642ff0df 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/MapReportingPreference.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/MapReportingPreference.kt
@@ -45,11 +45,11 @@ import org.meshtastic.core.model.util.toDistanceString
import org.meshtastic.core.resources.Res
import org.meshtastic.core.resources.i_agree
import org.meshtastic.core.resources.i_agree_to_share_my_location
-import org.meshtastic.core.resources.map_reporting
import org.meshtastic.core.resources.map_reporting_consent_header
import org.meshtastic.core.resources.map_reporting_consent_text
import org.meshtastic.core.resources.map_reporting_interval_seconds
-import org.meshtastic.core.resources.map_reporting_summary
+import org.meshtastic.core.resources.schema_mqtt_map_reporting_enabled
+import org.meshtastic.core.resources.schema_mqtt_map_reporting_enabled_description
import org.meshtastic.core.ui.component.DropDownPreference
import org.meshtastic.core.ui.component.SwitchPreference
import org.meshtastic.feature.settings.util.FixedUpdateIntervals
@@ -78,8 +78,8 @@ fun MapReportingPreference(
// [mapReportingEnabled] so an externally-changed config wins over a stale local toggle.
var showMapReportingWarning by rememberSaveable(mapReportingEnabled) { mutableStateOf(mapReportingEnabled) }
SwitchPreference(
- title = stringResource(Res.string.map_reporting),
- summary = stringResource(Res.string.map_reporting_summary),
+ title = stringResource(Res.string.schema_mqtt_map_reporting_enabled),
+ summary = stringResource(Res.string.schema_mqtt_map_reporting_enabled_description),
checked = showMapReportingWarning,
enabled = enabled,
onCheckedChange = { checked ->
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/MeshBeaconConfigItemList.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/MeshBeaconConfigItemList.kt
index 80559fa785..33f0c69b25 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/MeshBeaconConfigItemList.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/MeshBeaconConfigItemList.kt
@@ -48,7 +48,6 @@ import org.meshtastic.core.resources.mesh_beacon_interval
import org.meshtastic.core.resources.mesh_beacon_interval_error
import org.meshtastic.core.resources.mesh_beacon_listen
import org.meshtastic.core.resources.mesh_beacon_listen_summary
-import org.meshtastic.core.resources.mesh_beacon_message
import org.meshtastic.core.resources.mesh_beacon_no_channels
import org.meshtastic.core.resources.mesh_beacon_offer_channel_name
import org.meshtastic.core.resources.mesh_beacon_on_preset
@@ -61,6 +60,7 @@ import org.meshtastic.core.resources.mesh_beacon_target_default
import org.meshtastic.core.resources.mesh_beacon_target_remove
import org.meshtastic.core.resources.mesh_beacon_targets
import org.meshtastic.core.resources.plurals_seconds
+import org.meshtastic.core.resources.schema_meshbeacon_broadcast_message
import org.meshtastic.core.ui.component.DropDownItem
import org.meshtastic.core.ui.component.DropDownPreference
import org.meshtastic.core.ui.component.EditTextPreference
@@ -238,7 +238,7 @@ fun MeshBeaconConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit,
if (broadcastGate.sectionsVisible) {
HorizontalDivider()
EditTextPreference(
- title = stringResource(Res.string.mesh_beacon_message),
+ title = stringResource(Res.string.schema_meshbeacon_broadcast_message),
value = formState.value.broadcast_message,
maxSize = MESSAGE_MAX_BYTES,
enabled = broadcastGate.sectionsEnabled,
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/NeighborInfoConfigItemList.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/NeighborInfoConfigItemList.kt
index 650d80d5d7..563fe944b4 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/NeighborInfoConfigItemList.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/NeighborInfoConfigItemList.kt
@@ -28,6 +28,7 @@ import org.meshtastic.core.resources.Res
import org.meshtastic.core.resources.neighbor_info
import org.meshtastic.core.resources.neighbor_info_config
import org.meshtastic.core.resources.schema_neighborinfo_enabled
+import org.meshtastic.core.resources.schema_neighborinfo_enabled_description
import org.meshtastic.core.resources.schema_neighborinfo_transmit_over_lora
import org.meshtastic.core.resources.schema_neighborinfo_transmit_over_lora_description
import org.meshtastic.core.resources.update_interval_seconds
@@ -62,6 +63,7 @@ fun NeighborInfoConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit
TitledCard(title = stringResource(Res.string.neighbor_info_config)) {
SwitchPreference(
title = stringResource(Res.string.schema_neighborinfo_enabled),
+ summary = stringResource(Res.string.schema_neighborinfo_enabled_description),
checked = formState.value.enabled,
enabled = state.connected,
onCheckedChange = {
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/NetworkConfigItemList.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/NetworkConfigItemList.kt
index 410e7584ef..e1f4a7c279 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/NetworkConfigItemList.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/NetworkConfigItemList.kt
@@ -47,25 +47,28 @@ import org.meshtastic.core.resources.advanced
import org.meshtastic.core.resources.cancel
import org.meshtastic.core.resources.config_network_udp_enabled_summary
import org.meshtastic.core.resources.connection_status
-import org.meshtastic.core.resources.dns
import org.meshtastic.core.resources.error
import org.meshtastic.core.resources.ethernet_config
import org.meshtastic.core.resources.ethernet_ip
-import org.meshtastic.core.resources.gateway
import org.meshtastic.core.resources.network
import org.meshtastic.core.resources.nfc_disabled
import org.meshtastic.core.resources.open_settings
-import org.meshtastic.core.resources.password
import org.meshtastic.core.resources.scan_nfc
import org.meshtastic.core.resources.schema_network_address_mode
import org.meshtastic.core.resources.schema_network_eth_enabled
import org.meshtastic.core.resources.schema_network_eth_enabled_description
+import org.meshtastic.core.resources.schema_network_ipv4_dns
+import org.meshtastic.core.resources.schema_network_ipv4_gateway
+import org.meshtastic.core.resources.schema_network_ipv4_ip
+import org.meshtastic.core.resources.schema_network_ipv4_subnet
import org.meshtastic.core.resources.schema_network_ntp_server
+import org.meshtastic.core.resources.schema_network_ntp_server_description
import org.meshtastic.core.resources.schema_network_rsyslog_server
import org.meshtastic.core.resources.schema_network_wifi_enabled
import org.meshtastic.core.resources.schema_network_wifi_enabled_description
+import org.meshtastic.core.resources.schema_network_wifi_psk
import org.meshtastic.core.resources.schema_network_wifi_ssid
-import org.meshtastic.core.resources.subnet
+import org.meshtastic.core.resources.schema_network_wifi_ssid_description
import org.meshtastic.core.resources.udp_enabled
import org.meshtastic.core.resources.wifi_config
import org.meshtastic.core.resources.wifi_ip
@@ -218,6 +221,7 @@ fun NetworkConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit, onO
HorizontalDivider()
EditTextPreference(
title = stringResource(Res.string.schema_network_wifi_ssid),
+ summary = stringResource(Res.string.schema_network_wifi_ssid_description),
value = formState.value.wifi_ssid,
maxSize = 32, // wifi_ssid max_size:33
enabled = state.connected,
@@ -231,7 +235,7 @@ fun NetworkConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit, onO
)
HorizontalDivider()
EditPasswordPreference(
- title = stringResource(Res.string.password),
+ title = stringResource(Res.string.schema_network_wifi_psk),
value = formState.value.wifi_psk,
maxSize = 64, // wifi_psk max_size:65
enabled = state.connected,
@@ -275,6 +279,7 @@ fun NetworkConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit, onO
TitledCard(title = stringResource(Res.string.advanced)) {
EditTextPreference(
title = stringResource(Res.string.schema_network_ntp_server),
+ summary = stringResource(Res.string.schema_network_ntp_server_description),
value = formState.value.ntp_server,
maxSize = 32, // ntp_server max_size:33
enabled = state.connected,
@@ -336,7 +341,7 @@ fun NetworkConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit, onO
HorizontalDivider()
val ipv4 = formState.value.ipv4_config ?: Config.NetworkConfig.IpV4Config.Builder().build()
EditIPv4Preference(
- title = stringResource(Res.string.wifi_ip),
+ title = stringResource(Res.string.schema_network_ipv4_ip),
value = ipv4.ip,
enabled = state.connected,
onValueChanged = {
@@ -350,7 +355,7 @@ fun NetworkConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit, onO
)
HorizontalDivider()
EditIPv4Preference(
- title = stringResource(Res.string.gateway),
+ title = stringResource(Res.string.schema_network_ipv4_gateway),
value = ipv4.gateway,
enabled = state.connected,
onValueChanged = {
@@ -366,7 +371,7 @@ fun NetworkConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit, onO
)
HorizontalDivider()
EditIPv4Preference(
- title = stringResource(Res.string.subnet),
+ title = stringResource(Res.string.schema_network_ipv4_subnet),
value = ipv4.subnet,
enabled = state.connected,
onValueChanged = {
@@ -382,7 +387,7 @@ fun NetworkConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit, onO
)
HorizontalDivider()
EditIPv4Preference(
- title = stringResource(Res.string.dns),
+ title = stringResource(Res.string.schema_network_ipv4_dns),
value = ipv4.dns,
enabled = state.connected,
onValueChanged = {
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/PaxcounterConfigItemList.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/PaxcounterConfigItemList.kt
index 7acb8193b7..def160d459 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/PaxcounterConfigItemList.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/PaxcounterConfigItemList.kt
@@ -29,8 +29,11 @@ import org.meshtastic.core.resources.Res
import org.meshtastic.core.resources.paxcounter
import org.meshtastic.core.resources.paxcounter_config
import org.meshtastic.core.resources.schema_paxcounter_ble_threshold
+import org.meshtastic.core.resources.schema_paxcounter_ble_threshold_description
import org.meshtastic.core.resources.schema_paxcounter_enabled
+import org.meshtastic.core.resources.schema_paxcounter_enabled_description
import org.meshtastic.core.resources.schema_paxcounter_wifi_threshold
+import org.meshtastic.core.resources.schema_paxcounter_wifi_threshold_description
import org.meshtastic.core.resources.update_interval_seconds
import org.meshtastic.core.ui.component.DropDownPreference
import org.meshtastic.core.ui.component.SignedIntegerEditTextPreference
@@ -47,7 +50,6 @@ fun PaxcounterConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit)
val state by viewModel.radioConfigState.collectAsStateWithLifecycle()
val paxcounterConfig = state.moduleConfig.paxcounter ?: ModuleConfig.PaxcounterConfig.Builder().build()
val formState = rememberConfigState(initialValue = paxcounterConfig)
- val focusManager = LocalFocusManager.current
RadioConfigScreenList(
rebootBehavior = RebootBehavior.ALWAYS,
@@ -62,53 +64,55 @@ fun PaxcounterConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit)
viewModel.setModuleConfig(config)
},
) {
- item {
- TitledCard(title = stringResource(Res.string.paxcounter_config)) {
- SwitchPreference(
- title = stringResource(Res.string.schema_paxcounter_enabled),
- checked = formState.value.enabled,
- enabled = state.connected,
- onCheckedChange = {
- formState.value = formState.value.newBuilder().also { wb -> wb.enabled = it }.build()
- },
- containerColor = CardDefaults.cardColors().containerColor,
- )
- HorizontalDivider()
- val items = remember { IntervalConfiguration.PAX_COUNTER.allowedIntervals }
- DropDownPreference(
- title = stringResource(Res.string.update_interval_seconds),
- selectedItem = (formState.value.paxcounter_update_interval).toLong(),
- enabled = state.connected,
- items = items.map { it.value to it.toDisplayString() },
- onItemSelected = {
- formState.value =
- formState.value
- .newBuilder()
- .also { wb -> wb.paxcounter_update_interval = it.toInt() }
- .build()
- },
- )
- HorizontalDivider()
- SignedIntegerEditTextPreference(
- title = stringResource(Res.string.schema_paxcounter_wifi_threshold),
- value = formState.value.wifi_threshold,
- enabled = state.connected,
- keyboardActions = KeyboardActions(onDone = { focusManager.clearFocus() }),
- onValueChanged = {
- formState.value = formState.value.newBuilder().also { wb -> wb.wifi_threshold = it }.build()
- },
- )
- HorizontalDivider()
- SignedIntegerEditTextPreference(
- title = stringResource(Res.string.schema_paxcounter_ble_threshold),
- value = formState.value.ble_threshold,
- enabled = state.connected,
- keyboardActions = KeyboardActions(onDone = { focusManager.clearFocus() }),
- onValueChanged = {
- formState.value = formState.value.newBuilder().also { wb -> wb.ble_threshold = it }.build()
- },
- )
- }
- }
+ item { PaxcounterSettings(formState = formState, enabled = state.connected) }
+ }
+}
+
+@Composable
+private fun PaxcounterSettings(formState: ConfigState, enabled: Boolean) {
+ val focusManager = LocalFocusManager.current
+ TitledCard(title = stringResource(Res.string.paxcounter_config)) {
+ SwitchPreference(
+ title = stringResource(Res.string.schema_paxcounter_enabled),
+ summary = stringResource(Res.string.schema_paxcounter_enabled_description),
+ checked = formState.value.enabled,
+ enabled = enabled,
+ onCheckedChange = { formState.value = formState.value.newBuilder().also { wb -> wb.enabled = it }.build() },
+ containerColor = CardDefaults.cardColors().containerColor,
+ )
+ HorizontalDivider()
+ val items = remember { IntervalConfiguration.PAX_COUNTER.allowedIntervals }
+ DropDownPreference(
+ title = stringResource(Res.string.update_interval_seconds),
+ selectedItem = (formState.value.paxcounter_update_interval).toLong(),
+ enabled = enabled,
+ items = items.map { it.value to it.toDisplayString() },
+ onItemSelected = {
+ formState.value =
+ formState.value.newBuilder().also { wb -> wb.paxcounter_update_interval = it.toInt() }.build()
+ },
+ )
+ HorizontalDivider()
+ SignedIntegerEditTextPreference(
+ title = stringResource(Res.string.schema_paxcounter_wifi_threshold),
+ summary = stringResource(Res.string.schema_paxcounter_wifi_threshold_description),
+ value = formState.value.wifi_threshold,
+ enabled = enabled,
+ keyboardActions = KeyboardActions(onDone = { focusManager.clearFocus() }),
+ onValueChanged = {
+ formState.value = formState.value.newBuilder().also { wb -> wb.wifi_threshold = it }.build()
+ },
+ )
+ HorizontalDivider()
+ SignedIntegerEditTextPreference(
+ title = stringResource(Res.string.schema_paxcounter_ble_threshold),
+ summary = stringResource(Res.string.schema_paxcounter_ble_threshold_description),
+ value = formState.value.ble_threshold,
+ enabled = enabled,
+ keyboardActions = KeyboardActions(onDone = { focusManager.clearFocus() }),
+ onValueChanged = {
+ formState.value = formState.value.newBuilder().also { wb -> wb.ble_threshold = it }.build()
+ },
+ )
}
}
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/PositionConfigScreen.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/PositionConfigScreen.kt
index 0a03797871..bf12bfcd29 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/PositionConfigScreen.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/PositionConfigScreen.kt
@@ -33,7 +33,6 @@ import org.meshtastic.core.model.Position
import org.meshtastic.core.resources.Res
import org.meshtastic.core.resources.advanced_device_gps
import org.meshtastic.core.resources.altitude
-import org.meshtastic.core.resources.config_position_broadcast_smart_minimum_interval_secs_summary
import org.meshtastic.core.resources.device_gps
import org.meshtastic.core.resources.latitude
import org.meshtastic.core.resources.longitude
@@ -42,8 +41,11 @@ import org.meshtastic.core.resources.position_packet
import org.meshtastic.core.resources.schema_position_broadcast_smart_minimum_distance
import org.meshtastic.core.resources.schema_position_broadcast_smart_minimum_distance_description
import org.meshtastic.core.resources.schema_position_broadcast_smart_minimum_interval_secs
+import org.meshtastic.core.resources.schema_position_broadcast_smart_minimum_interval_secs_description
import org.meshtastic.core.resources.schema_position_fixed_position
+import org.meshtastic.core.resources.schema_position_fixed_position_description
import org.meshtastic.core.resources.schema_position_gps_en_gpio
+import org.meshtastic.core.resources.schema_position_gps_en_gpio_description
import org.meshtastic.core.resources.schema_position_gps_mode
import org.meshtastic.core.resources.schema_position_gps_update_interval
import org.meshtastic.core.resources.schema_position_gps_update_interval_description
@@ -53,7 +55,9 @@ import org.meshtastic.core.resources.schema_position_position_broadcast_smart_en
import org.meshtastic.core.resources.schema_position_position_flags
import org.meshtastic.core.resources.schema_position_position_flags_description
import org.meshtastic.core.resources.schema_position_rx_gpio
+import org.meshtastic.core.resources.schema_position_rx_gpio_description
import org.meshtastic.core.resources.schema_position_tx_gpio
+import org.meshtastic.core.resources.schema_position_tx_gpio_description
import org.meshtastic.core.ui.component.BitwisePreference
import org.meshtastic.core.ui.component.DropDownPreference
import org.meshtastic.core.ui.component.EditTextPreference
@@ -211,7 +215,9 @@ fun PositionConfigScreenCommon(viewModel: RadioConfigViewModel, onBack: () -> Un
DropDownPreference(
title = stringResource(Res.string.schema_position_broadcast_smart_minimum_interval_secs),
summary =
- stringResource(Res.string.config_position_broadcast_smart_minimum_interval_secs_summary),
+ stringResource(
+ Res.string.schema_position_broadcast_smart_minimum_interval_secs_description,
+ ),
enabled = state.connected,
items = smartItems.map { it to it.toDisplayString() },
selectedItem =
@@ -249,6 +255,7 @@ fun PositionConfigScreenCommon(viewModel: RadioConfigViewModel, onBack: () -> Un
TitledCard(title = stringResource(Res.string.device_gps)) {
SwitchPreference(
title = stringResource(Res.string.schema_position_fixed_position),
+ summary = stringResource(Res.string.schema_position_fixed_position_description),
checked = formState.value.fixed_position,
enabled = state.connected,
onCheckedChange = {
@@ -348,6 +355,7 @@ fun PositionConfigScreenCommon(viewModel: RadioConfigViewModel, onBack: () -> Un
val pins = remember { org.meshtastic.feature.settings.util.gpioPins }
DropDownPreference(
title = stringResource(Res.string.schema_position_rx_gpio),
+ summary = stringResource(Res.string.schema_position_rx_gpio_description),
enabled = state.connected,
items = pins,
selectedItem = formState.value.rx_gpio,
@@ -358,6 +366,7 @@ fun PositionConfigScreenCommon(viewModel: RadioConfigViewModel, onBack: () -> Un
HorizontalDivider()
DropDownPreference(
title = stringResource(Res.string.schema_position_tx_gpio),
+ summary = stringResource(Res.string.schema_position_tx_gpio_description),
enabled = state.connected,
items = pins,
selectedItem = formState.value.tx_gpio,
@@ -368,6 +377,7 @@ fun PositionConfigScreenCommon(viewModel: RadioConfigViewModel, onBack: () -> Un
HorizontalDivider()
DropDownPreference(
title = stringResource(Res.string.schema_position_gps_en_gpio),
+ summary = stringResource(Res.string.schema_position_gps_en_gpio_description),
enabled = state.connected,
items = pins,
selectedItem = formState.value.gps_en_gpio,
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/PowerConfigItemList.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/PowerConfigItemList.kt
index 6457a79f38..7d54508c74 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/PowerConfigItemList.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/PowerConfigItemList.kt
@@ -35,6 +35,7 @@ import org.meshtastic.core.resources.schema_power_adc_multiplier_override
import org.meshtastic.core.resources.schema_power_is_power_saving
import org.meshtastic.core.resources.schema_power_is_power_saving_description
import org.meshtastic.core.resources.schema_power_on_battery_shutdown_after_secs
+import org.meshtastic.core.resources.schema_power_on_battery_shutdown_after_secs_description
import org.meshtastic.core.resources.schema_power_wait_bluetooth_secs
import org.meshtastic.core.resources.super_deep_sleep_duration_seconds
import org.meshtastic.core.ui.component.DropDownPreference
@@ -81,6 +82,7 @@ fun PowerConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
val items = remember { IntervalConfiguration.ALL.allowedIntervals }
DropDownPreference(
title = stringResource(Res.string.schema_power_on_battery_shutdown_after_secs),
+ summary = stringResource(Res.string.schema_power_on_battery_shutdown_after_secs_description),
selectedItem = formState.value.on_battery_shutdown_after_secs.toLong(),
enabled = state.connected,
items = items.map { it.value to it.toDisplayString() },
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/RangeTestConfigItemList.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/RangeTestConfigItemList.kt
index 761da4f57b..0367c7056f 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/RangeTestConfigItemList.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/RangeTestConfigItemList.kt
@@ -27,7 +27,9 @@ import org.meshtastic.core.resources.Res
import org.meshtastic.core.resources.range_test
import org.meshtastic.core.resources.range_test_config
import org.meshtastic.core.resources.schema_rangetest_enabled
+import org.meshtastic.core.resources.schema_rangetest_enabled_description
import org.meshtastic.core.resources.schema_rangetest_save
+import org.meshtastic.core.resources.schema_rangetest_save_description
import org.meshtastic.core.resources.sender_message_interval_seconds
import org.meshtastic.core.ui.component.DropDownPreference
import org.meshtastic.core.ui.component.SwitchPreference
@@ -66,6 +68,7 @@ fun RangeTestConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
TitledCard(title = stringResource(Res.string.range_test_config)) {
SwitchPreference(
title = stringResource(Res.string.schema_rangetest_enabled),
+ summary = stringResource(Res.string.schema_rangetest_enabled_description),
checked = formState.value.enabled,
enabled = canConfigure || formState.value.enabled,
onCheckedChange = {
@@ -87,6 +90,7 @@ fun RangeTestConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_rangetest_save),
+ summary = stringResource(Res.string.schema_rangetest_save_description),
checked = formState.value.save,
enabled = canConfigure,
onCheckedChange = {
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/SerialConfigItemList.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/SerialConfigItemList.kt
index 0e873df940..ff2f4c2dbb 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/SerialConfigItemList.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/SerialConfigItemList.kt
@@ -27,12 +27,19 @@ import org.jetbrains.compose.resources.stringResource
import org.meshtastic.core.resources.Res
import org.meshtastic.core.resources.override_console_serial_port
import org.meshtastic.core.resources.schema_serial_baud
+import org.meshtastic.core.resources.schema_serial_baud_description
import org.meshtastic.core.resources.schema_serial_echo
+import org.meshtastic.core.resources.schema_serial_echo_description
import org.meshtastic.core.resources.schema_serial_enabled
+import org.meshtastic.core.resources.schema_serial_enabled_description
import org.meshtastic.core.resources.schema_serial_mode
+import org.meshtastic.core.resources.schema_serial_mode_description
import org.meshtastic.core.resources.schema_serial_rxd
+import org.meshtastic.core.resources.schema_serial_rxd_description
import org.meshtastic.core.resources.schema_serial_timeout
+import org.meshtastic.core.resources.schema_serial_timeout_description
import org.meshtastic.core.resources.schema_serial_txd
+import org.meshtastic.core.resources.schema_serial_txd_description
import org.meshtastic.core.resources.serial
import org.meshtastic.core.resources.serial_config
import org.meshtastic.core.ui.component.DropDownPreference
@@ -67,6 +74,7 @@ fun SerialConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
TitledCard(title = stringResource(Res.string.serial_config)) {
SwitchPreference(
title = stringResource(Res.string.schema_serial_enabled),
+ summary = stringResource(Res.string.schema_serial_enabled_description),
checked = formState.value.enabled,
enabled = state.connected,
onCheckedChange = {
@@ -77,6 +85,7 @@ fun SerialConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_serial_echo),
+ summary = stringResource(Res.string.schema_serial_echo_description),
checked = formState.value.echo,
enabled = state.connected,
onCheckedChange = {
@@ -87,6 +96,7 @@ fun SerialConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
HorizontalDivider()
EditTextPreference(
title = stringResource(Res.string.schema_serial_rxd),
+ summary = stringResource(Res.string.schema_serial_rxd_description),
value = formState.value.rxd,
enabled = state.connected,
keyboardActions = KeyboardActions(onDone = { focusManager.clearFocus() }),
@@ -97,6 +107,7 @@ fun SerialConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
HorizontalDivider()
EditTextPreference(
title = stringResource(Res.string.schema_serial_txd),
+ summary = stringResource(Res.string.schema_serial_txd_description),
value = formState.value.txd,
enabled = state.connected,
keyboardActions = KeyboardActions(onDone = { focusManager.clearFocus() }),
@@ -107,6 +118,7 @@ fun SerialConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
HorizontalDivider()
DropDownPreference(
title = stringResource(Res.string.schema_serial_baud),
+ summary = stringResource(Res.string.schema_serial_baud_description),
enabled = state.connected,
selectedItem = formState.value.baud,
onItemSelected = {
@@ -116,6 +128,7 @@ fun SerialConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
HorizontalDivider()
EditTextPreference(
title = stringResource(Res.string.schema_serial_timeout),
+ summary = stringResource(Res.string.schema_serial_timeout_description),
value = formState.value.timeout,
enabled = state.connected,
keyboardActions = KeyboardActions(onDone = { focusManager.clearFocus() }),
@@ -126,6 +139,7 @@ fun SerialConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
HorizontalDivider()
DropDownPreference(
title = stringResource(Res.string.schema_serial_mode),
+ summary = stringResource(Res.string.schema_serial_mode_description),
enabled = state.connected,
selectedItem = formState.value.mode,
onItemSelected = {
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/StoreForwardConfigItemList.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/StoreForwardConfigItemList.kt
index 5d6ea61c87..50d38fc433 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/StoreForwardConfigItemList.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/StoreForwardConfigItemList.kt
@@ -26,10 +26,13 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
import org.jetbrains.compose.resources.stringResource
import org.meshtastic.core.resources.Res
import org.meshtastic.core.resources.schema_storeforward_enabled
+import org.meshtastic.core.resources.schema_storeforward_enabled_description
import org.meshtastic.core.resources.schema_storeforward_heartbeat
+import org.meshtastic.core.resources.schema_storeforward_heartbeat_description
import org.meshtastic.core.resources.schema_storeforward_history_return_max
import org.meshtastic.core.resources.schema_storeforward_history_return_window
import org.meshtastic.core.resources.schema_storeforward_is_server
+import org.meshtastic.core.resources.schema_storeforward_is_server_description
import org.meshtastic.core.resources.schema_storeforward_records
import org.meshtastic.core.resources.store_forward
import org.meshtastic.core.resources.store_forward_config
@@ -64,6 +67,7 @@ fun StoreForwardConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit
TitledCard(title = stringResource(Res.string.store_forward_config)) {
SwitchPreference(
title = stringResource(Res.string.schema_storeforward_enabled),
+ summary = stringResource(Res.string.schema_storeforward_enabled_description),
checked = formState.value.enabled,
enabled = state.connected,
onCheckedChange = {
@@ -74,6 +78,7 @@ fun StoreForwardConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_storeforward_heartbeat),
+ summary = stringResource(Res.string.schema_storeforward_heartbeat_description),
checked = formState.value.heartbeat,
enabled = state.connected,
onCheckedChange = {
@@ -115,6 +120,7 @@ fun StoreForwardConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_storeforward_is_server),
+ summary = stringResource(Res.string.schema_storeforward_is_server_description),
checked = formState.value.is_server,
enabled = state.connected,
onCheckedChange = {
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/TAKConfigItemList.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/TAKConfigItemList.kt
index 21d7e8b26e..fb9f2101d5 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/TAKConfigItemList.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/TAKConfigItemList.kt
@@ -61,9 +61,10 @@ import org.meshtastic.core.repository.TakPrefs
import org.meshtastic.core.resources.Res
import org.meshtastic.core.resources.back
import org.meshtastic.core.resources.export_tak_data_package
+import org.meshtastic.core.resources.schema_tak_role
+import org.meshtastic.core.resources.schema_tak_team
import org.meshtastic.core.resources.tak
import org.meshtastic.core.resources.tak_config
-import org.meshtastic.core.resources.tak_role
import org.meshtastic.core.resources.tak_server
import org.meshtastic.core.resources.tak_server_channel
import org.meshtastic.core.resources.tak_server_channel_desc
@@ -94,7 +95,6 @@ import org.meshtastic.core.resources.tak_server_test_results_v2
import org.meshtastic.core.resources.tak_server_test_run
import org.meshtastic.core.resources.tak_server_test_running
import org.meshtastic.core.resources.tak_server_v1_fallback_notice
-import org.meshtastic.core.resources.tak_team
import org.meshtastic.core.takserver.TAKDataPackageGenerator
import org.meshtastic.core.takserver.TAKMeshIntegration
import org.meshtastic.core.takserver.TAKServerManager
@@ -170,7 +170,7 @@ internal fun TakConfigCard(
) {
TitledCard(title = stringResource(Res.string.tak_config)) {
DropDownPreference(
- title = stringResource(Res.string.tak_team),
+ title = stringResource(Res.string.schema_tak_team),
enabled = enabled,
selectedItem = team,
itemColor = { Color(getColorFrom(it)) },
@@ -178,7 +178,7 @@ internal fun TakConfigCard(
)
HorizontalDivider()
DropDownPreference(
- title = stringResource(Res.string.tak_role),
+ title = stringResource(Res.string.schema_tak_role),
enabled = enabled,
selectedItem = role,
onItemSelected = onRoleSelected,
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/TelemetryConfigItemList.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/TelemetryConfigItemList.kt
index 0a87990df6..768f5d3d55 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/TelemetryConfigItemList.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/radio/component/TelemetryConfigItemList.kt
@@ -26,17 +26,27 @@ import org.jetbrains.compose.resources.stringResource
import org.meshtastic.core.model.Capabilities
import org.meshtastic.core.resources.Res
import org.meshtastic.core.resources.schema_telemetry_air_quality_enabled
+import org.meshtastic.core.resources.schema_telemetry_air_quality_enabled_description
import org.meshtastic.core.resources.schema_telemetry_air_quality_interval
+import org.meshtastic.core.resources.schema_telemetry_air_quality_interval_description
import org.meshtastic.core.resources.schema_telemetry_device_telemetry_enabled
import org.meshtastic.core.resources.schema_telemetry_device_telemetry_enabled_description
import org.meshtastic.core.resources.schema_telemetry_device_update_interval
+import org.meshtastic.core.resources.schema_telemetry_device_update_interval_description
import org.meshtastic.core.resources.schema_telemetry_environment_display_fahrenheit
+import org.meshtastic.core.resources.schema_telemetry_environment_display_fahrenheit_description
import org.meshtastic.core.resources.schema_telemetry_environment_measurement_enabled
+import org.meshtastic.core.resources.schema_telemetry_environment_measurement_enabled_description
import org.meshtastic.core.resources.schema_telemetry_environment_screen_enabled
+import org.meshtastic.core.resources.schema_telemetry_environment_screen_enabled_description
import org.meshtastic.core.resources.schema_telemetry_environment_update_interval
+import org.meshtastic.core.resources.schema_telemetry_environment_update_interval_description
import org.meshtastic.core.resources.schema_telemetry_power_measurement_enabled
+import org.meshtastic.core.resources.schema_telemetry_power_measurement_enabled_description
import org.meshtastic.core.resources.schema_telemetry_power_screen_enabled
+import org.meshtastic.core.resources.schema_telemetry_power_screen_enabled_description
import org.meshtastic.core.resources.schema_telemetry_power_update_interval
+import org.meshtastic.core.resources.schema_telemetry_power_update_interval_description
import org.meshtastic.core.resources.telemetry
import org.meshtastic.core.resources.telemetry_config
import org.meshtastic.core.ui.component.DropDownPreference
@@ -90,6 +100,7 @@ fun TelemetryConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
val items = remember { IntervalConfiguration.BROADCAST_SHORT.allowedIntervals }
DropDownPreference(
title = stringResource(Res.string.schema_telemetry_device_update_interval),
+ summary = stringResource(Res.string.schema_telemetry_device_update_interval_description),
selectedItem = formState.value.device_update_interval.toLong(),
enabled = state.connected,
items = items.map { it.value to it.toDisplayString() },
@@ -101,6 +112,7 @@ fun TelemetryConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_telemetry_environment_measurement_enabled),
+ summary = stringResource(Res.string.schema_telemetry_environment_measurement_enabled_description),
checked = formState.value.environment_measurement_enabled,
enabled = state.connected,
onCheckedChange = {
@@ -113,6 +125,7 @@ fun TelemetryConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
val envItems = remember { IntervalConfiguration.BROADCAST_SHORT.allowedIntervals }
DropDownPreference(
title = stringResource(Res.string.schema_telemetry_environment_update_interval),
+ summary = stringResource(Res.string.schema_telemetry_environment_update_interval_description),
selectedItem = formState.value.environment_update_interval.toLong(),
enabled = state.connected,
items = envItems.map { it.value to it.toDisplayString() },
@@ -127,6 +140,7 @@ fun TelemetryConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_telemetry_environment_screen_enabled),
+ summary = stringResource(Res.string.schema_telemetry_environment_screen_enabled_description),
checked = formState.value.environment_screen_enabled,
enabled = state.connected,
onCheckedChange = {
@@ -138,6 +152,7 @@ fun TelemetryConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_telemetry_environment_display_fahrenheit),
+ summary = stringResource(Res.string.schema_telemetry_environment_display_fahrenheit_description),
checked = formState.value.environment_display_fahrenheit,
enabled = state.connected,
onCheckedChange = {
@@ -149,6 +164,7 @@ fun TelemetryConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_telemetry_air_quality_enabled),
+ summary = stringResource(Res.string.schema_telemetry_air_quality_enabled_description),
checked = formState.value.air_quality_enabled,
enabled = state.connected,
onCheckedChange = {
@@ -161,6 +177,7 @@ fun TelemetryConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
val airItems = remember { IntervalConfiguration.BROADCAST_SHORT.allowedIntervals }
DropDownPreference(
title = stringResource(Res.string.schema_telemetry_air_quality_interval),
+ summary = stringResource(Res.string.schema_telemetry_air_quality_interval_description),
selectedItem = formState.value.air_quality_interval.toLong(),
enabled = state.connected,
items = airItems.map { it.value to it.toDisplayString() },
@@ -172,6 +189,7 @@ fun TelemetryConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_telemetry_power_measurement_enabled),
+ summary = stringResource(Res.string.schema_telemetry_power_measurement_enabled_description),
checked = formState.value.power_measurement_enabled,
enabled = state.connected,
onCheckedChange = {
@@ -184,6 +202,7 @@ fun TelemetryConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
val powerItems = remember { IntervalConfiguration.BROADCAST_SHORT.allowedIntervals }
DropDownPreference(
title = stringResource(Res.string.schema_telemetry_power_update_interval),
+ summary = stringResource(Res.string.schema_telemetry_power_update_interval_description),
selectedItem = formState.value.power_update_interval.toLong(),
enabled = state.connected,
items = powerItems.map { it.value to it.toDisplayString() },
@@ -195,6 +214,7 @@ fun TelemetryConfigScreen(viewModel: RadioConfigViewModel, onBack: () -> Unit) {
HorizontalDivider()
SwitchPreference(
title = stringResource(Res.string.schema_telemetry_power_screen_enabled),
+ summary = stringResource(Res.string.schema_telemetry_power_screen_enabled_description),
checked = formState.value.power_screen_enabled,
enabled = state.connected,
onCheckedChange = {
diff --git a/feature/settings/src/commonTest/kotlin/org/meshtastic/feature/settings/radio/component/MapReportingPreferenceTest.kt b/feature/settings/src/commonTest/kotlin/org/meshtastic/feature/settings/radio/component/MapReportingPreferenceTest.kt
index d2e2a529f2..862587015c 100644
--- a/feature/settings/src/commonTest/kotlin/org/meshtastic/feature/settings/radio/component/MapReportingPreferenceTest.kt
+++ b/feature/settings/src/commonTest/kotlin/org/meshtastic/feature/settings/radio/component/MapReportingPreferenceTest.kt
@@ -25,8 +25,8 @@ import androidx.compose.ui.test.v2.runComposeUiTest
import org.meshtastic.core.resources.Res
import org.meshtastic.core.resources.getString
import org.meshtastic.core.resources.i_agree
-import org.meshtastic.core.resources.map_reporting
-import org.meshtastic.core.resources.map_reporting_summary
+import org.meshtastic.core.resources.schema_mqtt_map_reporting_enabled
+import org.meshtastic.core.resources.schema_mqtt_map_reporting_enabled_description
import kotlin.test.Test
import kotlin.test.assertFalse
import kotlin.test.assertTrue
@@ -62,8 +62,8 @@ class MapReportingPreferenceTest {
}
}
// Verify that the dialog title is displayed
- onNodeWithText(getString(Res.string.map_reporting)).assertIsDisplayed()
- onNodeWithText(getString(Res.string.map_reporting_summary)).assertIsDisplayed()
+ onNodeWithText(getString(Res.string.schema_mqtt_map_reporting_enabled)).assertIsDisplayed()
+ onNodeWithText(getString(Res.string.schema_mqtt_map_reporting_enabled_description)).assertIsDisplayed()
}
@Test
@@ -84,14 +84,14 @@ class MapReportingPreferenceTest {
}
}
onNodeWithText(getString(Res.string.i_agree)).assertDoesNotExist()
- onNodeWithText(getString(Res.string.map_reporting)).performClick()
+ onNodeWithText(getString(Res.string.schema_mqtt_map_reporting_enabled)).performClick()
assertFalse(mapReportingEnabled)
assertFalse(shouldReportLocation)
onNodeWithText(getString(Res.string.i_agree)).assertIsDisplayed()
onNodeWithText(getString(Res.string.i_agree)).performClick()
assertTrue(shouldReportLocation)
assertTrue(mapReportingEnabled)
- onNodeWithText(getString(Res.string.map_reporting)).performClick()
+ onNodeWithText(getString(Res.string.schema_mqtt_map_reporting_enabled)).performClick()
onNodeWithText(getString(Res.string.i_agree)).assertDoesNotExist()
assertTrue(shouldReportLocation)
assertFalse(mapReportingEnabled)
diff --git a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotTakConfigCard_Dark_d19fbf1f_0.png b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotTakConfigCard_Dark_d19fbf1f_0.png
index a740fcdfe4..a2e2ad91d4 100644
Binary files a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotTakConfigCard_Dark_d19fbf1f_0.png and b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotTakConfigCard_Dark_d19fbf1f_0.png differ
diff --git a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotTakConfigCard_Light_b29dc7a7_0.png b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotTakConfigCard_Light_b29dc7a7_0.png
index bfa18e3801..81ab288461 100644
Binary files a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotTakConfigCard_Light_b29dc7a7_0.png and b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotTakConfigCard_Light_b29dc7a7_0.png differ