From d653070a9d380920133b6619a21fa9a2da588c9f Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sat, 9 May 2020 18:53:00 +1000 Subject: [PATCH] slider: reviewed and conformed code --- .../videostreamproperties.cpp | 2 - app/dialog/speedduration/speedduration.cpp | 4 +- app/node/input.cpp | 13 ++++++ app/node/input.h | 2 + .../nodeparamviewwidgetbridge.cpp | 12 +---- app/widget/slider/sliderbase.cpp | 19 ++++---- app/widget/slider/sliderbase.h | 2 +- app/widget/slider/sliderlabel.cpp | 45 +++++++++++-------- app/widget/slider/sliderlabel.h | 4 +- 9 files changed, 59 insertions(+), 44 deletions(-) diff --git a/app/dialog/footageproperties/streamproperties/videostreamproperties.cpp b/app/dialog/footageproperties/streamproperties/videostreamproperties.cpp index 5f63fdfd3..6f565aa33 100644 --- a/app/dialog/footageproperties/streamproperties/videostreamproperties.cpp +++ b/app/dialog/footageproperties/streamproperties/videostreamproperties.cpp @@ -80,7 +80,6 @@ VideoStreamProperties::VideoStreamProperties(ImageStreamPtr stream) : imgseq_start_time_ = new IntegerSlider(); imgseq_start_time_->SetMinimum(0); imgseq_start_time_->SetValue(video_stream->start_time()); - imgseq_start_time_->SetDefaultValue(video_stream->start_time()); imgseq_layout->addWidget(imgseq_start_time_, imgseq_row, 1); imgseq_row++; @@ -90,7 +89,6 @@ VideoStreamProperties::VideoStreamProperties(ImageStreamPtr stream) : imgseq_end_time_ = new IntegerSlider(); imgseq_end_time_->SetMinimum(0); imgseq_end_time_->SetValue(video_stream->start_time() + video_stream->duration() - 1); - imgseq_end_time_->SetDefaultValue(video_stream->start_time() + video_stream->duration() - 1); imgseq_layout->addWidget(imgseq_end_time_, imgseq_row, 1); video_layout->addWidget(imgseq_group, row, 0, 1, 2); diff --git a/app/dialog/speedduration/speedduration.cpp b/app/dialog/speedduration/speedduration.cpp index 02aeefa13..84e1b1875 100644 --- a/app/dialog/speedduration/speedduration.cpp +++ b/app/dialog/speedduration/speedduration.cpp @@ -112,9 +112,11 @@ SpeedDurationDialog::SpeedDurationDialog(const rational& timebase, const QListSetTimebase(timebase_); duration_slider_->SetMinimum(1); - duration_slider_->SetDefaultValue(Timecode::time_to_timestamp(clips_.first()->length(), timebase_)); speed_layout->addWidget(duration_slider_, row, 1); + // Calculate duration that would occur if the speed was 100% + duration_slider_->SetDefaultValue(GetUnadjustedLengthTimestamp(clips_.first())); + if (same_duration) { duration_slider_->SetValue(Timecode::time_to_timestamp(clips_.first()->length(), timebase_)); } else { diff --git a/app/node/input.cpp b/app/node/input.cpp index 17c41c02b..db1bbb5c9 100644 --- a/app/node/input.cpp +++ b/app/node/input.cpp @@ -386,9 +386,22 @@ void NodeInput::GetDependencies(QList &list, bool traverse, bool exclusi QVariant NodeInput::GetDefaultValue() const { + if (default_value_.isEmpty()) { + return QVariant(); + } + return combine_track_values_into_normal_value(default_value_); } +QVariant NodeInput::GetDefaultValueForTrack(int track) const +{ + if (default_value_.isEmpty()) { + return QVariant(); + } + + return default_value_.at(track); +} + QList NodeInput::GetDependencies(bool traverse, bool exclusive_only) const { QList list; diff --git a/app/node/input.h b/app/node/input.h index a8b776261..c9e1b1d8d 100644 --- a/app/node/input.h +++ b/app/node/input.h @@ -279,6 +279,8 @@ public: QVariant GetDefaultValue() const; + QVariant GetDefaultValueForTrack(int track) const; + QList GetDependencies(bool traverse = true, bool exclusive_only = false) const; QList GetExclusiveDependencies() const; diff --git a/app/widget/nodeparamview/nodeparamviewwidgetbridge.cpp b/app/widget/nodeparamview/nodeparamviewwidgetbridge.cpp index e791c66fb..ab1f20b49 100644 --- a/app/widget/nodeparamview/nodeparamviewwidgetbridge.cpp +++ b/app/widget/nodeparamview/nodeparamviewwidgetbridge.cpp @@ -92,11 +92,7 @@ void NodeParamViewWidgetBridge::CreateWidgets() case NodeParam::kInt: { IntegerSlider* slider = new IntegerSlider(); - if (!input_->get_standard_value().isNull()) { - slider->SetDefaultValue(input_->get_standard_value()); - } else { - slider->SetDefaultValue(0); - } + slider->SetDefaultValue(input_->GetDefaultValue()); widgets_.append(slider); connect(slider, &IntegerSlider::ValueChanged, this, &NodeParamViewWidgetBridge::WidgetCallback); break; @@ -369,11 +365,7 @@ void NodeParamViewWidgetBridge::CreateSliders(int count) { for (int i=0;iget_standard_value().isNull()) { - fs->SetDefaultValue(input_->get_split_standard_value().at(i)); - } else { - fs->SetDefaultValue(0.0f); - } + fs->SetDefaultValue(input_->GetDefaultValueForTrack(i)); widgets_.append(fs); connect(fs, &FloatSlider::ValueChanged, this, &NodeParamViewWidgetBridge::WidgetCallback); } diff --git a/app/widget/slider/sliderbase.cpp b/app/widget/slider/sliderbase.cpp index 2b30810ca..5de18603d 100644 --- a/app/widget/slider/sliderbase.cpp +++ b/app/widget/slider/sliderbase.cpp @@ -23,7 +23,6 @@ #include #include #include -#include OLIVE_NAMESPACE_ENTER @@ -46,13 +45,13 @@ SliderBase::SliderBase(Mode mode, QWidget *parent) : editor_ = new FocusableLineEdit(this); addWidget(editor_); - connect(label_, SIGNAL(drag_start()), this, SLOT(LabelPressed())); - connect(label_, SIGNAL(dragged(int)), this, SLOT(LabelDragged(int))); - connect(label_, SIGNAL(drag_stop()), this, SLOT(LabelClicked())); - connect(label_, SIGNAL(focused()), this, SLOT(LabelClicked())); - connect(label_, SIGNAL(ResetResult()), this, SLOT(ValueReset())); - connect(editor_, SIGNAL(Confirmed()), this, SLOT(LineEditConfirmed())); - connect(editor_, SIGNAL(Cancelled()), this, SLOT(LineEditCancelled())); + connect(label_, &SliderLabel::drag_start, this, &SliderBase::LabelPressed); + connect(label_, &SliderLabel::dragged, this, &SliderBase::LabelDragged); + connect(label_, &SliderLabel::drag_stop, this, &SliderBase::LabelClicked); + connect(label_, &SliderLabel::focused, this, &SliderBase::LabelClicked); + connect(label_, &SliderLabel::RequestReset, this, &SliderBase::ResetValue); + connect(editor_, &FocusableLineEdit::Confirmed, this, &SliderBase::LineEditConfirmed); + connect(editor_, &FocusableLineEdit::Cancelled, this, &SliderBase::LineEditCancelled); // Set valid cursor based on mode switch (mode_) { @@ -141,7 +140,7 @@ void SliderBase::SetValue(const QVariant &v) void SliderBase::SetDefaultValue(const QVariant &v) { - default_value_ = ClampValue(v); + default_value_ = v; } void SliderBase::SetMinimumInternal(const QVariant &v) @@ -333,7 +332,7 @@ void SliderBase::LineEditCancelled() label_->blockSignals(false); } -void SliderBase::ValueReset() +void SliderBase::ResetValue() { if (!default_value_.isNull()) { SetValue(default_value_); diff --git a/app/widget/slider/sliderbase.h b/app/widget/slider/sliderbase.h index 4272f111c..316e82f37 100644 --- a/app/widget/slider/sliderbase.h +++ b/app/widget/slider/sliderbase.h @@ -124,7 +124,7 @@ private slots: void LineEditCancelled(); - void ValueReset(); + void ResetValue(); }; OLIVE_NAMESPACE_EXIT diff --git a/app/widget/slider/sliderlabel.cpp b/app/widget/slider/sliderlabel.cpp index 1fde819d6..79f077757 100644 --- a/app/widget/slider/sliderlabel.cpp +++ b/app/widget/slider/sliderlabel.cpp @@ -31,7 +31,8 @@ OLIVE_NAMESPACE_ENTER SliderLabel::SliderLabel(QWidget *parent) : - QLabel(parent) + QLabel(parent), + dragging_(false) { QPalette p = palette(); @@ -53,12 +54,13 @@ SliderLabel::SliderLabel(QWidget *parent) : setFocusPolicy(Qt::TabFocus); } -void SliderLabel::mousePressEvent(QMouseEvent *) +void SliderLabel::mousePressEvent(QMouseEvent *e) { - if (QGuiApplication::keyboardModifiers().testFlag(Qt::AltModifier)) { - emit ResetResult(); - }else { - emit drag_start(); + if (e->modifiers() & Qt::AltModifier) { + + emit RequestReset(); + + } else { #if defined(Q_OS_MAC) CGAssociateMouseAndMouseCursorPosition(false); @@ -69,14 +71,18 @@ void SliderLabel::mousePressEvent(QMouseEvent *) static_cast(QApplication::instance())->setOverrideCursor(Qt::BlankCursor); #endif + + emit drag_start(); + + dragging_ = true; + } } void SliderLabel::mouseMoveEvent(QMouseEvent *) { - if (QGuiApplication::keyboardModifiers().testFlag(Qt::AltModifier)) { - // do nothing - }else { + if (dragging_) { + int32_t x_mvmt, y_mvmt; // Keep cursor in the same position @@ -92,23 +98,26 @@ void SliderLabel::mouseMoveEvent(QMouseEvent *) #endif emit dragged(x_mvmt + y_mvmt); + } } void SliderLabel::mouseReleaseEvent(QMouseEvent *) { - if (QGuiApplication::keyboardModifiers().testFlag(Qt::AltModifier)) { - //do nothing - } else { - // Emit a clicked signal - emit drag_stop(); - } + if (dragging_) { + #if defined(Q_OS_MAC) - CGAssociateMouseAndMouseCursorPosition(true); - CGDisplayShowCursor(kCGDirectMainDisplay); + CGAssociateMouseAndMouseCursorPosition(true); + CGDisplayShowCursor(kCGDirectMainDisplay); #else - static_cast(QApplication::instance())->restoreOverrideCursor(); + static_cast(QApplication::instance())->restoreOverrideCursor(); #endif + + emit drag_stop(); + + dragging_ = false; + + } } void SliderLabel::focusInEvent(QFocusEvent *event) diff --git a/app/widget/slider/sliderlabel.h b/app/widget/slider/sliderlabel.h index cd867692a..641caeac4 100644 --- a/app/widget/slider/sliderlabel.h +++ b/app/widget/slider/sliderlabel.h @@ -51,12 +51,12 @@ signals: void focused(); - void ResetResult(); + void RequestReset(); private: QPoint drag_start_; - bool cancel_mm_event_; + bool dragging_; };