X-Git-Url: https://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=tim%2Fprune%2Ffunction%2Fcharts%2FCharter.java;h=0bb377fe2b1c4fe728b1020c1fe6799456ce6a66;hp=502c91439dc1434085e42cce1165352708e10ab5;hb=4d5796d02a15808311c09448d79e6e7d1de9d636;hpb=f1b92378a792131ac8fb33a869405851d5b2d1f7 diff --git a/tim/prune/function/charts/Charter.java b/tim/prune/function/charts/Charter.java index 502c914..0bb377f 100644 --- a/tim/prune/function/charts/Charter.java +++ b/tim/prune/function/charts/Charter.java @@ -29,13 +29,13 @@ import tim.prune.ExternalTools; import tim.prune.GenericFunction; import tim.prune.I18nManager; import tim.prune.config.Config; -import tim.prune.data.Altitude; import tim.prune.data.DataPoint; import tim.prune.data.Distance; import tim.prune.data.Field; import tim.prune.data.Timestamp; import tim.prune.data.Track; -import tim.prune.data.Distance.Units; +import tim.prune.gui.profile.SpeedData; +import tim.prune.gui.profile.VerticalSpeedData; import tim.prune.load.GenericFileFilter; /** @@ -219,7 +219,7 @@ public class Charter extends GenericFunction private boolean setupDialog(Track inTrack) { boolean hasTimes = inTrack.hasData(Field.TIMESTAMP); - boolean hasAltitudes = inTrack.getAltitudeRange().hasRange(); + boolean hasAltitudes = inTrack.hasAltitudeData(); _timeRadio.setEnabled(hasTimes); // Add checks to prevent choosing unavailable combinations @@ -397,9 +397,15 @@ public class Charter extends GenericFunction catch (Exception e) {} } + // Sort out units to use + final String distLabel = I18nManager.getText(Config.getUnitSet().getDistanceUnit().getShortnameKey()); + final String altLabel = I18nManager.getText(Config.getUnitSet().getAltitudeUnit().getShortnameKey()); + final String speedLabel = I18nManager.getText(Config.getUnitSet().getSpeedUnit().getShortnameKey()); + final String vertSpeedLabel = I18nManager.getText(Config.getUnitSet().getVerticalSpeedUnit().getShortnameKey()); + // Set x axis label if (inDistance) { - inWriter.write("set xlabel '" + I18nManager.getText("fieldname.distance") + " (" + getUnitsLabel("units.kilometres.short", "units.miles.short") + ")'\n"); + inWriter.write("set xlabel '" + I18nManager.getText("fieldname.distance") + " (" + distLabel + ")'\n"); } else { inWriter.write("set xlabel '" + I18nManager.getText("fieldname.time") + " (" + I18nManager.getText("units.hours") + ")'\n"); @@ -410,19 +416,19 @@ public class Charter extends GenericFunction switch (inYaxis) { case 0: // y axis is distance - inWriter.write("set ylabel '" + I18nManager.getText("fieldname.distance") + " (" + getUnitsLabel("units.kilometres.short", "units.miles.short") + ")'\n"); + inWriter.write("set ylabel '" + I18nManager.getText("fieldname.distance") + " (" + distLabel + ")'\n"); chartTitle = I18nManager.getText("fieldname.distance"); break; case 1: // y axis is altitude - inWriter.write("set ylabel '" + I18nManager.getText("fieldname.altitude") + " (" + getUnitsLabel("units.metres.short", "units.feet.short") + ")'\n"); + inWriter.write("set ylabel '" + I18nManager.getText("fieldname.altitude") + " (" + altLabel + ")'\n"); chartTitle = I18nManager.getText("fieldname.altitude"); break; case 2: // y axis is speed - inWriter.write("set ylabel '" + I18nManager.getText("fieldname.speed") + " (" + getUnitsLabel("units.kmh", "units.mph") + ")'\n"); + inWriter.write("set ylabel '" + I18nManager.getText("fieldname.speed") + " (" + speedLabel + ")'\n"); chartTitle = I18nManager.getText("fieldname.speed"); break; case 3: // y axis is vertical speed - inWriter.write("set ylabel '" + I18nManager.getText("fieldname.verticalspeed") + " (" + getUnitsLabel("units.metrespersec", "units.feetpersec") + ")'\n"); + inWriter.write("set ylabel '" + I18nManager.getText("fieldname.verticalspeed") + " (" + vertSpeedLabel + ")'\n"); chartTitle = I18nManager.getText("fieldname.verticalspeed"); break; } @@ -430,18 +436,6 @@ public class Charter extends GenericFunction inWriter.write("plot '" + tempFile.getAbsolutePath() + "' title '" + chartTitle + "' with filledcurve y1=0 lt rgb \"#009000\"\n"); } - /** - * Get the units label for the given keys - * @param inMetric key if metric - * @param inImperial key if imperial - * @return display label with appropriate text - */ - private static String getUnitsLabel(String inMetric, String inImperial) - { - String key = Config.getConfigBoolean(Config.KEY_METRIC_UNITS)?inMetric:inImperial; - return I18nManager.getText(key); - } - /** * Calculate the distance values for each point in the given track @@ -461,11 +455,10 @@ public class Charter extends GenericFunction { totalRads += DataPoint.calculateRadiansBetween(prevPoint, currPoint); } - if (Config.getConfigBoolean(Config.KEY_METRIC_UNITS)) { - values.setData(i, Distance.convertRadiansToDistance(totalRads, Units.KILOMETRES)); - } else { - values.setData(i, Distance.convertRadiansToDistance(totalRads, Units.MILES)); - } + + // distance values use currently configured units + values.setData(i, Distance.convertRadiansToDistance(totalRads)); + prevPoint = currPoint; } return values; @@ -506,10 +499,10 @@ public class Charter extends GenericFunction private static ChartSeries getAltitudeValues(Track inTrack) { ChartSeries values = new ChartSeries(inTrack.getNumPoints()); - Altitude.Format altFormat = Config.getConfigBoolean(Config.KEY_METRIC_UNITS)?Altitude.Format.METRES:Altitude.Format.FEET; + final double multFactor = Config.getUnitSet().getAltitudeUnit().getMultFactorFromStd(); for (int i=0; i