From fc520c070645e8b296f2104db13362ff8acfb88b Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Sun, 10 Feb 2013 01:52:17 +0100 Subject: [PATCH] Fix DVD chapters broken when using an intro movie, show chapters in monitor ruler --- src/dvdwizardchapters.cpp | 13 +++++++++++++ src/dvdwizardchapters.h | 2 +- src/dvdwizardvob.cpp | 21 ++++++++++++++++++--- src/monitor.cpp | 5 +++++ src/monitor.h | 1 + 5 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/dvdwizardchapters.cpp b/src/dvdwizardchapters.cpp index d95da170..b289445f 100644 --- a/src/dvdwizardchapters.cpp +++ b/src/dvdwizardchapters.cpp @@ -82,6 +82,7 @@ void DvdWizardChapters::slotUpdateChaptersList() } m_view.chapters_list->clear(); m_view.chapters_list->addItems(chaptersString); + updateMonitorMarkers(); //bool modified = m_view.vob_list->itemData(m_view.vob_list->currentIndex(), Qt::UserRole + 2).toInt(); } @@ -110,6 +111,17 @@ void DvdWizardChapters::slotAddChapter() m_view.vob_list->setItemData(m_view.vob_list->currentIndex(), 1, Qt::UserRole + 2); m_view.chapters_list->clear(); m_view.chapters_list->addItems(chaptersString); + updateMonitorMarkers(); +} + +void DvdWizardChapters::updateMonitorMarkers() +{ + QStringList chapters = m_view.vob_list->itemData(m_view.vob_list->currentIndex(), Qt::UserRole + 1).toStringList(); + QList markers; + foreach(const QString &frame, chapters) { + markers << CommentedTime(GenTime(frame.toInt(), m_tc.fps()), QString()); + } + m_monitor->setMarkers(markers); } void DvdWizardChapters::slotRemoveChapter() @@ -130,6 +142,7 @@ void DvdWizardChapters::slotRemoveChapter() } m_view.chapters_list->clear(); m_view.chapters_list->addItems(chaptersString); + updateMonitorMarkers(); } void DvdWizardChapters::slotGoToChapter() diff --git a/src/dvdwizardchapters.h b/src/dvdwizardchapters.h index adc4cc3e..32238426 100644 --- a/src/dvdwizardchapters.h +++ b/src/dvdwizardchapters.h @@ -56,7 +56,7 @@ private: Monitor *m_monitor; MonitorManager *m_manager; Timecode m_tc; - + void updateMonitorMarkers(); private slots: void slotUpdateChaptersList(); diff --git a/src/dvdwizardvob.cpp b/src/dvdwizardvob.cpp index 655d086e..06b9c6dc 100644 --- a/src/dvdwizardvob.cpp +++ b/src/dvdwizardvob.cpp @@ -333,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())); } @@ -345,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()); @@ -357,7 +367,12 @@ QStringList DvdWizardVob::chapters() const void DvdWizardVob::updateChapters(QMap 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))); } diff --git a/src/monitor.cpp b/src/monitor.cpp index 9b118b27..f9855190 100644 --- a/src/monitor.cpp +++ b/src/monitor.cpp @@ -385,6 +385,11 @@ void Monitor::updateMarkers(DocClipBase *source) } } +void Monitor::setMarkers(QList markers) +{ + m_ruler->setMarkers(markers); +} + void Monitor::slotSeekToPreviousSnap() { if (m_currentClip) slotSeek(getSnapForPos(true).frames(m_monitorManager->timecode().fps())); diff --git a/src/monitor.h b/src/monitor.h index d6bc5b60..4f11dc58 100644 --- a/src/monitor.h +++ b/src/monitor.h @@ -86,6 +86,7 @@ public: void checkOverlay(); void updateTimecodeFormat(); void updateMarkers(DocClipBase *source); + void setMarkers(QList markers); MonitorEditWidget *getEffectEdit(); QWidget *container(); void reloadProducer(const QString &id); -- 2.39.2