Added default units of measurement if not specified in the object #6383
This commit is contained in:
parent
69aaa17cae
commit
abc7deb8e2
2 changed files with 66 additions and 4 deletions
|
@ -2423,6 +2423,8 @@
|
||||||
<string name="km">km</string>
|
<string name="km">km</string>
|
||||||
<string name="km_h">km/h</string>
|
<string name="km_h">km/h</string>
|
||||||
<string name="m">m</string>
|
<string name="m">m</string>
|
||||||
|
<string name="cubic_m">m³</string>
|
||||||
|
<string name ="capacity">capacity</string>
|
||||||
<string name="old_map_index_is_not_supported">Deprecated map data format \'\'{0}\'\', not supported</string>
|
<string name="old_map_index_is_not_supported">Deprecated map data format \'\'{0}\'\', not supported</string>
|
||||||
<string name="poi_filter_closest_poi">Nearest POIs</string>
|
<string name="poi_filter_closest_poi">Nearest POIs</string>
|
||||||
<string name="poi_filter_custom_filter">Custom filter</string>
|
<string name="poi_filter_custom_filter">Custom filter</string>
|
||||||
|
|
|
@ -21,15 +21,14 @@ import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import net.osmand.AndroidUtils;
|
import net.osmand.AndroidUtils;
|
||||||
|
import net.osmand.PlatformUtil;
|
||||||
import net.osmand.data.Amenity;
|
import net.osmand.data.Amenity;
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.osm.AbstractPoiType;
|
import net.osmand.osm.AbstractPoiType;
|
||||||
import net.osmand.osm.MapPoiTypes;
|
import net.osmand.osm.MapPoiTypes;
|
||||||
import net.osmand.osm.PoiCategory;
|
import net.osmand.osm.PoiCategory;
|
||||||
import net.osmand.osm.PoiType;
|
import net.osmand.osm.PoiType;
|
||||||
import net.osmand.plus.OsmandPlugin;
|
import net.osmand.plus.*;
|
||||||
import net.osmand.plus.R;
|
|
||||||
import net.osmand.plus.Version;
|
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
import net.osmand.plus.helpers.FontCache;
|
import net.osmand.plus.helpers.FontCache;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuBuilder;
|
import net.osmand.plus.mapcontextmenu.MenuBuilder;
|
||||||
|
@ -42,7 +41,9 @@ import net.osmand.plus.wikipedia.WikipediaArticleWikiLinkFragment;
|
||||||
import net.osmand.plus.wikipedia.WikipediaDialogFragment;
|
import net.osmand.plus.wikipedia.WikipediaDialogFragment;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
import net.osmand.util.OpeningHoursParser;
|
import net.osmand.util.OpeningHoursParser;
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
|
||||||
|
import java.math.RoundingMode;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.text.DecimalFormatSymbols;
|
import java.text.DecimalFormatSymbols;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -59,13 +60,16 @@ import java.util.Map;
|
||||||
public class AmenityMenuBuilder extends MenuBuilder {
|
public class AmenityMenuBuilder extends MenuBuilder {
|
||||||
|
|
||||||
private static final String WIKI_LINK = ".wikipedia.org/w";
|
private static final String WIKI_LINK = ".wikipedia.org/w";
|
||||||
|
public final static Log log = PlatformUtil.getLog(AmenityMenuBuilder.class);
|
||||||
|
private OsmandSettings.MetricsConstants metricSystem;
|
||||||
private final Amenity amenity;
|
private final Amenity amenity;
|
||||||
|
|
||||||
|
|
||||||
public AmenityMenuBuilder(@NonNull MapActivity mapActivity, final @NonNull Amenity amenity) {
|
public AmenityMenuBuilder(@NonNull MapActivity mapActivity, final @NonNull Amenity amenity) {
|
||||||
super(mapActivity);
|
super(mapActivity);
|
||||||
this.amenity = amenity;
|
this.amenity = amenity;
|
||||||
setShowNearestWiki(true, amenity.getId());
|
setShowNearestWiki(true, amenity.getId());
|
||||||
|
metricSystem = mapActivity.getMyApplication().getSettings().METRIC_SYSTEM.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -521,6 +525,10 @@ public class AmenityMenuBuilder extends MenuBuilder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String[] formattedPrefixAndText = getFormattedPrefixAndText(key, textPrefix, vl);
|
||||||
|
textPrefix = formattedPrefixAndText[0];
|
||||||
|
vl = formattedPrefixAndText[1];
|
||||||
|
|
||||||
boolean matchWidthDivider = !isDescription && isWiki;
|
boolean matchWidthDivider = !isDescription && isWiki;
|
||||||
AmenityInfoRow row;
|
AmenityInfoRow row;
|
||||||
if (isDescription) {
|
if (isDescription) {
|
||||||
|
@ -674,6 +682,58 @@ public class AmenityMenuBuilder extends MenuBuilder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String[] getFormattedPrefixAndText(String key, String prefix, String value) {
|
||||||
|
DecimalFormat df = new DecimalFormat("#.##");
|
||||||
|
df.setRoundingMode(RoundingMode.CEILING);
|
||||||
|
String units = "";
|
||||||
|
switch (key){
|
||||||
|
case "width":
|
||||||
|
case "height":
|
||||||
|
case "depth":
|
||||||
|
if (metricSystem == OsmandSettings.MetricsConstants.MILES_AND_FEET) {
|
||||||
|
units = mapActivity.getResources().getString(R.string.foot);
|
||||||
|
value = String.valueOf(df.format(Double.valueOf(value)*OsmAndFormatter.FEET_IN_ONE_METER));
|
||||||
|
} else if (metricSystem == OsmandSettings.MetricsConstants.MILES_AND_YARDS) {
|
||||||
|
units = mapActivity.getResources().getString(R.string.yard);
|
||||||
|
value = String.valueOf(df.format(Double.valueOf(value)*OsmAndFormatter.YARDS_IN_ONE_METER));
|
||||||
|
} else {
|
||||||
|
units = mapActivity.getResources().getString(R.string.m);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "distance":
|
||||||
|
value = String.valueOf(OsmAndFormatter
|
||||||
|
.calculateRoundedDist(Double.valueOf(value)*1000, mapActivity.getMyApplication()));
|
||||||
|
if (metricSystem == OsmandSettings.MetricsConstants.MILES_AND_FEET ||
|
||||||
|
metricSystem == OsmandSettings.MetricsConstants.MILES_AND_YARDS ||
|
||||||
|
metricSystem == OsmandSettings.MetricsConstants.MILES_AND_METERS) {
|
||||||
|
units = mapActivity.getResources().getString(R.string.mile);
|
||||||
|
} else if (metricSystem == OsmandSettings.MetricsConstants.NAUTICAL_MILES) {
|
||||||
|
units = mapActivity.getResources().getString(R.string.nm);
|
||||||
|
} else {
|
||||||
|
units = mapActivity.getResources().getString(R.string.km);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "capacity":
|
||||||
|
units = mapActivity.getResources().getString(R.string.cubic_m);
|
||||||
|
break;
|
||||||
|
case "maxweight":
|
||||||
|
units = mapActivity.getResources().getString(R.string.cubic_m);
|
||||||
|
break;
|
||||||
|
case "students":
|
||||||
|
case "spots":
|
||||||
|
case "seats":
|
||||||
|
units = "capacity";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!prefix.isEmpty()) {
|
||||||
|
prefix = prefix + ", " + units;
|
||||||
|
} else {
|
||||||
|
prefix = units;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new String[]{prefix, value};
|
||||||
|
}
|
||||||
|
|
||||||
public void buildAmenityRow(View view, AmenityInfoRow info) {
|
public void buildAmenityRow(View view, AmenityInfoRow info) {
|
||||||
if (info.icon != null) {
|
if (info.icon != null) {
|
||||||
buildRow(view, info.icon, info.text, info.textPrefix, info.collapsable, info.collapsableView,
|
buildRow(view, info.icon, info.text, info.textPrefix, info.collapsable, info.collapsableView,
|
||||||
|
|
Loading…
Reference in a new issue