X-Git-Url: https://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=tim%2Fprune%2Fsave%2FGpxExporter.java;h=0bd93d2f0926ad09b6cdc73b637b464f006a6011;hp=89d40ef2efcb2ca2bc8b8e5ab1a78e9277584878;hb=112bb0c9b46894adca9a33ed8c99ea712b253185;hpb=54b9d8bc8f0025ccf97a67d9dd217ef1f9cf082f diff --git a/tim/prune/save/GpxExporter.java b/tim/prune/save/GpxExporter.java index 89d40ef..0bd93d2 100644 --- a/tim/prune/save/GpxExporter.java +++ b/tim/prune/save/GpxExporter.java @@ -46,6 +46,7 @@ public class GpxExporter extends GenericFunction implements Runnable private JDialog _dialog = null; private JTextField _nameField = null; private JTextField _descriptionField = null; + private PointTypeSelector _pointTypeSelector = null; private JCheckBox _timestampsCheckbox = null; private JFileChooser _fileChooser = null; private File _exportFile = null; @@ -85,6 +86,7 @@ public class GpxExporter extends GenericFunction implements Runnable _dialog.getContentPane().add(makeDialogComponents()); _dialog.pack(); } + _pointTypeSelector.init(_app.getTrackInfo()); _dialog.setVisible(true); } @@ -109,6 +111,9 @@ public class GpxExporter extends GenericFunction implements Runnable _descriptionField = new JTextField(10); descPanel.add(_descriptionField); mainPanel.add(descPanel); + // point type selection (track points, waypoints, photo points) + _pointTypeSelector = new PointTypeSelector(); + mainPanel.add(_pointTypeSelector); // checkbox for timestamps _timestampsCheckbox = new JCheckBox(I18nManager.getText("dialog.exportgpx.includetimestamps")); _timestampsCheckbox.setSelected(true); @@ -147,7 +152,11 @@ public class GpxExporter extends GenericFunction implements Runnable */ private void startExport() { - // OK pressed, so choose output file + // OK pressed, so check selections + if (!_pointTypeSelector.getAnythingSelected()) { + return; + } + // Choose output file if (_fileChooser == null) { _fileChooser = new JFileChooser(); @@ -155,8 +164,8 @@ public class GpxExporter extends GenericFunction implements Runnable _fileChooser.setFileFilter(new GenericFileFilter("filetype.gpx", new String[] {"gpx"})); _fileChooser.setAcceptAllFileFilterUsed(false); // start from directory in config which should be set - File configDir = Config.getWorkingDirectory(); - if (configDir != null) {_fileChooser.setCurrentDirectory(configDir);} + String configDir = Config.getConfigString(Config.KEY_TRACK_DIR); + if (configDir != null) {_fileChooser.setCurrentDirectory(new File(configDir));} } // Allow choose again if an existing file is selected boolean chooseAgain = false; @@ -203,14 +212,16 @@ public class GpxExporter extends GenericFunction implements Runnable { // normal writing to file writer = new OutputStreamWriter(new FileOutputStream(_exportFile)); + boolean[] saveFlags = {_pointTypeSelector.getTrackpointsSelected(), _pointTypeSelector.getWaypointsSelected(), + _pointTypeSelector.getPhotopointsSelected(), _timestampsCheckbox.isSelected()}; // write file - int numPoints = exportData(writer, _track, _nameField.getText(), - _descriptionField.getText(), _timestampsCheckbox.isSelected()); + final int numPoints = exportData(writer, _track, _nameField.getText(), + _descriptionField.getText(), saveFlags); // close file writer.close(); // Store directory in config for later - Config.setWorkingDirectory(_exportFile.getParentFile()); + Config.setConfigString(Config.KEY_TRACK_DIR, _exportFile.getParentFile().getAbsolutePath()); // Show confirmation UpdateMessageBroker.informSubscribers(I18nManager.getText("confirm.save.ok1") + " " + numPoints + " " + I18nManager.getText("confirm.save.ok2") @@ -241,12 +252,12 @@ public class GpxExporter extends GenericFunction implements Runnable * @param inTrack track object containing data * @param inName name of track (optional) * @param inDesc description of track (optional) - * @param inTimestamps true to export timestamps + * @param inSaveFlags array of booleans to export tracks, waypoints, photos, timestamps * @return number of points written * @throws IOException if io errors occur on write */ public static int exportData(OutputStreamWriter inWriter, Track inTrack, String inName, - String inDesc, boolean inTimestamps) throws IOException + String inDesc, boolean[] inSaveFlags) throws IOException { inWriter.write("\n\n\t\n"); } - if (!point.isWaypoint()) { - // export the track point - exportTrackpoint(point, inWriter, inTimestamps); - firstPoint = false; + if (!point.isWaypoint()) + { + if ((point.getPhoto()==null && exportTrackpoints) || (point.getPhoto()!=null && exportPhotos)) + { + // export the point + exportTrackpoint(point, inWriter, exportTimestamps); + numSaved++; + firstPoint = false; + } } } inWriter.write("\t\n"); } inWriter.write("\n"); - return numPoints; + return numSaved; } - /** * Export the specified waypoint into the file * @param inPoint waypoint to export