]> git.sesse.net Git - kdenlive/blobdiff - src/dvdwizardvob.cpp
Rewrote DVD creation, should now support correctly 4:3 and 16:9 menus, letterbox...
[kdenlive] / src / dvdwizardvob.cpp
index 0dc32551e98c0f1dc2369be8e36ac108b8f517ea..73d9a64ae7d2dccf105e8e325cc185b70555480b 100644 (file)
 #include <QTreeWidgetItem>
 #include <QHeaderView>
 
-DvdWizardVob::DvdWizardVob(const QString &profile, QWidget *parent) :
+DvdWizardVob::DvdWizardVob(QWidget *parent) :
         QWizardPage(parent)
 {
     m_view.setupUi(this);
     m_view.intro_vob->setEnabled(false);
     m_view.intro_vob->setFilter("video/mpeg");
-    m_view.button_add->setIcon(KIcon("document-new"));
-    m_view.button_delete->setIcon(KIcon("edit-delete"));
+    m_view.button_add->setIcon(KIcon("list-add"));
+    m_view.button_delete->setIcon(KIcon("list-remove"));
     m_view.button_up->setIcon(KIcon("go-up"));
     m_view.button_down->setIcon(KIcon("go-down"));
     connect(m_view.use_intro, SIGNAL(toggled(bool)), m_view.intro_vob, SLOT(setEnabled(bool)));
@@ -59,9 +59,6 @@ DvdWizardVob::DvdWizardVob(const QString &profile, QWidget *parent) :
     else m_view.error_message->setText(m_errorMessage);
 
     m_view.dvd_profile->addItems(QStringList() << i18n("PAL 4:3") << i18n("PAL 16:9") << i18n("NTSC 4:3") << i18n("NTSC 16:9"));
-    if (profile == "dv_pal_wide") m_view.dvd_profile->setCurrentIndex(1);
-    else if (profile == "dv_ntsc") m_view.dvd_profile->setCurrentIndex(2);
-    else if (profile == "dv_ntsc_wide") m_view.dvd_profile->setCurrentIndex(3);
 
     connect(m_view.dvd_profile, SIGNAL(activated(int)), this, SLOT(changeFormat()));
     connect(m_view.dvd_profile, SIGNAL(activated(int)), this, SLOT(slotCheckProfiles()));
@@ -120,23 +117,8 @@ void DvdWizardVob::slotAddVobFile(KUrl url, const QString &chapters)
     if (url.isEmpty()) return;
     QFile f(url.path());
     qint64 fileSize = f.size();
-    QString profilename;
-    switch (m_view.dvd_profile->currentIndex()) {
-    case 1:
-        profilename = "dv_pal_wide";
-        break;
-    case 2:
-        profilename = "dv_ntsc";
-        break;
-    case 3:
-        profilename = "dv_ntsc_wide";
-        break;
-    default:
-        profilename = "dv_pal";
-        break;
-    }
 
-    Mlt::Profile profile(profilename.toUtf8().constData());
+    Mlt::Profile profile;
     profile.set_explicit(false);
     QTreeWidgetItem *item = new QTreeWidgetItem(m_view.vobs_list, QStringList() << url.path() << QString() << KIO::convertSize(fileSize));
     item->setData(0, Qt::UserRole, fileSize);
@@ -184,6 +166,14 @@ void DvdWizardVob::slotAddVobFile(KUrl url, const QString &chapters)
        }
        item->setData(0, Qt::UserRole, standardName);
        item->setData(0, Qt::UserRole + 1, standard);
+       if (m_view.vobs_list->topLevelItemCount() == 1) {
+           // This is the first added movie, auto select DVD format
+           if (standard >= 0) {
+               m_view.dvd_profile->blockSignals(true);
+               m_view.dvd_profile->setCurrentIndex(standard);
+               m_view.dvd_profile->blockSignals(false);
+           }
+       }
        
     }
     if (producer) delete producer;
@@ -394,22 +384,56 @@ void DvdWizardVob::slotItemDown()
     m_view.vobs_list->insertTopLevelItem(index + 1, m_view.vobs_list->takeTopLevelItem(index));
 }
 
-bool DvdWizardVob::isPal() const
+DVDFORMAT DvdWizardVob::dvdFormat() const
 {
-    return m_view.dvd_profile->currentIndex() < 2;
+    return (DVDFORMAT) m_view.dvd_profile->currentIndex();
+}
+
+const QString DvdWizardVob::dvdProfile() const
+{
+    QString profile;
+    switch (m_view.dvd_profile->currentIndex()) {
+       case PAL_WIDE:
+           profile = "dv_pal_wide";
+           break;
+       case NTSC:
+           profile = "dv_ntsc";
+           break;
+       case NTSC_WIDE:
+           profile = "dv_ntsc_wide";
+           break;
+       default:
+           profile = "dv_pal";
+    }
+    return profile;
 }
 
-bool DvdWizardVob::isWide() const
+//static
+QString DvdWizardVob::getDvdProfile(DVDFORMAT format)
 {
-    return (m_view.dvd_profile->currentIndex() == 1 || m_view.dvd_profile->currentIndex() == 3);
+    QString profile;
+    switch (format) {
+       case PAL_WIDE:
+           profile = "dv_pal_wide";
+           break;
+       case NTSC:
+           profile = "dv_ntsc";
+           break;
+       case NTSC_WIDE:
+           profile = "dv_ntsc_wide";
+           break;
+       default:
+           profile = "dv_pal";
+    }
+    return profile;
 }
 
 void DvdWizardVob::setProfile(const QString& profile)
 {
-    if (profile == "dv_pal") m_view.dvd_profile->setCurrentIndex(0);
-    else if (profile == "dv_pal_wide") m_view.dvd_profile->setCurrentIndex(1);
-    else if (profile == "dv_ntsc") m_view.dvd_profile->setCurrentIndex(2);
-    else if (profile == "dv_ntsc_wide") m_view.dvd_profile->setCurrentIndex(3);
+    if (profile == "dv_pal") m_view.dvd_profile->setCurrentIndex(PAL);
+    else if (profile == "dv_pal_wide") m_view.dvd_profile->setCurrentIndex(PAL_WIDE);
+    else if (profile == "dv_ntsc") m_view.dvd_profile->setCurrentIndex(NTSC);
+    else if (profile == "dv_ntsc_wide") m_view.dvd_profile->setCurrentIndex(NTSC_WIDE);
 }
 
 void DvdWizardVob::clear()