From 3210bf1ad36212e490fb6200ebf173f1a975469b Mon Sep 17 00:00:00 2001 From: andrekir Date: Thu, 27 Jul 2023 05:50:38 -0300 Subject: [PATCH] fix: don't show Fahrenheit when temperature field is empty (0f) --- .../main/java/com/geeksville/mesh/NodeInfo.kt | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/NodeInfo.kt b/app/src/main/java/com/geeksville/mesh/NodeInfo.kt index 5786ed0c5..4b147321e 100644 --- a/app/src/main/java/com/geeksville/mesh/NodeInfo.kt +++ b/app/src/main/java/com/geeksville/mesh/NodeInfo.kt @@ -171,17 +171,21 @@ data class NodeInfo( val voltage get() = deviceMetrics?.voltage val batteryStr get() = if (batteryLevel in 1..100) String.format("%d%%", batteryLevel) else "" - private fun envFormat(f: String, unit: String, env: Float?): String = - if (env != null && env != 0f) String.format(f + unit, env) else "" + private fun Float.envFormat(unit: String, decimalPlaces: Int = 1): String = + if (this != 0f) String.format("%.${decimalPlaces}f$unit", this) else "" - fun envMetricStr(isFahrenheit: Boolean = false): String = - (if (!isFahrenheit) envFormat("%.1f", "°C ", environmentMetrics?.temperature) - else envFormat("%.1f", "°F ", environmentMetrics?.temperature?.times(1.8f)?.plus(32))) + - envFormat("%.0f", "%% ", environmentMetrics?.relativeHumidity) + - envFormat("%.1f", "hPa ", environmentMetrics?.barometricPressure) + - envFormat("%.0f", "MΩ ", environmentMetrics?.gasResistance) + - envFormat("%.2f", "V ", environmentMetrics?.voltage) + - envFormat("%.1f", "mA", environmentMetrics?.current) + fun envMetricStr(isFahrenheit: Boolean = false): String = buildString { + val env = environmentMetrics ?: return "" + if (env.temperature != 0f) append( + if (!isFahrenheit) env.temperature.envFormat("°C ") + else (env.temperature * 1.8f + 32).envFormat("°F ") + ) + append(env.relativeHumidity.envFormat("%% ", 0)) + append(env.barometricPressure.envFormat("hPa ")) + append(env.gasResistance.envFormat("MΩ ", 0)) + append(env.voltage.envFormat("V ", 2)) + append(env.current.envFormat("mA")) + } /** * true if the device was heard from recently