Fixed a jump in the map when moving from dragging to kinetic effect
[situare] / src / map / mapscroller.cpp
index 8e04137..ff18a11 100644 (file)
 
 #include "mapscroller.h"
 
+/////////////////////////////////////////////////////////////////////////////
 // scene coordinate interpolator function is not part of this class namespace
+/////////////////////////////////////////////////////////////////////////////
 QVariant sceneCoordinateInterpolator(const SceneCoordinate &start,
                                      const SceneCoordinate &end,
                                      qreal progress);
 
+MapScroller::MapScroller()
+    : m_isKineticScroll(false)
+{
+    qDebug() << __PRETTY_FUNCTION__;
+}
+
 MapScroller& MapScroller::getInstance()
 {
     qDebug() << __PRETTY_FUNCTION__;
@@ -41,18 +49,34 @@ MapScroller& MapScroller::getInstance()
     return instance;
 }
 
+void MapScroller::setKineticScrollFlag(bool isKineticScroll)
+{
+    qDebug() << __PRETTY_FUNCTION__;
+
+    m_isKineticScroll = isKineticScroll;
+}
+
 void MapScroller::updateCurrentValue(const QVariant &value)
 {
     qDebug() << __PRETTY_FUNCTION__;
 
     if ((state() == QAbstractAnimation::Running) && (value.canConvert<SceneCoordinate>()))
-        emit coordinateUpdated(value.value<SceneCoordinate>());
+        emit coordinateUpdated(value.value<SceneCoordinate>(), m_isKineticScroll);
+    else
+        m_isKineticScroll = false;
+
+    // NOTE: m_isKineticScroll is cleared when new animation values are set, because this method is
+    //       called then and state() is QAbstractAnimation::Stopped
 }
 
+/////////////////////////////////////////////////////////////////////////////
 // scene coordinate interpolator function is not part of this class namespace
+/////////////////////////////////////////////////////////////////////////////
 QVariant sceneCoordinateInterpolator(const SceneCoordinate &start,
                                                   const SceneCoordinate &end,
                                                   qreal progress)
 {
+    qDebug() << __PRETTY_FUNCTION__;
+
     return SceneCoordinate(start + progress * (end - start));
 }