From b68973300bf05f75957a39e1e116469988c10a8f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sami=20R=C3=A4m=C3=B6?= Date: Thu, 17 Jun 2010 17:03:05 +0300 Subject: [PATCH] Fixed defects found in the review --- src/map/mapscroller.cpp | 2 +- src/map/mapview.cpp | 23 ++++++++++++----------- src/map/mapview.h | 2 +- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/map/mapscroller.cpp b/src/map/mapscroller.cpp index 65e738e..d7ad402 100644 --- a/src/map/mapscroller.cpp +++ b/src/map/mapscroller.cpp @@ -43,7 +43,7 @@ void MapScroller::updateCurrentValue(const QVariant &value) { qDebug() << __PRETTY_FUNCTION__; - Q_ASSERT(!value.toPoint().isNull()); + Q_ASSERT(value.type() == QVariant::Point); emit coordinateUpdated(value.toPoint()); } diff --git a/src/map/mapview.cpp b/src/map/mapview.cpp index ca24777..6b38ff4 100644 --- a/src/map/mapview.cpp +++ b/src/map/mapview.cpp @@ -33,7 +33,7 @@ const qreal MS_PER_S = 1000; // const values for tuning the kinetic scroll effect -const int KINETIC_MIN_DRAG_LENGTH = 30; +const int KINETIC_MIN_DRAG_LENGTH_VIEW_PIXELS = 30; const int KINETIC_MAX_TIME_FROM_LAST_MOUSE_EVENT_MS = 100; const int KINETIC_SCROLL_TIME_MS = 750; const qreal KINETIC_SPEED_TO_DISTANCE_FACTOR = 0.15 * sqrt(KINETIC_SCROLL_TIME_MS / MS_PER_S); @@ -72,8 +72,8 @@ void MapView::mouseMoveEvent(QMouseEvent *event) m_index = 0; m_dragMovement[m_index] = m_mouseLastViewPosition - event->pos(); - m_dragTime[m_index] = time.elapsed(); - time.start(); + m_dragTime[m_index] = m_time.elapsed(); + m_time.start(); m_index++; emit viewScrolled(m_scenePosition); @@ -86,7 +86,7 @@ void MapView::mousePressEvent(QMouseEvent *event) { qDebug() << __PRETTY_FUNCTION__; - time.start(); + m_time.start(); m_scroller->stop(); @@ -107,7 +107,7 @@ void MapView::mouseReleaseEvent(QMouseEvent *event) { qDebug() << __PRETTY_FUNCTION__; - int elapsed = time.elapsed(); + int elapsed = m_time.elapsed(); QGraphicsView::mouseReleaseEvent(event); @@ -117,21 +117,22 @@ void MapView::mouseReleaseEvent(QMouseEvent *event) int dragLength = 0; int values = 0; for (int i = 0; i < VALUES; i++) { - if (m_dragTime > 0) { + if (m_dragTime[i] > 0) { dragViewSpeed += m_dragMovement[i] / (m_dragTime[i] / MS_PER_S); dragLength += m_dragMovement[i].manhattanLength(); values++; } } - dragViewSpeed /= values; - dragViewSpeed *= KINETIC_SPEED_TO_DISTANCE_FACTOR; - if (dragLength >= KINETIC_MIN_DRAG_LENGTH) { - QPointF dragSceneSpeed = dragViewSpeed * (1 << (MAX_MAP_ZOOM_LEVEL - m_zoomLevel)); + if (dragLength >= KINETIC_MIN_DRAG_LENGTH_VIEW_PIXELS) { + dragViewSpeed /= values; + QPointF effectViewDistance= dragViewSpeed * KINETIC_SPEED_TO_DISTANCE_FACTOR; + QPointF effectSceneDistance = effectViewDistance + * (1 << (MAX_MAP_ZOOM_LEVEL - m_zoomLevel)); m_scroller->setDuration(KINETIC_SCROLL_TIME_MS); m_scroller->setStartValue(m_scenePosition); - m_scroller->setEndValue(m_scenePosition + dragSceneSpeed.toPoint()); + m_scroller->setEndValue(m_scenePosition + effectSceneDistance.toPoint()); m_scroller->start(); } } diff --git a/src/map/mapview.h b/src/map/mapview.h index ac2e207..1322663 100644 --- a/src/map/mapview.h +++ b/src/map/mapview.h @@ -179,7 +179,7 @@ private: QPropertyAnimation *m_zoomAnimation; ///< Zoom animation - QTime time; ///< Elapsed times in mouse events + QTime m_time; ///< Elapsed times in mouse events MapScroller *m_scroller; ///< Kinetic scroller }; -- 1.7.9.5