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:
@@ -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));
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user