1/****************************************************************************
2**
3** Copyright (C) 2016 The Qt Company Ltd.
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the QtWidgets module of the Qt Toolkit.
7**
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 The Qt Company. For licensing terms
14** and conditions see https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://www.qt.io/contact-us.
16**
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 3 as published by the Free Software
20** Foundation and appearing in the file LICENSE.LGPL3 included in the
21** packaging of this file. Please review the following information to
22** ensure the GNU Lesser General Public License version 3 requirements
23** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24**
25** GNU General Public License Usage
26** Alternatively, this file may be used under the terms of the GNU
27** General Public License version 2.0 or (at your option) the GNU General
28** Public license version 3 or any later version approved by the KDE Free
29** Qt Foundation. The licenses are as published by the Free Software
30** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31** included in the packaging of this file. Please review the following
32** information to ensure the GNU General Public License requirements will
33** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34** https://www.gnu.org/licenses/gpl-3.0.html.
35**
36** $QT_END_LICENSE$
37**
38****************************************************************************/
39
40#include "qkeyeventtransition.h"
41#include "qbasickeyeventtransition_p.h"
42#include <QtCore/qstatemachine.h>
43#include <private/qeventtransition_p.h>
44
45QT_BEGIN_NAMESPACE
46
47/*!
48 \class QKeyEventTransition
49
50 \brief The QKeyEventTransition class provides a transition for key events.
51
52 \since 4.6
53 \ingroup statemachine
54 \inmodule QtWidgets
55
56 QKeyEventTransition is part of \l{The State Machine Framework}.
57
58 \sa QState::addTransition()
59*/
60
61/*!
62 \property QKeyEventTransition::key
63
64 \brief the key that this key event transition is associated with
65*/
66
67/*!
68 \property QKeyEventTransition::modifierMask
69
70 \brief the keyboard modifier mask that this key event transition checks for
71*/
72
73class QKeyEventTransitionPrivate : public QEventTransitionPrivate
74{
75 Q_DECLARE_PUBLIC(QKeyEventTransition)
76public:
77 QKeyEventTransitionPrivate() {}
78
79 QBasicKeyEventTransition *transition;
80};
81
82/*!
83 Constructs a new key event transition with the given \a sourceState.
84*/
85QKeyEventTransition::QKeyEventTransition(QState *sourceState)
86 : QEventTransition(*new QKeyEventTransitionPrivate, sourceState)
87{
88 Q_D(QKeyEventTransition);
89 d->transition = new QBasicKeyEventTransition();
90}
91
92/*!
93 Constructs a new key event transition for events of the given \a type for
94 the given \a object, with the given \a key and \a sourceState.
95*/
96QKeyEventTransition::QKeyEventTransition(QObject *object, QEvent::Type type,
97 int key, QState *sourceState)
98 : QEventTransition(*new QKeyEventTransitionPrivate, object, type, sourceState)
99{
100 Q_D(QKeyEventTransition);
101 d->transition = new QBasicKeyEventTransition(type, key);
102}
103
104/*!
105 Destroys this key event transition.
106*/
107QKeyEventTransition::~QKeyEventTransition()
108{
109 Q_D(QKeyEventTransition);
110 delete d->transition;
111}
112
113/*!
114 Returns the key that this key event transition checks for.
115*/
116int QKeyEventTransition::key() const
117{
118 Q_D(const QKeyEventTransition);
119 return d->transition->key();
120}
121
122/*!
123 Sets the \a key that this key event transition will check for.
124*/
125void QKeyEventTransition::setKey(int key)
126{
127 Q_D(QKeyEventTransition);
128 d->transition->setKey(key);
129}
130
131/*!
132 Returns the keyboard modifier mask that this key event transition checks
133 for.
134*/
135Qt::KeyboardModifiers QKeyEventTransition::modifierMask() const
136{
137 Q_D(const QKeyEventTransition);
138 return d->transition->modifierMask();
139}
140
141/*!
142 Sets the keyboard modifier mask that this key event transition will
143 check for to \a modifierMask.
144*/
145void QKeyEventTransition::setModifierMask(Qt::KeyboardModifiers modifierMask)
146{
147 Q_D(QKeyEventTransition);
148 d->transition->setModifierMask(modifierMask);
149}
150
151/*!
152 \reimp
153*/
154bool QKeyEventTransition::eventTest(QEvent *event)
155{
156 Q_D(const QKeyEventTransition);
157 if (!QEventTransition::eventTest(event))
158 return false;
159 QStateMachine::WrappedEvent *we = static_cast<QStateMachine::WrappedEvent*>(event);
160 d->transition->setEventType(we->event()->type());
161 return QAbstractTransitionPrivate::get(q: d->transition)->callEventTest(e: we->event());
162}
163
164/*!
165 \reimp
166*/
167void QKeyEventTransition::onTransition(QEvent *event)
168{
169 QEventTransition::onTransition(event);
170}
171
172QT_END_NAMESPACE
173
174#include "moc_qkeyeventtransition.cpp"
175

source code of qtbase/src/widgets/statemachine/qkeyeventtransition.cpp