Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
46f6371fd7 | ||
|
|
15e2fda179 | ||
|
|
b9b193aab7 |
@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@ -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,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user