refactor: simplify ElevationInfo component

This commit is contained in:
andrekir 2024-11-12 09:40:57 -03:00
parent f38a7ac0de
commit d324f77d63
2 changed files with 9 additions and 14 deletions

View file

@ -46,7 +46,6 @@ import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.geeksville.mesh.ConfigProtos
import com.geeksville.mesh.ConfigProtos.Config.DeviceConfig import com.geeksville.mesh.ConfigProtos.Config.DeviceConfig
import com.geeksville.mesh.ConfigProtos.Config.DisplayConfig import com.geeksville.mesh.ConfigProtos.Config.DisplayConfig
import com.geeksville.mesh.MeshProtos 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.compose.SatelliteCountInfo
import com.geeksville.mesh.ui.preview.NodeEntityPreviewParameterProvider import com.geeksville.mesh.ui.preview.NodeEntityPreviewParameterProvider
import com.geeksville.mesh.ui.theme.AppTheme import com.geeksville.mesh.ui.theme.AppTheme
import com.geeksville.mesh.util.metersIn
import com.geeksville.mesh.util.toDistanceString import com.geeksville.mesh.util.toDistanceString
@Suppress("LongMethod", "CyclomaticComplexMethod") @Suppress("LongMethod", "CyclomaticComplexMethod")
@ -83,9 +81,9 @@ fun NodeItem(
val longName = thatNode.user.longName.ifEmpty { stringResource(id = R.string.unknown_username) } val longName = thatNode.user.longName.ifEmpty { stringResource(id = R.string.unknown_username) }
val isThisNode = thisNode?.num == thatNode.num val isThisNode = thisNode?.num == thatNode.num
val distance = thisNode?.distance(thatNode)?.let { val system = remember(distanceUnits) { DisplayConfig.DisplayUnits.forNumber(distanceUnits) }
val system = DisplayConfig.DisplayUnits.forNumber(distanceUnits) val distance = remember(thisNode, thatNode) {
if (it == 0) null else it.toDistanceString(system) thisNode?.distance(thatNode)?.takeIf { it > 0 }?.toDistanceString(system)
} }
val (textColor, nodeColor) = thatNode.colors val (textColor, nodeColor) = thatNode.colors
@ -274,15 +272,11 @@ fun NodeItem(
) )
} }
} }
val system =
ConfigProtos.Config.DisplayConfig.DisplayUnits.forNumber(distanceUnits)
thatNode.validPosition?.let { position -> thatNode.validPosition?.let { position ->
val altitude = position.altitude.metersIn(system)
val elevationSuffix = stringResource(id = R.string.elevation_suffix)
ElevationInfo( ElevationInfo(
altitude = altitude, altitude = position.altitude,
system = system, system = system,
suffix = elevationSuffix suffix = stringResource(id = R.string.elevation_suffix)
) )
} }
} }

View file

@ -8,17 +8,18 @@ import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.withStyle import androidx.compose.ui.text.withStyle
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import com.geeksville.mesh.ConfigProtos.Config.DisplayConfig.DisplayUnits import com.geeksville.mesh.ConfigProtos.Config.DisplayConfig.DisplayUnits
import com.geeksville.mesh.util.metersIn
import com.geeksville.mesh.util.toString import com.geeksville.mesh.util.toString
@Composable @Composable
fun ElevationInfo( fun ElevationInfo(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
altitude: Float, altitude: Int,
system: DisplayUnits, system: DisplayUnits,
suffix: String suffix: String
) { ) {
val annotatedString = buildAnnotatedString { val annotatedString = buildAnnotatedString {
append(altitude.toString(system)) append(altitude.metersIn(system).toString(system))
MaterialTheme.typography.overline.toSpanStyle().let { style -> MaterialTheme.typography.overline.toSpanStyle().let { style ->
withStyle(style) { withStyle(style) {
append(" $suffix") append(" $suffix")
@ -38,7 +39,7 @@ fun ElevationInfo(
fun ElevationInfoPreview() { fun ElevationInfoPreview() {
MaterialTheme { MaterialTheme {
ElevationInfo( ElevationInfo(
altitude = 100.0f, altitude = 100,
system = DisplayUnits.METRIC, system = DisplayUnits.METRIC,
suffix = "ASL" suffix = "ASL"
) )