From f00c2deb1f4f75c7a8e075f9828314debaa17dcf Mon Sep 17 00:00:00 2001 From: Chet Henry Date: Sun, 30 Nov 2014 21:55:08 -0700 Subject: [PATCH] Allow user to display imperial units --- contrib/RideLogger/res/values/strings.xml | 4 + .../RideLogger/res/xml/sensors_settings.xml | 6 ++ .../com/ridelogger/CurrentValuesAdapter.java | 93 +++++++++++++++++-- 3 files changed, 95 insertions(+), 8 deletions(-) diff --git a/contrib/RideLogger/res/values/strings.xml b/contrib/RideLogger/res/values/strings.xml index 443fd0762..7d14feafc 100644 --- a/contrib/RideLogger/res/values/strings.xml +++ b/contrib/RideLogger/res/values/strings.xml @@ -75,6 +75,9 @@ Display Sensors List of Sensors Display + Imperial Units + Show Measurements in Imperial Units + Display Text Size RideLogger @@ -86,5 +89,6 @@ PhoneHomePeriod TrackingSensors TrackingSize + TrackingImperialUnits diff --git a/contrib/RideLogger/res/xml/sensors_settings.xml b/contrib/RideLogger/res/xml/sensors_settings.xml index 10342c463..4f70fdd6e 100644 --- a/contrib/RideLogger/res/xml/sensors_settings.xml +++ b/contrib/RideLogger/res/xml/sensors_settings.xml @@ -8,6 +8,12 @@ android:title="@string/setting_sensors_title" android:summary="@string/setting_sensors_note" /> + + sensors = settings.getStringSet(context.getString(R.string.PREF_TRACKING_SENSORS), null); size = Integer.valueOf(settings.getString(context.getString(R.string.PREF_TRACKING_SIZE), "20")); + imperial = settings.getBoolean(context.getString(R.string.PREF_TRACKING_IMPERIAL_UNITS), false); + if(sensors != null && sensors.size() > 0) { keys = new int[sensors.size()]; @@ -55,6 +59,7 @@ public class CurrentValuesAdapter extends BaseAdapter { valuesTvs[key].setTextSize(TypedValue.COMPLEX_UNIT_SP, size); keyTvs[key].setTextSize(TypedValue.COMPLEX_UNIT_SP, (int) (size * 0.75)); } + notifyDataSetChanged(); } else if (pkey == context.getString(R.string.PREF_TRACKING_SENSORS)) { Set sensors = sharedPreferences.getStringSet(context.getString(R.string.PREF_TRACKING_SENSORS), null); keys = new int[sensors.size()]; @@ -66,6 +71,36 @@ public class CurrentValuesAdapter extends BaseAdapter { } context.layout.setAdapter(CurrentValuesAdapter.this); + } else if (pkey == context.getString(R.string.PREF_TRACKING_IMPERIAL_UNITS)) { + imperial = sharedPreferences.getBoolean(pkey, false); + + if(!imperial) { + for(int key : keys) { + keyTvs[key].setText(RideService.KEYS[key].toString().toLowerCase()); + } + } else { + for(int key : keys) { + switch (key) { + case RideService.ALTITUDE: + keyTvs[key].setText("ft"); + break; + + case RideService.KPH: + keyTvs[key].setText("mph"); + break; + + case RideService.KM: + keyTvs[key].setText("m"); + break; + + default: + keyTvs[key].setText(RideService.KEYS[key].toString().toLowerCase()); + break; + } + } + } + + notifyDataSetChanged(); } } } @@ -112,7 +147,29 @@ public class CurrentValuesAdapter extends BaseAdapter { keyTvs[key] = new TextView(context); keyTvs[key].setTextSize(TypedValue.COMPLEX_UNIT_SP, (int) (size * 0.55)); - keyTvs[key].setText(RideService.KEYS[key].toString().toLowerCase()); + + + if(!imperial) { + keyTvs[key].setText(RideService.KEYS[key].toString().toLowerCase()); + } else { + switch (key) { + case RideService.ALTITUDE: + keyTvs[key].setText("ft"); + break; + + case RideService.KPH: + keyTvs[key].setText("mph"); + break; + + case RideService.KM: + keyTvs[key].setText("miles"); + break; + + default: + keyTvs[key].setText(RideService.KEYS[key].toString().toLowerCase()); + break; + } + } } @@ -146,7 +203,27 @@ public class CurrentValuesAdapter extends BaseAdapter { public void update(float[] values) { for (int key: keys) { - valuesTvs[key].setText(String.format("%.2f", values[key])); + if(!imperial) { + valuesTvs[key].setText(String.format("%.2f", values[key])); + } else { + switch (key) { + case RideService.ALTITUDE: + valuesTvs[key].setText(String.format("%.2f", values[key] * 3.28084)); + break; + + case RideService.KPH: + valuesTvs[key].setText(String.format("%.2f", values[key] * 0.621371)); + break; + + case RideService.KM: + valuesTvs[key].setText(String.format("%.2f", values[key] * 0.621371)); + break; + + default: + valuesTvs[key].setText(String.format("%.2f", values[key])); + break; + } + } } notifyDataSetChanged();