Fixed map jumping when starting a drag
authorSami Rämö <sami.ramo@ixonos.com>
Mon, 23 Aug 2010 10:15:33 +0000 (13:15 +0300)
committerSami Rämö <sami.ramo@ixonos.com>
Mon, 23 Aug 2010 10:15:33 +0000 (13:15 +0300)
src/engine/engine.cpp
src/map/mapengine.cpp
src/map/mapengine.h
src/map/mapview.cpp
src/map/mapview.h
src/ui/mainwindow.cpp
src/ui/mainwindow.h

index f764b48..7c2c77c 100644 (file)
@@ -625,8 +625,8 @@ void SituareEngine::signalsFromMainWindow()
             m_facebookAuthenticator, SLOT(updateCredentials(QUrl)));
 
     // signals from map view
-    connect(m_ui, SIGNAL(mapViewScrolled(SceneCoordinate)),
-            m_mapEngine, SLOT(setCenterPosition(SceneCoordinate)));
+    connect(m_ui, SIGNAL(mapViewScrolled(SceneCoordinate, bool)),
+            m_mapEngine, SLOT(setCenterPosition(SceneCoordinate, bool)));
 
     connect(m_ui, SIGNAL(mapViewResized(QSize)),
             m_mapEngine, SLOT(viewResized(QSize)));
@@ -692,8 +692,8 @@ void SituareEngine::signalsFromMapEngine()
     connect(m_mapEngine, SIGNAL(error(int, int)),
             this, SLOT(error(int, int)));
 
-    connect(m_mapEngine, SIGNAL(locationChanged(SceneCoordinate)),
-            m_ui, SIGNAL(centerToSceneCoordinates(SceneCoordinate)));
+    connect(m_mapEngine, SIGNAL(locationChanged(SceneCoordinate, bool)),
+            m_ui, SIGNAL(centerToSceneCoordinates(SceneCoordinate, bool)));
 
     connect(m_mapEngine, SIGNAL(zoomLevelChanged(int)),
             m_ui, SIGNAL(zoomLevelChanged(int)));
index 8c2a706..a5c3d0b 100644 (file)
@@ -423,7 +423,7 @@ void MapEngine::setAutoCentering(bool enabled)
         updateDirectionIndicator();
 }
 
