From ae37ec9c33b46e29de85d3b728bce5a75bb46e58 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Sun, 28 May 2023 21:20:04 +0200 Subject: [PATCH] Bugfix: set file suffix for "one file"-exports explicitly. KML/KMZ was added by AndroidOS, but not GPX. Part of #1318. --- .../opentracks/io/file/TrackFilenameGenerator.java | 10 +++++----- .../opentracks/io/file/exporter/ExportActivity.java | 3 ++- .../de/dennisguse/opentracks/util/ExportUtils.java | 4 +++- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/io/file/TrackFilenameGenerator.java b/src/main/java/de/dennisguse/opentracks/io/file/TrackFilenameGenerator.java index eeb5dccbc..2f80c1fe1 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/TrackFilenameGenerator.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/TrackFilenameGenerator.java @@ -29,6 +29,10 @@ public class TrackFilenameGenerator { .collect(Collectors.joining(", ")); } + public static String format(@NonNull String name, @NonNull TrackFileFormat trackFileFormat) { + return FileUtils.sanitizeFileName(name + "." + trackFileFormat.getExtension()); + } + private final String template; public TrackFilenameGenerator(@NonNull String template) { @@ -44,7 +48,7 @@ public class TrackFilenameGenerator { values.put(STARTTIME_TIME_KEY, track.getStartTime().toLocalTime().toString()); values.put(STARTTIME_DATE_KEY, track.getStartTime().toLocalDate().toString()); - return FileUtils.sanitizeFileName(format(template, values)) + "." + trackFileFormat.getExtension(); + return format(format(template, values), trackFileFormat); } private static String format(String template, Map values) { @@ -77,10 +81,6 @@ public class TrackFilenameGenerator { return String.format(templateCompiled, valueList.toArray()); } - public String getTemplate() { - return template; - } - public boolean isValid() { try { getExample(); diff --git a/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportActivity.java b/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportActivity.java index 69444e4b0..c1d33da3c 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportActivity.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportActivity.java @@ -39,6 +39,7 @@ import de.dennisguse.opentracks.data.models.Track; import de.dennisguse.opentracks.databinding.ExportActivityBinding; import de.dennisguse.opentracks.io.file.ErrorListDialog; import de.dennisguse.opentracks.io.file.TrackFileFormat; +import de.dennisguse.opentracks.io.file.TrackFilenameGenerator; import de.dennisguse.opentracks.settings.PreferencesUtils; import de.dennisguse.opentracks.util.ExportUtils; import de.dennisguse.opentracks.util.FileUtils; @@ -260,7 +261,7 @@ public class ExportActivity extends FragmentActivity implements ExportServiceRes private boolean exportFileExists(ExportTask exportTask) { String filename; if (exportTask.isMultiExport()) { - filename = exportTask.getFilename(); + filename = TrackFilenameGenerator.format(exportTask.getFilename(), exportTask.getTrackFileFormat()); } else { Track track = contentProviderUtils.getTrack(exportTask.getTrackIds().get(0)); filename = PreferencesUtils.getTrackFileformatGenerator().format(track, trackFileFormat); diff --git a/src/main/java/de/dennisguse/opentracks/util/ExportUtils.java b/src/main/java/de/dennisguse/opentracks/util/ExportUtils.java index aa97e0f13..3f65832aa 100644 --- a/src/main/java/de/dennisguse/opentracks/util/ExportUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/ExportUtils.java @@ -23,6 +23,7 @@ import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.data.ContentProviderUtils; import de.dennisguse.opentracks.data.models.Track; import de.dennisguse.opentracks.io.file.TrackFileFormat; +import de.dennisguse.opentracks.io.file.TrackFilenameGenerator; import de.dennisguse.opentracks.io.file.exporter.ExportService; import de.dennisguse.opentracks.io.file.exporter.ExportServiceResultReceiver; import de.dennisguse.opentracks.io.file.exporter.ExportTask; @@ -65,7 +66,8 @@ public class ExportUtils { if (tracks.size() == 1) { exportDocumentFileUri = getExportDocumentFileUri(context, tracks.get(0), exportTask.getTrackFileFormat(), directory); } else { - exportDocumentFileUri = getExportDocumentFileUri(context, exportTask.getFilename(), exportTask.getTrackFileFormat(), directory); + String filename = TrackFilenameGenerator.format(exportTask.getFilename(), exportTask.getTrackFileFormat()); + exportDocumentFileUri = getExportDocumentFileUri(context, filename, exportTask.getTrackFileFormat(), directory); } if (exportDocumentFileUri == null) {