diff options
author | Arno <arno@disconnect.de> | 2018-01-03 00:02:32 +0100 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2018-01-03 00:02:32 +0100 |
commit | 7b7ef1e0d88bbec407de65eac59304bcc01a9c75 (patch) | |
tree | 63d112e4c0010b7385bdcef19876ef4d9e691fe7 /filewidget.cpp | |
parent | 1186d454bb421fc69c313401dc9542e9510f7e83 (diff) | |
download | ShemovCleaner-7b7ef1e0d88bbec407de65eac59304bcc01a9c75.tar.gz ShemovCleaner-7b7ef1e0d88bbec407de65eac59304bcc01a9c75.tar.bz2 ShemovCleaner-7b7ef1e0d88bbec407de65eac59304bcc01a9c75.zip |
Update the cache when copying or moving files
Diffstat (limited to 'filewidget.cpp')
-rw-r--r-- | filewidget.cpp | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/filewidget.cpp b/filewidget.cpp index 0ee7d2d..b637e4c 100644 --- a/filewidget.cpp +++ b/filewidget.cpp @@ -525,22 +525,33 @@ void FileWidget::paste(){ int count = 0; mProgressBar->reset(); mProgressBar->setMaximum(urls.count() - 1); - foreach (QUrl u, urls){ + for(QUrl u : urls){ QString path = u.toLocalFile(); QString newDir = mDir->text(); QFileInfo fi(path); QString newFile = QString("%1/%2").arg(newDir).arg(fi.fileName()); mProgressBar->setValue(++count); + CachedFileData *fd = mFileCache[path]; if(mFileAction == Copy){ QString msg = QString(tr("Copying %1").arg(path)); emit statusMessage(msg); qApp->processEvents(); - QFile::copy(path, newFile); + if(QFile::copy(path, newFile)){ + CachedFileData *fdNew = new CachedFileData(*fd); + fdNew->fullPath = newFile; + mFileCache.insert(newFile, fdNew); + } }else if(mFileAction == Cut){ QString msg = QString(tr("Moving %1").arg(path)); emit statusMessage(msg); qApp->processEvents(); - QFile::rename(path, newFile); + if(QFile::rename(path, newFile)){ + CachedFileData *fd = mFileCache.take(path); + if(fd){ + mFileCache.remove(path); + mFileCache.insert(newFile, fd); + } + } } emit statusMessage("Finished Paste!"); } |