summaryrefslogtreecommitdiffstats
path: root/filecopier.cpp
diff options
context:
space:
mode:
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);