summaryrefslogtreecommitdiffstats
path: root/dvdimagejobgui.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'dvdimagejobgui.cpp')
-rw-r--r--dvdimagejobgui.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/dvdimagejobgui.cpp b/dvdimagejobgui.cpp
new file mode 100644
index 0000000..7db1dd6
--- /dev/null
+++ b/dvdimagejobgui.cpp
@@ -0,0 +1,33 @@
+#include "dvdimagejobgui.h"
+#include "dvdimagejob.h"
+#include "dvddrive.h"
+#include <dvdcss/dvdcss.h>
+#include <QPushButton>
+#include <QProgressBar>
+#include <QVBoxLayout>
+#include <QFile>
+
+DVDImageJobGui::DVDImageJobGui(DVDImageJob *job) :
+ m_first(true)
+{
+ connect(job, SIGNAL(extractProgress(int,int)), this, SLOT(extractProgress(int,int)));
+}
+void DVDImageJobGui::extractProgress(int current, int maximum)
+{
+ if (m_first) {
+ m_startTime.start();
+ m_first = false;
+ } else {
+ long long currentBytes = (long long)current * DVDCSS_BLOCK_SIZE;
+ long long maximumBytes = (long long)maximum * DVDCSS_BLOCK_SIZE;
+ double bytesPerMillisecond = (double)currentBytes / (double)m_startTime.elapsed();
+ long long millisecondsRemaining = (long long)((maximumBytes - currentBytes) / bytesPerMillisecond);
+ setWindowTitle(QString("%1 of %2 megabytes (%3 mb/s, %4 remaining)")
+ .arg(QString::number((double)currentBytes / 1024.0 / 1024.0, 'f', 2))
+ .arg(QString::number((double)maximumBytes / 1024.0 / 1024.0, 'f', 2))
+ .arg(QString::number(bytesPerMillisecond * (1000.0 / 1024.0 / 1024.0), 'f', 2))
+ .arg(QTime().addMSecs(millisecondsRemaining).toString()));
+ }
+ setMaximum(maximum);
+ setValue(current);
+}