The API changed for rotations, requiring another argument for positions.
[contacts_plasmoid.git] / omnianimation.cpp
blob0f8c42938dccf6c47441fcc1065758310e636c3f
1 #include "omnianimation.h"
3 #include <QGraphicsWidget>
4 #include <QPropertyAnimation>
5 #include <QParallelAnimationGroup>
7 #include <QDebug>
8 OmniAnimation::OmniAnimation(QObject *parent, QGraphicsWidget *animatedObject, QObject *sender)
9 : mParent( parent ), mAnimatedObject( animatedObject ), mSender( sender ),
10 mOmniGeometryAnimOne( 0 ), mOmniGeometryAnimTwo( 0 ), parallelAnim( 0 ),
11 parallelAnimTwo( 0 )
16 OmniAnimation::~OmniAnimation()
18 delete mOmniGeometryAnimTwo;
19 delete mOmniGeometryAnimOne;
20 delete parallelAnim;
21 delete parallelAnimTwo;
24 void OmniAnimation::create( QSizeF *size, qreal widthLayoutMargin,
25 qreal xWidgetMargin, qreal yWidgetMargin )
28 // The states and animations.
29 /*( QObject * sender, const char * signal, QAbstractState * target ) */
30 //geometry animation
31 mOmniGeometryAnimOne = new QPropertyAnimation(mAnimatedObject, "geometry");
32 mOmniGeometryAnimOne->setEndValue(QRectF( (xWidgetMargin + widthLayoutMargin),
33 size->height() - 360 - (yWidgetMargin + widthLayoutMargin) ,
34 size->width() - (xWidgetMargin + widthLayoutMargin)*2, 360));
35 mOmniGeometryAnimOne->setStartValue(QRectF( xWidgetMargin + widthLayoutMargin,
36 size->height() - (yWidgetMargin + widthLayoutMargin),
37 size->width() - (xWidgetMargin + widthLayoutMargin)*2, size->height()));
38 mOmniGeometryAnimOne->setDuration(600);
39 mOmniGeometryAnimOne->setEasingCurve(QEasingCurve::InOutCubic);
40 //opacity animation
41 QPropertyAnimation *paletteAnim = new QPropertyAnimation(mParent, "opacity");
42 paletteAnim->setDuration(900);
43 paletteAnim->setEasingCurve(QEasingCurve::InQuad);
44 paletteAnim->setStartValue(qreal(1));
45 paletteAnim->setEndValue(qreal(0.05));
46 //group animation
47 parallelAnim = new QParallelAnimationGroup;
48 parallelAnim->addAnimation(mOmniGeometryAnimOne);
49 parallelAnim->addAnimation(paletteAnim);
51 QObject::connect( mSender, SIGNAL( clicked() ), parallelAnim, SLOT( start() ) );
52 //new transition
54 //second geometry animation
55 mOmniGeometryAnimTwo = new QPropertyAnimation(mAnimatedObject, "geometry");
56 mOmniGeometryAnimTwo->setStartValue( mOmniGeometryAnimOne->endValue() );
57 //mOmniGeometryAnimTwo->setEndValue( mOmniGeometryAnimOne->startValue() );
58 mOmniGeometryAnimTwo->setEndValue( QRectF((xWidgetMargin + widthLayoutMargin), -(size->height() + 10), size->width() - (xWidgetMargin + widthLayoutMargin)*2, size->height()));
59 mOmniGeometryAnimTwo->setEasingCurve( QEasingCurve::InCubic );
60 mOmniGeometryAnimTwo->setDuration(400);
61 //second opacity animation
62 QPropertyAnimation *secondOpacitty = new QPropertyAnimation(mParent, "opacity");
63 secondOpacitty->setStartValue( qreal(0.05) );
64 secondOpacitty->setEndValue( qreal(1) );
65 secondOpacitty->setDuration(700);
67 parallelAnimTwo = new QParallelAnimationGroup;
68 parallelAnimTwo->addAnimation(mOmniGeometryAnimTwo);
69 parallelAnimTwo->addAnimation(secondOpacitty);
71 QObject::connect( mAnimatedObject, SIGNAL( addItemClicked() ), parallelAnimTwo, SLOT( start() ) );
74 void OmniAnimation::reset(QSizeF *size,
75 qreal widthLayoutMargin, qreal xWidgetMargin,
76 qreal yWidgetMargin)
78 mOmniGeometryAnimOne->setEndValue(QRectF( (xWidgetMargin + widthLayoutMargin),
79 size->height() - 360 - (yWidgetMargin + widthLayoutMargin) ,
80 size->width() - (xWidgetMargin + widthLayoutMargin)*2, 360));
82 mOmniGeometryAnimOne->setStartValue(QRectF( xWidgetMargin + widthLayoutMargin,
83 size->height() - (yWidgetMargin + widthLayoutMargin),
84 size->width() - (xWidgetMargin + widthLayoutMargin)*2, size->height()));
86 qDebug()<<"OmniAnimation::reset:"<<size->width();
88 mOmniGeometryAnimTwo->setStartValue( mOmniGeometryAnimOne->endValue() );
89 mOmniGeometryAnimTwo->setEndValue( QRectF((xWidgetMargin + widthLayoutMargin),
90 -(size->height() + 10), size->width() - (xWidgetMargin + widthLayoutMargin)*2, size->height()));