From a8c771f0d26978c4474f2b2be7452d678e42aadb Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 1 Nov 2024 20:36:00 -0700 Subject: [PATCH] Add Setting for Metric or Imperial. --- res/values/arrays.xml | 4 ++++ res/values/strings.xml | 9 +++++++++ res/xml/preferences.xml | 14 ++++++++++++++ src/PrefsWrapper.scala | 5 ++++- src/StationListAdapter.scala | 17 ++++++++++++++--- 5 files changed, 45 insertions(+), 4 deletions(-) diff --git a/res/values/arrays.xml b/res/values/arrays.xml index a94ee1a..87023ef 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -85,6 +85,10 @@ 12 13 14 15 + + 1 2 + + @string/age_30 @string/age_2h diff --git a/res/values/strings.xml b/res/values/strings.xml index e3551a6..729647d 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -168,6 +168,9 @@ SSID Station type (1..15; 9=Mobile, 10=APRS-IS) Enter the SSID for your station +Distance Units +Unit Preference +Select Distance Unit (none) Primary Station @@ -187,6 +190,12 @@ 14: Freight vehicle 15: Generic additional station + + + Metric + Imperial + + APRS symbol Your symbol for map display Overlay: diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml index 7bb06c4..2ad7f79 100644 --- a/res/xml/preferences.xml +++ b/res/xml/preferences.xml @@ -50,6 +50,20 @@ + + + + + + + defValue } diff --git a/src/StationListAdapter.scala b/src/StationListAdapter.scala index 5ac85a0..81ccb2f 100644 --- a/src/StationListAdapter.scala +++ b/src/StationListAdapter.scala @@ -83,9 +83,20 @@ class StationListAdapter(context : Context, prefs : PrefsWrapper, val qrg_visible = if (qrg != null && qrg != "") View.VISIBLE else View.GONE view.findViewById(R.id.station_qrg).asInstanceOf[View].setVisibility(qrg_visible) val MCD = 1000000.0 - android.location.Location.distanceBetween(my_lat/MCD, my_lon/MCD, - lat/MCD, lon/MCD, dist) - distage.setText("%1.1f km %s\n%s".format(dist(0)/1000.0, getBearing(dist(1)), age)) + android.location.Location.distanceBetween(my_lat/MCD, my_lon/MCD, lat/MCD, lon/MCD, dist) + + // Determine whether to use metric or imperial based on user preference + val isMetric = prefs.isMetric() // Assuming isMetric() returns true for metric, false for imperial + val distanceText: String = if (isMetric) { + val distanceInKm = dist(0) / 1000.0 + "%1.1f km %s\n%s".format(distanceInKm, getBearing(dist(1)), age) + } else { + val distanceInMiles = dist(0) / 1000.0 * 0.621371 + "%1.1f mi %s\n%s".format(distanceInMiles, getBearing(dist(1)), age) + } + + distage.setText(distanceText) + view.findViewById(R.id.station_symbol).asInstanceOf[SymbolView].setSymbol(symbol) super.bindView(view, context, cursor) }