X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fmap%2Fmapview.cpp;h=5019e22f25ce5f55ae3ddc9e6e2b50ab71436d7f;hb=a14de86b57ba6854a9b2578e98636344eea85e4c;hp=50cc57d64b6d5f9085d18dd339c31b5cd851a37c;hpb=e5462734243a9d9dffce58bbbe1d4e1f72fb977f;p=situare diff --git a/src/map/mapview.cpp b/src/map/mapview.cpp index 50cc57d..5019e22 100644 --- a/src/map/mapview.cpp +++ b/src/map/mapview.cpp @@ -19,13 +19,13 @@ USA. */ -#include +#include #include #include -#ifdef Q_WS_MAEMO_51 - #include +#ifndef Q_WS_MAEMO_5 + #include #endif // Q_WS_MAEMO_5 #include "common.h" @@ -33,28 +33,55 @@ MapView::MapView(QWidget *parent) : QGraphicsView(parent) { +#ifndef Q_WS_MAEMO_5 + // use opengl for desktop to gain some performance in map view + // opengl can't be used in scrathbox + setViewport(new QGLWidget); +#endif // Q_WS_MAEMO_5 + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); +} -#ifdef Q_WS_MAEMO_51 - qDebug() << __PRETTY_FUNCTION__ << "QAbstractKineticScroller built in"; - - QAbstractKineticScroller *scroller = this->property("kineticScroller") - .value(); +void MapView::setZoomLevel(int zoomLevel) +{ + m_zoomTargetScale = pow(2, zoomLevel - MAX_ZOOM_LEVEL); + m_zoomScaleDelta = (m_zoomTargetScale - currentScale()) / (ZOOM_FPS * ZOOM_TIME); - if (scroller) - scroller->setEnabled(true); -#endif // Q_WS_MAEMO_5 + startTimer(1000/ZOOM_FPS); } -void MapView::setZoomLevel(int zoomLevel) +void MapView::timerEvent(QTimerEvent *event) { - double scaleFactor = pow(2, zoomLevel - MAX_ZOOM_LEVEL); + qreal scaleFactor = currentScale(); + +// qDebug() << __PRETTY_FUNCTION__ +// << "abs(m_zoomTargetScale - scaleFactor)" << fabs(m_zoomTargetScale - scaleFactor) +// << "abs(m_zoomScaleDelta)" << fabs(m_zoomScaleDelta); + + if (fabs(m_zoomTargetScale - scaleFactor) <= fabs(m_zoomScaleDelta)) { + scaleFactor = m_zoomTargetScale; + killTimer(event->timerId()); + } + else { + scaleFactor += m_zoomScaleDelta; + } + +// qDebug() << __PRETTY_FUNCTION__ << "currentScale:" << currentScale() +// << "m_zoomScaleDelta" << m_zoomScaleDelta +// << "scaleFactor:" << scaleFactor; + QTransform transform; transform.scale(scaleFactor, scaleFactor); setTransform(transform); } +qreal MapView::currentScale() +{ + QTransform currentTransform = transform(); + return currentTransform.m11(); +} + void MapView::mouseMoveEvent(QMouseEvent *event) { m_scenePosition += m_mousePosition - mapToScene(event->pos()); @@ -77,3 +104,9 @@ void MapView::centerToSceneCoordinates(QPointF sceneCoordinate) //qDebug() << __PRETTY_FUNCTION__ << "sceneCoordinate" << sceneCoordinate; centerOn(sceneCoordinate); } + +void MapView::resizeEvent(QResizeEvent *event) +{ + qDebug() << "Resize event: " << event->size(); + emit viewResized(event->size()); +}