Compare commits

...

3 Commits

Author SHA1 Message Date
nazar-kutz
46f6371fd7 Update track name only if it origins from the OsmAnd 2024-08-20 19:26:10 +03:00
nazar-kutz
15e2fda179 Small fix 2024-08-19 16:38:20 +03:00
nazar-kutz
b9b193aab7 Fix #20211: Change track name in metadata too if it changed by renaming 2024-08-19 16:37:15 +03:00
2 changed files with 34 additions and 1 deletions

View File

@ -880,7 +880,10 @@ class GpxFile : GpxExtensions {
return null
}
fun isOsmAndOrigin() = author?.startsWith(OSMAND_AUTHOR_PREFIX, ignoreCase = true) ?: false
companion object {
const val DEFAULT_WPT_GROUP_NAME = "default"
const val OSMAND_AUTHOR_PREFIX = "OsmAnd"
}
}

View File

@ -29,8 +29,12 @@ import net.osmand.plus.dialogs.RenameFileBottomSheet;
import net.osmand.plus.resources.ResourceManager;
import net.osmand.plus.track.GpxSelectionParams;
import net.osmand.plus.track.helpers.GpxDisplayHelper;
import net.osmand.plus.track.helpers.GpxFileLoaderTask;
import net.osmand.plus.track.helpers.GpxSelectionHelper;
import net.osmand.plus.track.helpers.SelectedGpxFile;
import net.osmand.plus.track.helpers.save.SaveGpxHelper;
import net.osmand.shared.gpx.GpxFile;
import net.osmand.shared.gpx.primitives.Metadata;
import net.osmand.util.Algorithms;
import net.osmand.util.CollectionUtils;
@ -42,6 +46,7 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.regex.Pattern;
public class FileUtils {
@ -142,17 +147,42 @@ public class FileUtils {
}
public static void updateRenamedGpx(@NonNull OsmandApplication app, @NonNull File src, @NonNull File dest) {
GpxFile gpxFile = null;
app.getGpxDbHelper().rename(src, dest);
app.getMapButtonsHelper().onRenameGpxFile(src.getAbsolutePath(), dest.getAbsolutePath());
GpxSelectionHelper gpxSelectionHelper = app.getSelectedGpxHelper();
SelectedGpxFile selectedGpxFile = gpxSelectionHelper.getSelectedFileByPath(src.getAbsolutePath());
if (selectedGpxFile != null) {
selectedGpxFile.getGpxFile().setPath(dest.getAbsolutePath());
gpxFile = selectedGpxFile.getGpxFile();
gpxFile.setPath(dest.getAbsolutePath());
gpxSelectionHelper.updateSelectedGpxFile(selectedGpxFile);
GpxDisplayHelper gpxDisplayHelper = app.getGpxDisplayHelper();
gpxDisplayHelper.updateDisplayGroupsNames(selectedGpxFile);
}
askUpdateNameInMetadata(gpxFile, dest);
}
private static void askUpdateNameInMetadata(@Nullable GpxFile gpxFile, @NonNull File dest) {
String newName = Algorithms.getFileNameWithoutExtension(dest.getName());
if (gpxFile != null) {
updateNameInMetadata(gpxFile, newName);
return;
}
GpxFileLoaderTask.loadGpxFile(dest, null, gpx -> {
updateNameInMetadata(gpx, newName);
return true;
});
}
private static void updateNameInMetadata(@NonNull GpxFile gpxFile, @NonNull String newName) {
if (gpxFile.isOsmAndOrigin()) {
Metadata metadata = gpxFile.getMetadata();
if (!Objects.equals(newName, metadata.getName())) {
metadata.setName(newName);
SaveGpxHelper.saveGpx(gpxFile);
}
}
}
public static void updateMovedGpxFiles(@NonNull OsmandApplication app, @NonNull List<File> files,