+ if (inPoint.getAudio() != null && inSettings.getExportAudioPoints()) {
+ inWriter.write(makeMediaLink(inPoint.getAudio()));
+ }
+ inWriter.write("\t\t\t</trkpt>\n");
+ }
+
+
+ /**
+ * Make the xml for the media link(s)
+ * @param inPoint point to generate text for
+ * @return link tags, or null if no links
+ */
+ private static String makeMediaLink(DataPoint inPoint)
+ {
+ Photo photo = inPoint.getPhoto();
+ AudioClip audio = inPoint.getAudio();
+ if (photo == null && audio == null) {
+ return null;
+ }
+ String linkText = "";
+ if (photo != null) {
+ linkText = makeMediaLink(photo);
+ }
+ if (audio != null) {
+ linkText += makeMediaLink(audio);
+ }
+ return linkText;
+ }
+
+ /**
+ * Make the media link for a single media item
+ * @param inMedia media item, either photo or audio
+ * @return link for this media
+ */
+ private static String makeMediaLink(MediaObject inMedia)
+ {
+ if (inMedia.getFile() != null)
+ // file link
+ return "<link href=\"" + inMedia.getFile().getAbsolutePath() + "\"><text>" + inMedia.getName() + "</text></link>";
+ if (inMedia.getUrl() != null)
+ // url link
+ return "<link href=\"" + inMedia.getUrl() + "\"><text>" + inMedia.getName() + "</text></link>";
+ // No link available, must have been loaded from zip file - no link possible
+ return "";
+ }
+
+
+ /**
+ * Strip the time from a GPX point source string
+ * @param inPointSource point source to copy
+ * @return point source with timestamp removed
+ */
+ private static String stripTime(String inPointSource)
+ {
+ return inPointSource.replaceAll("[ \t]*<time>.*?</time>", "");