From 2f347bbd9b40ecc83f3836d739b05688141c9374 Mon Sep 17 00:00:00 2001 From: Dane Evans Date: Sat, 27 Dec 2025 21:27:52 +1100 Subject: [PATCH] Add elevation to places where LatLong is listed. (#4071) --- .../feature/node/compass/CompassUiState.kt | 1 + .../feature/node/compass/CompassViewModel.kt | 1 + .../feature/node/component/LinkedCoordinatesItem.kt | 13 +++++++++++-- .../feature/node/component/PositionSection.kt | 2 +- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/feature/node/src/main/kotlin/org/meshtastic/feature/node/compass/CompassUiState.kt b/feature/node/src/main/kotlin/org/meshtastic/feature/node/compass/CompassUiState.kt index a8f44f0d6..2d40218d4 100644 --- a/feature/node/src/main/kotlin/org/meshtastic/feature/node/compass/CompassUiState.kt +++ b/feature/node/src/main/kotlin/org/meshtastic/feature/node/compass/CompassUiState.kt @@ -45,4 +45,5 @@ data class CompassUiState( val isAligned: Boolean = false, val hasTargetPosition: Boolean = true, val displayUnits: DisplayUnits = DisplayUnits.METRIC, + val targetAltitude: Int? = null, ) diff --git a/feature/node/src/main/kotlin/org/meshtastic/feature/node/compass/CompassViewModel.kt b/feature/node/src/main/kotlin/org/meshtastic/feature/node/compass/CompassViewModel.kt index d8a96113e..715ddddab 100644 --- a/feature/node/src/main/kotlin/org/meshtastic/feature/node/compass/CompassViewModel.kt +++ b/feature/node/src/main/kotlin/org/meshtastic/feature/node/compass/CompassViewModel.kt @@ -87,6 +87,7 @@ constructor( hasTargetPosition = targetPos != null, displayUnits = displayUnits, positionTimeSec = targetPositionTimeSec, + targetAltitude = node.validPosition?.altitude, ) } diff --git a/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/LinkedCoordinatesItem.kt b/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/LinkedCoordinatesItem.kt index 0f8b95fe9..f3640e868 100644 --- a/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/LinkedCoordinatesItem.kt +++ b/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/LinkedCoordinatesItem.kt @@ -37,29 +37,38 @@ import org.jetbrains.compose.resources.stringResource import org.meshtastic.core.database.model.Node import org.meshtastic.core.model.util.GPSFormat import org.meshtastic.core.model.util.formatAgo +import org.meshtastic.core.model.util.metersIn +import org.meshtastic.core.model.util.toString import org.meshtastic.core.strings.Res +import org.meshtastic.core.strings.elevation_suffix import org.meshtastic.core.strings.last_position_update import org.meshtastic.core.ui.component.BasicListItem import org.meshtastic.core.ui.component.icon import org.meshtastic.core.ui.theme.AppTheme import org.meshtastic.core.ui.util.showToast +import org.meshtastic.proto.ConfigProtos.Config.DisplayConfig.DisplayUnits import timber.log.Timber import java.net.URLEncoder @OptIn(ExperimentalFoundationApi::class) @Composable -fun LinkedCoordinatesItem(node: Node) { +fun LinkedCoordinatesItem(node: Node, displayUnits: DisplayUnits = DisplayUnits.METRIC) { val context = LocalContext.current val clipboard: Clipboard = LocalClipboard.current val coroutineScope = rememberCoroutineScope() val ago = formatAgo(node.position.time) val coordinates = GPSFormat.toDec(node.latitude, node.longitude) + val elevationText = + node.validPosition?.altitude?.let { altitude -> + val suffix = stringResource(Res.string.elevation_suffix) + " • ${altitude.metersIn(displayUnits).toString(displayUnits)} $suffix" + } ?: "" BasicListItem( text = stringResource(Res.string.last_position_update), leadingIcon = Icons.Default.LocationOn, - supportingText = "$ago • $coordinates", + supportingText = "$ago • $coordinates$elevationText", trailingContent = Icons.AutoMirrored.Rounded.KeyboardArrowRight.icon(), onClick = { val label = URLEncoder.encode(node.user.longName, "utf-8") diff --git a/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/PositionSection.kt b/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/PositionSection.kt index 7ed357da5..09446e4bb 100644 --- a/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/PositionSection.kt +++ b/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/PositionSection.kt @@ -93,7 +93,7 @@ fun PositionSection( if (hasValidPosition) { PositionMap(node, distance) - LinkedCoordinatesItem(node) + LinkedCoordinatesItem(node, metricsState.displayUnits) Spacer(Modifier.height(8.dp)) }