Support file copy within the same folder (#1209)

* support file copy to the same folder #294

* support file copy to the same folder; B&W  radios added.

* fix the syntax
This commit is contained in:
eshifri
2021-12-05 11:50:08 +11:00
committed by GitHub
parent ec01fa8df9
commit ee883c8354
3 changed files with 27 additions and 9 deletions
+13 -6
View File
@@ -411,13 +411,20 @@ void RadioSdManagerPage::build(FormWindow * window)
menu->addLine(STR_PASTE, [=]() {
static char lfn[FF_MAX_LFN + 1]; // TODO optimize that!
f_getcwd((TCHAR *)lfn, FF_MAX_LFN);
// prevent copying to the same directory
if (strcmp(clipboard.data.sd.directory, lfn)) {
sdCopyFile(clipboard.data.sd.filename,
clipboard.data.sd.directory,
clipboard.data.sd.filename, lfn);
clipboard.type = CLIPBOARD_TYPE_NONE;
// prevent copying to the same directory with the same name
char *destNamePtr = clipboard.data.sd.filename;
if (!strcmp(clipboard.data.sd.directory, lfn)) {
char destFileName[2 * CLIPBOARD_PATH_LEN + 1];
destNamePtr = strAppend(destFileName, FILE_COPY_PREFIX,
CLIPBOARD_PATH_LEN);
destNamePtr = strAppend(destNamePtr, clipboard.data.sd.filename,
CLIPBOARD_PATH_LEN);
destNamePtr = destFileName;
}
sdCopyFile(clipboard.data.sd.filename,
clipboard.data.sd.directory, destNamePtr, lfn);
clipboard.type = CLIPBOARD_TYPE_NONE;
rebuild(window);
});
}
@@ -164,10 +164,19 @@ void onSdManagerMenu(const char * result)
strcat(lfn, "/");
strcat(lfn, line);
}
if (strcmp(clipboard.data.sd.directory, lfn)) { // prevent copying to the same directory
POPUP_WARNING(sdCopyFile(clipboard.data.sd.filename, clipboard.data.sd.directory, clipboard.data.sd.filename, lfn));
REFRESH_FILES();
char *destNamePtr = clipboard.data.sd.filename;
if (!strcmp(clipboard.data.sd.directory, lfn)) {
// prevent copying to the same directory under the same name
char destFileName[2 * CLIPBOARD_PATH_LEN + 1];
destNamePtr =
strAppend(destFileName, FILE_COPY_PREFIX, CLIPBOARD_PATH_LEN);
destNamePtr = strAppend(destNamePtr, clipboard.data.sd.filename,
CLIPBOARD_PATH_LEN);
destNamePtr = destFileName;
}
POPUP_WARNING(sdCopyFile(clipboard.data.sd.filename,
clipboard.data.sd.directory, destNamePtr, lfn));
REFRESH_FILES();
}
else if (result == STR_RENAME_FILE) {
memcpy(reusableBuffer.sdManager.originalName, line, sizeof(reusableBuffer.sdManager.originalName));
+2
View File
@@ -29,6 +29,8 @@ extern FIL g_oLogFile;
#include "translations.h"
#define FILE_COPY_PREFIX "cp_"
#define PATH_SEPARATOR "/"
#define ROOT_PATH PATH_SEPARATOR
#define MODELS_PATH ROOT_PATH "MODELS" // no trailing slash = important