import tim.prune.data.Coordinate;
import tim.prune.data.DataPoint;
import tim.prune.data.Field;
+import tim.prune.data.RecentFile;
import tim.prune.data.Track;
import tim.prune.data.TrackInfo;
import tim.prune.gui.ColourChooser;
import tim.prune.gui.DialogCloser;
import tim.prune.gui.ImageUtils;
import tim.prune.load.GenericFileFilter;
+import tim.prune.save.xml.XmlUtils;
/**
* Class to export track information
_imageDimensions = null;
// Store directory in config for later
Config.setConfigString(Config.KEY_TRACK_DIR, _exportFile.getParentFile().getAbsolutePath());
+ // Add to recent file list
+ Config.getRecentFileList().addFile(new RecentFile(_exportFile, true));
// show confirmation
+ UpdateMessageBroker.informSubscribers();
UpdateMessageBroker.informSubscribers(I18nManager.getText("confirm.save.ok1")
+ " " + numPoints + " " + I18nManager.getText("confirm.save.ok2")
+ " " + _exportFile.getAbsolutePath());
inWriter.write(_descriptionField.getText());
}
else {
- inWriter.write("Export from Prune");
+ inWriter.write("Export from GpsPrune");
}
inWriter.write("</name>\n");
exportPhotoPoint(point, inWriter, inExportImages, i, photoNum, absoluteAltitudes);
numSaved++;
}
- // Make a blob with description for each audio file
+ // Make a blob with description for each audio clip
if (point.getAudio() != null && writeAudios && writeCurrentPoint)
{
if (!writtenAudioHeader)
private void exportWaypoint(DataPoint inPoint, Writer inWriter, boolean inAbsoluteAltitude) throws IOException
{
String name = inPoint.getWaypointName().trim();
- exportNamedPoint(inPoint, inWriter, name, null, null, inAbsoluteAltitude);
+ exportNamedPoint(inPoint, inWriter, name, inPoint.getFieldValue(Field.DESCRIPTION), null, inAbsoluteAltitude);
}
*/
private void exportAudioPoint(DataPoint inPoint, Writer inWriter, boolean inAbsoluteAltitude) throws IOException
{
- String name = inPoint.getAudio().getFile().getName();
- String desc = inPoint.getAudio().getFile().getAbsolutePath();
+ String name = inPoint.getAudio().getName();
+ String desc = null;
+ if (inPoint.getAudio().getFile() != null) {
+ desc = inPoint.getAudio().getFile().getAbsolutePath();
+ }
exportNamedPoint(inPoint, inWriter, name, desc, "audio_icon", inAbsoluteAltitude);
}
int inPointNumber, int inImageNumber, boolean inAbsoluteAltitude)
throws IOException
{
- String name = inPoint.getPhoto().getFile().getName();
+ String name = inPoint.getPhoto().getName();
String desc = null;
if (inImageLink)
{
// Create html for the thumbnail images
desc = "<![CDATA[<br/><table border='0'><tr><td><center><img src='images/image"
+ inImageNumber + ".jpg' width='" + imageSize.width + "' height='" + imageSize.height + "'></center></td></tr>"
- + "<tr><td><center>" + inPoint.getPhoto().getFile().getName() + "</center></td></tr></table>]]>";
+ + "<tr><td><center>" + name + "</center></td></tr></table>]]>";
}
// Export point
exportNamedPoint(inPoint, inWriter, name, desc, "camera_icon", inAbsoluteAltitude);
if (inDesc != null)
{
// Write out description
- inWriter.write("<description>");
- inWriter.write(inDesc);
- inWriter.write("</description>");
+ inWriter.write("\t\t<description>");
+ inWriter.write(XmlUtils.fixCdata(inDesc));
+ inWriter.write("</description>\n");
}
if (inStyle != null)
{
ZipEntry entry = new ZipEntry("images/image" + photoNum + ".jpg");
inZipStream.putNextEntry(entry);
// Load image and write to outstream
- ImageIcon icon = new ImageIcon(point.getPhoto().getFile().getAbsolutePath());
+ ImageIcon icon = point.getPhoto().createImageIcon();
- // Scale and smooth image to required size
+ // Scale image to required size TODO: should it also be smoothed, or only if it's smaller than a certain size?
BufferedImage bufferedImage = ImageUtils.rotateImage(icon.getImage(),
inThumbWidth, inThumbHeight, point.getPhoto().getRotationDegrees());
// Store image dimensions so that it doesn't have to be calculated again for the points