mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-04-20 22:23:37 +00:00
46 lines
1.6 KiB
Kotlin
46 lines
1.6 KiB
Kotlin
|
|
package com.geeksville.mesh.util
|
||
|
|
|
||
|
|
import com.geeksville.mesh.ConfigProtos
|
||
|
|
|
||
|
|
enum class DistanceUnit(
|
||
|
|
val symbol: String,
|
||
|
|
val multiplier: Float,
|
||
|
|
val system: Int
|
||
|
|
) {
|
||
|
|
METERS("m", 1F, ConfigProtos.Config.DisplayConfig.DisplayUnits.METRIC_VALUE),
|
||
|
|
KILOMETERS("km", 0.001F, ConfigProtos.Config.DisplayConfig.DisplayUnits.METRIC_VALUE),
|
||
|
|
FEET("ft", 3.28084F, ConfigProtos.Config.DisplayConfig.DisplayUnits.IMPERIAL_VALUE),
|
||
|
|
MILES("mi", 0.000621371F, ConfigProtos.Config.DisplayConfig.DisplayUnits.IMPERIAL_VALUE),
|
||
|
|
}
|
||
|
|
|
||
|
|
fun Int.metersIn(unit: DistanceUnit): Float {
|
||
|
|
return this * unit.multiplier
|
||
|
|
}
|
||
|
|
|
||
|
|
fun Int.metersIn(system: ConfigProtos.Config.DisplayConfig.DisplayUnits): Float {
|
||
|
|
return this * when (system.number) {
|
||
|
|
ConfigProtos.Config.DisplayConfig.DisplayUnits.METRIC_VALUE -> DistanceUnit.METERS.multiplier
|
||
|
|
ConfigProtos.Config.DisplayConfig.DisplayUnits.IMPERIAL_VALUE -> DistanceUnit.FEET.multiplier
|
||
|
|
else -> throw IllegalArgumentException("Unknown distance system $system")
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
fun Float.toString(unit: DistanceUnit): String {
|
||
|
|
return "%.1f %s".format(this, unit.symbol)
|
||
|
|
}
|
||
|
|
|
||
|
|
fun Float.toString(
|
||
|
|
system: ConfigProtos.Config.DisplayConfig.DisplayUnits
|
||
|
|
): String {
|
||
|
|
return "%.1f %s".format(this,
|
||
|
|
when (system.number) {
|
||
|
|
ConfigProtos.Config.DisplayConfig.DisplayUnits.METRIC_VALUE -> {
|
||
|
|
DistanceUnit.METERS.symbol
|
||
|
|
}
|
||
|
|
ConfigProtos.Config.DisplayConfig.DisplayUnits.IMPERIAL_VALUE -> {
|
||
|
|
DistanceUnit.FEET.symbol
|
||
|
|
}
|
||
|
|
else -> throw IllegalArgumentException("Unknown distance system $system")
|
||
|
|
},
|
||
|
|
)
|
||
|
|
}
|