diff --git a/core/strings/src/main/res/values/strings.xml b/core/strings/src/main/res/values/strings.xml
index 05bce6852..fd29e2750 100644
--- a/core/strings/src/main/res/values/strings.xml
+++ b/core/strings/src/main/res/values/strings.xml
@@ -938,4 +938,5 @@
Datadog https://www.datadoghq.com/
For more information, see our privacy policy.
" https://meshtastic.org/docs/legal/privacy/"
+ Unset - 0
diff --git a/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/DetectionSensorConfigItemList.kt b/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/DetectionSensorConfigItemList.kt
index da82f1984..8696186c7 100644
--- a/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/DetectionSensorConfigItemList.kt
+++ b/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/DetectionSensorConfigItemList.kt
@@ -24,6 +24,7 @@ import androidx.compose.material3.HorizontalDivider
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
+import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.ImeAction
@@ -49,6 +50,7 @@ fun DetectionSensorConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(
val detectionSensorConfig = state.moduleConfig.detectionSensor
val formState = rememberConfigState(initialValue = detectionSensorConfig)
val focusManager = LocalFocusManager.current
+ val context = LocalContext.current
RadioConfigScreenList(
title = stringResource(id = R.string.detection_sensor),
@@ -79,7 +81,7 @@ fun DetectionSensorConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(
title = stringResource(R.string.minimum_broadcast_seconds),
selectedItem = formState.value.minimumBroadcastSecs.toLong(),
enabled = state.connected,
- items = minimumBroadcastIntervals.map { it.value to it.toDisplayString() },
+ items = minimumBroadcastIntervals.map { it.value to it.toDisplayString(context = context) },
onItemSelected = { formState.value = formState.value.copy { minimumBroadcastSecs = it.toInt() } },
)
@@ -88,7 +90,7 @@ fun DetectionSensorConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(
title = stringResource(R.string.state_broadcast_seconds),
selectedItem = formState.value.stateBroadcastSecs.toLong(),
enabled = state.connected,
- items = stateBroadcastIntervals.map { it.value to it.toDisplayString() },
+ items = stateBroadcastIntervals.map { it.value to it.toDisplayString(context = context) },
onItemSelected = { formState.value = formState.value.copy { stateBroadcastSecs = it.toInt() } },
)
HorizontalDivider()
diff --git a/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/DeviceConfigItemList.kt b/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/DeviceConfigItemList.kt
index bc5cd163d..64ad6a813 100644
--- a/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/DeviceConfigItemList.kt
+++ b/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/DeviceConfigItemList.kt
@@ -38,6 +38,7 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.AnnotatedString
@@ -108,6 +109,7 @@ fun DeviceConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(), onBack
}
}
val focusManager = LocalFocusManager.current
+ val context = LocalContext.current
RadioConfigScreenList(
title = stringResource(id = R.string.device),
onBack = onBack,
@@ -145,7 +147,7 @@ fun DeviceConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(), onBack
title = stringResource(R.string.nodeinfo_broadcast_interval),
selectedItem = formState.value.nodeInfoBroadcastSecs.toLong(),
enabled = state.connected,
- items = nodeInfoBroadcastIntervals.map { it.value to it.toDisplayString() },
+ items = nodeInfoBroadcastIntervals.map { it.value to it.toDisplayString(context = context) },
onItemSelected = { formState.value = formState.value.copy { nodeInfoBroadcastSecs = it.toInt() } },
)
}
diff --git a/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/DisplayConfigItemList.kt b/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/DisplayConfigItemList.kt
index 373634fee..21b8ce70c 100644
--- a/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/DisplayConfigItemList.kt
+++ b/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/DisplayConfigItemList.kt
@@ -22,6 +22,7 @@ import androidx.compose.material3.HorizontalDivider
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
+import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
@@ -41,6 +42,7 @@ fun DisplayConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(), onBac
val state by viewModel.radioConfigState.collectAsStateWithLifecycle()
val displayConfig = state.radioConfig.display
val formState = rememberConfigState(initialValue = displayConfig)
+ val context = LocalContext.current
RadioConfigScreenList(
title = stringResource(id = R.string.display),
@@ -104,7 +106,7 @@ fun DisplayConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(), onBac
title = stringResource(R.string.screen_on_for),
summary = stringResource(id = R.string.config_display_screen_on_secs_summary),
enabled = state.connected,
- items = screenOnIntervals.map { it to it.toDisplayString() },
+ items = screenOnIntervals.map { it to it.toDisplayString(context = context) },
selectedItem =
screenOnIntervals.find { it.value == formState.value.screenOnSecs.toLong() }
?: screenOnIntervals.first(),
@@ -115,7 +117,7 @@ fun DisplayConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(), onBac
title = stringResource(R.string.carousel_interval),
summary = stringResource(id = R.string.config_display_auto_screen_carousel_secs_summary),
enabled = state.connected,
- items = carouselIntervals.map { it to it.toDisplayString() },
+ items = carouselIntervals.map { it to it.toDisplayString(context = context) },
selectedItem =
carouselIntervals.find { it.value == formState.value.autoScreenCarouselSecs.toLong() }
?: carouselIntervals.first(),
diff --git a/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/ExternalNotificationConfigItemList.kt b/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/ExternalNotificationConfigItemList.kt
index c50280028..09c4c4a35 100644
--- a/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/ExternalNotificationConfigItemList.kt
+++ b/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/ExternalNotificationConfigItemList.kt
@@ -27,6 +27,7 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
+import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.ImeAction
@@ -53,6 +54,7 @@ fun ExternalNotificationConfigScreen(viewModel: RadioConfigViewModel = hiltViewM
val formState = rememberConfigState(initialValue = extNotificationConfig)
var ringtoneInput by rememberSaveable(ringtone) { mutableStateOf(ringtone) }
val focusManager = LocalFocusManager.current
+ val context = LocalContext.current
RadioConfigScreenList(
title = stringResource(id = R.string.external_notification),
@@ -189,7 +191,7 @@ fun ExternalNotificationConfigScreen(viewModel: RadioConfigViewModel = hiltViewM
val outputItems = remember { IntervalConfiguration.OUTPUT.allowedIntervals }
DropDownPreference(
title = stringResource(R.string.output_duration_milliseconds),
- items = outputItems.map { it.value to it.toDisplayString() },
+ items = outputItems.map { it.value to it.toDisplayString(context = context) },
selectedItem = formState.value.outputMs,
enabled = state.connected,
onItemSelected = { formState.value = formState.value.copy { outputMs = it.toInt() } },
@@ -198,7 +200,7 @@ fun ExternalNotificationConfigScreen(viewModel: RadioConfigViewModel = hiltViewM
val nagItems = remember { IntervalConfiguration.NAG_TIMEOUT.allowedIntervals }
DropDownPreference(
title = stringResource(R.string.nag_timeout_seconds),
- items = nagItems.map { it.value to it.toDisplayString() },
+ items = nagItems.map { it.value to it.toDisplayString(context = context) },
selectedItem = formState.value.nagTimeout,
enabled = state.connected,
onItemSelected = { formState.value = formState.value.copy { nagTimeout = it.toInt() } },
diff --git a/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/MapReportingPreference.kt b/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/MapReportingPreference.kt
index caa12f2b9..e7062e9fb 100644
--- a/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/MapReportingPreference.kt
+++ b/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/MapReportingPreference.kt
@@ -34,6 +34,7 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
+import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
@@ -64,6 +65,7 @@ fun MapReportingPreference(
onPublishIntervalSecsChanged: (Int) -> Unit = {},
enabled: Boolean,
) {
+ val context = LocalContext.current
Column {
var showMapReportingWarning by rememberSaveable { mutableStateOf(mapReportingEnabled) }
LaunchedEffect(mapReportingEnabled) { showMapReportingWarning = mapReportingEnabled }
@@ -124,7 +126,7 @@ fun MapReportingPreference(
DropDownPreference(
modifier = Modifier.padding(bottom = 16.dp),
title = stringResource(R.string.map_reporting_interval_seconds),
- items = publishItems.map { it.value to it.toDisplayString() },
+ items = publishItems.map { it.value to it.toDisplayString(context = context) },
selectedItem = publishIntervalSecs,
enabled = enabled,
onItemSelected = { onPublishIntervalSecsChanged(it.toInt()) },
diff --git a/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/PaxcounterConfigItemList.kt b/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/PaxcounterConfigItemList.kt
index 6d5ab97c7..55475f07b 100644
--- a/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/PaxcounterConfigItemList.kt
+++ b/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/PaxcounterConfigItemList.kt
@@ -23,6 +23,7 @@ import androidx.compose.material3.HorizontalDivider
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
+import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.res.stringResource
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
@@ -44,6 +45,7 @@ fun PaxcounterConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(), on
val paxcounterConfig = state.moduleConfig.paxcounter
val formState = rememberConfigState(initialValue = paxcounterConfig)
val focusManager = LocalFocusManager.current
+ val context = LocalContext.current
RadioConfigScreenList(
title = stringResource(id = R.string.paxcounter),
@@ -72,7 +74,7 @@ fun PaxcounterConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(), on
title = stringResource(R.string.update_interval_seconds),
selectedItem = formState.value.paxcounterUpdateInterval.toLong(),
enabled = state.connected,
- items = items.map { it.value to it.toDisplayString() },
+ items = items.map { it.value to it.toDisplayString(context = context) },
onItemSelected = {
formState.value = formState.value.copy { paxcounterUpdateInterval = it.toInt() }
},
diff --git a/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/PositionConfigItemList.kt b/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/PositionConfigItemList.kt
index 6e7cff115..76246c6f9 100644
--- a/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/PositionConfigItemList.kt
+++ b/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/PositionConfigItemList.kt
@@ -34,6 +34,7 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
+import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.res.stringResource
import androidx.core.location.LocationCompat
@@ -118,7 +119,7 @@ fun PositionConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(), onBa
}
}
val focusManager = LocalFocusManager.current
-
+ val context = LocalContext.current
RadioConfigScreenList(
title = stringResource(id = R.string.position),
onBack = onBack,
@@ -143,12 +144,12 @@ fun PositionConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(), onBa
) {
item {
TitledCard(title = stringResource(R.string.position_packet)) {
- val items = remember { IntervalConfiguration.BROADCAST_MEDIUM.allowedIntervals }
+ val items = remember { IntervalConfiguration.POSITION_BROADCAST.allowedIntervals }
DropDownPreference(
title = stringResource(R.string.broadcast_interval),
summary = stringResource(id = R.string.config_position_broadcast_secs_summary),
enabled = state.connected,
- items = items.map { it to it.toDisplayString() },
+ items = items.map { it to it.toDisplayString(context = context) },
selectedItem =
FixedUpdateIntervals.fromValue(formState.value.positionBroadcastSecs.toLong()) ?: items.first(),
onItemSelected = {
@@ -171,7 +172,7 @@ fun PositionConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(), onBa
summary =
stringResource(id = R.string.config_position_broadcast_smart_minimum_interval_secs_summary),
enabled = state.connected,
- items = smartItems.map { it to it.toDisplayString() },
+ items = smartItems.map { it to it.toDisplayString(context = context) },
selectedItem =
FixedUpdateIntervals.fromValue(formState.value.broadcastSmartMinimumIntervalSecs.toLong())
?: smartItems.first(),
@@ -262,7 +263,7 @@ fun PositionConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(), onBa
title = stringResource(R.string.update_interval),
summary = stringResource(id = R.string.config_position_gps_update_interval_summary),
enabled = state.connected,
- items = items.map { it to it.toDisplayString() },
+ items = items.map { it to it.toDisplayString(context = context) },
selectedItem =
FixedUpdateIntervals.fromValue(formState.value.gpsUpdateInterval.toLong()) ?: items.first(),
onItemSelected = {
diff --git a/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/PowerConfigItemList.kt b/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/PowerConfigItemList.kt
index ce908a0bd..f06ad6b79 100644
--- a/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/PowerConfigItemList.kt
+++ b/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/PowerConfigItemList.kt
@@ -23,6 +23,7 @@ import androidx.compose.material3.HorizontalDivider
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
+import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.res.stringResource
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
@@ -44,6 +45,7 @@ fun PowerConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(), onBack:
val powerConfig = state.radioConfig.power
val formState = rememberConfigState(initialValue = powerConfig)
val focusManager = LocalFocusManager.current
+ val context = LocalContext.current
RadioConfigScreenList(
title = stringResource(id = R.string.power),
@@ -73,7 +75,7 @@ fun PowerConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(), onBack:
title = stringResource(R.string.shutdown_on_power_loss),
selectedItem = formState.value.onBatteryShutdownAfterSecs.toLong(),
enabled = state.connected,
- items = items.map { it.value to it.toDisplayString() },
+ items = items.map { it.value to it.toDisplayString(context = context) },
onItemSelected = {
formState.value = formState.value.copy { onBatteryShutdownAfterSecs = it.toInt() }
},
@@ -104,7 +106,7 @@ fun PowerConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(), onBack:
title = stringResource(R.string.wait_for_bluetooth_duration_seconds),
selectedItem = formState.value.waitBluetoothSecs.toLong(),
enabled = state.connected,
- items = waitBluetoothItems.map { it.value to it.toDisplayString() },
+ items = waitBluetoothItems.map { it.value to it.toDisplayString(context = context) },
onItemSelected = { formState.value = formState.value.copy { waitBluetoothSecs = it.toInt() } },
)
HorizontalDivider()
@@ -114,7 +116,7 @@ fun PowerConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(), onBack:
selectedItem = formState.value.sdsSecs.toLong(),
onItemSelected = { formState.value = formState.value.copy { sdsSecs = it.toInt() } },
enabled = state.connected,
- items = sdsSecsItems.map { it.value to it.toDisplayString() },
+ items = sdsSecsItems.map { it.value to it.toDisplayString(context = context) },
)
HorizontalDivider()
val minWakeItems = remember { IntervalConfiguration.NAG_TIMEOUT.allowedIntervals }
@@ -122,7 +124,7 @@ fun PowerConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(), onBack:
title = stringResource(R.string.minimum_wake_time_seconds),
selectedItem = formState.value.minWakeSecs.toLong(),
enabled = state.connected,
- items = minWakeItems.map { it.value to it.toDisplayString() },
+ items = minWakeItems.map { it.value to it.toDisplayString(context = context) },
onItemSelected = { formState.value = formState.value.copy { minWakeSecs = it.toInt() } },
)
HorizontalDivider()
diff --git a/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/RangeTestConfigItemList.kt b/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/RangeTestConfigItemList.kt
index 9dbfa3df0..4083af2e8 100644
--- a/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/RangeTestConfigItemList.kt
+++ b/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/RangeTestConfigItemList.kt
@@ -22,6 +22,7 @@ import androidx.compose.material3.HorizontalDivider
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
+import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
@@ -40,6 +41,7 @@ fun RangeTestConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(), onB
val state by viewModel.radioConfigState.collectAsStateWithLifecycle()
val rangeTestConfig = state.moduleConfig.rangeTest
val formState = rememberConfigState(initialValue = rangeTestConfig)
+ val context = LocalContext.current
RadioConfigScreenList(
title = stringResource(id = R.string.range_test),
@@ -68,7 +70,7 @@ fun RangeTestConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(), onB
title = stringResource(R.string.sender_message_interval_seconds),
selectedItem = formState.value.sender.toLong(),
enabled = state.connected,
- items = rangeItems.map { it.value to it.toDisplayString() },
+ items = rangeItems.map { it.value to it.toDisplayString(context = context) },
onItemSelected = { formState.value = formState.value.copy { sender = it.toInt() } },
)
HorizontalDivider()
diff --git a/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/TelemetryConfigItemList.kt b/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/TelemetryConfigItemList.kt
index da576d69f..fbf926541 100644
--- a/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/TelemetryConfigItemList.kt
+++ b/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/radio/component/TelemetryConfigItemList.kt
@@ -22,6 +22,7 @@ import androidx.compose.material3.HorizontalDivider
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
+import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
@@ -45,6 +46,7 @@ fun TelemetryConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(), onB
val formState = rememberConfigState(initialValue = telemetryConfig)
val firmwareVersion = state.metadata?.firmwareVersion ?: "1"
+ val context = LocalContext.current
RadioConfigScreenList(
title = stringResource(id = R.string.telemetry),
@@ -76,7 +78,7 @@ fun TelemetryConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(), onB
title = stringResource(R.string.device_metrics_update_interval_seconds),
selectedItem = formState.value.deviceUpdateInterval.toLong(),
enabled = state.connected,
- items = items.map { it.value to it.toDisplayString() },
+ items = items.map { it.value to it.toDisplayString(context = context) },
onItemSelected = { formState.value = formState.value.copy { deviceUpdateInterval = it.toInt() } },
)
HorizontalDivider()
@@ -93,7 +95,7 @@ fun TelemetryConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(), onB
title = stringResource(R.string.environment_metrics_update_interval_seconds),
selectedItem = formState.value.environmentUpdateInterval.toLong(),
enabled = state.connected,
- items = envItems.map { it.value to it.toDisplayString() },
+ items = envItems.map { it.value to it.toDisplayString(context = context) },
onItemSelected = {
formState.value = formState.value.copy { environmentUpdateInterval = it.toInt() }
},
@@ -128,7 +130,7 @@ fun TelemetryConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(), onB
title = stringResource(R.string.air_quality_metrics_update_interval_seconds),
selectedItem = formState.value.airQualityInterval.toLong(),
enabled = state.connected,
- items = airItems.map { it.value to it.toDisplayString() },
+ items = airItems.map { it.value to it.toDisplayString(context = context) },
onItemSelected = { formState.value = formState.value.copy { airQualityInterval = it.toInt() } },
)
HorizontalDivider()
@@ -145,7 +147,7 @@ fun TelemetryConfigScreen(viewModel: RadioConfigViewModel = hiltViewModel(), onB
title = stringResource(R.string.power_metrics_update_interval_seconds),
selectedItem = formState.value.powerUpdateInterval.toLong(),
enabled = state.connected,
- items = powerItems.map { it.value to it.toDisplayString() },
+ items = powerItems.map { it.value to it.toDisplayString(context = context) },
onItemSelected = { formState.value = formState.value.copy { powerUpdateInterval = it.toInt() } },
)
HorizontalDivider()
diff --git a/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/util/FixedUpdateIntervals.kt b/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/util/FixedUpdateIntervals.kt
index 86d21c034..8ff1f313f 100644
--- a/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/util/FixedUpdateIntervals.kt
+++ b/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/util/FixedUpdateIntervals.kt
@@ -57,6 +57,11 @@ enum class FixedUpdateIntervals(val value: Long) {
FORTY_EIGHT_HOURS(TimeUnit.HOURS.toSeconds(48)),
SEVENTY_TWO_HOURS(TimeUnit.HOURS.toSeconds(72)),
ALWAYS_ON(Int.MAX_VALUE.toLong()),
+ SIXTY_SECONDS(TimeUnit.MINUTES.toSeconds(1)),
+ EIGHTY_SECONDS(TimeUnit.SECONDS.toSeconds(80)),
+ NINETY_SECONDS(TimeUnit.SECONDS.toSeconds(90)),
+ EIGHT_SECONDS(TimeUnit.SECONDS.toSeconds(8)),
+ FORTY_SECONDS(TimeUnit.SECONDS.toSeconds(40)),
;
companion object {
@@ -255,6 +260,10 @@ enum class IntervalConfiguration {
POSITION_BROADCAST ->
listOf(
FixedUpdateIntervals.UNSET,
+ FixedUpdateIntervals.SIXTY_SECONDS,
+ FixedUpdateIntervals.NINETY_SECONDS,
+ FixedUpdateIntervals.FIVE_MINUTES,
+ FixedUpdateIntervals.FIFTEEN_MINUTES,
FixedUpdateIntervals.ONE_HOUR,
FixedUpdateIntervals.TWO_HOURS,
FixedUpdateIntervals.THREE_HOURS,
@@ -270,8 +279,12 @@ enum class IntervalConfiguration {
)
GPS_UPDATE ->
listOf(
- FixedUpdateIntervals.THIRTY_SECONDS,
- FixedUpdateIntervals.ONE_MINUTE,
+ FixedUpdateIntervals.UNSET,
+ FixedUpdateIntervals.EIGHT_SECONDS,
+ FixedUpdateIntervals.TWENTY_SECONDS,
+ FixedUpdateIntervals.FORTY_SECONDS,
+ FixedUpdateIntervals.SIXTY_SECONDS,
+ FixedUpdateIntervals.EIGHTY_SECONDS,
FixedUpdateIntervals.TWO_MINUTES,
FixedUpdateIntervals.FIVE_MINUTES,
FixedUpdateIntervals.TEN_MINUTES,
diff --git a/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/util/Formatting.kt b/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/util/Formatting.kt
index 0737f247b..c3f817e56 100644
--- a/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/util/Formatting.kt
+++ b/feature/settings/src/main/kotlin/org/meshtastic/feature/settings/util/Formatting.kt
@@ -17,8 +17,10 @@
package org.meshtastic.feature.settings.util
-fun FixedUpdateIntervals.toDisplayString(): String = if (this == FixedUpdateIntervals.UNSET) {
- "Never"
+import android.content.Context
+
+fun FixedUpdateIntervals.toDisplayString(context: Context): String = if (this == FixedUpdateIntervals.UNSET) {
+ context.getString(org.meshtastic.core.strings.R.string.unset)
} else {
name.split('_').joinToString(" ") { word -> word.lowercase().replaceFirstChar { it.uppercase() } }
}