diff --git a/OsmAnd/src/net/osmand/FileUtils.java b/OsmAnd/src/net/osmand/FileUtils.java index 17e75e2fce..fed5346212 100644 --- a/OsmAnd/src/net/osmand/FileUtils.java +++ b/OsmAnd/src/net/osmand/FileUtils.java @@ -8,6 +8,8 @@ import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; +import net.osmand.GPXUtilities.GPXFile; +import net.osmand.GPXUtilities.Metadata; import net.osmand.plus.GpxSelectionHelper; import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile; import net.osmand.plus.OsmandApplication; @@ -42,7 +44,7 @@ public class FileUtils { dest.getParentFile().mkdirs(); } if (source.renameTo(dest)) { - final String[] suffixes = new String[]{"-journal", "-wal", "-shm"}; + final String[] suffixes = new String[] {"-journal", "-wal", "-shm"}; for (String s : suffixes) { File file = new File(ctx.getDatabasePath(source + s).toString()); if (file.exists()) { @@ -76,6 +78,26 @@ public class FileUtils { return res; } + public static File renameFile(@NonNull OsmandApplication app, @NonNull File source, + @NonNull String newName, boolean dirAllowed, RenameCallback callback) { + File dest = checkRenamePossibility(app, source, newName, dirAllowed); + if (dest == null) { + return null; + } + if (!dest.getParentFile().exists()) { + dest.getParentFile().mkdirs(); + } + File res = source.renameTo(dest) ? dest : null; + if (res != null) { + if (callback != null) { + callback.renamedTo(res); + } + } else { + Toast.makeText(app, R.string.file_can_not_be_renamed, Toast.LENGTH_LONG).show(); + } + return res; + } + public static File renameGpxFile(@NonNull OsmandApplication app, @NonNull File src, @NonNull File dest) { if (!dest.getParentFile().exists()) { dest.getParentFile().mkdirs(); diff --git a/OsmAnd/src/net/osmand/plus/dialogs/RenameFileBottomSheet.java b/OsmAnd/src/net/osmand/plus/dialogs/RenameFileBottomSheet.java index a7d51add8e..c6057b56de 100644 --- a/OsmAnd/src/net/osmand/plus/dialogs/RenameFileBottomSheet.java +++ b/OsmAnd/src/net/osmand/plus/dialogs/RenameFileBottomSheet.java @@ -18,6 +18,7 @@ import com.google.android.material.textfield.TextInputLayout; import net.osmand.AndroidUtils; import net.osmand.FileUtils.RenameCallback; +import net.osmand.IndexConstants; import net.osmand.PlatformUtil; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; @@ -33,6 +34,7 @@ import org.apache.commons.logging.Log; import java.io.File; import static net.osmand.FileUtils.ILLEGAL_FILE_NAME_CHARACTERS; +import static net.osmand.FileUtils.renameFile; import static net.osmand.FileUtils.renameGpxFile; import static net.osmand.FileUtils.renameSQLiteFile; @@ -127,8 +129,10 @@ public class RenameFileBottomSheet extends MenuBottomSheetDialogFragment { String ext = index == -1 ? "" : file.getName().substring(index); if (SQLiteTileSource.EXT.equals(ext)) { dest = renameSQLiteFile(app, file, selectedFileName + ext, null); - } else { + } else if (IndexConstants.GPX_FILE_EXT.equals(ext)) { dest = renameGpxFile(app, file, selectedFileName + ext, false, null); + } else { + dest = renameFile(app, file, selectedFileName + ext, false, null); } if (dest != null) { Fragment fragment = getTargetFragment();