diff --git a/app/src/main/java/com/geeksville/mesh/ui/NodeItem.kt b/app/src/main/java/com/geeksville/mesh/ui/NodeItem.kt index 402b9d6a7..012a92668 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/NodeItem.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/NodeItem.kt @@ -46,7 +46,6 @@ import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp -import com.geeksville.mesh.ConfigProtos import com.geeksville.mesh.ConfigProtos.Config.DeviceConfig import com.geeksville.mesh.ConfigProtos.Config.DisplayConfig import com.geeksville.mesh.MeshProtos @@ -60,7 +59,6 @@ import com.geeksville.mesh.ui.compose.ElevationInfo import com.geeksville.mesh.ui.compose.SatelliteCountInfo import com.geeksville.mesh.ui.preview.NodeEntityPreviewParameterProvider import com.geeksville.mesh.ui.theme.AppTheme -import com.geeksville.mesh.util.metersIn import com.geeksville.mesh.util.toDistanceString @Suppress("LongMethod", "CyclomaticComplexMethod") @@ -83,9 +81,9 @@ fun NodeItem( val longName = thatNode.user.longName.ifEmpty { stringResource(id = R.string.unknown_username) } val isThisNode = thisNode?.num == thatNode.num - val distance = thisNode?.distance(thatNode)?.let { - val system = DisplayConfig.DisplayUnits.forNumber(distanceUnits) - if (it == 0) null else it.toDistanceString(system) + val system = remember(distanceUnits) { DisplayConfig.DisplayUnits.forNumber(distanceUnits) } + val distance = remember(thisNode, thatNode) { + thisNode?.distance(thatNode)?.takeIf { it > 0 }?.toDistanceString(system) } val (textColor, nodeColor) = thatNode.colors @@ -274,15 +272,11 @@ fun NodeItem( ) } } - val system = - ConfigProtos.Config.DisplayConfig.DisplayUnits.forNumber(distanceUnits) thatNode.validPosition?.let { position -> - val altitude = position.altitude.metersIn(system) - val elevationSuffix = stringResource(id = R.string.elevation_suffix) ElevationInfo( - altitude = altitude, + altitude = position.altitude, system = system, - suffix = elevationSuffix + suffix = stringResource(id = R.string.elevation_suffix) ) } } diff --git a/app/src/main/java/com/geeksville/mesh/ui/compose/ElevationInfo.kt b/app/src/main/java/com/geeksville/mesh/ui/compose/ElevationInfo.kt index 05ab3c2fd..f24d0953e 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/compose/ElevationInfo.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/compose/ElevationInfo.kt @@ -8,17 +8,18 @@ import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.withStyle import androidx.compose.ui.tooling.preview.Preview import com.geeksville.mesh.ConfigProtos.Config.DisplayConfig.DisplayUnits +import com.geeksville.mesh.util.metersIn import com.geeksville.mesh.util.toString @Composable fun ElevationInfo( modifier: Modifier = Modifier, - altitude: Float, + altitude: Int, system: DisplayUnits, suffix: String ) { val annotatedString = buildAnnotatedString { - append(altitude.toString(system)) + append(altitude.metersIn(system).toString(system)) MaterialTheme.typography.overline.toSpanStyle().let { style -> withStyle(style) { append(" $suffix") @@ -38,7 +39,7 @@ fun ElevationInfo( fun ElevationInfoPreview() { MaterialTheme { ElevationInfo( - altitude = 100.0f, + altitude = 100, system = DisplayUnits.METRIC, suffix = "ASL" )