setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
- startTimer(1000/60);
-
#ifdef Q_WS_MAEMO_51
qDebug() << __PRETTY_FUNCTION__ << "QAbstractKineticScroller built in";
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)
{
*/
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
*
void setZoomLevel(int zoomLevel);
private:
- QPointF m_mousePressPosition;
+ QPointF m_mousePosition;
QPointF m_scenePosition;
- QPointF m_mouseSpeed;
- bool m_mouseIsDown;
};
#endif // MAPVIEW_H