X-Git-Url: https://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=tim%2Fprune%2Fgui%2FDetailsDisplay.java;h=9cfd7cee703d9039bc4d520ab2888b0de89100ed;hp=5e31a4e97aee5086ba60d184bc69e6e6d276d0be;hb=c0387c124840c9407e040600fda88f3c3e8f6aa6;hpb=1ee49ae3c8ef3aa2e63eadd458531e5f8bd4f92c diff --git a/tim/prune/gui/DetailsDisplay.java b/tim/prune/gui/DetailsDisplay.java index 5e31a4e..9cfd7ce 100644 --- a/tim/prune/gui/DetailsDisplay.java +++ b/tim/prune/gui/DetailsDisplay.java @@ -22,6 +22,7 @@ import tim.prune.DataSubscriber; import tim.prune.FunctionLibrary; import tim.prune.GenericFunction; import tim.prune.I18nManager; +import tim.prune.UpdateMessageBroker; import tim.prune.config.Config; import tim.prune.data.Altitude; import tim.prune.data.Coordinate; @@ -214,8 +215,8 @@ public class DetailsDisplay extends GenericDisplay _distUnitsDropdown.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - dataUpdated(DataSubscriber.UNITS_CHANGED); Config.setConfigBoolean(Config.KEY_METRIC_UNITS, _distUnitsDropdown.getSelectedIndex() == 0); + UpdateMessageBroker.informSubscribers(DataSubscriber.UNITS_CHANGED); } }); lowerPanel.add(_distUnitsDropdown); @@ -405,7 +406,12 @@ public class DetailsDisplay extends GenericDisplay default: // just as it was coord = inCoordinate.output(Coordinate.FORMAT_NONE); } - return inPrefix + coord; + // Fix broken degree signs (due to unicode mangling) + final char brokenDeg = 65533; + if (coord.indexOf(brokenDeg) >= 0) { + coord = coord.replaceAll(String.valueOf(brokenDeg), "\u00B0"); + } + return inPrefix + restrictDP(coord); } @@ -430,6 +436,25 @@ public class DetailsDisplay extends GenericDisplay return _distanceFormatter.format(inDist); } + /** + * Restrict the given coordinate to a limited number of decimal places for display + * @param inCoord coordinate string + * @return chopped string + */ + private static String restrictDP(String inCoord) + { + final int DECIMAL_PLACES = 7; + if (inCoord == null) return ""; + final int dotPos = Math.max(inCoord.lastIndexOf('.'), inCoord.lastIndexOf(',')); + if (dotPos >= 0) { + final int chopPos = dotPos + DECIMAL_PLACES; + if (chopPos < (inCoord.length()-1)) { + return inCoord.substring(0, chopPos); + } + } + return inCoord; + } + /** * Create a little button for rotating the current photo * @param inIcon icon to use (from IconManager)