1 /****************************************************************************
3 ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/
6 ** This file is part of the QtDeclarative module of the Qt Toolkit.
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** GNU Lesser General Public License Usage
10 ** This file may be used under the terms of the GNU Lesser General Public
11 ** License version 2.1 as published by the Free Software Foundation and
12 ** appearing in the file LICENSE.LGPL included in the packaging of this
13 ** file. Please review the following information to ensure the GNU Lesser
14 ** General Public License version 2.1 requirements will be met:
15 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
17 ** In addition, as a special exception, Nokia gives you certain additional
18 ** rights. These rights are described in the Nokia Qt LGPL Exception
19 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
21 ** GNU General Public License Usage
22 ** Alternatively, this file may be used under the terms of the GNU General
23 ** Public License version 3.0 as published by the Free Software Foundation
24 ** and appearing in the file LICENSE.GPL included in the packaging of this
25 ** file. Please review the following information to ensure the GNU General
26 ** Public License version 3.0 requirements will be met:
27 ** http://www.gnu.org/copyleft/gpl.html.
30 ** Alternatively, this file may be used in accordance with the terms and
31 ** conditions contained in a signed written agreement between you and Nokia.
40 ****************************************************************************/
42 #ifndef QDECLARATIVEANIMATION_H
43 #define QDECLARATIVEANIMATION_H
45 #include "QtQuick1/private/qdeclarativetransition_p.h"
46 #include "QtQuick1/private/qdeclarativestate_p.h"
47 #include <QtGui/qvector3d.h>
49 #include <QtDeclarative/qdeclarativepropertyvaluesource.h>
50 #include <QtDeclarative/qdeclarative.h>
51 #include <QtDeclarative/qdeclarativescriptstring.h>
53 #include <QtCore/qvariant.h>
54 #include <QtCore/qeasingcurve.h>
55 #include <QtCore/QAbstractAnimation>
56 #include <QtGui/qcolor.h>
63 class QDeclarativeItem;
64 class QDeclarative1AbstractAnimationPrivate;
65 class QDeclarative1AnimationGroup;
66 class Q_QTQUICK1_EXPORT QDeclarative1AbstractAnimation : public QObject, public QDeclarativePropertyValueSource, public QDeclarativeParserStatus
69 Q_DECLARE_PRIVATE(QDeclarative1AbstractAnimation)
71 Q_INTERFACES(QDeclarativeParserStatus)
72 Q_INTERFACES(QDeclarativePropertyValueSource)
74 Q_PROPERTY(bool running READ isRunning WRITE setRunning NOTIFY runningChanged)
75 Q_PROPERTY(bool paused READ isPaused WRITE setPaused NOTIFY pausedChanged)
76 Q_PROPERTY(bool alwaysRunToEnd READ alwaysRunToEnd WRITE setAlwaysRunToEnd NOTIFY alwaysRunToEndChanged)
77 Q_PROPERTY(int loops READ loops WRITE setLoops NOTIFY loopCountChanged)
78 Q_CLASSINFO("DefaultMethod", "start()")
81 QDeclarative1AbstractAnimation(QObject *parent=0);
82 virtual ~QDeclarative1AbstractAnimation();
84 enum Loops { Infinite = -2 };
86 bool isRunning() const;
87 void setRunning(bool);
88 bool isPaused() const;
90 bool alwaysRunToEnd() const;
91 void setAlwaysRunToEnd(bool);
97 void setCurrentTime(int);
99 QDeclarative1AnimationGroup *group() const;
100 void setGroup(QDeclarative1AnimationGroup *);
102 void setDefaultTarget(const QDeclarativeProperty &);
103 void setDisableUserControl();
106 void componentComplete();
111 void runningChanged(bool);
112 void pausedChanged(bool);
113 void alwaysRunToEndChanged(bool);
114 void loopCountChanged(int);
125 QDeclarative1AbstractAnimation(QDeclarative1AbstractAnimationPrivate &dd, QObject *parent);
128 enum TransitionDirection { Forward, Backward };
129 virtual void transition(QDeclarative1StateActions &actions,
130 QDeclarativeProperties &modified,
131 TransitionDirection direction);
132 virtual QAbstractAnimation *qtAnimation() = 0;
135 void timelineComplete();
136 void componentFinalized();
138 virtual void setTarget(const QDeclarativeProperty &);
139 void notifyRunningChanged(bool running);
140 friend class QDeclarative1Behavior;
145 class QDeclarative1PauseAnimationPrivate;
146 class Q_AUTOTEST_EXPORT QDeclarative1PauseAnimation : public QDeclarative1AbstractAnimation
149 Q_DECLARE_PRIVATE(QDeclarative1PauseAnimation)
151 Q_PROPERTY(int duration READ duration WRITE setDuration NOTIFY durationChanged)
154 QDeclarative1PauseAnimation(QObject *parent=0);
155 virtual ~QDeclarative1PauseAnimation();
157 int duration() const;
158 void setDuration(int);
161 void durationChanged(int);
164 virtual QAbstractAnimation *qtAnimation();
167 class QDeclarative1ScriptActionPrivate;
168 class Q_QTQUICK1_EXPORT QDeclarative1ScriptAction : public QDeclarative1AbstractAnimation
171 Q_DECLARE_PRIVATE(QDeclarative1ScriptAction)
173 Q_PROPERTY(QDeclarativeScriptString script READ script WRITE setScript)
174 Q_PROPERTY(QString scriptName READ stateChangeScriptName WRITE setStateChangeScriptName)
177 QDeclarative1ScriptAction(QObject *parent=0);
178 virtual ~QDeclarative1ScriptAction();
180 QDeclarativeScriptString script() const;
181 void setScript(const QDeclarativeScriptString &);
183 QString stateChangeScriptName() const;
184 void setStateChangeScriptName(const QString &);
187 virtual void transition(QDeclarative1StateActions &actions,
188 QDeclarativeProperties &modified,
189 TransitionDirection direction);
190 virtual QAbstractAnimation *qtAnimation();
193 class QDeclarative1PropertyActionPrivate;
194 class QDeclarative1PropertyAction : public QDeclarative1AbstractAnimation
197 Q_DECLARE_PRIVATE(QDeclarative1PropertyAction)
199 Q_PROPERTY(QObject *target READ target WRITE setTarget NOTIFY targetChanged)
200 Q_PROPERTY(QString property READ property WRITE setProperty NOTIFY propertyChanged)
201 Q_PROPERTY(QString properties READ properties WRITE setProperties NOTIFY propertiesChanged)
202 Q_PROPERTY(QDeclarativeListProperty<QObject> targets READ targets)
203 Q_PROPERTY(QDeclarativeListProperty<QObject> exclude READ exclude)
204 Q_PROPERTY(QVariant value READ value WRITE setValue NOTIFY valueChanged)
207 QDeclarative1PropertyAction(QObject *parent=0);
208 virtual ~QDeclarative1PropertyAction();
210 QObject *target() const;
211 void setTarget(QObject *);
213 QString property() const;
214 void setProperty(const QString &);
216 QString properties() const;
217 void setProperties(const QString &);
219 QDeclarativeListProperty<QObject> targets();
220 QDeclarativeListProperty<QObject> exclude();
222 QVariant value() const;
223 void setValue(const QVariant &);
226 void valueChanged(const QVariant &);
227 void propertiesChanged(const QString &);
228 void targetChanged();
229 void propertyChanged();
232 virtual void transition(QDeclarative1StateActions &actions,
233 QDeclarativeProperties &modified,
234 TransitionDirection direction);
235 virtual QAbstractAnimation *qtAnimation();
238 class QDeclarative1PropertyAnimationPrivate;
239 class Q_AUTOTEST_EXPORT QDeclarative1PropertyAnimation : public QDeclarative1AbstractAnimation
242 Q_DECLARE_PRIVATE(QDeclarative1PropertyAnimation)
244 Q_PROPERTY(int duration READ duration WRITE setDuration NOTIFY durationChanged)
245 Q_PROPERTY(QVariant from READ from WRITE setFrom NOTIFY fromChanged)
246 Q_PROPERTY(QVariant to READ to WRITE setTo NOTIFY toChanged)
247 Q_PROPERTY(QEasingCurve easing READ easing WRITE setEasing NOTIFY easingChanged)
248 Q_PROPERTY(QObject *target READ target WRITE setTarget NOTIFY targetChanged)
249 Q_PROPERTY(QString property READ property WRITE setProperty NOTIFY propertyChanged)
250 Q_PROPERTY(QString properties READ properties WRITE setProperties NOTIFY propertiesChanged)
251 Q_PROPERTY(QDeclarativeListProperty<QObject> targets READ targets)
252 Q_PROPERTY(QDeclarativeListProperty<QObject> exclude READ exclude)
255 QDeclarative1PropertyAnimation(QObject *parent=0);
256 virtual ~QDeclarative1PropertyAnimation();
258 virtual int duration() const;
259 virtual void setDuration(int);
261 QVariant from() const;
262 void setFrom(const QVariant &);
265 void setTo(const QVariant &);
267 QEasingCurve easing() const;
268 void setEasing(const QEasingCurve &);
270 QObject *target() const;
271 void setTarget(QObject *);
273 QString property() const;
274 void setProperty(const QString &);
276 QString properties() const;
277 void setProperties(const QString &);
279 QDeclarativeListProperty<QObject> targets();
280 QDeclarativeListProperty<QObject> exclude();
283 QDeclarative1PropertyAnimation(QDeclarative1PropertyAnimationPrivate &dd, QObject *parent);
284 virtual void transition(QDeclarative1StateActions &actions,
285 QDeclarativeProperties &modified,
286 TransitionDirection direction);
287 virtual QAbstractAnimation *qtAnimation();
290 void durationChanged(int);
291 void fromChanged(QVariant);
292 void toChanged(QVariant);
293 void easingChanged(const QEasingCurve &);
294 void propertiesChanged(const QString &);
295 void targetChanged();
296 void propertyChanged();
299 class Q_AUTOTEST_EXPORT QDeclarative1ColorAnimation : public QDeclarative1PropertyAnimation
302 Q_DECLARE_PRIVATE(QDeclarative1PropertyAnimation)
303 Q_PROPERTY(QColor from READ from WRITE setFrom)
304 Q_PROPERTY(QColor to READ to WRITE setTo)
307 QDeclarative1ColorAnimation(QObject *parent=0);
308 virtual ~QDeclarative1ColorAnimation();
311 void setFrom(const QColor &);
314 void setTo(const QColor &);
317 class Q_AUTOTEST_EXPORT QDeclarative1NumberAnimation : public QDeclarative1PropertyAnimation
320 Q_DECLARE_PRIVATE(QDeclarative1PropertyAnimation)
322 Q_PROPERTY(qreal from READ from WRITE setFrom)
323 Q_PROPERTY(qreal to READ to WRITE setTo)
326 QDeclarative1NumberAnimation(QObject *parent=0);
327 virtual ~QDeclarative1NumberAnimation();
336 QDeclarative1NumberAnimation(QDeclarative1PropertyAnimationPrivate &dd, QObject *parent);
342 class Q_AUTOTEST_EXPORT QDeclarative1Vector3dAnimation : public QDeclarative1PropertyAnimation
345 Q_DECLARE_PRIVATE(QDeclarative1PropertyAnimation)
347 Q_PROPERTY(QVector3D from READ from WRITE setFrom)
348 Q_PROPERTY(QVector3D to READ to WRITE setTo)
351 QDeclarative1Vector3dAnimation(QObject *parent=0);
352 virtual ~QDeclarative1Vector3dAnimation();
354 QVector3D from() const;
355 void setFrom(QVector3D);
357 QVector3D to() const;
358 void setTo(QVector3D);
361 class QDeclarative1RotationAnimationPrivate;
362 class Q_AUTOTEST_EXPORT QDeclarative1RotationAnimation : public QDeclarative1PropertyAnimation
365 Q_DECLARE_PRIVATE(QDeclarative1RotationAnimation)
366 Q_ENUMS(RotationDirection)
368 Q_PROPERTY(qreal from READ from WRITE setFrom)
369 Q_PROPERTY(qreal to READ to WRITE setTo)
370 Q_PROPERTY(RotationDirection direction READ direction WRITE setDirection NOTIFY directionChanged)
373 QDeclarative1RotationAnimation(QObject *parent=0);
374 virtual ~QDeclarative1RotationAnimation();
382 enum RotationDirection { Numerical, Shortest, Clockwise, Counterclockwise };
383 RotationDirection direction() const;
384 void setDirection(RotationDirection direction);
387 void directionChanged();
390 class QDeclarative1AnimationGroupPrivate;
391 class Q_AUTOTEST_EXPORT QDeclarative1AnimationGroup : public QDeclarative1AbstractAnimation
394 Q_DECLARE_PRIVATE(QDeclarative1AnimationGroup)
396 Q_CLASSINFO("DefaultProperty", "animations")
397 Q_PROPERTY(QDeclarativeListProperty<QDeclarative1AbstractAnimation> animations READ animations)
400 QDeclarative1AnimationGroup(QObject *parent);
401 virtual ~QDeclarative1AnimationGroup();
403 QDeclarativeListProperty<QDeclarative1AbstractAnimation> animations();
404 friend class QDeclarative1AbstractAnimation;
407 QDeclarative1AnimationGroup(QDeclarative1AnimationGroupPrivate &dd, QObject *parent);
410 class QDeclarative1SequentialAnimation : public QDeclarative1AnimationGroup
413 Q_DECLARE_PRIVATE(QDeclarative1AnimationGroup)
416 QDeclarative1SequentialAnimation(QObject *parent=0);
417 virtual ~QDeclarative1SequentialAnimation();
420 virtual void transition(QDeclarative1StateActions &actions,
421 QDeclarativeProperties &modified,
422 TransitionDirection direction);
423 virtual QAbstractAnimation *qtAnimation();
426 class QDeclarative1ParallelAnimation : public QDeclarative1AnimationGroup
429 Q_DECLARE_PRIVATE(QDeclarative1AnimationGroup)
432 QDeclarative1ParallelAnimation(QObject *parent=0);
433 virtual ~QDeclarative1ParallelAnimation();
436 virtual void transition(QDeclarative1StateActions &actions,
437 QDeclarativeProperties &modified,
438 TransitionDirection direction);
439 virtual QAbstractAnimation *qtAnimation();
442 class QDeclarative1ParentAnimationPrivate;
443 class QDeclarative1ParentAnimation : public QDeclarative1AnimationGroup
446 Q_DECLARE_PRIVATE(QDeclarative1ParentAnimation)
448 Q_PROPERTY(QDeclarativeItem *target READ target WRITE setTarget NOTIFY targetChanged)
449 Q_PROPERTY(QDeclarativeItem *newParent READ newParent WRITE setNewParent NOTIFY newParentChanged)
450 Q_PROPERTY(QDeclarativeItem *via READ via WRITE setVia NOTIFY viaChanged)
453 QDeclarative1ParentAnimation(QObject *parent=0);
454 virtual ~QDeclarative1ParentAnimation();
456 QDeclarativeItem *target() const;
457 void setTarget(QDeclarativeItem *);
459 QDeclarativeItem *newParent() const;
460 void setNewParent(QDeclarativeItem *);
462 QDeclarativeItem *via() const;
463 void setVia(QDeclarativeItem *);
466 void targetChanged();
467 void newParentChanged();
471 virtual void transition(QDeclarative1StateActions &actions,
472 QDeclarativeProperties &modified,
473 TransitionDirection direction);
474 virtual QAbstractAnimation *qtAnimation();
477 class QDeclarative1AnchorAnimationPrivate;
478 class QDeclarative1AnchorAnimation : public QDeclarative1AbstractAnimation
481 Q_DECLARE_PRIVATE(QDeclarative1AnchorAnimation)
482 Q_PROPERTY(QDeclarativeListProperty<QDeclarativeItem> targets READ targets)
483 Q_PROPERTY(int duration READ duration WRITE setDuration NOTIFY durationChanged)
484 Q_PROPERTY(QEasingCurve easing READ easing WRITE setEasing NOTIFY easingChanged)
487 QDeclarative1AnchorAnimation(QObject *parent=0);
488 virtual ~QDeclarative1AnchorAnimation();
490 QDeclarativeListProperty<QDeclarativeItem> targets();
492 int duration() const;
493 void setDuration(int);
495 QEasingCurve easing() const;
496 void setEasing(const QEasingCurve &);
499 void durationChanged(int);
500 void easingChanged(const QEasingCurve&);
503 virtual void transition(QDeclarative1StateActions &actions,
504 QDeclarativeProperties &modified,
505 TransitionDirection direction);
506 virtual QAbstractAnimation *qtAnimation();
511 QML_DECLARE_TYPE(QDeclarative1AbstractAnimation)
512 QML_DECLARE_TYPE(QDeclarative1PauseAnimation)
513 QML_DECLARE_TYPE(QDeclarative1ScriptAction)
514 QML_DECLARE_TYPE(QDeclarative1PropertyAction)
515 QML_DECLARE_TYPE(QDeclarative1PropertyAnimation)
516 QML_DECLARE_TYPE(QDeclarative1ColorAnimation)
517 QML_DECLARE_TYPE(QDeclarative1NumberAnimation)
518 QML_DECLARE_TYPE(QDeclarative1SequentialAnimation)
519 QML_DECLARE_TYPE(QDeclarative1ParallelAnimation)
520 QML_DECLARE_TYPE(QDeclarative1Vector3dAnimation)
521 QML_DECLARE_TYPE(QDeclarative1RotationAnimation)
522 QML_DECLARE_TYPE(QDeclarative1ParentAnimation)
523 QML_DECLARE_TYPE(QDeclarative1AnchorAnimation)
527 #endif // QDECLARATIVEANIMATION_H