X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmap%2Fmapview.cpp;h=56307da6a50a1d38c72a1f2575fd9952226a82d2;hb=9afe79f4c3302e7d7dcdff346bf197a62c3ef98e;hp=ccf2d5442694b4ef811180f530f6d6f1f6a65e60;hpb=738293824dc353388fa667f26010188fce257b3b;p=situare diff --git a/src/map/mapview.cpp b/src/map/mapview.cpp index ccf2d54..56307da 100644 --- a/src/map/mapview.cpp +++ b/src/map/mapview.cpp @@ -81,6 +81,11 @@ MapView::~MapView() delete m_scrollAndZoomAnimation; } +QPointF MapView::center() +{ + return mapToScene(m_viewCenterPoint) - m_centerHorizontalShiftPoint; +} + void MapView::centerToSceneCoordinates(const SceneCoordinate &coordinate, bool isUserDragAction) { qDebug() << __PRETTY_FUNCTION__ << "coordinate" << coordinate; @@ -88,7 +93,7 @@ void MapView::centerToSceneCoordinates(const SceneCoordinate &coordinate, bool i QPointF target = coordinate.toPointF(); m_lastSetScenePosition = coordinate; - if (!isUserDragAction) +// if (!isUserDragAction) target += m_centerHorizontalShiftPoint; centerOn(target); @@ -166,8 +171,9 @@ void MapView::mouseMoveEvent(QMouseEvent *event) m_time.start(); m_index++; - emit viewScrolled(SceneCoordinate(m_internalScenePosition.x(), m_internalScenePosition.y()), - true); + QPointF viewCenterPoint = m_internalScenePosition - m_centerHorizontalShiftPoint; + + emit viewScrolled(SceneCoordinate(viewCenterPoint.x(), viewCenterPoint.y()), true); m_lastMouseEventScenePosition = mapToScene(event->pos()).toPoint(); m_lastMouseEventViewPosition = event->pos(); @@ -235,9 +241,9 @@ void MapView::mouseReleaseEvent(QMouseEvent *event) m_scroller->setEasingCurve(QEasingCurve::OutCirc); m_scroller->setDuration(KINETIC_SCROLL_TIME_MS); - m_scroller->setStartValue(SceneCoordinate(m_internalScenePosition.x(), - m_internalScenePosition.y())); - QPointF endValue = QPointF(m_internalScenePosition) + effectSceneDistance; + QPointF centerPoint = center(); + m_scroller->setStartValue(SceneCoordinate(centerPoint.x(), centerPoint.y())); + QPointF endValue = centerPoint + effectSceneDistance; m_scroller->setEndValue(SceneCoordinate(endValue.x(), endValue.y())); m_scroller->setKineticScrollFlag(true); m_scroller->start(); @@ -251,12 +257,14 @@ void MapView::resizeEvent(QResizeEvent *event) m_kineticMaxViewDistance = qMax(width(), height()) * KINETIC_MAX_VIEW_DISTANCE_FACTOR; + m_viewCenterPoint.setX(event->size().width() / 2); + m_viewCenterPoint.setY(event->size().height() / 2); + emit viewResized(event->size()); if (m_centerShiftAnimation) { int mapVisibleWidth = event->size().width() - PANEL_WIDTH - PANEL_BAR_WIDTH; - int mapViewMiddle = event->size().width() / 2; - int shiftFromMiddle = mapViewMiddle - (mapVisibleWidth / 2); + int shiftFromMiddle = m_viewCenterPoint.x() - (mapVisibleWidth / 2); m_centerShiftAnimation->setEndValue(shiftFromMiddle); updateCenterShift(); }