X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fpositionedit.cpp;h=f96ebae967e4adcd4e12719db462b990a4534ac8;hb=4ae3260592acc87712db77b7d3fe0cc2be7d76bc;hp=a049a2a755a2d140c6fa6cb43ee03280c6e1f1ad;hpb=63433b8ce3e47971403b2dda3185744898555389;p=kdenlive diff --git a/src/positionedit.cpp b/src/positionedit.cpp index a049a2a7..f96ebae9 100644 --- a/src/positionedit.cpp +++ b/src/positionedit.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - geomeytrval.cpp - description + positionedit.cpp - description ------------------- begin : 03 Aug 2008 copyright : (C) 2008 by Marco Gittler @@ -16,56 +16,80 @@ ***************************************************************************/ #include "positionedit.h" +#include "timecodedisplay.h" #include "kdenlivesettings.h" #include -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 +#include +#include + +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"