X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fmap%2Fmapview.cpp;h=5019e22f25ce5f55ae3ddc9e6e2b50ab71436d7f;hb=a14de86b57ba6854a9b2578e98636344eea85e4c;hp=e93641707657de9a540d8d4e49de42dd61cbf6af;hpb=f3b3c7444e236b2635d666494dcae9312aca4a08;p=situare diff --git a/src/map/mapview.cpp b/src/map/mapview.cpp index e936417..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,36 +33,61 @@ 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()); emit viewScrolled(m_scenePosition); - - /// @todo REMOVE AFTER UPDATING ENGINE - centerToSceneCoordinates(m_scenePosition); + //qDebug() << __PRETTY_FUNCTION__ << "m_scenePosition" << m_scenePosition; m_mousePosition = mapToScene(event->pos()); } @@ -76,13 +101,12 @@ void MapView::mousePressEvent(QMouseEvent *event) void MapView::centerToSceneCoordinates(QPointF sceneCoordinate) { + //qDebug() << __PRETTY_FUNCTION__ << "sceneCoordinate" << sceneCoordinate; centerOn(sceneCoordinate); } -//bool MapView::event(QEvent *event) -//{ -// qDebug() << __PRETTY_FUNCTION__ << "event type:" << event->type(); -// event->ignore(); -// QObject::event(event); -// return false; -//} +void MapView::resizeEvent(QResizeEvent *event) +{ + qDebug() << "Resize event: " << event->size(); + emit viewResized(event->size()); +}