diff options
Diffstat (limited to 'src/plugins/qmldesigner/components/curveeditor')
11 files changed, 40 insertions, 65 deletions
diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditor.cpp b/src/plugins/qmldesigner/components/curveeditor/curveeditor.cpp index 29e88e2581..18d838d2ff 100644 --- a/src/plugins/qmldesigner/components/curveeditor/curveeditor.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/curveeditor.cpp @@ -71,10 +71,6 @@ CurveEditor::CurveEditor(CurveEditorModel *model, QWidget *parent) box->addWidget(m_statusLine); setLayout(box); - connect(m_toolbar, &CurveEditorToolBar::defaultClicked, [this]() { - m_view->setDefaultInterpolation(); - }); - connect(m_toolbar, &CurveEditorToolBar::unifyClicked, [this]() { m_view->toggleUnified(); }); @@ -99,6 +95,13 @@ CurveEditor::CurveEditor(CurveEditorModel *model, QWidget *parent) m_view->viewport()->update(); }); + connect(m_toolbar, &CurveEditorToolBar::zoomChanged, [this](double zoom) { + const bool wasBlocked = m_view->blockSignals(true); + m_view->setZoomX(zoom); + m_view->blockSignals(wasBlocked); + m_view->viewport()->update(); + }); + connect( m_view, &GraphicsView::currentFrameChanged, m_toolbar, &CurveEditorToolBar::setCurrentFrame); @@ -110,6 +113,11 @@ CurveEditor::CurveEditor(CurveEditorModel *model, QWidget *parent) m_tree->selectionModel(), &SelectionModel::curvesSelected, m_view, &GraphicsView::updateSelection); + connect(m_view, &GraphicsView::zoomChanged, [this](double x, double y) { + Q_UNUSED(y); + m_toolbar->setZoom(x); + }); + auto updateTimeline = [this, model](bool validTimeline) { if (validTimeline) { updateStatusLine(); diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditortoolbar.cpp b/src/plugins/qmldesigner/components/curveeditor/curveeditortoolbar.cpp index b7bbf37051..bf6fe06e47 100644 --- a/src/plugins/qmldesigner/components/curveeditor/curveeditortoolbar.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/curveeditortoolbar.cpp @@ -67,7 +67,6 @@ CurveEditorToolBar::CurveEditorToolBar(CurveEditorModel *model, QWidget* parent) QAction *tangentSplineAction = addAction( QIcon(":/curveeditor/images/tangetToolsSplineIcon.png"), "Spline"); - QAction *tangentDefaultAction = addAction(tr("Set Default")); QAction *tangentUnifyAction = addAction(tr("Unify")); auto setLinearInterpolation = [this]() { @@ -79,9 +78,6 @@ CurveEditorToolBar::CurveEditorToolBar(CurveEditorModel *model, QWidget* parent) auto setSplineInterpolation = [this]() { emit interpolationClicked(Keyframe::Interpolation::Bezier); }; - auto setDefaultKeyframe = [this]() { - emit defaultClicked(); - }; auto toggleUnifyKeyframe = [this]() { emit unifyClicked(); }; @@ -89,7 +85,6 @@ CurveEditorToolBar::CurveEditorToolBar(CurveEditorModel *model, QWidget* parent) connect(tangentLinearAction, &QAction::triggered, setLinearInterpolation); connect(tangentStepAction, &QAction::triggered, setStepInterpolation); connect(tangentSplineAction, &QAction::triggered, setSplineInterpolation); - connect(tangentDefaultAction, &QAction::triggered, setDefaultKeyframe); connect(tangentUnifyAction, &QAction::triggered, toggleUnifyKeyframe); auto validateStart = [this](int val) -> bool { @@ -100,6 +95,7 @@ CurveEditorToolBar::CurveEditorToolBar(CurveEditorModel *model, QWidget* parent) m_startSpin = new ValidatableSpinBox(validateStart); m_startSpin->setRange(std::numeric_limits<int>::lowest(), std::numeric_limits<int>::max()); m_startSpin->setValue(model->minimumTime()); + m_startSpin->setFixedWidth(70); connect( m_startSpin, QOverload<int>::of(&QSpinBox::valueChanged), @@ -117,6 +113,7 @@ CurveEditorToolBar::CurveEditorToolBar(CurveEditorModel *model, QWidget* parent) m_endSpin = new ValidatableSpinBox(validateEnd); m_endSpin->setRange(std::numeric_limits<int>::lowest(), std::numeric_limits<int>::max()); m_endSpin->setValue(model->maximumTime()); + m_endSpin->setFixedWidth(70); connect( m_endSpin, QOverload<int>::of(&QSpinBox::valueChanged), @@ -128,6 +125,7 @@ CurveEditorToolBar::CurveEditorToolBar(CurveEditorModel *model, QWidget* parent) m_currentSpin->setMinimum(0); m_currentSpin->setMaximum(std::numeric_limits<int>::max()); + m_currentSpin->setFixedWidth(70); connect( m_currentSpin, QOverload<int>::of(&QSpinBox::valueChanged), @@ -150,6 +148,19 @@ CurveEditorToolBar::CurveEditorToolBar(CurveEditorModel *model, QWidget* parent) auto *positionWidget = new QWidget; positionWidget->setLayout(positionBox); addWidget(positionWidget); + + m_zoomSlider = new QSlider(Qt::Horizontal); + m_zoomSlider->setRange(0, 100); + connect(m_zoomSlider, &QSlider::valueChanged, [this](int value) { + emit zoomChanged(static_cast<double>(value)/100.0f); + }); + addWidget(m_zoomSlider); +} + +void CurveEditorToolBar::setZoom(double zoom) +{ + QSignalBlocker blocker(m_zoomSlider); + m_zoomSlider->setValue( static_cast<int>(zoom*100)); } void CurveEditorToolBar::setCurrentFrame(int current, bool notify) diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditortoolbar.h b/src/plugins/qmldesigner/components/curveeditor/curveeditortoolbar.h index 25271245c6..7d3c02adb3 100644 --- a/src/plugins/qmldesigner/components/curveeditor/curveeditortoolbar.h +++ b/src/plugins/qmldesigner/components/curveeditor/curveeditortoolbar.h @@ -26,6 +26,7 @@ #pragma once #include <QSpinBox> +#include <QSlider> #include <QToolBar> #include <QValidator> #include <QWidget> @@ -53,8 +54,6 @@ class CurveEditorToolBar : public QToolBar Q_OBJECT signals: - void defaultClicked(); - void unifyClicked(); void interpolationClicked(Keyframe::Interpolation interpol); @@ -65,9 +64,13 @@ signals: void currentFrameChanged(int current); + void zoomChanged(double zoom); + public: CurveEditorToolBar(CurveEditorModel *model, QWidget* parent = nullptr); + void setZoom(double zoom); + void setCurrentFrame(int current, bool notify); void updateBoundsSilent(int start, int end); @@ -76,6 +79,7 @@ private: ValidatableSpinBox *m_startSpin; ValidatableSpinBox *m_endSpin; QSpinBox *m_currentSpin; + QSlider *m_zoomSlider; }; } // End namespace QmlDesigner. diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.cpp b/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.cpp index 5b05309976..e6c99e7085 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.cpp @@ -458,18 +458,6 @@ void CurveItem::setInterpolation(Keyframe::Interpolation interpolation) emit curveChanged(id(), curve(true)); } -void CurveItem::setDefaultInterpolation() -{ - if (m_keyframes.empty()) - return; - - for (auto *frame : qAsConst(m_keyframes)) { - if (frame->selected()) - frame->setDefaultInterpolation(); - } - emit curveChanged(id(), curve(true)); -} - void CurveItem::toggleUnified() { if (m_keyframes.empty()) diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.h b/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.h index c6bdc6d3d4..0f0d5d5341 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.h +++ b/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.h @@ -125,8 +125,6 @@ public: void setInterpolation(Keyframe::Interpolation interpolation); - void setDefaultInterpolation(); - void toggleUnified(); void connect(GraphicsScene *scene); diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.cpp b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.cpp index 8ab71ace97..d01ffa47c7 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.cpp @@ -336,18 +336,6 @@ void GraphicsView::setInterpolation(Keyframe::Interpolation interpol) viewport()->update(); } -void GraphicsView::setDefaultInterpolation() -{ - const auto selectedCurves = m_scene->selectedCurves(); - for (auto *curve : selectedCurves) - curve->setDefaultInterpolation(); - - m_scene->setDirty(true); - - applyZoom(m_zoomX, m_zoomY); - viewport()->update(); -} - void GraphicsView::toggleUnified() { const auto selectedCurves = m_scene->selectedCurves(); @@ -569,7 +557,10 @@ void GraphicsView::applyZoom(double x, double y, const QPoint &pivot) } m_scene->doNotMoveItems(false); - this->update(); + + viewport()->update(); + + emit zoomChanged(m_zoomX, m_zoomY); } void GraphicsView::drawGrid(QPainter *painter) diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.h b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.h index 917a8e7e2c..27b27a4a36 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.h +++ b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.h @@ -49,6 +49,8 @@ class GraphicsView : public QGraphicsView signals: void currentFrameChanged(int frame, bool notify); + void zoomChanged(double x, double y); + public: GraphicsView(CurveEditorModel *model, QWidget *parent = nullptr); @@ -112,8 +114,6 @@ public: void setInterpolation(Keyframe::Interpolation interpol); - void setDefaultInterpolation(); - void toggleUnified(); protected: diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.cpp b/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.cpp index 0dbb2d125f..171665cf2f 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.cpp @@ -250,18 +250,6 @@ void KeyframeItem::setKeyframe(const Keyframe &keyframe) setPos(m_transform.map(m_frame.position())); } -void KeyframeItem::setDefaultInterpolation() -{ - if (!m_left || !m_right) - return; - - m_frame.setDefaultInterpolation(); - - setKeyframe(m_frame); - - emit redrawCurve(); -} - void KeyframeItem::toggleUnified() { if (!m_left || !m_right) diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.h b/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.h index c7bfa02cd1..7d04bab209 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.h +++ b/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.h @@ -92,8 +92,6 @@ public: void setKeyframe(const Keyframe &keyframe); - void setDefaultInterpolation(); - void toggleUnified(); void setActivated(bool active, HandleItem::Slot slot); diff --git a/src/plugins/qmldesigner/components/curveeditor/keyframe.cpp b/src/plugins/qmldesigner/components/curveeditor/keyframe.cpp index 085c230335..0b97764f9e 100644 --- a/src/plugins/qmldesigner/components/curveeditor/keyframe.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/keyframe.cpp @@ -154,15 +154,6 @@ void Keyframe::setPosition(const QPointF &pos) m_position = pos; } -void Keyframe::setDefaultInterpolation() -{ - auto leftToRight = QLineF(m_leftHandle, m_rightHandle); - leftToRight.translate(m_position - leftToRight.center()); - - m_leftHandle = leftToRight.p1(); - m_rightHandle = leftToRight.p2(); -} - void Keyframe::setUnified(bool unified) { m_unified = unified; diff --git a/src/plugins/qmldesigner/components/curveeditor/keyframe.h b/src/plugins/qmldesigner/components/curveeditor/keyframe.h index 2757d229f5..13656859ec 100644 --- a/src/plugins/qmldesigner/components/curveeditor/keyframe.h +++ b/src/plugins/qmldesigner/components/curveeditor/keyframe.h @@ -68,8 +68,6 @@ public: Interpolation interpolation() const; - void setDefaultInterpolation(); - void setUnified(bool unified); void setPosition(const QPointF &pos); |