X-Git-Url: https://gitweb.fperrin.net/?a=blobdiff_plain;f=tim%2Fprune%2Fsave%2FFileSaver.java;h=45af83e0a7cac09286848f55be8508b3d2e87c9e;hb=92dad5df664287acb51728e9ea599f150765d34a;hp=78fbe3e5d38e49cecc98fee01b360c27e0b154b0;hpb=140e9d165f85c3d4f0435a311e091209313faa2a;p=GpsPrune.git diff --git a/tim/prune/save/FileSaver.java b/tim/prune/save/FileSaver.java index 78fbe3e..45af83e 100644 --- a/tim/prune/save/FileSaver.java +++ b/tim/prune/save/FileSaver.java @@ -35,13 +35,15 @@ import tim.prune.App; import tim.prune.I18nManager; import tim.prune.UpdateMessageBroker; import tim.prune.config.Config; -import tim.prune.data.Altitude; import tim.prune.data.Coordinate; import tim.prune.data.DataPoint; import tim.prune.data.Field; import tim.prune.data.FieldList; +import tim.prune.data.RecentFile; import tim.prune.data.Timestamp; import tim.prune.data.Track; +import tim.prune.data.Unit; +import tim.prune.data.UnitSetLibrary; import tim.prune.load.GenericFileFilter; import tim.prune.load.OneCharDocument; @@ -71,8 +73,8 @@ public class FileSaver private static final int[] FORMAT_COORDS = {Coordinate.FORMAT_NONE, Coordinate.FORMAT_DEG_MIN_SEC, Coordinate.FORMAT_DEG_MIN, Coordinate.FORMAT_DEG}; - private static final Altitude.Format[] FORMAT_ALTS = {Altitude.Format.NO_FORMAT, Altitude.Format.METRES, Altitude.Format.FEET}; - private static final int[] FORMAT_TIMES = {Timestamp.FORMAT_ORIGINAL, Timestamp.FORMAT_LOCALE, Timestamp.FORMAT_ISO_8601}; + private static final Unit[] UNIT_ALTS = {null, UnitSetLibrary.UNITS_METRES, UnitSetLibrary.UNITS_FEET}; + private static final Timestamp.Format[] FORMAT_TIMES = {Timestamp.Format.ORIGINAL, Timestamp.Format.LOCALE, Timestamp.Format.ISO8601}; /** @@ -100,17 +102,25 @@ public class FileSaver _dialog.getContentPane().add(makeDialogComponents()); _dialog.pack(); } + // Has the track got media? + final boolean hasMedia = _app.getTrackInfo().getPhotoList().hasCorrelatedPhotos() + || _app.getTrackInfo().getAudioList().hasCorrelatedAudios(); // Check field list Track track = _app.getTrackInfo().getTrack(); FieldList fieldList = track.getFieldList(); int numFields = fieldList.getNumFields(); - _model = new FieldSelectionTableModel(numFields); + _model = new FieldSelectionTableModel(numFields + (hasMedia ? 1 : 0)); for (int i=0; i=selStart && p<=selEnd)); if (!savePoint) {continue;} numSaved++; @@ -512,12 +523,11 @@ public class FileSaver info = _model.getFieldInfo(f); if (info.isSelected()) { - if (!firstField) - { - // output field separator + // output field separator + if (!firstField) { buffer.append(delimiter); } - saveField(buffer, point, info.getField(), coordFormat, altitudeFormat, timestampFormat); + saveField(buffer, point, info.getField(), coordFormat, altitudeUnit, timestampFormat); firstField = false; } } @@ -527,7 +537,10 @@ public class FileSaver } // Store directory in config for later Config.setConfigString(Config.KEY_TRACK_DIR, saveFile.getParentFile().getAbsolutePath()); + // Add to recent file list + Config.getRecentFileList().addFile(new RecentFile(inSaveFile, true)); // Save successful + UpdateMessageBroker.informSubscribers(); UpdateMessageBroker.informSubscribers(I18nManager.getText("confirm.save.ok1") + " " + numSaved + " " + I18nManager.getText("confirm.save.ok2") + " " + saveFile.getAbsolutePath()); @@ -563,11 +576,11 @@ public class FileSaver * @param inPoint point object * @param inField field object * @param inCoordFormat coordinate format - * @param inAltitudeFormat altitude format + * @param inAltitudeUnit altitude unit * @param inTimestampFormat timestamp format */ private void saveField(StringBuffer inBuffer, DataPoint inPoint, Field inField, - int inCoordFormat, Altitude.Format inAltitudeFormat, int inTimestampFormat) + int inCoordFormat, Unit inAltitudeUnit, Timestamp.Format inTimestampFormat) { // Output field according to type if (inField == Field.LATITUDE) @@ -582,7 +595,7 @@ public class FileSaver { try { - inBuffer.append(inPoint.getAltitude().getStringValue(inAltitudeFormat)); + inBuffer.append(inPoint.getAltitude().getStringValue(inAltitudeUnit)); } catch (NullPointerException npe) {} } @@ -590,14 +603,15 @@ public class FileSaver { if (inPoint.hasTimestamp()) { - if (inTimestampFormat == Timestamp.FORMAT_ORIGINAL) { - // output original string - inBuffer.append(inPoint.getFieldValue(Field.TIMESTAMP)); - } - else { - // format value accordingly - inBuffer.append(inPoint.getTimestamp().getText(inTimestampFormat)); - } + // format value accordingly + inBuffer.append(inPoint.getTimestamp().getText(inTimestampFormat, null)); + } + } + else if (inField == Field.MEDIA_FILENAME) + { + if (inPoint.hasMedia()) + { + inBuffer.append(inPoint.getMediaName()); } } else