aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.h')
-rw-r--r--src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.h98
1 files changed, 64 insertions, 34 deletions
diff --git a/src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.h b/src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.h
index 4e33ce362e..7413cb1dbb 100644
--- a/src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.h
+++ b/src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.h
@@ -36,6 +36,7 @@
QT_FORWARD_DECLARE_CLASS(QGraphicsLinearLayout)
QT_FORWARD_DECLARE_CLASS(QComboBox)
+QT_FORWARD_DECLARE_CLASS(QWidget)
namespace QmlDesigner {
@@ -51,15 +52,66 @@ class TimelinePlaceholder;
class TimelineGraphicsLayout;
class TimelineToolBar;
-class TimelineGraphicsScene : public QGraphicsScene
+class AbstractScrollGraphicsScene : public QGraphicsScene
{
Q_OBJECT
+public:
+ AbstractScrollGraphicsScene(QWidget *parent);
+ ;
+
+ int scrollOffset() const;
+ void setScrollOffset(int offset);
+ static int getScrollOffset(QGraphicsScene *scene);
+
+ QRectF selectionBounds() const;
+
+ void selectKeyframes(const SelectionMode &mode, const QList<TimelineKeyframeItem *> &items);
+ virtual void clearSelection();
+ QList<TimelineKeyframeItem *> selectedKeyframes() const;
+ bool hasSelection() const;
+ bool isCurrent(TimelineKeyframeItem *keyframe) const;
+ bool isKeyframeSelected(TimelineKeyframeItem *keyframe) const;
+ bool multipleKeyframesSelected() const;
+
+ virtual qreal rulerScaling() const = 0;
+ virtual int rulerWidth() const = 0;
+ virtual qreal rulerDuration() const = 0;
+
+ virtual AbstractView *abstractView() const = 0;
+
+ virtual void setCurrentFrame(int) {}
+
+ virtual qreal startFrame() const = 0;
+ virtual qreal endFrame() const = 0;
+
+ virtual void invalidateScrollbar() = 0;
+
+ virtual qreal snap(qreal frame, bool snapToPlayhead = true)
+ {
+ Q_UNUSED(snapToPlayhead);
+ return frame;
+ }
+
+ QGraphicsView *graphicsView() const;
+ QGraphicsView *rulerView() const;
+
signals:
+ void statusBarMessageChanged(const QString &message);
void selectionChanged();
-
void scroll(const TimelineUtils::Side &side);
+private:
+ void emitScrollOffsetChanged();
+
+ int m_scrollOffset = 0;
+ QList<TimelineKeyframeItem *> m_selectedKeyframes;
+};
+
+class TimelineGraphicsScene : public AbstractScrollGraphicsScene
+{
+ Q_OBJECT
+
public:
explicit TimelineGraphicsScene(TimelineWidget *parent);
@@ -74,7 +126,7 @@ public:
void invalidateLayout();
qreal setCurrenFrame(const QmlTimeline &timeline, qreal frame);
- void setCurrentFrame(int frame);
+ void setCurrentFrame(int frame) override;
void setStartFrame(int frame);
void setEndFrame(int frame);
@@ -82,11 +134,12 @@ public:
TimelineWidget *timelineWidget() const;
TimelineToolBar *toolBar() const;
- qreal rulerScaling() const;
- int rulerWidth() const;
- qreal rulerDuration() const;
- qreal startFrame() const;
- qreal endFrame() const;
+ qreal rulerScaling() const override;
+ int rulerWidth() const override;
+ qreal rulerDuration() const override;
+
+ qreal startFrame() const override;
+ qreal endFrame() const override;
void updateKeyframePositionsCache();
@@ -97,39 +150,22 @@ public:
QVector<qreal> keyframePositions() const;
QVector<qreal> keyframePositions(const QmlTimelineKeyframeGroup &frames) const;
- qreal snap(qreal frame, bool snapToPlayhead = true);
+ qreal snap(qreal frame, bool snapToPlayhead = true) override;
void setRulerScaling(int scaling);
void commitCurrentFrame(qreal frame);
- QList<TimelineKeyframeItem *> selectedKeyframes() const;
-
- bool hasSelection() const;
- bool isCurrent(TimelineKeyframeItem *keyframe) const;
- bool isKeyframeSelected(TimelineKeyframeItem *keyframe) const;
- bool multipleKeyframesSelected() const;
-
void invalidateSectionForTarget(const ModelNode &modelNode);
void invalidateKeyframesForTarget(const ModelNode &modelNode);
void invalidateScene();
- void invalidateScrollbar();
+ void invalidateScrollbar() override;
void invalidateCurrentValues();
void invalidateRecordButtonsStatus();
- int scrollOffset() const;
- void setScrollOffset(int offset);
- QGraphicsView *graphicsView() const;
- QGraphicsView *rulerView() const;
-
QmlTimeline currentTimeline() const;
- QRectF selectionBounds() const;
-
- void selectKeyframes(const SelectionMode &mode, const QList<TimelineKeyframeItem *> &items);
- void clearSelection();
-
void handleKeyframeDeletion();
void deleteAllKeyframesForTarget(const ModelNode &targetNode);
void insertAllKeyframesForTarget(const ModelNode &targetNode);
@@ -143,8 +179,7 @@ public:
void activateLayout();
-signals:
- void statusBarMessageChanged(const QString &message);
+ AbstractView *abstractView() const override;
protected:
bool event(QEvent *event) override;
@@ -163,7 +198,6 @@ private:
void invalidateSections();
ModelNode timelineModelNode() const;
- void emitScrollOffsetChanged();
void emitStatusBarPlayheadFrameChanged(int frame);
QList<QGraphicsItem *> itemsAt(const QPointF &pos);
@@ -178,12 +212,8 @@ private:
TimelineToolDelegate m_tools;
- QList<TimelineKeyframeItem *> m_selectedKeyframes;
-
// sorted, unique cache of keyframes positions, used for snapping
QVector<qreal> m_keyframePositionsCache;
-
- int m_scrollOffset = 0;
};
} // namespace QmlDesigner