From 7f741e1076a7639e684200ed8fd6b7dd40b15d35 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Sun, 31 Jan 2010 14:19:09 +0000 Subject: [PATCH] Fix issues with DVD wizard, allow to loop menu movie svn path=/trunk/kdenlive/; revision=4257 --- src/dvdwizard.cpp | 11 +++++-- src/dvdwizardchapters.cpp | 2 +- src/dvdwizardmenu.cpp | 49 ++++++++++++++++++++++------- src/dvdwizardmenu.h | 1 + src/widgets/dvdwizardchapters_ui.ui | 37 +++++++++++++--------- src/widgets/dvdwizardmenu_ui.ui | 11 +++++-- 6 files changed, 79 insertions(+), 32 deletions(-) diff --git a/src/dvdwizard.cpp b/src/dvdwizard.cpp index cbde5f10..ceba71c1 100644 --- a/src/dvdwizard.cpp +++ b/src/dvdwizard.cpp @@ -221,7 +221,7 @@ void DvdWizard::generateDvd() QStringList args; args.append("-profile"); if (m_pageMenu->isPalMenu()) args.append("dv_pal"); - else args.append("dv_ntsc"); + else args.append("dv_ntsc"); args.append(temp4.fileName()); args.append("in=0"); args.append("out=100"); @@ -401,8 +401,15 @@ void DvdWizard::generateDvd() } QDomElement menuvob = dvddoc.createElement("vob"); menuvob.setAttribute("file", m_menuFile.fileName()); - menuvob.setAttribute("pause", "inf"); pgc.appendChild(menuvob); + + if (m_pageMenu->loopMovie()) { + QDomElement menuloop = dvddoc.createElement("post"); + nametext = dvddoc.createTextNode("jump titleset 1 menu;"); + menuloop.appendChild(nametext); + pgc.appendChild(menuloop); + } else menuvob.setAttribute("pause", "inf"); + } QDomElement titles = dvddoc.createElement("titles"); diff --git a/src/dvdwizardchapters.cpp b/src/dvdwizardchapters.cpp index 2b24852c..e0749817 100644 --- a/src/dvdwizardchapters.cpp +++ b/src/dvdwizardchapters.cpp @@ -154,7 +154,7 @@ void DvdWizardChapters::setVobFiles(bool isPal, bool isWide, const QStringList m vbox->addWidget(m_monitor); m_view.monitor_frame->setLayout(vbox); /*updateGeometry(); - adjustSize();*/ + m_view.monitor_frame->adjustSize();*/ } else m_monitor->resetProfile(profile); m_view.vob_list->blockSignals(true); diff --git a/src/dvdwizardmenu.cpp b/src/dvdwizardmenu.cpp index 4a90c50a..93c0a5eb 100644 --- a/src/dvdwizardmenu.cpp +++ b/src/dvdwizardmenu.cpp @@ -21,6 +21,7 @@ #include #include +#include "kthumb.h" DvdWizardMenu::DvdWizardMenu(const QString &profile, QWidget *parent) : QWizardPage(parent), @@ -48,7 +49,6 @@ DvdWizardMenu::DvdWizardMenu(const QString &profile, QWidget *parent) : } else changeProfile(true); - // Create color background m_color = new QGraphicsRectItem(0, 0, m_width, m_height); m_color->setBrush(m_view.background_color->color()); @@ -322,16 +322,21 @@ void DvdWizardMenu::checkBackgroundType(int ix) if (ix == 0) { m_view.background_color->setVisible(true); m_view.background_image->setVisible(false); + m_view.loop_movie->setVisible(false); if (m_background->scene() != 0) m_scene->removeItem(m_background); } else { m_view.background_color->setVisible(false); m_view.background_image->setVisible(true); if (ix == 1) { + m_view.background_image->clear(); m_view.background_image->setFilter("*"); - m_scene->addItem(m_background); + if (m_background->scene() != 0) m_scene->removeItem(m_background); + m_view.loop_movie->setVisible(false); } else { if (m_background->scene() != 0) m_scene->removeItem(m_background); + m_view.background_image->clear(); m_view.background_image->setFilter("video/mpeg"); + m_view.loop_movie->setVisible(true); } } } @@ -349,13 +354,24 @@ void DvdWizardMenu::buildImage() return; } QPixmap pix; - if (!pix.load(m_view.background_image->url().path())) { - if (m_background->scene() != 0) m_scene->removeItem(m_background); - return; + + if (m_view.background_list->currentIndex() == 1) { + // image background + if (!pix.load(m_view.background_image->url().path())) { + if (m_background->scene() != 0) m_scene->removeItem(m_background); + return; + } + pix = pix.scaled(m_width, m_height); + } else if (m_view.background_list->currentIndex() == 2) { + // video background + int w; + if (m_isPal) w = 768; + else w = 640; + pix = KThumb::getImage(m_view.background_image->url(), 0, w, m_height); + pix = pix.scaled(m_width, m_height); } - pix = pix.scaled(m_width, m_height); m_background->setPixmap(pix); - if (m_view.background_list->currentIndex() == 1) m_scene->addItem(m_background); + m_scene->addItem(m_background); } void DvdWizardMenu::checkBackground() @@ -409,13 +425,14 @@ void DvdWizardMenu::createButtonImages(const QString &img1, const QString &img2, { if (m_view.create_menu->isChecked()) { m_scene->clearSelection(); - QImage img(m_width, m_height, QImage::Format_ARGB8555_Premultiplied); - QPainter p(&img); - p.setRenderHints(QPainter::Antialiasing, false); - p.setRenderHints(QPainter::TextAntialiasing, false); + QImage img(m_width, m_height, QImage::Format_ARGB32_Premultiplied); + img.fill(Qt::transparent); if (m_safeRect->scene() != 0) m_scene->removeItem(m_safeRect); if (m_color->scene() != 0) m_scene->removeItem(m_color); if (m_background->scene() != 0) m_scene->removeItem(m_background); + QPainter p(&img); + p.setRenderHints(QPainter::Antialiasing, false); + p.setRenderHints(QPainter::TextAntialiasing, false); m_scene->render(&p, QRectF(0, 0, m_width, m_height)); p.end(); #if QT_VERSION >= 0x040600 @@ -424,6 +441,7 @@ void DvdWizardMenu::createButtonImages(const QString &img1, const QString &img2, img.setNumColors(4); #endif img.save(img1); + /*QImage saved; if (m_view.menu_profile->currentIndex() < 2) saved = img.scaled(720, 576); @@ -432,6 +450,7 @@ void DvdWizardMenu::createButtonImages(const QString &img1, const QString &img2, saved.save(img1);*/ updateColor(m_view.selected_color->color()); + img.fill(Qt::transparent); p.begin(&img); p.setRenderHints(QPainter::Antialiasing, false); p.setRenderHints(QPainter::TextAntialiasing, false); @@ -451,6 +470,7 @@ void DvdWizardMenu::createButtonImages(const QString &img1, const QString &img2, updateColor(m_view.highlighted_color->color()); + img.fill(Qt::transparent); p.begin(&img); p.setRenderHints(QPainter::Antialiasing, false); p.setRenderHints(QPainter::TextAntialiasing, false); @@ -472,7 +492,7 @@ void DvdWizardMenu::createButtonImages(const QString &img1, const QString &img2, m_scene->addItem(m_safeRect); m_scene->addItem(m_color); - if (m_view.background_list->currentIndex() == 1) m_scene->addItem(m_background); + if (m_view.background_list->currentIndex() > 0) m_scene->addItem(m_background); } } @@ -505,6 +525,11 @@ bool DvdWizardMenu::createMenu() const return m_view.create_menu->isChecked(); } +bool DvdWizardMenu::loopMovie() const +{ + return m_view.loop_movie->isChecked(); +} + bool DvdWizardMenu::menuMovie() const { return m_view.background_list->currentIndex() == 2; diff --git a/src/dvdwizardmenu.h b/src/dvdwizardmenu.h index 4e5100fb..6a9d44ca 100644 --- a/src/dvdwizardmenu.h +++ b/src/dvdwizardmenu.h @@ -130,6 +130,7 @@ public: void createButtonImages(const QString &img1, const QString &img2, const QString &img3); void setTargets(QStringList list, QStringList targetlist); QMap buttonsInfo(); + bool loopMovie() const; bool menuMovie() const; QString menuMoviePath() const; bool isPalMenu() const; diff --git a/src/widgets/dvdwizardchapters_ui.ui b/src/widgets/dvdwizardchapters_ui.ui index 030b815c..eeeb2d41 100644 --- a/src/widgets/dvdwizardchapters_ui.ui +++ b/src/widgets/dvdwizardchapters_ui.ui @@ -6,8 +6,8 @@ 0 0 - 398 - 338 + 344 + 369 @@ -21,19 +21,6 @@ - - - - - 0 - 0 - - - - true - - - @@ -63,12 +50,32 @@ + + + 0 + 0 + + QFrame::StyledPanel QFrame::Raised + chapters_list + + + + + + + 0 + 0 + + + + true + diff --git a/src/widgets/dvdwizardmenu_ui.ui b/src/widgets/dvdwizardmenu_ui.ui index a98c48a9..56474eba 100644 --- a/src/widgets/dvdwizardmenu_ui.ui +++ b/src/widgets/dvdwizardmenu_ui.ui @@ -158,7 +158,7 @@ - + @@ -177,12 +177,19 @@ - + + + + + Loop + + + -- 2.39.2