1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QHISTORYSTATE_H
5#define QHISTORYSTATE_H
6
7#include <QtStateMachine/qabstractstate.h>
8
9QT_BEGIN_NAMESPACE
10
11class QAbstractTransition;
12class QHistoryStatePrivate;
13class Q_STATEMACHINE_EXPORT QHistoryState : public QAbstractState
14{
15 Q_OBJECT
16 Q_PROPERTY(QAbstractState* defaultState READ defaultState WRITE setDefaultState NOTIFY defaultStateChanged)
17 Q_PROPERTY(QAbstractTransition* defaultTransition READ defaultTransition
18 WRITE setDefaultTransition NOTIFY defaultTransitionChanged
19 BINDABLE bindableDefaultTransition)
20 Q_PROPERTY(HistoryType historyType READ historyType WRITE setHistoryType
21 NOTIFY historyTypeChanged BINDABLE bindableHistoryType)
22public:
23 enum HistoryType {
24 ShallowHistory,
25 DeepHistory
26 };
27 Q_ENUM(HistoryType)
28
29 QHistoryState(QState *parent = nullptr);
30 QHistoryState(HistoryType type, QState *parent = nullptr);
31 ~QHistoryState();
32
33 QAbstractTransition *defaultTransition() const;
34 void setDefaultTransition(QAbstractTransition *transition);
35 QBindable<QAbstractTransition*> bindableDefaultTransition();
36
37 QAbstractState *defaultState() const;
38 void setDefaultState(QAbstractState *state);
39
40 HistoryType historyType() const;
41 void setHistoryType(HistoryType type);
42 QBindable<QHistoryState::HistoryType> bindableHistoryType();
43
44Q_SIGNALS:
45 void defaultTransitionChanged(QPrivateSignal);
46 void defaultStateChanged(QPrivateSignal);
47 void historyTypeChanged(QPrivateSignal);
48
49protected:
50 void onEntry(QEvent *event) override;
51 void onExit(QEvent *event) override;
52
53 bool event(QEvent *e) override;
54
55private:
56 Q_DISABLE_COPY(QHistoryState)
57 Q_DECLARE_PRIVATE(QHistoryState)
58};
59
60QT_END_NAMESPACE
61
62#endif
63

source code of qtscxml/src/statemachine/qhistorystate.h