{
return dynamic_cast<QGraphicsScene *>(m_mapScene);
}
+
+void MapEngine::setLocation(QPointF sceneCoordinate)
+{
+ emit locationChanged(sceneCoordinate);
+}
*/
void mapImageReceived(const QUrl &url, const QPixmap &pixmap);
+ /**
+ * @brief Slot for setting current view location
+ *
+ * Emits locationChanged signal.
+ * @param sceneCoordinate Scene coordinates for new position
+ */
+ void setLocation(QPointF sceneCoordinate);
+
signals:
/**
+ * @brief Signal for view location change
+ *
+ * @param sceneCoordinate New scene coordinates
+ */
+ void locationChanged(QPointF sceneCoordinate);
+
+ /**
* @brief Signal for zoom level change
*
* @param newZoomLevel New zoom level
emit viewScrolled(m_scenePosition);
- /// @todo REMOVE AFTER UPDATING ENGINE
- centerToSceneCoordinates(m_scenePosition);
-
m_mousePosition = mapToScene(event->pos());
}
{
centerOn(sceneCoordinate);
}
-
-//bool MapView::event(QEvent *event)
-//{
-// qDebug() << __PRETTY_FUNCTION__ << "event type:" << event->type();
-// event->ignore();
-// QObject::event(event);
-// return false;
-//}
/**
* @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.
+ * Does calculate mouse movement delta from last event position and new view center
+ * based on that delta. Saves current event position for next round. Emits viewScrolled
+ * signal and doesn't actually scroll the view.
* @param event Mouse event
*/
void mouseMoveEvent(QMouseEvent *event);
MapViewScreen::MapViewScreen(QWidget *parent)
: QWidget(parent)
{
- QHBoxLayout *mapViewLayout = new QHBoxLayout;
+
MapView *mapView = new MapView(this);
- mapViewLayout->addWidget(mapView);
- setLayout(mapViewLayout);
MapEngine *mapEngine = new MapEngine(this);
mapView->setScene(mapEngine->scene());
+
+ connect(mapView, SIGNAL(viewScrolled(QPointF)), mapEngine, SLOT(setLocation(QPointF)));
+ connect(mapEngine, SIGNAL(locationChanged(QPointF)),
+ mapView, SLOT(centerToSceneCoordinates(QPointF)));
connect(mapEngine, SIGNAL(zoomLevelChanged(int)), mapView, SLOT(setZoomLevel(int)));
+
+ QHBoxLayout *mapViewLayout = new QHBoxLayout;
+ mapViewLayout->addWidget(mapView);
+ setLayout(mapViewLayout);
+
mapEngine->setViewLocation(QPointF(25.5000, 65.0000));
}