aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/util/qquickanimation_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/util/qquickanimation_p.h')
-rw-r--r--src/quick/util/qquickanimation_p.h464
1 files changed, 464 insertions, 0 deletions
diff --git a/src/quick/util/qquickanimation_p.h b/src/quick/util/qquickanimation_p.h
new file mode 100644
index 0000000000..980a2f5171
--- /dev/null
+++ b/src/quick/util/qquickanimation_p.h
@@ -0,0 +1,464 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtQml module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QQUICKANIMATION_H
+#define QQUICKANIMATION_H
+
+#include "qquickstate_p.h"
+#include <QtGui/qvector3d.h>
+
+#include <qqmlpropertyvaluesource.h>
+#include <qqml.h>
+#include <qqmlscriptstring.h>
+
+#include <QtCore/qvariant.h>
+#include <QtCore/qeasingcurve.h>
+#include "private/qabstractanimationjob_p.h"
+#include <QtGui/qcolor.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QQuickAbstractAnimationPrivate;
+class QQuickAnimationGroup;
+class Q_QUICK_PRIVATE_EXPORT QQuickAbstractAnimation : public QObject, public QQmlPropertyValueSource, public QQmlParserStatus
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QQuickAbstractAnimation)
+
+ Q_INTERFACES(QQmlParserStatus)
+ Q_INTERFACES(QQmlPropertyValueSource)
+ Q_ENUMS(Loops)
+ Q_PROPERTY(bool running READ isRunning WRITE setRunning NOTIFY runningChanged)
+ Q_PROPERTY(bool paused READ isPaused WRITE setPaused NOTIFY pausedChanged)
+ Q_PROPERTY(bool alwaysRunToEnd READ alwaysRunToEnd WRITE setAlwaysRunToEnd NOTIFY alwaysRunToEndChanged)
+ Q_PROPERTY(int loops READ loops WRITE setLoops NOTIFY loopCountChanged)
+ Q_CLASSINFO("DefaultMethod", "start()")
+
+public:
+ QQuickAbstractAnimation(QObject *parent=0);
+ virtual ~QQuickAbstractAnimation();
+
+ enum Loops { Infinite = -2 };
+
+ bool isRunning() const;
+ void setRunning(bool);
+ bool isPaused() const;
+ void setPaused(bool);
+ bool alwaysRunToEnd() const;
+ void setAlwaysRunToEnd(bool);
+
+ int loops() const;
+ void setLoops(int);
+ int duration() const;
+
+ int currentTime();
+ void setCurrentTime(int);
+
+ QQuickAnimationGroup *group() const;
+ void setGroup(QQuickAnimationGroup *);
+
+ void setDefaultTarget(const QQmlProperty &);
+ void setDisableUserControl();
+ void setEnableUserControl();
+ bool userControlDisabled() const;
+ void classBegin();
+ void componentComplete();
+
+Q_SIGNALS:
+ void started();
+ void completed();
+ void runningChanged(bool);
+ void pausedChanged(bool);
+ void alwaysRunToEndChanged(bool);
+ void loopCountChanged(int);
+
+public Q_SLOTS:
+ void restart();
+ void start();
+ void pause();
+ void resume();
+ void stop();
+ void complete();
+
+protected:
+ QQuickAbstractAnimation(QQuickAbstractAnimationPrivate &dd, QObject *parent);
+ QAbstractAnimationJob* initInstance(QAbstractAnimationJob *animation);
+
+public:
+ enum TransitionDirection { Forward, Backward };
+ virtual QAbstractAnimationJob* transition(QQuickStateActions &actions,
+ QQmlProperties &modified,
+ TransitionDirection direction,
+ QObject *defaultTarget = 0);
+ QAbstractAnimationJob* qtAnimation();
+
+private Q_SLOTS:
+ void componentFinalized();
+private:
+ virtual void setTarget(const QQmlProperty &);
+ void notifyRunningChanged(bool running);
+ friend class QQuickBehavior;
+ friend class QQuickBehaviorPrivate;
+};
+
+class QQuickPauseAnimationPrivate;
+class Q_QUICK_PRIVATE_EXPORT QQuickPauseAnimation : public QQuickAbstractAnimation
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QQuickPauseAnimation)
+
+ Q_PROPERTY(int duration READ duration WRITE setDuration NOTIFY durationChanged)
+
+public:
+ QQuickPauseAnimation(QObject *parent=0);
+ virtual ~QQuickPauseAnimation();
+
+ int duration() const;
+ void setDuration(int);
+
+Q_SIGNALS:
+ void durationChanged(int);
+
+protected:
+ QAbstractAnimationJob* transition(QQuickStateActions &actions,
+ QQmlProperties &modified,
+ TransitionDirection direction,
+ QObject *defaultTarget = 0);
+};
+
+class QQuickScriptActionPrivate;
+class Q_QUICK_PRIVATE_EXPORT QQuickScriptAction : public QQuickAbstractAnimation
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QQuickScriptAction)
+
+ Q_PROPERTY(QQmlScriptString script READ script WRITE setScript)
+ Q_PROPERTY(QString scriptName READ stateChangeScriptName WRITE setStateChangeScriptName)
+
+public:
+ QQuickScriptAction(QObject *parent=0);
+ virtual ~QQuickScriptAction();
+
+ QQmlScriptString script() const;
+ void setScript(const QQmlScriptString &);
+
+ QString stateChangeScriptName() const;
+ void setStateChangeScriptName(const QString &);
+
+protected:
+ virtual QAbstractAnimationJob* transition(QQuickStateActions &actions,
+ QQmlProperties &modified,
+ TransitionDirection direction,
+ QObject *defaultTarget = 0);
+};
+
+class QQuickPropertyActionPrivate;
+class Q_QUICK_PRIVATE_EXPORT QQuickPropertyAction : public QQuickAbstractAnimation
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QQuickPropertyAction)
+
+ Q_PROPERTY(QObject *target READ target WRITE setTargetObject NOTIFY targetChanged)
+ Q_PROPERTY(QString property READ property WRITE setProperty NOTIFY propertyChanged)
+ Q_PROPERTY(QString properties READ properties WRITE setProperties NOTIFY propertiesChanged)
+ Q_PROPERTY(QQmlListProperty<QObject> targets READ targets)
+ Q_PROPERTY(QQmlListProperty<QObject> exclude READ exclude)
+ Q_PROPERTY(QVariant value READ value WRITE setValue NOTIFY valueChanged)
+
+public:
+ QQuickPropertyAction(QObject *parent=0);
+ virtual ~QQuickPropertyAction();
+
+ QObject *target() const;
+ void setTargetObject(QObject *);
+
+ QString property() const;
+ void setProperty(const QString &);
+
+ QString properties() const;
+ void setProperties(const QString &);
+
+ QQmlListProperty<QObject> targets();
+ QQmlListProperty<QObject> exclude();
+
+ QVariant value() const;
+ void setValue(const QVariant &);
+
+Q_SIGNALS:
+ void valueChanged(const QVariant &);
+ void propertiesChanged(const QString &);
+ void targetChanged();
+ void propertyChanged();
+
+protected:
+ virtual QAbstractAnimationJob* transition(QQuickStateActions &actions,
+ QQmlProperties &modified,
+ TransitionDirection direction,
+ QObject *defaultTarget = 0);
+};
+
+class QQuickPropertyAnimationPrivate;
+class Q_QUICK_PRIVATE_EXPORT QQuickPropertyAnimation : public QQuickAbstractAnimation
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QQuickPropertyAnimation)
+
+ Q_PROPERTY(int duration READ duration WRITE setDuration NOTIFY durationChanged)
+ Q_PROPERTY(QVariant from READ from WRITE setFrom NOTIFY fromChanged)
+ Q_PROPERTY(QVariant to READ to WRITE setTo NOTIFY toChanged)
+ Q_PROPERTY(QEasingCurve easing READ easing WRITE setEasing NOTIFY easingChanged)
+ Q_PROPERTY(QObject *target READ target WRITE setTargetObject NOTIFY targetChanged)
+ Q_PROPERTY(QString property READ property WRITE setProperty NOTIFY propertyChanged)
+ Q_PROPERTY(QString properties READ properties WRITE setProperties NOTIFY propertiesChanged)
+ Q_PROPERTY(QQmlListProperty<QObject> targets READ targets)
+ Q_PROPERTY(QQmlListProperty<QObject> exclude READ exclude)
+
+public:
+ QQuickPropertyAnimation(QObject *parent=0);
+ virtual ~QQuickPropertyAnimation();
+
+ virtual int duration() const;
+ virtual void setDuration(int);
+
+ QVariant from() const;
+ void setFrom(const QVariant &);
+
+ QVariant to() const;
+ void setTo(const QVariant &);
+
+ QEasingCurve easing() const;
+ void setEasing(const QEasingCurve &);
+
+ QObject *target() const;
+ void setTargetObject(QObject *);
+
+ QString property() const;
+ void setProperty(const QString &);
+
+ QString properties() const;
+ void setProperties(const QString &);
+
+ QQmlListProperty<QObject> targets();
+ QQmlListProperty<QObject> exclude();
+
+protected:
+ QQuickStateActions createTransitionActions(QQuickStateActions &actions,
+ QQmlProperties &modified,
+ QObject *defaultTarget = 0);
+
+ QQuickPropertyAnimation(QQuickPropertyAnimationPrivate &dd, QObject *parent);
+ virtual QAbstractAnimationJob* transition(QQuickStateActions &actions,
+ QQmlProperties &modified,
+ TransitionDirection direction,
+ QObject *defaultTarget = 0);
+Q_SIGNALS:
+ void durationChanged(int);
+ void fromChanged(QVariant);
+ void toChanged(QVariant);
+ void easingChanged(const QEasingCurve &);
+ void propertiesChanged(const QString &);
+ void targetChanged();
+ void propertyChanged();
+};
+
+class Q_QUICK_PRIVATE_EXPORT QQuickColorAnimation : public QQuickPropertyAnimation
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QQuickPropertyAnimation)
+ Q_PROPERTY(QColor from READ from WRITE setFrom)
+ Q_PROPERTY(QColor to READ to WRITE setTo)
+
+public:
+ QQuickColorAnimation(QObject *parent=0);
+ virtual ~QQuickColorAnimation();
+
+ QColor from() const;
+ void setFrom(const QColor &);
+
+ QColor to() const;
+ void setTo(const QColor &);
+};
+
+class Q_QUICK_PRIVATE_EXPORT QQuickNumberAnimation : public QQuickPropertyAnimation
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QQuickPropertyAnimation)
+
+ Q_PROPERTY(qreal from READ from WRITE setFrom)
+ Q_PROPERTY(qreal to READ to WRITE setTo)
+
+public:
+ QQuickNumberAnimation(QObject *parent=0);
+ virtual ~QQuickNumberAnimation();
+
+ qreal from() const;
+ void setFrom(qreal);
+
+ qreal to() const;
+ void setTo(qreal);
+
+protected:
+ QQuickNumberAnimation(QQuickPropertyAnimationPrivate &dd, QObject *parent);
+
+private:
+ void init();
+};
+
+class Q_QUICK_PRIVATE_EXPORT QQuickVector3dAnimation : public QQuickPropertyAnimation
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QQuickPropertyAnimation)
+
+ Q_PROPERTY(QVector3D from READ from WRITE setFrom)
+ Q_PROPERTY(QVector3D to READ to WRITE setTo)
+
+public:
+ QQuickVector3dAnimation(QObject *parent=0);
+ virtual ~QQuickVector3dAnimation();
+
+ QVector3D from() const;
+ void setFrom(QVector3D);
+
+ QVector3D to() const;
+ void setTo(QVector3D);
+};
+
+class QQuickRotationAnimationPrivate;
+class Q_QUICK_PRIVATE_EXPORT QQuickRotationAnimation : public QQuickPropertyAnimation
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QQuickRotationAnimation)
+ Q_ENUMS(RotationDirection)
+
+ Q_PROPERTY(qreal from READ from WRITE setFrom)
+ Q_PROPERTY(qreal to READ to WRITE setTo)
+ Q_PROPERTY(RotationDirection direction READ direction WRITE setDirection NOTIFY directionChanged)
+
+public:
+ QQuickRotationAnimation(QObject *parent=0);
+ virtual ~QQuickRotationAnimation();
+
+ qreal from() const;
+ void setFrom(qreal);
+
+ qreal to() const;
+ void setTo(qreal);
+
+ enum RotationDirection { Numerical, Shortest, Clockwise, Counterclockwise };
+ RotationDirection direction() const;
+ void setDirection(RotationDirection direction);
+
+Q_SIGNALS:
+ void directionChanged();
+};
+
+class QQuickAnimationGroupPrivate;
+class Q_QUICK_PRIVATE_EXPORT QQuickAnimationGroup : public QQuickAbstractAnimation
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QQuickAnimationGroup)
+
+ Q_CLASSINFO("DefaultProperty", "animations")
+ Q_PROPERTY(QQmlListProperty<QQuickAbstractAnimation> animations READ animations)
+
+public:
+ QQuickAnimationGroup(QObject *parent);
+ virtual ~QQuickAnimationGroup();
+
+ QQmlListProperty<QQuickAbstractAnimation> animations();
+ friend class QQuickAbstractAnimation;
+
+protected:
+ QQuickAnimationGroup(QQuickAnimationGroupPrivate &dd, QObject *parent);
+};
+
+class QQuickSequentialAnimation : public QQuickAnimationGroup
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QQuickAnimationGroup)
+
+public:
+ QQuickSequentialAnimation(QObject *parent=0);
+ virtual ~QQuickSequentialAnimation();
+
+protected:
+ virtual QAbstractAnimationJob* transition(QQuickStateActions &actions,
+ QQmlProperties &modified,
+ TransitionDirection direction,
+ QObject *defaultTarget = 0);
+};
+
+class Q_QUICK_PRIVATE_EXPORT QQuickParallelAnimation : public QQuickAnimationGroup
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QQuickAnimationGroup)
+
+public:
+ QQuickParallelAnimation(QObject *parent=0);
+ virtual ~QQuickParallelAnimation();
+
+protected:
+ virtual QAbstractAnimationJob* transition(QQuickStateActions &actions,
+ QQmlProperties &modified,
+ TransitionDirection direction,
+ QObject *defaultTarget = 0);
+};
+
+
+QT_END_NAMESPACE
+
+QML_DECLARE_TYPE(QQuickAbstractAnimation)
+QML_DECLARE_TYPE(QQuickPauseAnimation)
+QML_DECLARE_TYPE(QQuickScriptAction)
+QML_DECLARE_TYPE(QQuickPropertyAction)
+QML_DECLARE_TYPE(QQuickPropertyAnimation)
+QML_DECLARE_TYPE(QQuickColorAnimation)
+QML_DECLARE_TYPE(QQuickNumberAnimation)
+QML_DECLARE_TYPE(QQuickSequentialAnimation)
+QML_DECLARE_TYPE(QQuickParallelAnimation)
+QML_DECLARE_TYPE(QQuickVector3dAnimation)
+QML_DECLARE_TYPE(QQuickRotationAnimation)
+
+QT_END_HEADER
+
+#endif // QQUICKANIMATION_H