From 21e141ba0746dc1cc11111d639cc2812c88f4c7e Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Fri, 2 Nov 2012 19:25:36 +0100 Subject: [PATCH] Fix intro movie in dvd wizard --- src/dvdwizard.cpp | 16 +++-- src/dvdwizardmenu.cpp | 5 +- src/dvdwizardvob.cpp | 25 ++++--- src/dvdwizardvob.h | 4 +- src/widgets/dvdwizardvob_ui.ui | 125 +++++++++++++++------------------ 5 files changed, 82 insertions(+), 93 deletions(-) diff --git a/src/dvdwizard.cpp b/src/dvdwizard.cpp index 028b18fc..8d46cb9d 100644 --- a/src/dvdwizard.cpp +++ b/src/dvdwizard.cpp @@ -537,7 +537,7 @@ void DvdWizard::generateDvd() auth.appendChild(vmgm); if (m_pageMenu->createMenu() && !m_pageVob->introMovie().isEmpty()) { - // intro movie + // Use first movie in list as intro movie QDomElement menus = dvddoc.createElement("menus"); vmgm.appendChild(menus); QDomElement pgc = dvddoc.createElement("pgc"); @@ -614,16 +614,17 @@ void DvdWizard::generateDvd() break; case NTSC: video.setAttribute("format", "ntsc"); + video.setAttribute("aspect", "4:3"); break; default: video.setAttribute("format", "pal"); + video.setAttribute("aspect", "4:3"); break; } - QStringList voburls = m_pageVob->selectedUrls(); - QDomElement pgc2; - + // Get list of clips + QStringList voburls = m_pageVob->selectedUrls(); for (int i = 0; i < voburls.count(); i++) { if (!voburls.at(i).isEmpty()) { @@ -931,7 +932,6 @@ void DvdWizard::slotSave() dvdproject.setAttribute("profile", m_pageVob->dvdProfile()); dvdproject.setAttribute("tmp_folder", m_status.tmp_folder->url().path()); dvdproject.setAttribute("iso_image", m_status.iso_image->url().path()); - dvdproject.setAttribute("intro_movie", m_pageVob->introMovie()); doc.appendChild(dvdproject); @@ -974,7 +974,11 @@ void DvdWizard::slotLoad() m_status.tmp_folder->setUrl(KUrl(dvdproject.attribute("tmp_folder"))); m_status.iso_image->setUrl(KUrl(dvdproject.attribute("iso_image"))); - m_pageVob->setIntroMovie(dvdproject.attribute("intro_movie")); + QString intro = dvdproject.attribute("intro_movie"); + if (!intro.isEmpty()) { + m_pageVob->slotAddVobFile(KUrl(intro)); + m_pageVob->setUseIntroMovie(true); + } QDomNodeList vobs = doc.elementsByTagName("vob"); m_pageVob->clear(); diff --git a/src/dvdwizardmenu.cpp b/src/dvdwizardmenu.cpp index ca8af2a8..b922bf9c 100644 --- a/src/dvdwizardmenu.cpp +++ b/src/dvdwizardmenu.cpp @@ -453,8 +453,9 @@ void DvdWizardMenu::buildImage() } else if (m_view.background_list->currentIndex() == 2) { // video background m_movieLength = -1; - Mlt::Profile profile; - profile.set_explicit(false); + QString profileName = DvdWizardVob::getDvdProfile(m_format); + Mlt::Profile profile(profileName.toUtf8().constData()); + profile.set_explicit(true); Mlt::Producer *producer = new Mlt::Producer(profile, m_view.background_image->url().path().toUtf8().data()); if (producer && producer->is_valid()) { pix = QPixmap::fromImage(KThumb::getFrame(producer, 0, m_finalSize.width(), m_width, m_height)); diff --git a/src/dvdwizardvob.cpp b/src/dvdwizardvob.cpp index 4f058e2b..dc268ab8 100644 --- a/src/dvdwizardvob.cpp +++ b/src/dvdwizardvob.cpp @@ -69,8 +69,6 @@ DvdWizardVob::DvdWizardVob(QWidget *parent) : m_installCheck(true) { m_view.setupUi(this); - m_view.intro_vob->setEnabled(false); - m_view.intro_vob->setFilter("video/mpeg"); m_view.button_add->setIcon(KIcon("list-add")); m_view.button_delete->setIcon(KIcon("list-remove")); m_view.button_up->setIcon(KIcon("go-up")); @@ -84,8 +82,6 @@ DvdWizardVob::DvdWizardVob(QWidget *parent) : connect(m_vobList, SIGNAL(addClips(QList)), this, SLOT(slotAddVobList(QList))); connect(m_vobList, SIGNAL(addNewClip()), this, SLOT(slotAddVobFile())); - - connect(m_view.use_intro, SIGNAL(toggled(bool)), m_view.intro_vob, SLOT(setEnabled(bool))); connect(m_view.button_add, SIGNAL(clicked()), this, SLOT(slotAddVobFile())); connect(m_view.button_delete, SIGNAL(clicked()), this, SLOT(slotDeleteVobFile())); connect(m_view.button_up, SIGNAL(clicked()), this, SLOT(slotItemUp())); @@ -306,7 +302,12 @@ QStringList DvdWizardVob::selectedUrls() 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->text(0)); } @@ -359,20 +360,18 @@ int DvdWizardVob::duration(int ix) const return result; } - -QString DvdWizardVob::introMovie() const +const QString DvdWizardVob::introMovie() const { - if (!m_view.use_intro->isChecked()) return QString(); - return m_view.intro_vob->url().path(); + QString url; + if (m_view.use_intro->isChecked() && m_vobList->topLevelItemCount() > 0) url = m_vobList->topLevelItem(0)->text(0); + return url; } -void DvdWizardVob::setIntroMovie(const QString& path) +void DvdWizardVob::setUseIntroMovie(bool use) { - m_view.intro_vob->setUrl(KUrl(path)); - m_view.use_intro->setChecked(path.isEmpty() == false); + m_view.use_intro->setChecked(use); } - void DvdWizardVob::slotCheckVobList() { emit completeChanged(); diff --git a/src/dvdwizardvob.h b/src/dvdwizardvob.h index 6f3ad2a4..a33b562c 100644 --- a/src/dvdwizardvob.h +++ b/src/dvdwizardvob.h @@ -107,7 +107,6 @@ public: virtual bool isComplete() const; QStringList selectedUrls() const; void setUrl(const QString &url); - QString introMovie() const; DVDFORMAT dvdFormat() const; const QString dvdProfile() const; int duration(int ix) const; @@ -115,8 +114,9 @@ public: QStringList chapters() const; void setProfile(const QString& profile); void clear(); + const QString introMovie() const; + void setUseIntroMovie(bool use); void updateChapters(QMap chaptersdata); - void setIntroMovie(const QString& path); static QString getDvdProfile(DVDFORMAT format); private: diff --git a/src/widgets/dvdwizardvob_ui.ui b/src/widgets/dvdwizardvob_ui.ui index 804d84a0..9e409b24 100644 --- a/src/widgets/dvdwizardvob_ui.ui +++ b/src/widgets/dvdwizardvob_ui.ui @@ -6,67 +6,43 @@ 0 0 - 404 - 261 + 459 + 240 0 - - - - - - - - 0 - 0 - - - - - 0 - 20 - - - - QFrame::NoFrame - - - QFrame::Raised - - - - - + + - ... + Remove file - - - - - 0 - 0 - - + + - + Use first movie as Intro - + - + + + + DVD format + + + + Qt::Horizontal @@ -79,55 +55,69 @@ - - + + ... - - - - Intro movie - - + + - + Add movie file - - - - ... + + + + + 0 + 0 + - - - - - DVD format + - - + + - + 0 0 + + + 0 + 20 + + + + QFrame::NoFrame + + + QFrame::Raised + - - + + - Remove file + ... + + + + + + + ... @@ -139,11 +129,6 @@ QComboBox
kcombobox.h
- - KUrlRequester - QFrame -
kurlrequester.h
-
-- 2.39.2