The API changed for rotations, requiring another argument for positions.
[contacts_plasmoid.git] / kineticview.cpp
blob9cdfeeb3c188a09e77d563680d3b427951cacb4c
1 #include "kineticview.h"
3 #include <QObject>
4 #include <QDebug>
6 KineticView::KineticView( QGraphicsWidget *parent)
7 : QGraphicsWidget( parent )
9 setFiltersChildEvents ( true );
10 setFlag(QGraphicsItem::ItemIsMovable, true);
11 setFlag(QGraphicsItem::ItemIsSelectable, true);
12 setAcceptedMouseButtons( Qt::LeftButton );
13 setAcceptTouchEvents( true );
15 scroll = new QPropertyAnimation(this, "y");
17 resize(300, 700);
20 KineticView::~KineticView()
22 //for(int i = 0; i < itemList.size(); i++)
23 // delete itemList.at(i);
24 delete scroll;
27 void KineticView::scrollingAnimation(unsigned int duration, qreal startValue, qreal endValue)
29 scroll->setEasingCurve( QEasingCurve::OutQuart );
30 scroll->setDuration( duration*3 );
31 scroll->setStartValue(startValue);
32 scroll->setEndValue(endValue);
33 scroll->start();
36 void KineticView::insertItem( QGraphicsWidget *item)
38 item->setParentItem( this );
39 item->setParentLayoutItem( this );
41 if ( !itemList.empty() ) {
42 QRectF tmpGeometry = itemList.last()->geometry();
43 item->setGeometry( QRectF(tmpGeometry.x(), tmpGeometry.y() + tmpGeometry.height(), item->geometry().width(), item->geometry().height()));
45 itemList.append( item );
47 update();
50 QGraphicsItem *KineticView::itemAt( int i )
52 return itemList.at(i);
55 bool KineticView::event ( QEvent * event )
57 switch( event->type() ) {
58 case QEvent::GraphicsSceneMousePress:
59 KineticScrolling::mousePressEvent(static_cast<QGraphicsSceneMouseEvent*>(event));
60 QGraphicsWidget::mousePressEvent(static_cast<QGraphicsSceneMouseEvent*>(event));
61 break;
62 case QEvent::GraphicsSceneMouseMove:
63 KineticScrolling::mouseMoveEvent(static_cast<QGraphicsSceneMouseEvent*>(event));
64 QGraphicsWidget::mouseMoveEvent(static_cast<QGraphicsSceneMouseEvent*>(event));
65 break;
66 case QEvent::GraphicsSceneMouseRelease:
67 KineticScrolling::mouseReleaseEvent(static_cast<QGraphicsSceneMouseEvent*>(event));
69 if( movement() > 10) {
70 QGraphicsWidget::mouseReleaseEvent(static_cast<QGraphicsSceneMouseEvent*>(event));
71 scrollingAnimation(duration(), geometry().y(), geometry().y() - movement());
73 break;
74 default:
75 break;
78 return true;