mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-04-20 22:23:37 +00:00
feat: Add option for Miles and Feet for distance (#651)
This commit is contained in:
parent
05327d2c05
commit
37762f300b
4 changed files with 10 additions and 7 deletions
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue