X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fclipdurationdialog.cpp;h=b1a06c65240ebee54837ba02f193965b232b048c;hb=0e9a1f923a067e05ba721722f9417547f9cd76da;hp=3948df27910074a207f0836116cf9dd99bdb9fb5;hpb=86329423d0ea65f95da4d745fd2ac94a416aa27c;p=kdenlive diff --git a/src/clipdurationdialog.cpp b/src/clipdurationdialog.cpp index 3948df27..b1a06c65 100644 --- a/src/clipdurationdialog.cpp +++ b/src/clipdurationdialog.cpp @@ -18,14 +18,20 @@ ***************************************************************************/ -#include - -#include "clipitem.h" #include "clipdurationdialog.h" +#include "clipitem.h" #include "kdenlivesettings.h" + +#include +#include + #include -ClipDurationDialog::ClipDurationDialog(AbstractClipItem *clip, Timecode tc, QWidget * parent): QDialog(parent), m_tc(tc), m_clip(clip) { +ClipDurationDialog::ClipDurationDialog(AbstractClipItem *clip, Timecode tc, QWidget * parent): + QDialog(parent), + m_clip(clip), + m_tc(tc) +{ setFont(KGlobalSettings::toolBarFont()); m_fps = m_tc.fps(); m_view.setupUi(this); @@ -57,110 +63,127 @@ ClipDurationDialog::ClipDurationDialog(AbstractClipItem *clip, Timecode tc, QWid adjustSize(); } -ClipDurationDialog::~ClipDurationDialog() { +ClipDurationDialog::~ClipDurationDialog() +{ } -void ClipDurationDialog::setMargins(GenTime min, GenTime max) { +void ClipDurationDialog::setMargins(GenTime min, GenTime max) +{ m_min = min; m_max = max; connect(m_view.clip_position, SIGNAL(textChanged(const QString &)), this, SLOT(slotCheckStart())); connect(m_view.clip_duration, SIGNAL(textChanged(const QString &)), this, SLOT(slotCheckDuration())); } -void ClipDurationDialog::slotCheckStart() { +void ClipDurationDialog::slotCheckStart() +{ int pos = m_tc.getFrameCount(m_view.clip_position->text(), m_fps); int dur = m_tc.getFrameCount(m_view.clip_duration->text(), m_fps); GenTime start(pos, m_fps); GenTime duration(dur, m_fps); - if (start < m_min) { + if (m_min != GenTime() && start < m_min) { m_view.clip_position->setText(m_tc.getTimecode(m_min, m_fps)); - } else if (start + duration > m_max) { + } else if (m_max != GenTime() && start + duration > m_max) { m_view.clip_position->setText(m_tc.getTimecode(m_max - duration, m_fps)); } } -void ClipDurationDialog::slotCheckDuration() { +void ClipDurationDialog::slotCheckDuration() +{ int pos = m_tc.getFrameCount(m_view.clip_position->text(), m_fps); int dur = m_tc.getFrameCount(m_view.clip_duration->text(), m_fps); GenTime start(pos, m_fps); GenTime duration(dur, m_fps); - GenTime maxDuration = m_max == GenTime() ? start + m_clip->maxDuration() : qMin(m_max, start + m_clip->maxDuration()); - if (start + duration > maxDuration) { + GenTime maxDuration; + if (m_clip->maxDuration() == GenTime()) maxDuration = m_max; + else maxDuration = m_max == GenTime() ? start + m_clip->maxDuration() : qMin(m_max, start + m_clip->maxDuration()); + if (maxDuration != GenTime() && start + duration > maxDuration) { m_view.clip_duration->setText(m_tc.getTimecode(maxDuration - start, m_fps)); } } -void ClipDurationDialog::slotCheckCrop() { +void ClipDurationDialog::slotCheckCrop() +{ int dur = m_tc.getFrameCount(m_view.clip_duration->text(), m_fps); int crop = m_tc.getFrameCount(m_view.crop_position->text(), m_fps); GenTime duration(dur, m_fps); GenTime cropStart(crop, m_fps); GenTime maxDuration = m_clip->maxDuration(); - if (cropStart + duration > maxDuration) { + if (maxDuration != GenTime() && cropStart + duration > maxDuration) { m_view.crop_position->setText(m_tc.getTimecode(maxDuration - duration, m_fps)); } } -void ClipDurationDialog::slotPosUp() { +void ClipDurationDialog::slotPosUp() +{ int position = m_tc.getFrameCount(m_view.clip_position->text(), m_fps); //if (duration >= m_clip->duration().frames(m_fps)) return; position ++; m_view.clip_position->setText(m_tc.getTimecode(GenTime(position, m_fps), m_fps)); } -void ClipDurationDialog::slotPosDown() { +void ClipDurationDialog::slotPosDown() +{ int position = m_tc.getFrameCount(m_view.clip_position->text(), m_fps); //if (duration >= m_clip->duration().frames(m_fps)) return; position --; m_view.clip_position->setText(m_tc.getTimecode(GenTime(position, m_fps), m_fps)); } -void ClipDurationDialog::slotDurUp() { +void ClipDurationDialog::slotDurUp() +{ int duration = m_tc.getFrameCount(m_view.clip_duration->text(), m_fps); int crop = m_tc.getFrameCount(m_view.crop_position->text(), m_fps); - if (duration + crop > m_clip->maxDuration().frames(m_fps)) return; + if (m_clip->maxDuration() != GenTime() && duration + crop > m_clip->maxDuration().frames(m_fps)) return; duration ++; m_view.clip_duration->setText(m_tc.getTimecode(GenTime(duration, m_fps), m_fps)); } -void ClipDurationDialog::slotDurDown() { +void ClipDurationDialog::slotDurDown() +{ int duration = m_tc.getFrameCount(m_view.clip_duration->text(), m_fps); if (duration <= 0) return; duration --; m_view.clip_duration->setText(m_tc.getTimecode(GenTime(duration, m_fps), m_fps)); } -void ClipDurationDialog::slotCropUp() { +void ClipDurationDialog::slotCropUp() +{ int crop = m_tc.getFrameCount(m_view.crop_position->text(), m_fps); int duration = m_tc.getFrameCount(m_view.clip_duration->text(), m_fps); - if (duration + crop > m_clip->maxDuration().frames(m_fps)) return; + if (m_clip->maxDuration() != GenTime() && duration + crop > m_clip->maxDuration().frames(m_fps)) return; crop ++; m_view.crop_position->setText(m_tc.getTimecode(GenTime(crop, m_fps), m_fps)); } -void ClipDurationDialog::slotCropDown() { +void ClipDurationDialog::slotCropDown() +{ int crop = m_tc.getFrameCount(m_view.crop_position->text(), m_fps); if (crop <= 0) return; crop --; m_view.crop_position->setText(m_tc.getTimecode(GenTime(crop, m_fps), m_fps)); } -GenTime ClipDurationDialog::startPos() const { +GenTime ClipDurationDialog::startPos() const +{ int pos = m_tc.getFrameCount(m_view.clip_position->text(), m_fps); return GenTime(pos, m_fps); } -GenTime ClipDurationDialog::cropStart() const { +GenTime ClipDurationDialog::cropStart() const +{ int pos = m_tc.getFrameCount(m_view.crop_position->text(), m_fps); return GenTime(pos, m_fps); } -GenTime ClipDurationDialog::duration() const { +GenTime ClipDurationDialog::duration() const +{ int pos = m_tc.getFrameCount(m_view.clip_duration->text(), m_fps); return GenTime(pos, m_fps); } -void ClipDurationDialog::wheelEvent(QWheelEvent * event) { +void ClipDurationDialog::wheelEvent(QWheelEvent * event) +{ if (m_view.clip_position->underMouse()) { if (event->delta() > 0) slotPosUp();