]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/save/FileSaver.java
Version 19, May 2018
[GpsPrune.git] / tim / prune / save / FileSaver.java
index b4a73d43d86f301a464d8ab5dde1e68be189d332..45af83e0a7cac09286848f55be8508b3d2e87c9e 100644 (file)
@@ -74,7 +74,7 @@ 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 Unit[] UNIT_ALTS = {null, UnitSetLibrary.UNITS_METRES, UnitSetLibrary.UNITS_FEET};
-       private static final int[] FORMAT_TIMES = {Timestamp.FORMAT_ORIGINAL, Timestamp.FORMAT_LOCALE, Timestamp.FORMAT_ISO_8601};
+       private static final Timestamp.Format[] FORMAT_TIMES = {Timestamp.Format.ORIGINAL, Timestamp.Format.LOCALE, Timestamp.Format.ISO8601};
 
 
        /**
@@ -102,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<numFields; i++)
                {
                        Field field = fieldList.getField(i);
                        FieldInfo info = new FieldInfo(field, track.hasData(field));
                        _model.addFieldInfo(info, i);
                }
+               // Add a field for photos / audio if any present
+               if (hasMedia)
+               {
+                       _model.addFieldInfo(new FieldInfo(Field.MEDIA_FILENAME, true), numFields);
+               }
                // Initialise dialog and show it
                initDialog(_model, inDefaultDelimiter);
                _dialog.setVisible(true);
@@ -437,7 +445,7 @@ public class FileSaver
                        }
                }
                // Get timestamp format
-               int timestampFormat = Timestamp.FORMAT_ORIGINAL;
+               Timestamp.Format timestampFormat = Timestamp.Format.ORIGINAL;
                for (int i=0; i<_timestampUnitsRadios.length; i++)
                {
                        if (_timestampUnitsRadios[i].isSelected()) {
@@ -572,7 +580,7 @@ public class FileSaver
         * @param inTimestampFormat timestamp format
         */
        private void saveField(StringBuffer inBuffer, DataPoint inPoint, Field inField,
-               int inCoordFormat, Unit inAltitudeUnit, int inTimestampFormat)
+               int inCoordFormat, Unit inAltitudeUnit, Timestamp.Format inTimestampFormat)
        {
                // Output field according to type
                if (inField == Field.LATITUDE)
@@ -595,14 +603,15 @@ public class FileSaver
                {
                        if (inPoint.hasTimestamp())
                        {
-                               if (inTimestampFormat == Timestamp.FORMAT_ORIGINAL) {
-                                       // output original string
-                                       inBuffer.append(inPoint.getTimestamp().getText(Timestamp.FORMAT_ORIGINAL));
-                               }
-                               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