ginebra2/KineticHelper.cpp
changeset 6 1c3b8676e58c
parent 5 0f2326c2a325
equal deleted inserted replaced
5:0f2326c2a325 6:1c3b8676e58c
    58     m_kineticSteps = 0;
    58     m_kineticSteps = 0;
    59     m_kineticScrollTime = 0.0;
    59     m_kineticScrollTime = 0.0;
    60     m_kineticTimer->start(m_kineticTimeout);
    60     m_kineticTimer->start(m_kineticTimeout);
    61     m_actualTime = QTime::currentTime();
    61     m_actualTime = QTime::currentTime();
    62     m_actualTime.start();
    62     m_actualTime.start();
    63     qDebug() << "starting kinetic timer at " << m_initialPos << ", at " << m_actualTime;
       
    64 }
    63 }
    65 
    64 
    66 
    65 
    67 void KineticHelper::kineticScroll()
    66 void KineticHelper::kineticScroll()
    68 {
    67 {
    75     qreal vy = 0;
    74     qreal vy = 0;
    76 
    75 
    77     int t = m_actualTime.elapsed();
    76     int t = m_actualTime.elapsed();
    78     m_kineticScrollTime += (((qreal)t) / 1000);
    77     m_kineticScrollTime += (((qreal)t) / 1000);
    79 
    78 
    80     qDebug() << "kineticScroll(): elapsed: " << t << ", m_kineticSteps: " << m_kineticSteps <<
       
    81                 ", m_kineticScrollTime: " << m_kineticScrollTime <<
       
    82                 ", decelX: "<< decelX << ", decelY: " << decelY << ", m_initialSpeed: " << m_initialSpeed;
       
    83     if (m_initialSpeed.x()) {
    79     if (m_initialSpeed.x()) {
    84         vx = m_initialSpeed.x() + decelX * m_kineticScrollTime;
    80         vx = m_initialSpeed.x() + decelX * m_kineticScrollTime;
    85         qDebug() << "vx: " << vx;
       
    86         if (vx * m_initialSpeed.x() < 0) {
    81         if (vx * m_initialSpeed.x() < 0) {
    87             dx = 0;
    82             dx = 0;
    88             vx = 0;
    83             vx = 0;
    89         }
    84         }
    90         else {
    85         else {
    93         }
    88         }
    94     }
    89     }
    95 
    90 
    96     if (m_initialSpeed.y()) {
    91     if (m_initialSpeed.y()) {
    97         vy = m_initialSpeed.y() + decelY * m_kineticScrollTime;
    92         vy = m_initialSpeed.y() + decelY * m_kineticScrollTime;
    98         qDebug() << "vy: " << vy;
       
    99         if (vy * m_initialSpeed.y() < 0) {
    93         if (vy * m_initialSpeed.y() < 0) {
   100             dy = 0;
    94             dy = 0;
   101             vy = 0;
    95             vy = 0;
   102         }
    96         }
   103         else {
    97         else {
   108 
   102 
   109     QPoint scrollPos = m_scrollable->getScrollPosition();
   103     QPoint scrollPos = m_scrollable->getScrollPosition();
   110     QPoint distPos = m_initialPos + QPointF(dx, dy).toPoint();
   104     QPoint distPos = m_initialPos + QPointF(dx, dy).toPoint();
   111 
   105 
   112     if (vx != 0 || vy != 0) {
   106     if (vx != 0 || vy != 0) {
   113         qDebug() << "kineticScroll(): scroll from " << scrollPos << " to " << distPos;
       
   114         m_scrollable->scrollTo(distPos);
   107         m_scrollable->scrollTo(distPos);
   115     }
   108     }
   116 
   109 
   117     if ((vx == 0 && vy == 0) || scrollPos == m_scrollable->getScrollPosition()) {
   110     if ((vx == 0 && vy == 0) || scrollPos == m_scrollable->getScrollPosition()) {
   118         qDebug() << "kineticScroll(): stopping timer";
       
   119         stopScrolling();
   111         stopScrolling();
   120     }
   112     }
   121 }
   113 }
   122 
   114 
   123 void KineticHelper::stopScrolling()
   115 void KineticHelper::stopScrolling()