diff options
Diffstat (limited to 'main/src/cgeo/geocaching')
7 files changed, 23 insertions, 15 deletions
diff --git a/main/src/cgeo/geocaching/EditWaypointActivity.java b/main/src/cgeo/geocaching/EditWaypointActivity.java index 2666cdd..46a0000 100644 --- a/main/src/cgeo/geocaching/EditWaypointActivity.java +++ b/main/src/cgeo/geocaching/EditWaypointActivity.java @@ -250,7 +250,7 @@ public class EditWaypointActivity extends AbstractActionBarActivity implements C private void initializeDistanceUnitSelector() { distanceUnits = new ArrayList<>(Arrays.asList(res.getStringArray(R.array.distance_units))); if (initViews) { - distanceUnitSelector.setSelection(Settings.isUseImperialUnits() ? 2 : 0); //0:m, 2:ft + distanceUnitSelector.setSelection(Settings.useImperialUnits() ? 2 : 0); //0:m, 2:ft } } @@ -397,7 +397,7 @@ public class EditWaypointActivity extends AbstractActionBarActivity implements C double distance; try { distance = DistanceParser.parseDistance(distanceText, - !Settings.isUseImperialUnits()); + !Settings.useImperialUnits()); } catch (final NumberFormatException ignored) { showToast(res.getString(R.string.err_parse_dist)); return; diff --git a/main/src/cgeo/geocaching/NavigateAnyPointActivity.java b/main/src/cgeo/geocaching/NavigateAnyPointActivity.java index e148717..925e5b0 100644 --- a/main/src/cgeo/geocaching/NavigateAnyPointActivity.java +++ b/main/src/cgeo/geocaching/NavigateAnyPointActivity.java @@ -261,7 +261,7 @@ public class NavigateAnyPointActivity extends AbstractActionBarActivity implemen private void initializeDistanceUnitSelector() { if (StringUtils.isBlank(distanceUnit)) { - if (Settings.isUseImperialUnits()) { + if (Settings.useImperialUnits()) { distanceUnitSelector.setSelection(2); // ft distanceUnit = res.getStringArray(R.array.distance_units)[2]; } else { @@ -526,7 +526,7 @@ public class NavigateAnyPointActivity extends AbstractActionBarActivity implemen double distance; try { distance = DistanceParser.parseDistance(distanceText, - !Settings.isUseImperialUnits()); + !Settings.useImperialUnits()); } catch (final NumberFormatException ignored) { showToast(res.getString(R.string.err_parse_dist)); return null; diff --git a/main/src/cgeo/geocaching/connector/gc/GCParser.java b/main/src/cgeo/geocaching/connector/gc/GCParser.java index 6cb1bbe..d814bbd 100644 --- a/main/src/cgeo/geocaching/connector/gc/GCParser.java +++ b/main/src/cgeo/geocaching/connector/gc/GCParser.java @@ -192,7 +192,7 @@ public abstract class GCParser { final String distance = TextUtils.getMatch(row, GCConstants.PATTERN_SEARCH_DIRECTION_DISTANCE, false, 2, null, false); if (distance != null) { cache.setDistance(DistanceParser.parseDistance(distance, - !Settings.isUseImperialUnits())); + !Settings.useImperialUnits())); } // difficulty/terrain @@ -1544,7 +1544,7 @@ public abstract class GCParser { if (null != distance) { try { trackable.setDistance(DistanceParser.parseDistance(distance, - !Settings.isUseImperialUnits())); + !Settings.useImperialUnits())); } catch (final NumberFormatException e) { Log.e("GCParser.parseTrackable: Failed to parse distance", e); } diff --git a/main/src/cgeo/geocaching/geopoint/Units.java b/main/src/cgeo/geocaching/geopoint/Units.java index 018216d..c657ede 100644 --- a/main/src/cgeo/geocaching/geopoint/Units.java +++ b/main/src/cgeo/geocaching/geopoint/Units.java @@ -11,7 +11,7 @@ public class Units { public static ImmutablePair<Double, String> scaleDistance(final double distanceKilometers) { double distance; String units; - if (Settings.isUseImperialUnits()) { + if (Settings.useImperialUnits()) { distance = distanceKilometers / IConversion.MILES_TO_KILOMETER; if (distance >= 0.1) { units = "mi"; @@ -54,7 +54,7 @@ public class Units { } public static String getSpeed(final float kilometersPerHour) { - if (Settings.isUseImperialUnits()) { + if (Settings.useImperialUnits()) { return String.format(Locale.US, "%.0f mph", kilometersPerHour / IConversion.MILES_TO_KILOMETER); } return String.format(Locale.US, "%.0f km/h", kilometersPerHour); diff --git a/main/src/cgeo/geocaching/settings/Settings.java b/main/src/cgeo/geocaching/settings/Settings.java index f1eaaee..aeaf078 100644 --- a/main/src/cgeo/geocaching/settings/Settings.java +++ b/main/src/cgeo/geocaching/settings/Settings.java @@ -149,7 +149,7 @@ public class Settings { e.putBoolean(getKey(R.string.pref_maptrail), prefsV0.getInt(getKey(R.string.pref_maptrail), 1) != 0); e.putInt(getKey(R.string.pref_lastmapzoom), prefsV0.getInt(getKey(R.string.pref_lastmapzoom), 14)); e.putBoolean(getKey(R.string.pref_livelist), 0 != prefsV0.getInt(getKey(R.string.pref_livelist), 1)); - e.putBoolean(getKey(R.string.pref_units), prefsV0.getInt(getKey(R.string.pref_units), unitsMetric) == unitsMetric); + e.putBoolean(getKey(R.string.pref_units_imperial), prefsV0.getInt(getKey(R.string.pref_units_imperial), unitsMetric) != unitsMetric); e.putBoolean(getKey(R.string.pref_skin), prefsV0.getInt(getKey(R.string.pref_skin), 0) != 0); e.putInt(getKey(R.string.pref_lastusedlist), prefsV0.getInt(getKey(R.string.pref_lastusedlist), StoredList.STANDARD_LIST_ID)); e.putString(getKey(R.string.pref_cachetype), prefsV0.getString(getKey(R.string.pref_cachetype), CacheType.ALL.id)); @@ -195,7 +195,7 @@ public class Settings { if (currentVersion < 2) { final Editor e = sharedPrefs.edit(); - e.putBoolean(getKey(R.string.pref_units), !isUseImperialUnits()); + e.putBoolean(getKey(R.string.pref_units_imperial), useImperialUnits()); // show waypoints threshold now as a slider int wpThreshold = getWayPointsThreshold(); @@ -595,11 +595,15 @@ public class Settings { return getBoolean(R.string.pref_sigautoinsert, false); } - public static boolean isUseImperialUnits() { - return getBoolean(R.string.pref_units, getImperialUnitsDefault()); + public static void setUseImperialUnits(final boolean useImperialUnits) { + putBoolean(R.string.pref_units_imperial, useImperialUnits); } - static boolean getImperialUnitsDefault() { + public static boolean useImperialUnits() { + return getBoolean(R.string.pref_units_imperial, useImperialUnitsByDefault()); + } + + static boolean useImperialUnitsByDefault() { final String countryCode = Locale.getDefault().getCountry(); return "US".equals(countryCode) // USA || "LR".equals(countryCode) // Liberia diff --git a/main/src/cgeo/geocaching/settings/SettingsActivity.java b/main/src/cgeo/geocaching/settings/SettingsActivity.java index b678239..187d124 100644 --- a/main/src/cgeo/geocaching/settings/SettingsActivity.java +++ b/main/src/cgeo/geocaching/settings/SettingsActivity.java @@ -89,6 +89,7 @@ public class SettingsActivity extends PreferenceActivity { super.onCreate(savedInstanceState); initHardwareAccelerationPreferences(); + initUnitPreferences(); SettingsActivity.addPreferencesFromResource(this, R.xml.preferences); initPreferences(); @@ -142,7 +143,6 @@ public class SettingsActivity extends PreferenceActivity { R.string.pref_ecusername, R.string.pref_ecpassword, R.string.pref_ec_icons }) { bindSummaryToStringValue(k); } - getPreference(R.string.pref_units).setDefaultValue(Settings.getImperialUnitsDefault()); } private void initNavigationMenuPreferences() { @@ -387,6 +387,10 @@ public class SettingsActivity extends PreferenceActivity { Settings.setUseHardwareAcceleration(Settings.useHardwareAcceleration()); } + private static void initUnitPreferences() { + Settings.setUseImperialUnits(Settings.useImperialUnits()); + } + private void initDbLocationPreference() { final Preference p = getPreference(R.string.pref_dbonsdcard); p.setPersistent(false); diff --git a/main/src/cgeo/geocaching/speech/TextFactory.java b/main/src/cgeo/geocaching/speech/TextFactory.java index eb780c6..4b87f1a 100644 --- a/main/src/cgeo/geocaching/speech/TextFactory.java +++ b/main/src/cgeo/geocaching/speech/TextFactory.java @@ -31,7 +31,7 @@ public class TextFactory { private static String getDistance(Geopoint position, Geopoint target) { final float kilometers = position.distanceTo(target); - if (Settings.isUseImperialUnits()) { + if (Settings.useImperialUnits()) { return getDistance(kilometers / IConversion.MILES_TO_KILOMETER, (int) (kilometers * 1000.0 * IConversion.METERS_TO_FEET), 3.0f, 0.2f, 300, |
