diff options
Diffstat (limited to 'src/plugins/qmldesigner/components/timelineeditor/timelineitem.cpp')
-rw-r--r-- | src/plugins/qmldesigner/components/timelineeditor/timelineitem.cpp | 42 |
1 files changed, 23 insertions, 19 deletions
diff --git a/src/plugins/qmldesigner/components/timelineeditor/timelineitem.cpp b/src/plugins/qmldesigner/components/timelineeditor/timelineitem.cpp index 3b7f8a2fe0..6d7fb55262 100644 --- a/src/plugins/qmldesigner/components/timelineeditor/timelineitem.cpp +++ b/src/plugins/qmldesigner/components/timelineeditor/timelineitem.cpp @@ -52,8 +52,7 @@ TimelineItem::TimelineItem(TimelineItem *parent) TimelineGraphicsScene *TimelineItem::timelineScene() const { - return static_cast<TimelineGraphicsScene *>(scene()); - ; + return qobject_cast<TimelineGraphicsScene *>(scene()); } TimelineFrameHandle::TimelineFrameHandle(TimelineItem *parent) @@ -93,7 +92,7 @@ void TimelineFrameHandle::setPosition(qreal frame) void TimelineFrameHandle::setPositionInteractive(const QPointF &position) { - const double width = timelineScene()->width(); + const double width = abstractScrollGraphicsScene()->width(); if (position.x() > width) { callSetClampedXPosition(width - (rect().width() / 2) - 1); @@ -104,7 +103,7 @@ void TimelineFrameHandle::setPositionInteractive(const QPointF &position) } else { callSetClampedXPosition(position.x() - rect().width() / 2); const qreal frame = std::round(mapFromSceneToFrame(rect().center().x())); - timelineScene()->commitCurrentFrame(frame); + timelineGraphicsScene()->commitCurrentFrame(frame); } } @@ -128,6 +127,11 @@ TimelineFrameHandle *TimelineFrameHandle::asTimelineFrameHandle() return this; } +TimelineGraphicsScene *TimelineFrameHandle::timelineGraphicsScene() const +{ + return qobject_cast<TimelineGraphicsScene* >(abstractScrollGraphicsScene()); +} + void TimelineFrameHandle::scrollOffsetChanged() { setPosition(position()); @@ -182,7 +186,7 @@ void TimelineFrameHandle::paint(QPainter *painter, QPointF TimelineFrameHandle::mapFromGlobal(const QPoint &pos) const { - for (auto *view : timelineScene()->views()) { + for (auto *view : abstractScrollGraphicsScene()->views()) { if (view->objectName() == "SceneView") { auto graphicsViewCoords = view->mapFromGlobal(pos); auto sceneCoords = view->mapToScene(graphicsViewCoords); @@ -195,7 +199,7 @@ QPointF TimelineFrameHandle::mapFromGlobal(const QPoint &pos) const int TimelineFrameHandle::computeScrollSpeed() const { const double mouse = mapFromGlobal(QCursor::pos()).x(); - const double width = timelineScene()->width(); + const double width = abstractScrollGraphicsScene()->width(); const double acc = mouse > width ? mouse - width : double(TimelineConstants::sectionWidth) - mouse; @@ -216,7 +220,7 @@ void TimelineFrameHandle::callSetClampedXPosition(double x) const int minimumWidth = TimelineConstants::sectionWidth + TimelineConstants::timelineLeftOffset - rect().width() / 2; const int maximumWidth = minimumWidth - + timelineScene()->rulerDuration() * timelineScene()->rulerScaling() + + abstractScrollGraphicsScene()->rulerDuration() * abstractScrollGraphicsScene()->rulerScaling() - scrollOffset(); setClampedXPosition(x, minimumWidth, maximumWidth); @@ -225,7 +229,7 @@ void TimelineFrameHandle::callSetClampedXPosition(double x) // Auto scroll when dragging playhead out of bounds. void TimelineFrameHandle::scrollOutOfBounds() { - const double width = timelineScene()->width(); + const double width = abstractScrollGraphicsScene()->width(); const double mouse = mapFromGlobal(QCursor::pos()).x(); if (mouse > width) @@ -236,14 +240,14 @@ void TimelineFrameHandle::scrollOutOfBounds() void TimelineFrameHandle::scrollOutOfBoundsMax() { - const double width = timelineScene()->width(); + const double width = abstractScrollGraphicsScene()->width(); if (QApplication::mouseButtons() == Qt::LeftButton) { - const double frameWidth = timelineScene()->rulerScaling(); + const double frameWidth = abstractScrollGraphicsScene()->rulerScaling(); const double upperThreshold = width - frameWidth; if (rect().center().x() > upperThreshold) { - timelineScene()->setScrollOffset(computeScrollSpeed()); - timelineScene()->invalidateScrollbar(); + abstractScrollGraphicsScene()->setScrollOffset(computeScrollSpeed()); + abstractScrollGraphicsScene()->invalidateScrollbar(); } callSetClampedXPosition(width - (rect().width() / 2) - 1); @@ -253,8 +257,8 @@ void TimelineFrameHandle::scrollOutOfBoundsMax() callSetClampedXPosition(width - (rect().width() / 2) - 1); const int frame = std::floor(mapFromSceneToFrame(rect().center().x())); - const int ef = timelineScene()->endFrame(); - timelineScene()->commitCurrentFrame(frame <= ef ? frame : ef); + const int ef = abstractScrollGraphicsScene()->endFrame(); + timelineGraphicsScene()->commitCurrentFrame(frame <= ef ? frame : ef); } } @@ -264,11 +268,11 @@ void TimelineFrameHandle::scrollOutOfBoundsMin() auto offset = computeScrollSpeed(); if (offset >= 0) - timelineScene()->setScrollOffset(offset); + abstractScrollGraphicsScene()->setScrollOffset(offset); else - timelineScene()->setScrollOffset(0); + abstractScrollGraphicsScene()->setScrollOffset(0); - timelineScene()->invalidateScrollbar(); + abstractScrollGraphicsScene()->invalidateScrollbar(); callSetClampedXPosition(TimelineConstants::sectionWidth); m_timer.start(); @@ -278,7 +282,7 @@ void TimelineFrameHandle::scrollOutOfBoundsMin() int frame = mapFromSceneToFrame(rect().center().x()); - const int sframe = timelineScene()->startFrame(); + const int sframe = abstractScrollGraphicsScene()->startFrame(); if (frame != sframe) { const qreal framePos = mapFromFrameToScene(frame); @@ -287,7 +291,7 @@ void TimelineFrameHandle::scrollOutOfBoundsMin() frame++; } - timelineScene()->commitCurrentFrame(frame >= sframe ? frame : sframe); + timelineGraphicsScene()->commitCurrentFrame(frame >= sframe ? frame : sframe); } } |