diff options
author | Arno <arno@disconnect.de> | 2016-12-06 12:14:47 +0100 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2016-12-06 12:14:47 +0100 |
commit | 997ed9156ba7a1942cebd487fd5cc2818220fa78 (patch) | |
tree | 3b9d5a63b9235e3fa9ce8e4f9078991fc14738b3 /filecopier.cpp | |
parent | a68cf88e69c65014f2e528aa26db42b4808c3b64 (diff) | |
download | ShemovCleaner-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.cpp | 12 |
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); |