- inWriter.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<gpx version=\"");
- inWriter.write(GPX_VERSION_NUMBER);
- inWriter.write("\" creator=\"");
- inWriter.write(GPX_CREATOR);
- inWriter.write("\">\n");
- // Name field
- if (_nameField != null && _nameField.getText() != null && !_nameField.getText().equals(""))
+ // Write or copy headers
+ inWriter.write(getXmlHeaderString(inWriter));
+ final String gpxHeader = getGpxHeaderString(inGpxCachers);
+ final boolean isVersion1_1 = (gpxHeader.toUpperCase().indexOf("GPX/1/1") > 0);
+ inWriter.write(gpxHeader);
+ // name and description
+ String trackName = (inName != null && !inName.equals("")) ? XmlUtils.fixCdata(inName) : "GpsPruneTrack";
+ String desc = (inDesc != null && !inDesc.equals("")) ? XmlUtils.fixCdata(inDesc) : "Export from GpsPrune";
+ writeNameAndDescription(inWriter, trackName, desc, isVersion1_1);
+
+ DataPoint point = null;
+ final boolean exportTrackpoints = inSaveFlags[0];
+ final boolean exportWaypoints = inSaveFlags[1];
+ final boolean exportPhotos = inSaveFlags[2];
+ final boolean exportAudios = inSaveFlags[3];
+ final boolean exportSelection = inSaveFlags[4];
+ final boolean exportTimestamps = inSaveFlags[5];
+ // Examine selection
+ int selStart = -1, selEnd = -1;
+ if (exportSelection) {
+ selStart = inInfo.getSelection().getStart();
+ selEnd = inInfo.getSelection().getEnd();
+ }
+ // Loop over waypoints
+ final int numPoints = inInfo.getTrack().getNumPoints();
+ int numSaved = 0;
+ for (int i=0; i<numPoints; i++)
+ {
+ point = inInfo.getTrack().getPoint(i);
+ if (!exportSelection || (i>=selStart && i<=selEnd))
+ {
+ // Make a wpt element for each waypoint
+ if (point.isWaypoint() && exportWaypoints)
+ {
+ String pointSource = (inGpxCachers == null? null : getPointSource(inGpxCachers, point));
+ if (pointSource != null)
+ {
+ // If timestamp checkbox is off, strip time
+ if (!exportTimestamps) {
+ pointSource = stripTime(pointSource);
+ }
+ inWriter.write('\t');
+ inWriter.write(pointSource);
+ inWriter.write('\n');
+ }
+ else {
+ exportWaypoint(point, inWriter, exportTimestamps, exportPhotos, exportAudios);
+ }
+ numSaved++;
+ }
+ }
+ }
+ // Export both route points and then track points
+ if (exportTrackpoints || exportPhotos || exportAudios)