***************************************************************************/
#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()
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->value());
+ 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"