From: Jean-Baptiste Mardelle Date: Wed, 12 Oct 2011 23:44:56 +0000 (+0000) Subject: Show progressbar when transcoding clips X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=6bb6ccf9e881c0936f108993c9c5c04cb3ec6163;p=kdenlive Show progressbar when transcoding clips svn path=/trunk/kdenlive/; revision=5956 --- diff --git a/src/cliptranscode.cpp b/src/cliptranscode.cpp index 83328611..8dbf6df4 100644 --- a/src/cliptranscode.cpp +++ b/src/cliptranscode.cpp @@ -27,11 +27,12 @@ ClipTranscode::ClipTranscode(KUrl::List urls, const QString ¶ms, const QString &description, QWidget * parent) : - QDialog(parent), m_urls(urls) + QDialog(parent), m_urls(urls), m_duration(0) { setFont(KGlobalSettings::toolBarFont()); setupUi(this); setAttribute(Qt::WA_DeleteOnClose); + log_text->setHidden(true); setWindowTitle(i18n("Transcode Clip")); auto_add->setText(i18np("Add clip to project", "Add clips to project", m_urls.count())); @@ -85,7 +86,7 @@ ClipTranscode::ClipTranscode(KUrl::List urls, const QString ¶ms, const QStri connect(&m_transcodeProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(slotShowTranscodeInfo())); connect(&m_transcodeProcess, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(slotTranscodeFinished(int, QProcess::ExitStatus))); - //adjustSize(); + adjustSize(); } ClipTranscode::~ClipTranscode() @@ -100,6 +101,7 @@ void ClipTranscode::slotStartTransCode() if (m_transcodeProcess.state() != QProcess::NotRunning) { return; } + m_duration = 0; QStringList parameters; QString destination; QString params = ffmpeg_params->toPlainText().simplified(); @@ -136,6 +138,30 @@ void ClipTranscode::slotStartTransCode() void ClipTranscode::slotShowTranscodeInfo() { QString log = QString(m_transcodeProcess.readAll()); + int progress; + if (m_duration == 0) { + if (log.contains("Duration:")) { + QString data = log.section("Duration:", 1, 1).section(',', 0, 0).simplified(); + QStringList numbers = data.split(':'); + m_duration = numbers.at(0).toInt() * 3600 + numbers.at(1).toInt() * 60 + numbers.at(2).toDouble(); + log_text->setHidden(true); + job_progress->setHidden(false); + } + else { + log_text->setHidden(false); + job_progress->setHidden(true); + } + } + else if (log.contains("time=")) { + QString time = log.section("time=", 1, 1).simplified().section(' ', 0, 0); + if (time.contains(':')) { + QStringList numbers = time.split(':'); + progress = numbers.at(0).toInt() * 3600 + numbers.at(1).toInt() * 60 + numbers.at(2).toDouble(); + } + else progress = (int) time.toDouble(); + kDebug()<<"// PROGRESS: "<setValue((int) (100.0 * progress / m_duration)); + } //kDebug() << "//LOG: " << log; log_text->setPlainText(log); } @@ -144,6 +170,7 @@ void ClipTranscode::slotTranscodeFinished(int exitCode, QProcess::ExitStatus exi { buttonBox->button(QDialogButtonBox::Abort)->setText(i18n("Close")); button_start->setEnabled(true); + m_duration = 0; if (exitCode == 0 && exitStatus == QProcess::NormalExit) { log_text->setHtml(log_text->toPlainText() + "
" + i18n("Transcoding finished.")); diff --git a/src/cliptranscode.h b/src/cliptranscode.h index 5988fb0e..84f2f784 100644 --- a/src/cliptranscode.h +++ b/src/cliptranscode.h @@ -46,6 +46,7 @@ private slots: private: QProcess m_transcodeProcess; KUrl::List m_urls; + int m_duration; signals: void addClip(KUrl url); diff --git a/src/widgets/cliptranscode_ui.ui b/src/widgets/cliptranscode_ui.ui index 74a2b54d..caca3495 100644 --- a/src/widgets/cliptranscode_ui.ui +++ b/src/widgets/cliptranscode_ui.ui @@ -6,8 +6,8 @@ 0 0 - 316 - 399 + 291 + 450 @@ -145,19 +145,26 @@ + + + + 0 + + + - - KUrlRequester - QFrame -
kurlrequester.h
-
KComboBox QComboBox
kcombobox.h
+ + KUrlRequester + QFrame +
kurlrequester.h
+