X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fmap%2Fmapview.cpp;h=37f8b81ebaa4ac5c7675c104ed0f06a8013c2188;hb=bc4bf2aeb597f39955ed8cbe3a3fdcd5914d7ec8;hp=47770c1605c58523e300e4571f0a9a3092c30666;hpb=7f56952ff1b2e9539bfabf0708d809dd3187b8dc;p=situare diff --git a/src/map/mapview.cpp b/src/map/mapview.cpp index 47770c1..37f8b81 100644 --- a/src/map/mapview.cpp +++ b/src/map/mapview.cpp @@ -3,6 +3,7 @@ Copyright (C) 2010 Ixonos Plc. Authors: Sami Rämö - sami.ramo@ixonos.com + Pekka Nissinen - pekka.nissinen@ixonos.com Situare is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License @@ -30,71 +31,78 @@ MapView::MapView(QWidget *parent) : QGraphicsView(parent) { + qDebug() << __PRETTY_FUNCTION__; + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); m_zoomAnimation = new QPropertyAnimation(this, "viewScale", this); - connect(m_zoomAnimation, SIGNAL(finished()), this, SIGNAL(viewZoomFinished())); -} - -void MapView::setZoomLevel(int zoomLevel) -{ - m_zoomAnimation->stop(); - m_zoomAnimation->setDuration(ZOOM_TIME); - m_zoomAnimation->setStartValue(viewScale()); - m_zoomAnimation->setEndValue(pow(2, zoomLevel - MAX_MAP_ZOOM_LEVEL)); - - m_zoomAnimation->start(); + connect(m_zoomAnimation, SIGNAL(finished()), + this, SIGNAL(viewZoomFinished())); } -qreal MapView::currentScale() -{ - QTransform currentTransform = transform(); - return currentTransform.m11(); -} - -qreal MapView::viewScale() +void MapView::centerToSceneCoordinates(QPoint sceneCoordinate) { - QTransform currentTransform = transform(); - return currentTransform.m11(); -} + qDebug() << __PRETTY_FUNCTION__ << "sceneCoordinate" << sceneCoordinate; -void MapView::setViewScale(qreal viewScale) -{ - QTransform transform; - transform.scale(viewScale, viewScale); - setTransform(transform); - emit viewContentChanged(mapToScene(viewport()->x(), viewport()->y()).toPoint()); + centerOn(sceneCoordinate); } void MapView::mouseMoveEvent(QMouseEvent *event) { m_scenePosition += m_mousePosition - mapToScene(event->pos()).toPoint(); - emit viewScrolled(m_scenePosition); qDebug() << __PRETTY_FUNCTION__ << "m_scenePosition:" << m_scenePosition; + emit viewScrolled(m_scenePosition); + m_mousePosition = mapToScene(event->pos()).toPoint(); - emit viewContentChanged(mapToScene(viewport()->x(), viewport()->y()).toPoint()); } void MapView::mousePressEvent(QMouseEvent *event) { - QGraphicsView::mousePressEvent(event); + qDebug() << __PRETTY_FUNCTION__; + + QGraphicsView::mousePressEvent(event); // Temporary solution m_mousePosition = mapToScene(event->pos()).toPoint(); m_scenePosition = mapToScene(width() / 2 - 1, height() / 2 - 1).toPoint(); } -void MapView::centerToSceneCoordinates(QPoint sceneCoordinate) +void MapView::resizeEvent(QResizeEvent *event) { - qDebug() << __PRETTY_FUNCTION__ << "sceneCoordinate" << sceneCoordinate; - centerOn(sceneCoordinate); + qDebug() << __PRETTY_FUNCTION__ << "Resize:" << event->size(); + + emit viewResized(event->size()); + emit viewResizedNewSize(viewport()->width(), viewport()->height()); } -void MapView::resizeEvent(QResizeEvent *event) +void MapView::setViewScale(qreal viewScale) { - qDebug() << __PRETTY_FUNCTION__ << event->size(); - emit viewResized(event->size()); - emit viewContentChanged(mapToScene(viewport()->x(), viewport()->y()).toPoint()); + qDebug() << __PRETTY_FUNCTION__; + + QTransform transform; + transform.scale(viewScale, viewScale); + setTransform(transform); +} + +void MapView::setZoomLevel(int zoomLevel) +{ + qDebug() << __PRETTY_FUNCTION__; + + if (m_zoomAnimation) { + m_zoomAnimation->stop(); + m_zoomAnimation->setDuration(ZOOM_TIME); + m_zoomAnimation->setStartValue(viewScale()); + m_zoomAnimation->setEndValue(pow(2, zoomLevel - MAX_MAP_ZOOM_LEVEL)); + + m_zoomAnimation->start(); + } +} + +qreal MapView::viewScale() +{ + qDebug() << __PRETTY_FUNCTION__; + + return transform().m11(); }