diff --git a/src/main/java/de/dennisguse/opentracks/data/models/Distance.java b/src/main/java/de/dennisguse/opentracks/data/models/Distance.java index bcb80d971..acd222c92 100644 --- a/src/main/java/de/dennisguse/opentracks/data/models/Distance.java +++ b/src/main/java/de/dennisguse/opentracks/data/models/Distance.java @@ -13,6 +13,14 @@ public class Distance { return new Distance(distance_m); } + public static Distance of(Double distance_m) { + if (distance_m == null) { + return Distance.of(Double.NaN); + } else { + return Distance.of((double) distance_m); + } + } + public static Distance of(String distance_m) { return of(Float.parseFloat(distance_m)); } diff --git a/src/main/java/de/dennisguse/opentracks/data/models/DistanceFormatter.java b/src/main/java/de/dennisguse/opentracks/data/models/DistanceFormatter.java index b22747619..696a1fbca 100644 --- a/src/main/java/de/dennisguse/opentracks/data/models/DistanceFormatter.java +++ b/src/main/java/de/dennisguse/opentracks/data/models/DistanceFormatter.java @@ -42,12 +42,13 @@ public class DistanceFormatter { */ public Pair getDistanceParts(Distance distance) { if (distance.isInvalid()) { + String valueUnknown = resources.getString(R.string.value_unknown); switch (unitSystem) { case METRIC: - return new Pair<>(null, resources.getString(R.string.unit_meter)); + return new Pair<>(valueUnknown, resources.getString(R.string.unit_meter)); case IMPERIAL: case NAUTICAL_IMPERIAL: - return new Pair<>(null, resources.getString(R.string.unit_feet)); + return new Pair<>(valueUnknown, resources.getString(R.string.unit_feet)); default: throw new RuntimeException("Not implemented"); } diff --git a/src/main/java/de/dennisguse/opentracks/util/StringUtils.java b/src/main/java/de/dennisguse/opentracks/util/StringUtils.java index 29e793d7d..0eea419d2 100644 --- a/src/main/java/de/dennisguse/opentracks/util/StringUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/StringUtils.java @@ -254,13 +254,14 @@ public class StringUtils { /** * @return the formatted altitude_m (or null) and it's unit as {@link Pair} */ + //TODO altitude_m should be double or a value object public static Pair getAltitudeParts(Context context, Float altitude_m, UnitSystem unitSystem) { DistanceFormatter formatter = DistanceFormatter.Builder() .setDecimalCount(1) .setUnit(unitSystem) .build(context); - Distance distance = altitude_m != null ? Distance.of(altitude_m) : Distance.of(Double.NaN); //TODO Refactor Double.NaN + Distance distance = altitude_m != null ? Distance.of(altitude_m) : Distance.of((Double) null); return formatter.getDistanceParts(distance); }