#include "mapscroller.h"
#include "mapview.h"
+const int KINETIC_SCROLL_TIME_MS = 1000;
+
MapView::MapView(QWidget *parent)
: QGraphicsView(parent)
{
m_dragTime[m_index] = time.elapsed();
time.start();
- qWarning() << __PRETTY_FUNCTION__ << m_index << m_dragMovement[m_index].x() << m_dragMovement[m_index].y() << m_dragTime[m_index];
+// qWarning() << __PRETTY_FUNCTION__ << m_index << m_dragMovement[m_index].x() << m_dragMovement[m_index].y() << m_dragTime[m_index];
m_index++;
{
// qWarning() << __PRETTY_FUNCTION__;
+ const qreal MS_PER_S = 1000;
+ const qreal SPEED_TO_DISTANCE_FACTOR = KINETIC_SCROLL_TIME_MS / MS_PER_S * 0.10;
+
QGraphicsView::mouseReleaseEvent(event);
QPointF dragViewSpeed;
+ int values = 0;
for (int i = 0; i < VALUES; i++) {
- dragViewSpeed += m_dragMovement[i] / (m_dragTime[i] / 1000.0);
- qWarning() << __PRETTY_FUNCTION__ << m_dragMovement[i].x() << m_dragMovement[i].y() << m_dragTime[i];
+ if (m_dragTime > 0) {
+ dragViewSpeed += m_dragMovement[i] / (m_dragTime[i] / MS_PER_S);
+ values++;
+ }
+// qWarning() << __PRETTY_FUNCTION__ << m_dragMovement[i].x() << m_dragMovement[i].y() << m_dragTime[i];
}
- dragViewSpeed /= VALUES;
- dragViewSpeed /= 5;
+ dragViewSpeed /= values;
+ dragViewSpeed *= SPEED_TO_DISTANCE_FACTOR;
- qWarning() << __PRETTY_FUNCTION__ << dragViewSpeed.x() << dragViewSpeed.y();
+// qWarning() << __PRETTY_FUNCTION__ << dragViewSpeed.x() << dragViewSpeed.y();
QPointF dragSceneSpeed = dragViewSpeed * (1 << (MAX_MAP_ZOOM_LEVEL - m_zoomLevel));
- m_scroller->setDuration(1000);
+ m_scroller->setDuration(KINETIC_SCROLL_TIME_MS);
m_scroller->setStartValue(m_scenePosition);
m_scroller->setEndValue(m_scenePosition + dragSceneSpeed.toPoint());
m_scroller->start();