]> git.sesse.net Git - kdenlive/commitdiff
Show progressbar when transcoding clips
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 12 Oct 2011 23:44:56 +0000 (23:44 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 12 Oct 2011 23:44:56 +0000 (23:44 +0000)
svn path=/trunk/kdenlive/; revision=5956

src/cliptranscode.cpp
src/cliptranscode.h
src/widgets/cliptranscode_ui.ui

index 8332861100eb7cc1ff9df5c90b1e171a36353a10..8dbf6df4430c436500464390dbf4ca5c24ed450c 100644 (file)
 
 
 ClipTranscode::ClipTranscode(KUrl::List urls, const QString &params, 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 &params, 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: "<<progress<<", "<<m_duration;
+        job_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() + "<br /><b>" + i18n("Transcoding finished."));
index 5988fb0e7dab55e3c03b59be3ce18314a692c10c..84f2f78423d34b958b7e5a9439d8d9731d465783 100644 (file)
@@ -46,6 +46,7 @@ private slots:
 private:
     QProcess m_transcodeProcess;
     KUrl::List m_urls;
+    int m_duration;
 
 signals:
     void addClip(KUrl url);
index 74a2b54dc9fd10aa0026000581020f19cf4d32f7..caca3495de50a2a2d2d5071382aac4cb3eadf8a0 100644 (file)
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>316</width>
-    <height>399</height>
+    <width>291</width>
+    <height>450</height>
    </rect>
   </property>
   <property name="windowTitle">
      </property>
     </widget>
    </item>
+   <item row="7" column="1" colspan="2">
+    <widget class="QProgressBar" name="job_progress">
+     <property name="value">
+      <number>0</number>
+     </property>
+    </widget>
+   </item>
   </layout>
  </widget>
  <customwidgets>
-  <customwidget>
-   <class>KUrlRequester</class>
-   <extends>QFrame</extends>
-   <header>kurlrequester.h</header>
-  </customwidget>
   <customwidget>
    <class>KComboBox</class>
    <extends>QComboBox</extends>
    <header>kcombobox.h</header>
   </customwidget>
+  <customwidget>
+   <class>KUrlRequester</class>
+   <extends>QFrame</extends>
+   <header>kurlrequester.h</header>
+  </customwidget>
  </customwidgets>
  <resources/>
  <connections>