Scrolling is working. Removed kinetic scrolling.
authorSami Rämö <sami.ramo@ixonos.com>
Fri, 9 Apr 2010 10:18:42 +0000 (13:18 +0300)
committerSami Rämö <sami.ramo@ixonos.com>
Fri, 9 Apr 2010 10:18:42 +0000 (13:18 +0300)
doc/map/map_class_diagram.dia
src/map/mapview.cpp
src/map/mapview.h

index 05ffb85..71985e3 100644 (file)
Binary files a/doc/map/map_class_diagram.dia and b/doc/map/map_class_diagram.dia differ
index fb4b0e1..e936417 100644 (file)
@@ -36,8 +36,6 @@ MapView::MapView(QWidget *parent) : QGraphicsView(parent)
     setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
     setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
 
-     startTimer(1000/60);
-
 #ifdef Q_WS_MAEMO_51
     qDebug() << __PRETTY_FUNCTION__ << "QAbstractKineticScroller built in";
 
@@ -59,55 +57,22 @@ void MapView::setZoomLevel(int zoomLevel)
 
 void MapView::mouseMoveEvent(QMouseEvent *event)
 {
-//    qDebug() << __PRETTY_FUNCTION__ << "scene coordinate:" << mapToScene(event->pos());
-//    if (event->buttons() & Qt::LeftButton)
-//    {
-//        QPointF delta = mapToScene(event->pos()) - m_mouseClickLocation;
-//        qDebug() << __PRETTY_FUNCTION__ << "delta:" << delta;
-//
-//        int x = size().width() / 2;
-//        int y = size().height() / 2;
-//        QPointF sceneCoordinate = mapToScene(QPoint(x, y)) + delta;
-//        centerToSceneCoordinates(sceneCoordinate);
-//    }
-    m_scenePosition += m_mousePressPosition - event->pos();
-    centerToSceneCoordinates(m_scenePosition);
+    m_scenePosition += m_mousePosition - mapToScene(event->pos());
 
-    if (m_mouseIsDown)
-        m_mouseSpeed = event->pos() - m_mousePressPosition;
+    emit viewScrolled(m_scenePosition);
 
-    m_mousePressPosition = event->pos();
+    /// @todo REMOVE AFTER UPDATING ENGINE
+    centerToSceneCoordinates(m_scenePosition);
+
+    m_mousePosition = mapToScene(event->pos());
 }
 
 void MapView::mousePressEvent(QMouseEvent *event)
 {
-//    qDebug() << __PRETTY_FUNCTION__ << "scene coordinate:" << mapToScene(event->pos());
-//
-//    if (event->button() == Qt::LeftButton)
-//        m_mouseClickLocation = mapToScene(event->pos());
-    m_mousePressPosition = event->pos();
-    m_mouseIsDown = true;
-    m_mouseSpeed = QPointF(0, 0);
-
+    m_mousePosition = mapToScene(event->pos());
     m_scenePosition = mapToScene(width() / 2 - 1, height() / 2 - 1);
 }
 
-void MapView::mouseReleaseEvent(QMouseEvent *) {
-    m_mouseIsDown = false;
-}
-
-void MapView::timerEvent(QTimerEvent *event) {
-    if (!m_mouseIsDown) {
-        m_mouseSpeed *= 0.97;
-        if (m_mouseSpeed.manhattanLength() < 0.1)
-            m_mouseSpeed = QPointF(0, 0);
-
-//        qDebug() << __PRETTY_FUNCTION__ << "m_mouseSpeed" << m_mouseSpeed;
-
-        m_scenePosition -= m_mouseSpeed;
-        centerToSceneCoordinates(m_scenePosition);
-    }
-}
 
 void MapView::centerToSceneCoordinates(QPointF sceneCoordinate)
 {
index 1725907..c1c79e1 100644 (file)
@@ -40,25 +40,31 @@ public:
     */
     MapView(QWidget *parent = 0);
 
+signals:
+    void viewScrolled(QPointF sceneCoordinate);
+
 public slots:
     void centerToSceneCoordinates(QPointF sceneCoordinate);
 
 private slots:
-//    bool event(QEvent *event);
-
+    /**
+    * @brief Slot for mouse move events
+    *
+    * Does calculate mouse movement delta from last event position and save
+    * current event position for next round. Calls centerToSceneCoordinates
+    * to actually make the dragging.
+    * @param event Mouse event
+    */
     void mouseMoveEvent(QMouseEvent *event);
 
     /**
-    * @brief Slot for mouse events
+    * @brief Slot for mouse press events
     *
+    * Saves inial values for mouse and scene location for dragging view.
     * @param event Mouse event
     */
     void mousePressEvent(QMouseEvent *event);
 
-    void mouseReleaseEvent(QMouseEvent *);
-
-    void timerEvent(QTimerEvent *event);
-
     /**
     * @brief Set zoom level of the view
     *
@@ -67,10 +73,8 @@ private slots:
     void setZoomLevel(int zoomLevel);
 
 private:
-    QPointF m_mousePressPosition;
+    QPointF m_mousePosition;
     QPointF m_scenePosition;
-    QPointF m_mouseSpeed;
-    bool m_mouseIsDown;
 };
 
 #endif // MAPVIEW_H