1
/****************************************************************************
3
** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
4
** Contact: http://www.qt-project.org/legal
6
** This file is part of the QtCore module of the Qt Toolkit.
8
** $QT_BEGIN_LICENSE:LGPL$
9
** Commercial License Usage
10
** Licensees holding valid commercial Qt licenses may use this file in
11
** accordance with the commercial license agreement provided with the
12
** Software or, alternatively, in accordance with the terms contained in
13
** a written agreement between you and Digia. For licensing terms and
14
** conditions see http://qt.digia.com/licensing. For further information
15
** use the contact form at http://qt.digia.com/contact-us.
17
** GNU Lesser General Public License Usage
18
** Alternatively, this file may be used under the terms of the GNU Lesser
19
** General Public License version 2.1 as published by the Free Software
20
** Foundation and appearing in the file LICENSE.LGPL included in the
21
** packaging of this file. Please review the following information to
22
** ensure the GNU Lesser General Public License version 2.1 requirements
23
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
25
** In addition, as a special exception, Digia gives you certain additional
26
** rights. These rights are described in the Digia Qt LGPL Exception
27
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
29
** GNU General Public License Usage
30
** Alternatively, this file may be used under the terms of the GNU
31
** General Public License version 3.0 as published by the Free Software
32
** Foundation and appearing in the file LICENSE.GPL included in the
33
** packaging of this file. Please review the following information to
34
** ensure the GNU General Public License version 3.0 requirements will be
35
** met: http://www.gnu.org/copyleft/gpl.html.
40
****************************************************************************/
42
#ifndef QSTATEMACHINE_H
43
#define QSTATEMACHINE_H
45
#include <QtCore/qstate.h>
47
#include <QtCore/qcoreevent.h>
48
#include <QtCore/qlist.h>
49
#include <QtCore/qobject.h>
50
#include <QtCore/qset.h>
51
#include <QtCore/qvariant.h>
58
#ifndef QT_NO_STATEMACHINE
60
class QStateMachinePrivate;
61
class QAbstractAnimation;
62
class Q_CORE_EXPORT QStateMachine : public QState
65
Q_PROPERTY(QString errorString READ errorString)
66
Q_PROPERTY(QState::RestorePolicy globalRestorePolicy READ globalRestorePolicy WRITE setGlobalRestorePolicy)
67
#ifndef QT_NO_ANIMATION
68
Q_PROPERTY(bool animated READ isAnimated WRITE setAnimated)
71
class Q_CORE_EXPORT SignalEvent : public QEvent
74
SignalEvent(QObject *sender, int signalIndex,
75
const QList<QVariant> &arguments);
78
inline QObject *sender() const { return m_sender; }
79
inline int signalIndex() const { return m_signalIndex; }
80
inline QList<QVariant> arguments() const { return m_arguments; }
85
QList<QVariant> m_arguments;
87
friend class QSignalTransitionPrivate;
90
class Q_CORE_EXPORT WrappedEvent : public QEvent
93
WrappedEvent(QObject *object, QEvent *event);
96
inline QObject *object() const { return m_object; }
97
inline QEvent *event() const { return m_event; }
112
NoDefaultStateInHistoryStateError,
113
NoCommonAncestorForTransitionError
116
explicit QStateMachine(QObject *parent = 0);
117
explicit QStateMachine(QState::ChildMode childMode, QObject *parent = 0);
120
void addState(QAbstractState *state);
121
void removeState(QAbstractState *state);
124
QString errorString() const;
127
bool isRunning() const;
129
#ifndef QT_NO_ANIMATION
130
bool isAnimated() const;
131
void setAnimated(bool enabled);
133
void addDefaultAnimation(QAbstractAnimation *animation);
134
QList<QAbstractAnimation *> defaultAnimations() const;
135
void removeDefaultAnimation(QAbstractAnimation *animation);
136
#endif // QT_NO_ANIMATION
138
QState::RestorePolicy globalRestorePolicy() const;
139
void setGlobalRestorePolicy(QState::RestorePolicy restorePolicy);
141
void postEvent(QEvent *event, EventPriority priority = NormalPriority);
142
int postDelayedEvent(QEvent *event, int delay);
143
bool cancelDelayedEvent(int id);
145
QSet<QAbstractState*> configuration() const;
147
#ifndef QT_NO_STATEMACHINE_EVENTFILTER
148
bool eventFilter(QObject *watched, QEvent *event);
168
void onEntry(QEvent *event);
169
void onExit(QEvent *event);
171
virtual void beginSelectTransitions(QEvent *event);
172
virtual void endSelectTransitions(QEvent *event);
174
virtual void beginMicrostep(QEvent *event);
175
virtual void endMicrostep(QEvent *event);
177
bool event(QEvent *e);
180
QStateMachine(QStateMachinePrivate &dd, QObject *parent);
183
Q_DISABLE_COPY(QStateMachine)
184
Q_DECLARE_PRIVATE(QStateMachine)
185
Q_PRIVATE_SLOT(d_func(), void _q_start())
186
Q_PRIVATE_SLOT(d_func(), void _q_process())
187
#ifndef QT_NO_ANIMATION
188
Q_PRIVATE_SLOT(d_func(), void _q_animationFinished())
190
Q_PRIVATE_SLOT(d_func(), void _q_startDelayedEventTimer(int, int))
191
Q_PRIVATE_SLOT(d_func(), void _q_killDelayedEventTimer(int, int))
194
#endif //QT_NO_STATEMACHINE