From: Jean-Baptiste Mardelle Date: Mon, 22 Jun 2009 15:33:08 +0000 (+0000) Subject: Some progress on keyframe editor X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=30b2729b394642d0baa071f55452ef074c4408a5;p=kdenlive Some progress on keyframe editor svn path=/trunk/kdenlive/; revision=3621 --- diff --git a/src/effectstackedit.cpp b/src/effectstackedit.cpp index 8216c599..9295d825 100644 --- a/src/effectstackedit.cpp +++ b/src/effectstackedit.cpp @@ -82,6 +82,7 @@ EffectStackEdit::EffectStackEdit(QWidget *parent) : QWidget *wid = new QWidget(parent); area->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); area->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); + area->setFrameStyle(QFrame::NoFrame); wid->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum)); area->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::MinimumExpanding)); @@ -237,12 +238,13 @@ void EffectStackEdit::transferParamDesc(const QDomElement& d, int in, int out) m_items.append(geo); } else if (type == "keyframe") { // keyframe editor widget - KeyframeEdit *geo = new KeyframeEdit(100, KdenliveSettings::project_fps(), 0, 100); - //connect(geo, SIGNAL(parameterChanged()), this, SLOT(collectAllParameters())); + KeyframeEdit *geo = new KeyframeEdit(m_timecode); + connect(geo, SIGNAL(parameterChanged()), this, SLOT(collectAllParameters())); + geo->setupParam(100, pa.attribute("min").toInt(), pa.attribute("max").toInt(), pa.attribute("keyframes")); //connect(geo, SIGNAL(seekToPos(int)), this, SLOT(slotSeekToPos(int))); //geo->setupParam(pa, minFrame, maxFrame); m_vbox->addWidget(geo); - m_valueItems[paramName+"geometry"] = geo; + m_valueItems[paramName+"keyframe"] = geo; m_items.append(geo); } else if (type == "color") { Colorval *cval = new Colorval; diff --git a/src/keyframeedit.cpp b/src/keyframeedit.cpp index 153a190e..26eaf86c 100644 --- a/src/keyframeedit.cpp +++ b/src/keyframeedit.cpp @@ -21,9 +21,9 @@ #include -KeyframeEdit::KeyframeEdit(int maxFrame, double fps, int minValue, int maxValue, QWidget* parent) : +KeyframeEdit::KeyframeEdit(Timecode tc, QWidget* parent) : QWidget(parent), - m_fps(fps) + m_timecode(tc) { m_ui.setupUi(this); m_ui.keyframe_list->setHeaderLabels(QStringList() << i18n("Position") << i18n("Value")); @@ -32,4 +32,17 @@ KeyframeEdit::KeyframeEdit(int maxFrame, double fps, int minValue, int maxValue, setEnabled(false); } +void KeyframeEdit::setupParam(int maxFrame, int minValue, int maxValue, QString keyframes) +{ + m_maxFrame = maxFrame; + m_min = minValue; + m_max = maxValue; + m_ui.keyframe_list->clear(); + QStringList frames = keyframes.split(";"); + for (int i = 0; i < frames.count(); i++) { + QString framePos = m_timecode.getTimecodeFromFrames(frames.at(i).section(':', 0, 0).toInt()); + m_ui.keyframe_list->addTopLevelItem(new QTreeWidgetItem(QStringList() << framePos << frames.at(i).section(':', 1, 1))); + } +} + diff --git a/src/keyframeedit.h b/src/keyframeedit.h index 354184db..de334bc3 100644 --- a/src/keyframeedit.h +++ b/src/keyframeedit.h @@ -33,11 +33,15 @@ class KeyframeEdit : public QWidget { Q_OBJECT public: - explicit KeyframeEdit(int maxFrame, double fps, int minValue, int maxValue, QWidget* parent = 0); + explicit KeyframeEdit(Timecode tc, QWidget* parent = 0); + void setupParam(int maxFrame, int minValue, int maxValue, QString keyframes); private: Ui::KeyframeEditor_UI m_ui; - double m_fps; + Timecode m_timecode; + int m_min; + int m_max; + int m_maxFrame; public slots: