mirror of
https://bitbucket.org/smil3y/kdelibs.git
synced 2025-02-24 10:52:49 +00:00

most of the changes were done trought Katie's namefsck script which convertes forward class declarations to include directives, however other fixes here and there were needed as well as some questionable changes to Q_DECLARE_TYPEINFO() macro calls because they most likely have to do the namespacing themselfs (QT_BEGIN/END_NAMESPACE, and probably will be in Katie) meaning that some of the changes may be temporary and reverted later. Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
126 lines
4 KiB
C++
126 lines
4 KiB
C++
/*
|
|
Copyright (C) 2009 Igor Trindade Oliveira <igor.oliveira@indt.org.br>
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Lesser General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2.1 of the License, or (at your option) any later version.
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Lesser General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
/**
|
|
* @file This file contains the definition for the StackedRotationAnimation.
|
|
*/
|
|
|
|
#ifndef PLASMA_ROTATIONSTACKED_P_H
|
|
#define PLASMA_ROTATIONSTACKED_P_H
|
|
|
|
#include <plasma/animations/easinganimation_p.h>
|
|
#include <plasma/plasma_export.h>
|
|
|
|
#include <QGraphicsLayoutItem>
|
|
|
|
#include <QGraphicsRotation>
|
|
class StackedLayout;
|
|
|
|
namespace Plasma {
|
|
|
|
/* TODO:
|
|
* create a parent class for rotations
|
|
*/
|
|
/**
|
|
* @class RotationStackedAnimation plasma/animations/rotationstacked_p.h
|
|
* @short 3D like rotation animation
|
|
* Use this class when you want to rotate a widget along an axis (e.g. Y)
|
|
* and display a 'hidden' widget behind it. See also \ref RotationAnimation.
|
|
*/
|
|
class RotationStackedAnimation : public EasingAnimation
|
|
{
|
|
Q_OBJECT
|
|
Q_PROPERTY(MovementDirection movementDirection READ movementDirection WRITE setMovementDirection)
|
|
Q_PROPERTY(Reference reference READ reference WRITE setReference)
|
|
Q_PROPERTY(QGraphicsLayoutItem* layout READ layout)
|
|
Q_PROPERTY(QGraphicsWidget* backWidget READ backWidget WRITE setBackWidget)
|
|
|
|
public:
|
|
explicit RotationStackedAnimation(QObject *parent = 0);
|
|
|
|
~RotationStackedAnimation();
|
|
|
|
/**
|
|
* Set the animation movement direction (e.g. MoveAny, MoveUp, MoveDown,
|
|
* MoveLeft, MoveRight) which can be combined (i.e. MoveUp|MoveLeft).
|
|
* @param direction animation direction
|
|
*/
|
|
void setMovementDirection(const Animation::MovementDirection &direction);
|
|
|
|
/**
|
|
* Get the animation movement direction.
|
|
*/
|
|
Animation::MovementDirection movementDirection() const;
|
|
|
|
/**
|
|
* Set the animation rotation reference (e.g. Center, Up, Down, Left,
|
|
* Right) which can be combined (i.e. Center|Up).
|
|
* @param reference animation reference
|
|
*/
|
|
void setReference(const Animation::Reference &reference);
|
|
|
|
/**
|
|
* Get the animation rotation reference.
|
|
*/
|
|
Animation::Reference reference() const;
|
|
|
|
/**
|
|
* Get the layout where the widgetToAnimate and backWidget are.
|
|
*/
|
|
QGraphicsLayoutItem *layout();
|
|
|
|
/**
|
|
* Get the back widget
|
|
*/
|
|
|
|
QGraphicsWidget *backWidget();
|
|
|
|
/**
|
|
* Set the back widget that is used after the animation to be finished
|
|
* @param backWidget The back widget
|
|
*/
|
|
void setBackWidget(QGraphicsWidget *backWidget);
|
|
|
|
protected:
|
|
void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState);
|
|
void updateEffectiveTime(int currentTime);
|
|
|
|
private:
|
|
/**
|
|
* Updates the front and back widget rotation animation transformations,
|
|
* according to the given animation reference point and direction.
|
|
*/
|
|
void updateTransformations();
|
|
|
|
/** Animation reference (see \ref Animation::Reference) */
|
|
Animation::Reference m_animReference;
|
|
/** Animation movement direction (see \ref Animation::MovementDirection) */
|
|
Animation::MovementDirection m_animDirection;
|
|
/** Object the animation(s) should act upon. */
|
|
QWeakPointer<QGraphicsWidget> m_backWidget;
|
|
/** Layout where widget would be added */
|
|
QWeakPointer<StackedLayout> m_wLayout;
|
|
/** Back Widget Rotation transform object */
|
|
QGraphicsRotation *m_backRotation;
|
|
/** Front Widget Rotation transform object */
|
|
QGraphicsRotation *m_frontRotation;
|
|
|
|
static const int s_sideAngle;
|
|
};
|
|
} // Plasma
|
|
|
|
#endif // PLASMA_ROTATIONSTACKED_P_H
|