]> git.sesse.net Git - kdenlive/blobdiff - src/positionedit.cpp
Fix indent
[kdenlive] / src / positionedit.cpp
index a049a2a755a2d140c6fa6cb43ee03280c6e1f1ad..f96ebae967e4adcd4e12719db462b990a4534ac8 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
-                          geomeytrval.cpp  -  description
+                          positionedit.cpp  -  description
                              -------------------
     begin                : 03 Aug 2008
     copyright            : (C) 2008 by Marco Gittler
  ***************************************************************************/
 
 #include "positionedit.h"
+#include "timecodedisplay.h"
 #include "kdenlivesettings.h"
 
 #include <KDebug>
 
-PositionEdit::PositionEdit(const QString name, int pos, int min, int max, const Timecode tc, QWidget* parent) :
-        QWidget(parent),
-        m_tc(tc),
-        m_frameDisplay(KdenliveSettings::frametimecode())
+#include <QLabel>
+#include <QSlider>
+#include <QHBoxLayout>
+
+PositionEdit::PositionEdit(const QString &name, int pos, int min, int max, const Timecode&tc, QWidget* parent) :
+    QWidget(parent)
 {
-    m_ui.setupUi(this);
-    m_ui.label->setText(name);
-    m_ui.horizontalSlider->setRange(min, max);
-    connect(m_ui.horizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(slotUpdateTimecode()));
-    connect(m_ui.krestrictedline, SIGNAL(editingFinished()), this, SLOT(slotUpdatePosition()));
-    m_ui.horizontalSlider->setValue(pos);
-    if (m_frameDisplay) {
-        QValidator *valid = new QIntValidator(this);
-        m_ui.krestrictedline->setInputMask("");
-        m_ui.krestrictedline->setValidator(valid);
-    }
-    m_ui.krestrictedline->setText(m_tc.getDisplayTimecodeFromFrames(pos, m_frameDisplay));
+    QHBoxLayout *layout = new QHBoxLayout(this);
+
+    QLabel *label = new QLabel(name, this);
+
+    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));
+    m_display->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(int)));
+    connect(m_display, SIGNAL(timeCodeEditingFinished()), this, SLOT(slotUpdatePosition()));
+    m_slider->setValue(pos);
+}
+
+PositionEdit::~PositionEdit()
+{
+    m_display->blockSignals(true);
+    m_slider->blockSignals(true);
+    delete m_slider;
+    delete m_display;
+}
+
+void PositionEdit::updateTimecodeFormat()
+{
+    m_display->slotUpdateTimeCodeFormat();
 }
 
 int PositionEdit::getPosition() const
 {
-    return m_ui.horizontalSlider->value();
+    return m_slider->value();
 }
 
 void PositionEdit::setPosition(int pos)
 {
-    m_ui.horizontalSlider->setValue(pos);
-    m_ui.krestrictedline->setText(m_tc.getDisplayTimecodeFromFrames(pos, m_frameDisplay));
+    m_slider->setValue(pos);
 }
 
-void PositionEdit::slotUpdateTimecode()
+void PositionEdit::slotUpdatePosition()
 {
-    m_ui.krestrictedline->setText(m_tc.getDisplayTimecodeFromFrames(m_ui.horizontalSlider->value(), m_frameDisplay));
-    emit parameterChanged();
+    m_slider->blockSignals(true);
+    m_slider->setValue(m_display->getValue());
+    m_slider->blockSignals(false);
+    emit parameterChanged(m_display->getValue());
 }
 
-void PositionEdit::slotUpdatePosition()
+void PositionEdit::setRange(int min, int max, bool absolute)
 {
-    m_ui.horizontalSlider->blockSignals(true);
-    int pos = m_tc.getDisplayFrameCount(m_ui.krestrictedline->text(), m_frameDisplay);
-    m_ui.horizontalSlider->setValue(pos);
-    if (pos != m_ui.horizontalSlider->value()) {
-        // Value out of range
-        m_ui.krestrictedline->setText(m_tc.getDisplayTimecodeFromFrames(m_ui.horizontalSlider->value(), m_frameDisplay));
+    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);
     }
-    m_ui.horizontalSlider->blockSignals(false);
-    emit parameterChanged();
 }
 
+#include "positionedit.moc"