]> git.sesse.net Git - kdenlive/blobdiff - src/positionedit.cpp
Integrate with the required MLT hooks for getting Movit to work.
[kdenlive] / src / positionedit.cpp
index 44d800f05f60711702a8e94439793c2f3c0da37a..f96ebae967e4adcd4e12719db462b990a4534ac8 100644 (file)
  ***************************************************************************/
 
 #include "positionedit.h"
+#include "timecodedisplay.h"
 #include "kdenlivesettings.h"
 
 #include <KDebug>
 
 #include <QLabel>
 #include <QSlider>
+#include <QHBoxLayout>
 
-PositionEdit::PositionEdit(const QString name, int pos, int min, int max, const Timecode tc, QWidget* parent) :
-        QWidget(parent)
+PositionEdit::PositionEdit(const QString &name, int pos, int min, int max, const Timecode&tc, QWidget* parent) :
+    QWidget(parent)
 {
-    QVBoxLayout *l = new QVBoxLayout;
-    QLabel *lab = new QLabel(name);
-    l->addWidget(lab);
+    QHBoxLayout *layout = new QHBoxLayout(this);
+
+    QLabel *label = new QLabel(name, this);
 
-    QHBoxLayout *l2 = new QHBoxLayout;
-    m_display = new TimecodeDisplay(tc);
     m_slider = new QSlider(Qt::Horizontal);
     m_slider->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred));
+    m_slider->setRange(min, max);
+
+    m_display = new TimecodeDisplay(tc, this);
     m_display->setSizePolicy(QSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred));
-    l2->addWidget(m_display);
-    l2->addWidget(m_slider);
     m_display->setRange(min, max);
-    m_slider->setRange(min, max);
+
+    layout->addWidget(label);
+    layout->addWidget(m_slider);
+    layout->addWidget(m_display);
+
     connect(m_slider, SIGNAL(valueChanged(int)), m_display, SLOT(setValue(int)));
-    connect(m_slider, SIGNAL(valueChanged(int)), this, SIGNAL(parameterChanged()));
-    connect(m_display, SIGNAL(editingFinished()), this, SLOT(slotUpdatePosition()));
+    connect(m_slider, SIGNAL(valueChanged(int)), this, SIGNAL(parameterChanged(int)));
+    connect(m_display, SIGNAL(timeCodeEditingFinished()), this, SLOT(slotUpdatePosition()));
     m_slider->setValue(pos);
-    l->addLayout(l2);
-    setLayout(l);
 }
 
 PositionEdit::~PositionEdit()
@@ -68,15 +71,25 @@ int PositionEdit::getPosition() const
 void PositionEdit::setPosition(int pos)
 {
     m_slider->setValue(pos);
-    m_display->setValue(pos);
 }
 
-
 void PositionEdit::slotUpdatePosition()
 {
     m_slider->blockSignals(true);
     m_slider->setValue(m_display->getValue());
     m_slider->blockSignals(false);
-    emit parameterChanged();
+    emit parameterChanged(m_display->getValue());
+}
+
+void PositionEdit::setRange(int min, int max, bool absolute)
+{
+    if (absolute) {
+        m_slider->setRange(min, max);
+        m_display->setRange(min, max);
+    } else {
+        m_slider->setRange(0, max - min);
+        m_display->setRange(0, max - min);
+    }
 }
 
+#include "positionedit.moc"