feat: Add option for Miles and Feet for distance (#651)

This commit is contained in:
Jonathan Bennett 2023-07-06 16:26:38 -05:00 committed by GitHub
parent 05327d2c05
commit 37762f300b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 10 additions and 7 deletions

View file

@ -218,11 +218,14 @@ data class NodeInfo(
}
/// @return a nice human readable string for the distance, or null for unknown
fun distanceStr(o: NodeInfo?) = distance(o)?.let { dist ->
fun distanceStr(o: NodeInfo?, prefUnits: Int = 0) = distance(o)?.let { dist ->
when {
dist == 0 -> null // same point
dist < 1000 -> "%.0f m".format(dist.toDouble())
else -> "%.1f km".format(dist / 1000.0)
prefUnits == ConfigProtos.Config.DisplayConfig.DisplayUnits.METRIC_VALUE && dist < 1000 -> "%.0f m".format(dist.toDouble())
prefUnits == ConfigProtos.Config.DisplayConfig.DisplayUnits.METRIC_VALUE && dist >= 1000 -> "%.1f km".format(dist / 1000.0)
prefUnits == ConfigProtos.Config.DisplayConfig.DisplayUnits.IMPERIAL_VALUE && dist < 1609 -> "%.0f ft".format(dist.toDouble()*3.281)
prefUnits == ConfigProtos.Config.DisplayConfig.DisplayUnits.IMPERIAL_VALUE && dist >= 1609 -> "%.1f mi".format(dist / 1609.34)
else -> null
}
}
}

View file

@ -194,7 +194,7 @@ class UsersFragment : ScreenFragment("Users"), Logging {
}
val ourNodeInfo = model.ourNodeInfo.value
val distance = ourNodeInfo?.distanceStr(n)
val distance = ourNodeInfo?.distanceStr(n, model.config.display.units.number)
if (distance != null) {
holder.distanceView.text = distance
holder.distanceView.visibility = View.VISIBLE

View file

@ -152,7 +152,7 @@ fun MapView(model: UIViewModel = viewModel()) {
MarkerWithLabel(map, "${u.longName} ${formatAgo(p.time)}").apply {
title = "${u.longName} ${node.batteryStr}"
snippet = model.gpsString(p)
ourNode?.distanceStr(node)?.let { dist ->
ourNode?.distanceStr(node, model.config.display.units.number)?.let { dist ->
val string = context.getString(R.string.map_subDescription)
subDescription = string.format(ourNode.bearing(node), dist)
}

View file

@ -34,7 +34,7 @@ class NodeInfoTest {
@Test
fun distanceStrGood() {
Assert.assertEquals(ni1.distanceStr(ni2), "1.1 km")
Assert.assertEquals(ni1.distanceStr(ni3), "111 m")
Assert.assertEquals(ni1.distanceStr(ni2, ConfigProtos.Config.DisplayConfig.DisplayUnits.METRIC_VALUE), "1.1 km")
Assert.assertEquals(ni1.distanceStr(ni3, ConfigProtos.Config.DisplayConfig.DisplayUnits.METRIC_VALUE), "111 m")
}
}