1/****************************************************************************
2**
3** Copyright (C) 2015 Klaralvdalens Datakonsult AB (KDAB).
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the Qt3D 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 "qaxissetting.h"
41#include "qaxissetting_p.h"
42
43#include <Qt3DCore/qnodecreatedchange.h>
44
45QT_BEGIN_NAMESPACE
46
47namespace Qt3DInput {
48/*!
49 \class Qt3DInput::QAxisSetting
50 \inmodule Qt3DInput
51 \inherits Qt3DCore::QNode
52 \brief QAxisSetting stores settings for the specified list of Axis.
53
54 Stores the dead zone associated with this axis and defines if smoothing is enabled
55 \since 5.5
56*/
57
58/*!
59
60 \qmltype AxisSetting
61 \inqmlmodule Qt3D.Input
62 \instantiates Qt3DInput::QAxisSetting
63 \brief QML frontend for the Qt3DInput::QAxisSetting C++ class.
64
65 Stores settings for the specified list of Axis
66 \since 5.5
67*/
68
69/*!
70 \qmlproperty list<int> AxisSetting::axes
71 */
72
73
74/*!
75 Constructs a new QAxisSetting instance with \a parent.
76 */
77QAxisSetting::QAxisSetting(Qt3DCore::QNode *parent)
78 : QNode(*new QAxisSettingPrivate(), parent)
79{
80}
81
82/*! \internal */
83QAxisSetting::~QAxisSetting()
84{
85}
86
87/*!
88 \property QAxisSetting::axes
89 */
90
91/*!
92 * \brief QAxisSetting::axes
93 * \return the current list of Axis these settings apply to.
94 */
95QVector<int> QAxisSetting::axes() const
96{
97 Q_D(const QAxisSetting);
98 return d->m_axes;
99}
100
101/*!
102 \property QAxisSetting::deadZoneRadius
103 */
104
105/*!
106 * \brief QAxisSetting::deadZoneRadius
107 * \return the set dead zone radius.
108 */
109float QAxisSetting::deadZoneRadius() const
110{
111 Q_D(const QAxisSetting);
112 return d->m_deadZoneRadius;
113}
114
115/*!
116 \property QAxisSetting::smooth
117 */
118
119/*!
120 * \brief QAxisSetting::isSmoothEnabled
121 * \return if smoothing is enabled.
122 */
123bool QAxisSetting::isSmoothEnabled() const
124{
125 Q_D(const QAxisSetting);
126 return d->m_smooth;
127}
128
129
130/*!
131 \fn Qt3DInput::QAxisSetting::deadZoneRadiusChanged(float deadZoneRadius)
132
133 This signal is emitted when the Dead Zone radius associated with the axis setting is changed to \a deadZoneRadius.
134*/
135
136/*!
137 \qmlproperty float Qt3D.Input::AxisSetting::deadZoneRadius
138
139 The current deadZone radius of the AxisSetting
140*/
141
142/*!
143 \qmlsignal Qt3D.Input::AxisSetting::deadZoneRadiusChanged()
144
145 This signal is emitted when the dead zone associated with the axis setting is changed.
146
147 The corresponding handler is \c onDeadZoneRadiusChanged
148*/
149
150/*!
151 Set the current dead zone radius of the QAxisSetting instance to \a deadZoneRadius.
152 */
153void QAxisSetting::setDeadZoneRadius(float deadZoneRadius)
154{
155 Q_D(QAxisSetting);
156 if (d->m_deadZoneRadius == deadZoneRadius)
157 return;
158
159 d->m_deadZoneRadius = deadZoneRadius;
160 emit deadZoneRadiusChanged(deadZoneRadius);
161}
162
163/*!
164 \fn Qt3DInput::QAxisSetting::axesChanged(const QVector<int> &axes)
165
166 This signal is emitted when the axes associated with the axis setting is changed to \a axes.
167*/
168
169/*!
170 \qmlproperty QVariantList Qt3D.Input::AxisSetting::axis
171
172 The current axis of the AxisSetting
173*/
174
175/*!
176 \qmlsignal Qt3D.Input::AxisSetting::axisChanged()
177
178 This signal is emitted when the axis associated with the axis setting is changed.
179
180 The corresponding handler is \c onAxisChanged
181*/
182
183/*!
184 Set the current axes of the QAxisSetting instance to \a axes.
185 */
186void QAxisSetting::setAxes(const QVector<int> &axes)
187{
188 Q_D(QAxisSetting);
189 if (d->m_axes == axes)
190 return;
191
192 d->m_axes = axes;
193 emit axesChanged(axes);
194}
195
196/*!
197 \fn Qt3DInput::QAxisSetting::smoothChanged(bool smooth)
198
199 This signal is emitted when the smoothing state is changed to \a smooth.
200*/
201
202/*!
203 \qmlproperty bool Qt3D.Input::AxisSetting::smooth
204
205 The current state of smoothing
206*/
207
208/*!
209 \qmlsignal Qt3D.Input::AxisSetting::smoothChanged()
210
211 This signal is emitted when the when the smoothing state is changed.
212
213 The corresponding handler is \c onSmoothChanged
214*/
215
216/*!
217 Set the current state of the QAxisSettings smoothing to \a enabled.
218 */
219void QAxisSetting::setSmoothEnabled(bool enabled)
220{
221 Q_D(QAxisSetting);
222 if (d->m_smooth == enabled)
223 return;
224
225 d->m_smooth = enabled;
226 emit smoothChanged(smooth: enabled);
227}
228
229Qt3DCore::QNodeCreatedChangeBasePtr QAxisSetting::createNodeCreationChange() const
230{
231 auto creationChange = Qt3DCore::QNodeCreatedChangePtr<QAxisSettingData>::create(arguments: this);
232 auto &data = creationChange->data;
233
234 Q_D(const QAxisSetting);
235 data.deadZoneRadius = d->m_deadZoneRadius;
236 data.axes = d->m_axes;
237 data.smooth = d->m_smooth;
238
239 return creationChange;
240}
241
242} // namespace Qt3DInput
243
244QT_END_NAMESPACE
245

source code of qt3d/src/input/frontend/qaxissetting.cpp