-void MapEngine::setCenterPosition(SceneCoordinate coordinate)
+void MapEngine::setCenterPosition(SceneCoordinate coordinate, bool isUserDragAction)
 {
     qDebug() << __PRETTY_FUNCTION__;
 
@@ -439,7 +439,7 @@ void MapEngine::setCenterPosition(SceneCoordinate coordinate)
         disableAutoCenteringIfRequired(coordinate);
 
     m_sceneCoordinate = coordinate;
-    emit locationChanged(m_sceneCoordinate);
+    emit locationChanged(m_sceneCoordinate, isUserDragAction);
 
     if (isCenterTileChanged(coordinate)) {
         getTiles(coordinate);
@@ -566,7 +566,7 @@ void MapEngine::viewResized(const QSize &size)
     m_viewSize = size;
     setTilesGridSize(m_viewSize);
 
-    emit locationChanged(m_sceneCoordinate);
+    emit locationChanged(m_sceneCoordinate, false);
     getTiles(m_sceneCoordinate);
     m_mapScene->removeOutOfViewTiles(m_viewTilesGrid, m_zoomLevel);
     m_mapScene->setSceneVerticalOverlap(m_viewSize.height(), m_zoomLevel);
index 07db7b9..74bd5e7 100644 (file)
@@ -322,7 +322,7 @@ private slots:
      * Does emit locationChanged signal.
      * @param coordinate Scene coordinates for new position
      */
-    void setCenterPosition(SceneCoordinate coordinate);
+    void setCenterPosition(SceneCoordinate coordinate, bool isUserDragAction = false);
 
     /**
      * @brief Builds and sets route, also centers it
@@ -407,7 +407,7 @@ signals:
      *
      * @param coordinate New scene coordinates
      */
-    void locationChanged(SceneCoordinate coordinate);
+    void locationChanged(SceneCoordinate coordinate, bool isUserDragAction);
 
     /**
      * @brief Signal is emitted when location item is clicked.
index e059a8e..8cdcf29 100644 (file)
@@ -67,13 +67,13 @@ MapView::MapView(QWidget *parent)
             this, SLOT(doubleTapZoomFinished()));
 }
 
-void MapView::centerToSceneCoordinates(const SceneCoordinate &coordinate, bool isUserAction)
+void MapView::centerToSceneCoordinates(const SceneCoordinate &coordinate, bool isUserDragAction)
 {
     qDebug() << __PRETTY_FUNCTION__ << "coordinate" << coordinate;
 
     QPointF target = coordinate.toPointF();
 
-    if (!isUserAction) {
+    if (!isUserDragAction) {
         target += m_centerHorizontalShift;
     }
 
@@ -151,7 +151,7 @@ void MapView::mouseMoveEvent(QMouseEvent *event)
     m_time.start();
     m_index++;
 
-    emit viewScrolled(SceneCoordinate(m_scenePosition.x(), m_scenePosition.y()));
+    emit viewScrolled(SceneCoordinate(m_scenePosition.x(), m_scenePosition.y()), true);
 
     m_mouseLastScenePosition = mapToScene(event->pos()).toPoint();
     m_mouseLastViewPosition = event->pos();
index ac6797f..37fb7c7 100644 (file)
@@ -134,7 +134,7 @@ public slots:
     *
     * @param coordinate Scene coordinates of the new center point
     */
-    void centerToSceneCoordinates(const SceneCoordinate &coordinate, bool isUserAction = false);
+    void centerToSceneCoordinates(const SceneCoordinate &coordinate, bool isUserDragAction = false);
 
     /**
     * @brief Set zoom level of the view
@@ -190,7 +190,7 @@ signals:
     * Signal is emitted when view is scrolled.
     * @param coordinate Scene coordinates of the new center point of the view
     */
-    void viewScrolled(const SceneCoordinate &coordinate);
+    void viewScrolled(const SceneCoordinate &coordinate, bool isUserDragAction);
 
     /**
     * @brief Signal for informing that zooming animation is finished
index 59a9282..c9e32e0 100644 (file)
@@ -258,11 +258,11 @@ void MainWindow::buildMap()
     buildIndicatorButtonPanel();
     buildMapScale();
 
-    connect(m_mapView, SIGNAL(viewScrolled(SceneCoordinate)),
-            this, SIGNAL(mapViewScrolled(SceneCoordinate)));
+    connect(m_mapView, SIGNAL(viewScrolled(SceneCoordinate, bool)),
+            this, SIGNAL(mapViewScrolled(SceneCoordinate, bool)));
 
-    connect(this, SIGNAL(centerToSceneCoordinates(SceneCoordinate)),
-            m_mapView, SLOT(centerToSceneCoordinates(SceneCoordinate)));
+    connect(this, SIGNAL(centerToSceneCoordinates(SceneCoordinate, bool)),
+            m_mapView, SLOT(centerToSceneCoordinates(SceneCoordinate, bool)));
 
     connect(m_mapView, SIGNAL(viewResized(QSize)),
             this, SIGNAL(mapViewResized(QSize)));
index 6d7d554..5d8a5b9 100644 (file)
@@ -441,7 +441,7 @@ signals:
      *
      * @param coordinate Scene coordinates of the new center point
      */
-    void centerToSceneCoordinates(const SceneCoordinate &coordinate);
+    void centerToSceneCoordinates(const SceneCoordinate &coordinate, bool isUserDragAction);
 
     /**
     * @brief Signal when direction and distance from current map center point to current GPS
@@ -536,7 +536,7 @@ signals:
      *
      * @param coordinate
      */
-    void mapViewScrolled(const SceneCoordinate &coordinate);
+    void mapViewScrolled(const SceneCoordinate &coordinate, bool isUserDragAction);
 
     /**
      * @brief Forwarding signal from MapEngine to MapView