Add Miles/meters setting and make it default
This commit is contained in:
parent
1003031f5c
commit
a5384abb13
4 changed files with 18 additions and 6 deletions
|
@ -9,6 +9,8 @@
|
||||||
3. All your modified/created strings are in the top of the file (to make easier find what\'s translated).
|
3. All your modified/created strings are in the top of the file (to make easier find what\'s translated).
|
||||||
PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy
|
PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
<string name="si_mi_meters">Miles/meters</string>
|
||||||
<string name="skip_map_downloading">Skip downloading maps</string>
|
<string name="skip_map_downloading">Skip downloading maps</string>
|
||||||
<string name="skip_map_downloading_desc">You have no offline map installed. You may choose a map from the list or download maps later via Menu - %1$s.</string>
|
<string name="skip_map_downloading_desc">You have no offline map installed. You may choose a map from the list or download maps later via Menu - %1$s.</string>
|
||||||
<string name="search_another_country">Select another region</string>
|
<string name="search_another_country">Select another region</string>
|
||||||
|
|
|
@ -39,6 +39,9 @@ public class OsmAndFormatter {
|
||||||
if (mc == MetricsConstants.MILES_AND_FOOTS) {
|
if (mc == MetricsConstants.MILES_AND_FOOTS) {
|
||||||
mainUnitInMeter = FOOTS_IN_ONE_METER;
|
mainUnitInMeter = FOOTS_IN_ONE_METER;
|
||||||
metersInSecondUnit = METERS_IN_ONE_MILE;
|
metersInSecondUnit = METERS_IN_ONE_MILE;
|
||||||
|
} else if (mc == MetricsConstants.MILES_AND_METERS) {
|
||||||
|
mainUnitInMeter = 1;
|
||||||
|
metersInSecondUnit = METERS_IN_ONE_MILE;
|
||||||
} else if (mc == MetricsConstants.NAUTICAL_MILES) {
|
} else if (mc == MetricsConstants.NAUTICAL_MILES) {
|
||||||
mainUnitInMeter = 1;
|
mainUnitInMeter = 1;
|
||||||
metersInSecondUnit = METERS_IN_ONE_NAUTICALMILE;
|
metersInSecondUnit = METERS_IN_ONE_NAUTICALMILE;
|
||||||
|
@ -66,8 +69,12 @@ public class OsmAndFormatter {
|
||||||
pointer = 1;
|
pointer = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Miles exceptions: 2000ft->0.5mi, 1000ft->0.25mi, 1000yd->0.5mi, 500yd->0.25mi
|
//Miles exceptions: 2000ft->0.5mi, 1000ft->0.25mi, 1000yd->0.5mi, 500yd->0.25mi, 1000m ->0.5mi, 500m -> 0.3mi
|
||||||
if (mc == MetricsConstants.MILES_AND_FOOTS && roundDist == 2000 / (double) FOOTS_IN_ONE_METER) {
|
if (mc == MetricsConstants.MILES_AND_METERS && roundDist == 500) {
|
||||||
|
roundDist = 0.5f * METERS_IN_ONE_MILE;
|
||||||
|
} else if (mc == MetricsConstants.MILES_AND_METERS && roundDist == 500) {
|
||||||
|
roundDist = 0.3f * METERS_IN_ONE_MILE;
|
||||||
|
} else if (mc == MetricsConstants.MILES_AND_FOOTS && roundDist == 2000 / (double) FOOTS_IN_ONE_METER) {
|
||||||
roundDist = 0.5f * METERS_IN_ONE_MILE;
|
roundDist = 0.5f * METERS_IN_ONE_MILE;
|
||||||
} else if (mc == MetricsConstants.MILES_AND_FOOTS && roundDist == 1000 / (double) FOOTS_IN_ONE_METER) {
|
} else if (mc == MetricsConstants.MILES_AND_FOOTS && roundDist == 1000 / (double) FOOTS_IN_ONE_METER) {
|
||||||
roundDist = 0.25f * METERS_IN_ONE_MILE;
|
roundDist = 0.25f * METERS_IN_ONE_MILE;
|
||||||
|
@ -115,12 +122,14 @@ public class OsmAndFormatter {
|
||||||
return MessageFormat.format("{0,number,#.##} " + ctx.getString(mainUnitStr), ((float) meters) / mainUnitInMeters).replace('\n', ' '); //$NON-NLS-1$
|
return MessageFormat.format("{0,number,#.##} " + ctx.getString(mainUnitStr), ((float) meters) / mainUnitInMeters).replace('\n', ' '); //$NON-NLS-1$
|
||||||
} else if (mc == MetricsConstants.MILES_AND_FOOTS && meters > 0.249f * mainUnitInMeters) {
|
} else if (mc == MetricsConstants.MILES_AND_FOOTS && meters > 0.249f * mainUnitInMeters) {
|
||||||
return MessageFormat.format("{0,number,#.##} " + ctx.getString(mainUnitStr), ((float) meters) / mainUnitInMeters).replace('\n', ' '); //$NON-NLS-1$
|
return MessageFormat.format("{0,number,#.##} " + ctx.getString(mainUnitStr), ((float) meters) / mainUnitInMeters).replace('\n', ' '); //$NON-NLS-1$
|
||||||
|
} else if (mc == MetricsConstants.MILES_AND_METERS && meters > 0.499f * mainUnitInMeters) {
|
||||||
|
return MessageFormat.format("{0,number,#.##} " + ctx.getString(mainUnitStr), ((float) meters) / mainUnitInMeters).replace('\n', ' '); //$NON-NLS-1$
|
||||||
} else if (mc == MetricsConstants.MILES_AND_YARDS && meters > 0.249f * mainUnitInMeters) {
|
} else if (mc == MetricsConstants.MILES_AND_YARDS && meters > 0.249f * mainUnitInMeters) {
|
||||||
return MessageFormat.format("{0,number,#.##} " + ctx.getString(mainUnitStr), ((float) meters) / mainUnitInMeters).replace('\n', ' '); //$NON-NLS-1$
|
return MessageFormat.format("{0,number,#.##} " + ctx.getString(mainUnitStr), ((float) meters) / mainUnitInMeters).replace('\n', ' '); //$NON-NLS-1$
|
||||||
} else if (mc == MetricsConstants.NAUTICAL_MILES && meters > 0.99f * mainUnitInMeters) {
|
} else if (mc == MetricsConstants.NAUTICAL_MILES && meters > 0.99f * mainUnitInMeters) {
|
||||||
return MessageFormat.format("{0,number,#.##} " + ctx.getString(mainUnitStr), ((float) meters) / mainUnitInMeters).replace('\n', ' '); //$NON-NLS-1$
|
return MessageFormat.format("{0,number,#.##} " + ctx.getString(mainUnitStr), ((float) meters) / mainUnitInMeters).replace('\n', ' '); //$NON-NLS-1$
|
||||||
} else {
|
} else {
|
||||||
if (mc == MetricsConstants.KILOMETERS_AND_METERS) {
|
if (mc == MetricsConstants.KILOMETERS_AND_METERS || mc == MetricsConstants.MILES_AND_METERS) {
|
||||||
return ((int) (meters + 0.5)) + " " + ctx.getString(R.string.m); //$NON-NLS-1$
|
return ((int) (meters + 0.5)) + " " + ctx.getString(R.string.m); //$NON-NLS-1$
|
||||||
} else if (mc == MetricsConstants.MILES_AND_FOOTS) {
|
} else if (mc == MetricsConstants.MILES_AND_FOOTS) {
|
||||||
int foots = (int) (meters * FOOTS_IN_ONE_METER + 0.5);
|
int foots = (int) (meters * FOOTS_IN_ONE_METER + 0.5);
|
||||||
|
|
|
@ -2882,6 +2882,7 @@ public class OsmandSettings {
|
||||||
|
|
||||||
public enum MetricsConstants {
|
public enum MetricsConstants {
|
||||||
KILOMETERS_AND_METERS(R.string.si_km_m, "km-m"),
|
KILOMETERS_AND_METERS(R.string.si_km_m, "km-m"),
|
||||||
|
MILES_AND_METERS(R.string.si_mi_meters, "mi-m"),
|
||||||
MILES_AND_FOOTS(R.string.si_mi_foots, "mi-f"),
|
MILES_AND_FOOTS(R.string.si_mi_foots, "mi-f"),
|
||||||
NAUTICAL_MILES(R.string.si_nm, "nm"),
|
NAUTICAL_MILES(R.string.si_nm, "nm"),
|
||||||
MILES_AND_YARDS(R.string.si_mi_yard, "mi-y");
|
MILES_AND_YARDS(R.string.si_mi_yard, "mi-y");
|
||||||
|
@ -2928,9 +2929,9 @@ public class OsmandSettings {
|
||||||
public enum DrivingRegion {
|
public enum DrivingRegion {
|
||||||
|
|
||||||
EUROPE_ASIA(R.string.driving_region_europe_asia, MetricsConstants.KILOMETERS_AND_METERS, false, false),
|
EUROPE_ASIA(R.string.driving_region_europe_asia, MetricsConstants.KILOMETERS_AND_METERS, false, false),
|
||||||
US(R.string.driving_region_us, MetricsConstants.MILES_AND_FOOTS, false, true),
|
US(R.string.driving_region_us, MetricsConstants.MILES_AND_METERS, false, true),
|
||||||
CANADA(R.string.driving_region_canada, MetricsConstants.KILOMETERS_AND_METERS, false, true),
|
CANADA(R.string.driving_region_canada, MetricsConstants.KILOMETERS_AND_METERS, false, true),
|
||||||
UK_AND_OTHERS(R.string.driving_region_uk, MetricsConstants.MILES_AND_FOOTS, true, false),
|
UK_AND_OTHERS(R.string.driving_region_uk, MetricsConstants.MILES_AND_METERS, true, false),
|
||||||
JAPAN(R.string.driving_region_japan, MetricsConstants.KILOMETERS_AND_METERS, true, false);
|
JAPAN(R.string.driving_region_japan, MetricsConstants.KILOMETERS_AND_METERS, true, false);
|
||||||
|
|
||||||
public final boolean leftHandDriving;
|
public final boolean leftHandDriving;
|
||||||
|
|
|
@ -165,7 +165,7 @@ public class DownloadIndexesThread {
|
||||||
boolean americanSigns = "american".equals(params.getRegionRoadSigns());
|
boolean americanSigns = "american".equals(params.getRegionRoadSigns());
|
||||||
boolean leftHand = "yes".equals(params.getRegionLeftHandDriving());
|
boolean leftHand = "yes".equals(params.getRegionLeftHandDriving());
|
||||||
MetricsConstants mc = "miles".equals(params.getRegionMetric()) ?
|
MetricsConstants mc = "miles".equals(params.getRegionMetric()) ?
|
||||||
MetricsConstants.MILES_AND_FOOTS : MetricsConstants.KILOMETERS_AND_METERS;
|
MetricsConstants.MILES_AND_METERS : MetricsConstants.KILOMETERS_AND_METERS;
|
||||||
for (DrivingRegion r : DrivingRegion.values()) {
|
for (DrivingRegion r : DrivingRegion.values()) {
|
||||||
if (r.americanSigns == americanSigns && r.leftHandDriving == leftHand &&
|
if (r.americanSigns == americanSigns && r.leftHandDriving == leftHand &&
|
||||||
r.defMetrics == mc) {
|
r.defMetrics == mc) {
|
||||||
|
|
Loading…
Reference in a new issue