1 #include "kineticview.h"
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");
20 KineticView::~KineticView()
22 //for(int i = 0; i < itemList.size(); i++)
23 // delete itemList.at(i);
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
);
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
);
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
));
62 case QEvent::GraphicsSceneMouseMove
:
63 KineticScrolling::mouseMoveEvent(static_cast<QGraphicsSceneMouseEvent
*>(event
));
64 QGraphicsWidget::mouseMoveEvent(static_cast<QGraphicsSceneMouseEvent
*>(event
));
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());