forked from upstream-mirrors/OpenTracks
Preferences: nicer formattings for distances.
This commit is contained in:
@@ -16,11 +16,14 @@ public class DistanceFormatter {
|
|||||||
|
|
||||||
private final int decimalCount;
|
private final int decimalCount;
|
||||||
|
|
||||||
|
private final double threshold;
|
||||||
|
|
||||||
private final UnitSystem unitSystem;
|
private final UnitSystem unitSystem;
|
||||||
|
|
||||||
private DistanceFormatter(Resources resources, int decimalCount, UnitSystem unitSystem) {
|
private DistanceFormatter(Resources resources, int decimalCount, double threshold, UnitSystem unitSystem) {
|
||||||
this.resources = resources;
|
this.resources = resources;
|
||||||
this.decimalCount = decimalCount;
|
this.decimalCount = decimalCount;
|
||||||
|
this.threshold = threshold;
|
||||||
this.unitSystem = unitSystem;
|
this.unitSystem = unitSystem;
|
||||||
assert unitSystem != null;
|
assert unitSystem != null;
|
||||||
}
|
}
|
||||||
@@ -56,19 +59,19 @@ public class DistanceFormatter {
|
|||||||
|
|
||||||
switch (unitSystem) {
|
switch (unitSystem) {
|
||||||
case METRIC:
|
case METRIC:
|
||||||
if (distance.greaterThan(Distance.of(500))) {
|
if (distance.greaterThan(Distance.ofKilometer(threshold))) {
|
||||||
return new Pair<>(StringUtils.formatDecimal(distance.toKM(), decimalCount), resources.getString(R.string.unit_kilometer));
|
return new Pair<>(StringUtils.formatDecimal(distance.toKM(), decimalCount), resources.getString(R.string.unit_kilometer));
|
||||||
} else {
|
} else {
|
||||||
return new Pair<>(StringUtils.formatDecimal(distance.toM(), decimalCount), resources.getString(R.string.unit_meter));
|
return new Pair<>(StringUtils.formatDecimal(distance.toM(), decimalCount), resources.getString(R.string.unit_meter));
|
||||||
}
|
}
|
||||||
case IMPERIAL:
|
case IMPERIAL:
|
||||||
if (distance.greaterThan(Distance.ofMile(0.5))) {
|
if (distance.greaterThan(Distance.ofMile(threshold))) {
|
||||||
return new Pair<>(StringUtils.formatDecimal(distance.toMI(), decimalCount), resources.getString(R.string.unit_mile));
|
return new Pair<>(StringUtils.formatDecimal(distance.toMI(), decimalCount), resources.getString(R.string.unit_mile));
|
||||||
} else {
|
} else {
|
||||||
return new Pair<>(StringUtils.formatDecimal(distance.toFT(), decimalCount), resources.getString(R.string.unit_feet));
|
return new Pair<>(StringUtils.formatDecimal(distance.toFT(), decimalCount), resources.getString(R.string.unit_feet));
|
||||||
}
|
}
|
||||||
case NAUTICAL_IMPERIAL:
|
case NAUTICAL_IMPERIAL:
|
||||||
if (distance.greaterThan(Distance.ofNauticalMile(0.5))) {
|
if (distance.greaterThan(Distance.ofNauticalMile(threshold))) {
|
||||||
return new Pair<>(StringUtils.formatDecimal(distance.toNauticalMiles(), decimalCount), resources.getString(R.string.unit_nautical_mile));
|
return new Pair<>(StringUtils.formatDecimal(distance.toNauticalMiles(), decimalCount), resources.getString(R.string.unit_nautical_mile));
|
||||||
} else {
|
} else {
|
||||||
return new Pair<>(StringUtils.formatDecimal(distance.toFT(), decimalCount), resources.getString(R.string.unit_feet));
|
return new Pair<>(StringUtils.formatDecimal(distance.toFT(), decimalCount), resources.getString(R.string.unit_feet));
|
||||||
@@ -88,8 +91,11 @@ public class DistanceFormatter {
|
|||||||
|
|
||||||
private UnitSystem unitSystem;
|
private UnitSystem unitSystem;
|
||||||
|
|
||||||
|
private double threshold;
|
||||||
|
|
||||||
public Builder() {
|
public Builder() {
|
||||||
decimalCount = 2;
|
decimalCount = 2;
|
||||||
|
threshold = 0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder setDecimalCount(int decimalCount) {
|
public Builder setDecimalCount(int decimalCount) {
|
||||||
@@ -102,8 +108,13 @@ public class DistanceFormatter {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Builder setThreshold(double threshold) {
|
||||||
|
this.threshold = threshold;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public DistanceFormatter build(Resources resource) {
|
public DistanceFormatter build(Resources resource) {
|
||||||
return new DistanceFormatter(resource, decimalCount, unitSystem);
|
return new DistanceFormatter(resource, decimalCount, threshold, unitSystem);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DistanceFormatter build(Context context) {
|
public DistanceFormatter build(Context context) {
|
||||||
|
|||||||
@@ -323,7 +323,7 @@ public class PreferencesUtils {
|
|||||||
UnitSystem unitSystem = getUnitSystem();
|
UnitSystem unitSystem = getUnitSystem();
|
||||||
|
|
||||||
DistanceFormatter formatter = DistanceFormatter.Builder()
|
DistanceFormatter formatter = DistanceFormatter.Builder()
|
||||||
.setDecimalCount(1)
|
.setDecimalCount(0)
|
||||||
.setUnit(unitSystem)
|
.setUnit(unitSystem)
|
||||||
.build(resources);
|
.build(resources);
|
||||||
for (int i = 0; i < values.length; i++) {
|
for (int i = 0; i < values.length; i++) {
|
||||||
@@ -417,7 +417,8 @@ public class PreferencesUtils {
|
|||||||
|
|
||||||
DistanceFormatter formatter = DistanceFormatter.Builder()
|
DistanceFormatter formatter = DistanceFormatter.Builder()
|
||||||
.setUnit(unitSystem)
|
.setUnit(unitSystem)
|
||||||
.setDecimalCount(1)
|
.setDecimalCount(0)
|
||||||
|
.setThreshold(Double.MAX_VALUE)
|
||||||
.build(resources);
|
.build(resources);
|
||||||
for (int i = 0; i < entryValues.length; i++) {
|
for (int i = 0; i < entryValues.length; i++) {
|
||||||
int value = Integer.parseInt(entryValues[i]);
|
int value = Integer.parseInt(entryValues[i]);
|
||||||
@@ -461,7 +462,8 @@ public class PreferencesUtils {
|
|||||||
UnitSystem unitSystem = getUnitSystem();
|
UnitSystem unitSystem = getUnitSystem();
|
||||||
|
|
||||||
DistanceFormatter formatter = DistanceFormatter.Builder()
|
DistanceFormatter formatter = DistanceFormatter.Builder()
|
||||||
.setDecimalCount(1)
|
.setDecimalCount(0)
|
||||||
|
.setThreshold(Double.MAX_VALUE)
|
||||||
.setUnit(unitSystem)
|
.setUnit(unitSystem)
|
||||||
.build(resources);
|
.build(resources);
|
||||||
for (int i = 0; i < entryValues.length; i++) {
|
for (int i = 0; i < entryValues.length; i++) {
|
||||||
@@ -534,7 +536,8 @@ public class PreferencesUtils {
|
|||||||
UnitSystem unitSystem = getUnitSystem();
|
UnitSystem unitSystem = getUnitSystem();
|
||||||
|
|
||||||
DistanceFormatter formatter = DistanceFormatter.Builder()
|
DistanceFormatter formatter = DistanceFormatter.Builder()
|
||||||
.setDecimalCount(1)
|
.setDecimalCount(0)
|
||||||
|
.setThreshold(Double.MAX_VALUE)
|
||||||
.setUnit(unitSystem)
|
.setUnit(unitSystem)
|
||||||
.build(resources);
|
.build(resources);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user