X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmarkerdialog.cpp;h=fd1abcefd35a32388a3a53c43f04c84d9fca9834;hb=f4462e7ecb75f64e524746e3bb7c62a5e973d965;hp=87e3f43ae03e00327eae103bf7138afdd43e4ce6;hpb=405ebfa31dec2209eca7031b7ee781f5ca7be10d;p=kdenlive diff --git a/src/markerdialog.cpp b/src/markerdialog.cpp index 87e3f43a..fd1abcef 100644 --- a/src/markerdialog.cpp +++ b/src/markerdialog.cpp @@ -26,16 +26,24 @@ #include -MarkerDialog::MarkerDialog(DocClipBase *clip, CommentedTime t, Timecode tc, const QString &caption, QWidget * parent) : - QDialog(parent), - m_producer(NULL), - m_profile(NULL), - m_clip(clip) +MarkerDialog::MarkerDialog(DocClipBase *clip, const CommentedTime &t, const Timecode &tc, const QString &caption, QWidget * parent) + : QDialog(parent) + , m_producer(NULL) + , m_profile(NULL) + , m_clip(clip) + , m_dar(4.0 / 3.0) { setFont(KGlobalSettings::toolBarFont()); setupUi(this); setWindowTitle(caption); + // Set up categories + for (int i = 0; i < 5; ++i) { + marker_type->insertItem(i, i18n("Category %1", i)); + marker_type->setItemData(i, CommentedTime::markerColor(i), Qt::DecorationRole); + } + marker_type->setCurrentIndex(t.markerType()); + m_in = new TimecodeDisplay(tc, this); inputLayout->addWidget(m_in); m_in->setValue(t.time()); @@ -57,10 +65,11 @@ MarkerDialog::MarkerDialog(DocClipBase *clip, CommentedTime t, Timecode tc, cons //char *tmp = doc.toString().toUtf8().data(); m_producer = new Mlt::Producer(*m_profile, "xml-string", doc.toString().toUtf8().data()); //delete[] tmp; - int width = 100.0 * m_dar; + int width = Kdenlive::DefaultThumbHeight * m_dar; if (width % 2 == 1) width++; QPixmap p(width, 100); QString colour = clip->getProperty("colour"); + int swidth = (int) (Kdenlive::DefaultThumbHeight * m_profile->width() / m_profile->height() + 0.5); switch (m_clip->clipType()) { case VIDEO: @@ -68,14 +77,17 @@ MarkerDialog::MarkerDialog(DocClipBase *clip, CommentedTime t, Timecode tc, cons case SLIDESHOW: case PLAYLIST: connect(this, SIGNAL(updateThumb()), m_previewTimer, SLOT(start())); + break; case IMAGE: case TEXT: - p = QPixmap::fromImage(KThumb::getFrame(m_producer, m_in->getValue(), width, 100)); + m_image = KThumb::getFrame(m_producer, m_in->getValue(), swidth, width, Kdenlive::DefaultThumbHeight); + p = QPixmap::fromImage(m_image); break; case COLOR: colour = colour.replace(0, 2, "#"); p.fill(QColor(colour.left(7))); break; + //UNKNOWN, AUDIO, VIRTUAL: default: p.fill(Qt::black); } @@ -85,9 +97,11 @@ MarkerDialog::MarkerDialog(DocClipBase *clip, CommentedTime t, Timecode tc, cons clip_thumb->setFixedHeight(p.height()); clip_thumb->setPixmap(p); } - connect(m_in, SIGNAL(editingFinished()), this, SIGNAL(updateThumb())); + connect(m_in, SIGNAL(timeCodeEditingFinished()), this, SIGNAL(updateThumb())); } else { clip_thumb->setHidden(true); + label_category->setHidden(true); + marker_type->setHidden(true); } marker_comment->setText(t.comment()); @@ -109,17 +123,27 @@ void MarkerDialog::slotUpdateThumb() m_previewTimer->stop(); int pos = m_in->getValue(); int width = 100.0 * m_dar; - if (width % 2 == 1) width++; - QPixmap p = QPixmap::fromImage(KThumb::getFrame(m_producer, pos, width, 100)); + int swidth = (int) (100.0 * m_profile->width() / m_profile->height() + 0.5); + if (width % 2 == 1) + width++; + + m_image = KThumb::getFrame(m_producer, pos, swidth, width, 100); + const QPixmap p = QPixmap::fromImage(m_image); if (!p.isNull()) clip_thumb->setPixmap(p); else kDebug() << "!!!!!!!!!!! ERROR CREATING THUMB"; } +QImage MarkerDialog::markerImage() const +{ + return m_image; +} + CommentedTime MarkerDialog::newMarker() { - return CommentedTime(m_in->gentime(), marker_comment->text()); + KdenliveSettings::setDefault_marker_type(marker_type->currentIndex()); + return CommentedTime(m_in->gentime(), marker_comment->text(), marker_type->currentIndex()); } #include "markerdialog.moc"