On 5/12/19 5:00 AM, interest-requ...@qt-project.org wrote:
Hello,
QFile/QDir rename function copies file in the case it's not possible to
just move it.
Is there a way to learn in advance what type of operation will occur?
Let's suppose I have 10GB file. In case of copy, I would definitely like
to use my own copy function and show UI with the progress of the operation.
And of course I do not want to use my copy function always if the fast
move is available.
You need to use a different class. Look around line 615 here
https://code.woboq.org/qt5/qtbase/src/corelib/io/qfile.cpp.html
// rename to final name
if (QFileSystemEngine::renameFile(tmp,
QFileSystemEntry(newName), error)) {
d->fileEngine->setFileName(newName);
d->fileName = newName;
return true;
}
The class can be found here:
https://code.woboq.org/qt5/qtbase/src/corelib/io/qfilesystemengine_p.h.html#QFileSystemEngine
That's how you can catch the rename failure then do your own thing on
copy. Be sure to read the comments in the file. If you will never be
"just changing case" of a file name and can control that, then only that
snippet should apply to you.
You might want to add a conditional compile and use part of this snippet
from around line 643 for the lesser platforms.
if (changingCase ? d->engine()->renameOverwrite(newName) :
d->engine()->rename(newName)) {
unsetError();
// engine was able to handle the new name so we just reset it
d->fileEngine->setFileName(newName);
d->fileName = newName;
return true;
}
That will be a bit more involved though.
--
Roland Hughes, President
Logikal Solutions
(630)-205-1593 (cell)
http://www.theminimumyouneedtoknow.com
http://www.infiniteexposure.net
http://www.johnsmith-book.com
_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest