diff options
Diffstat (limited to 'dvdimagejobgui.cpp')
-rw-r--r-- | dvdimagejobgui.cpp | 33 |
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); +} |