]> git.sesse.net Git - kdenlive/blobdiff - src/dvdwizardvob.cpp
Const'ify
[kdenlive] / src / dvdwizardvob.cpp
index 9cdfd8d0e06d4b1be4762464b53ebc245e104de3..0f8c172560adeac166350ec34f49aa95224926a9 100644 (file)
@@ -91,12 +91,12 @@ DvdWizardVob::DvdWizardVob(QWidget *parent) :
     
     m_vobList->setIconSize(QSize(60, 45));
 
-    if (KStandardDirs::findExe("dvdauthor").isEmpty()) m_errorMessage.append(i18n("<strong>Program %1 is required for the DVD wizard.</strong>", i18n("dvdauthor")));
-    if (KStandardDirs::findExe("mkisofs").isEmpty() && KStandardDirs::findExe("genisoimage").isEmpty()) m_errorMessage.append(i18n("<strong>Program %1 or %2 is required for the DVD wizard.</strong>", i18n("mkisofs"), i18n("genisoimage")));
-    if (m_errorMessage.isEmpty()) m_view.error_message->setVisible(false);
-    else {
-       m_view.error_message->setText(m_errorMessage);
-       m_installCheck = false;
+    QString errorMessage;
+    if (KStandardDirs::findExe("dvdauthor").isEmpty()) errorMessage.append(i18n("<strong>Program %1 is required for the DVD wizard.</strong>", i18n("dvdauthor")));
+    if (KStandardDirs::findExe("mkisofs").isEmpty() && KStandardDirs::findExe("genisoimage").isEmpty()) errorMessage.append(i18n("<strong>Program %1 or %2 is required for the DVD wizard.</strong>", i18n("mkisofs"), i18n("genisoimage")));
+    if (!errorMessage.isEmpty()) {
+       m_view.button_add->setEnabled(false);
+       m_view.dvd_profile->setEnabled(false);
     }
 
     m_view.dvd_profile->addItems(QStringList() << i18n("PAL 4:3") << i18n("PAL 16:9") << i18n("NTSC 4:3") << i18n("NTSC 16:9"));
@@ -118,17 +118,27 @@ DvdWizardVob::DvdWizardVob(QWidget *parent) :
 
 #if KDE_IS_VERSION(4,7,0)
     m_warnMessage = new KMessageWidget;
-    m_warnMessage->setMessageType(KMessageWidget::Warning);
-    m_warnMessage->setText(i18n("Your clips do not match selected DVD format, transcoding required."));
     m_warnMessage->setCloseButtonVisible(false);
-    m_warnMessage->addAction(m_transcodeAction);
     QGridLayout *s =  static_cast <QGridLayout*> (layout());
-    s->addWidget(m_warnMessage, 3, 0, 1, -1);
-    m_warnMessage->hide();
+    s->addWidget(m_warnMessage, 2, 0, 1, -1);
+    if (!errorMessage.isEmpty()) {
+       m_warnMessage->setMessageType(KMessageWidget::Error);
+       m_warnMessage->setText(errorMessage);
+       m_installCheck = false;
+    }else {
+       m_warnMessage->setMessageType(KMessageWidget::Warning);
+       m_warnMessage->setText(i18n("Your clips do not match selected DVD format, transcoding required."));
+       m_warnMessage->addAction(m_transcodeAction);
+       m_warnMessage->hide();
+    }
     m_view.button_transcode->setHidden(true);
 #else
     m_view.button_transcode->setDefaultAction(m_transcodeAction);
     m_view.button_transcode->setEnabled(false);
+    if (!errorMessage.isEmpty()) {
+       m_view.error_message->setText(errorMessage);
+       m_installCheck = false;
+    }
 #endif
     
     slotCheckVobList();
@@ -143,7 +153,7 @@ void DvdWizardVob::slotCheckProfiles()
 {
     bool conflict = false;
     int comboProfile = m_view.dvd_profile->currentIndex();
-    for (int i = 0; i < m_vobList->topLevelItemCount(); i++) {
+    for (int i = 0; i < m_vobList->topLevelItemCount(); ++i) {
         QTreeWidgetItem *item = m_vobList->topLevelItem(i);
         if (item->data(0, Qt::UserRole + 1).toInt() != comboProfile) {
            conflict = true;
@@ -274,6 +284,7 @@ void DvdWizardVob::slotAddVobFile(KUrl url, const QString &chapters, bool checkF
        slotCheckVobList();
        slotCheckProfiles();
     }
+    emit prepareMonitor();
 }
 
 void DvdWizardVob::slotDeleteVobFile()
@@ -309,7 +320,7 @@ QStringList DvdWizardVob::selectedUrls() const
        // First movie is only for intro
        i = 1;
     }
-    for (; i < max; i++) {
+    for (; i < max; ++i) {
         QTreeWidgetItem *item = m_vobList->topLevelItem(i);
         if (item) result.append(item->text(0));
     }
@@ -322,7 +333,12 @@ QStringList DvdWizardVob::durations() const
     QStringList result;
     QString path;
     int max = m_vobList->topLevelItemCount();
-    for (int i = 0; i < max; i++) {
+    int i = 0;
+    if (m_view.use_intro->isChecked()) {
+       // First movie is only for intro
+       i = 1;
+    }
+    for (; i < max; ++i) {
         QTreeWidgetItem *item = m_vobList->topLevelItem(i);
         if (item) result.append(QString::number(item->data(1, Qt::UserRole).toInt()));
     }
@@ -334,7 +350,12 @@ QStringList DvdWizardVob::chapters() const
     QStringList result;
     QString path;
     int max = m_vobList->topLevelItemCount();
-    for (int i = 0; i < max; i++) {
+    int i = 0;
+    if (m_view.use_intro->isChecked()) {
+       // First movie is only for intro
+       i = 1;
+    }
+    for (; i < max; ++i) {
         QTreeWidgetItem *item = m_vobList->topLevelItem(i);
         if (item) {
             result.append(item->data(1, Qt::UserRole + 1).toString());
@@ -346,7 +367,12 @@ QStringList DvdWizardVob::chapters() const
 void DvdWizardVob::updateChapters(QMap <QString, QString> chaptersdata)
 {
     int max = m_vobList->topLevelItemCount();
-    for (int i = 0; i < max; i++) {
+    int i = 0;
+    if (m_view.use_intro->isChecked()) {
+       // First movie is only for intro
+       i = 1;
+    }
+    for (; i < max; ++i) {
         QTreeWidgetItem *item = m_vobList->topLevelItem(i);
         if (chaptersdata.contains(item->text(0))) item->setData(1, Qt::UserRole + 1, chaptersdata.value(item->text(0)));
     }
@@ -388,7 +414,7 @@ void DvdWizardVob::slotCheckVobList()
     else m_view.button_down->setEnabled(hasItem);
 
     qint64 totalSize = 0;
-    for (int i = 0; i < max; i++) {
+    for (int i = 0; i < max; ++i) {
         item = m_vobList->topLevelItem(i);
         if (item) totalSize += (qint64) item->data(2, Qt::UserRole).toInt();
     }
@@ -509,7 +535,7 @@ void DvdWizardVob::slotTranscodeFiles()
     // Transcode files that do not match selected profile
     int max = m_vobList->topLevelItemCount();
     int format = m_view.dvd_profile->currentIndex();
-    for (int i = 0; i < max; i++) {
+    for (int i = 0; i < max; ++i) {
         QTreeWidgetItem *item = m_vobList->topLevelItem(i);
        if (item->data(0, Qt::UserRole + 1).toInt() != format) {
            // File needs to be transcoded
@@ -531,16 +557,23 @@ void DvdWizardVob::slotTranscodeFiles()
                postParams << "-vf" << QString("scale=%1:%2,pad=%3:%4:%5:0,setdar=%6").arg(finalSize.width() - 2 * conv_pad).arg(destSize.height()).arg(finalSize.width()).arg(finalSize.height()).arg(conv_pad).arg(input_aspect);
            }
            ClipTranscode *d = new ClipTranscode(KUrl::List () << KUrl(item->text(0)), params.section(';', 0, 0), postParams, i18n("Transcoding to DVD format"), true, this);
-           connect(d, SIGNAL(transcodedClip(KUrl,KUrl)), this, SLOT(slotTranscodedClip(KUrl, KUrl)));
+           connect(d, SIGNAL(transcodedClip(KUrl,KUrl)), this, SLOT(slotTranscodedClip(KUrl,KUrl)));
+           d->slotStartTransCode();
            d->show();
+           
        }
     }
 }
 
 void DvdWizardVob::slotTranscodedClip(KUrl src, KUrl transcoded)
 {
+    if (transcoded.isEmpty()) {
+       // Transcoding canceled or failed
+       m_transcodeAction->setEnabled(true);
+       return;
+    }
     int max = m_vobList->topLevelItemCount();
-    for (int i = 0; i < max; i++) {
+    for (int i = 0; i < max; ++i) {
         QTreeWidgetItem *item = m_vobList->topLevelItem(i);
        if (KUrl(item->text(0)).path() == src.path()) {
            // Replace movie with transcoded version
@@ -635,4 +668,7 @@ void DvdWizardVob::showError(const QString error)
     m_view.error_message->setText(error);
     m_view.error_message->setVisible(true);
 #endif    
-}
\ No newline at end of file
+}
+
+
+#include "dvdwizardvob.moc"