summaryrefslogtreecommitdiffstats
path: root/filecopier.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2016-12-06 12:14:47 +0100
committerArno <arno@disconnect.de>2016-12-06 12:14:47 +0100
commit997ed9156ba7a1942cebd487fd5cc2818220fa78 (patch)
tree3b9d5a63b9235e3fa9ce8e4f9078991fc14738b3 /filecopier.cpp
parenta68cf88e69c65014f2e528aa26db42b4808c3b64 (diff)
downloadShemovCleaner-997ed9156ba7a1942cebd487fd5cc2818220fa78.tar.gz
ShemovCleaner-997ed9156ba7a1942cebd487fd5cc2818220fa78.tar.bz2
ShemovCleaner-997ed9156ba7a1942cebd487fd5cc2818220fa78.zip
Add a summary to ProgressDialog
Show how many files we have, and display the transfer rate in Megabytes per second. Can't believe that it worked right from the start :)
Diffstat (limited to 'filecopier.cpp')
-rw-r--r--filecopier.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/filecopier.cpp b/filecopier.cpp
index e652339..001b317 100644
--- a/filecopier.cpp
+++ b/filecopier.cpp
@@ -1,5 +1,6 @@
#include <QMutexLocker>
#include <QFile>
+#include <QElapsedTimer>
#include "filecopier.h"
@@ -21,6 +22,7 @@ void FileCopier::run(){
int bufsize = 16 * 1024 * 1024;
char *buf = new char[bufsize];
mCancel = false;
+ QElapsedTimer et;
while(!mJobs.isEmpty()){
mAddJobMutex.lock();
auto first = mJobs.constBegin();
@@ -39,6 +41,9 @@ void FileCopier::run(){
emit newFile(source, dest, sFile.size());
int read = 0;
qint64 total = 0;
+ qint64 elapsed = 0;
+ qint64 bytesSinceEl = 0;
+ et.start();
while(!sFile.atEnd()){
mCancelMutex.lock();
bool cancel = mCancel;
@@ -51,6 +56,13 @@ void FileCopier::run(){
read = sFile.read(buf, bufsize);
dFile.write(buf, read);
total += read;
+ bytesSinceEl += read;
+ elapsed += et.restart();
+ if(elapsed > 5000){ //5 seconds
+ emit bytesReadIntval(bytesSinceEl, elapsed);
+ elapsed = 0;
+ bytesSinceEl = 0;
+ }
emit bytesRead(total);
}
emit success(true, source);