QGIS API Documentation 3.99.0-Master (2fe06baccd8)
Loading...
Searching...
No Matches
qgs2dgamepadcontroller.h
Go to the documentation of this file.
1/***************************************************************************
2 qgs2dgamepadcontroller.h
3 ---------------------
4 begin : March 2023
5 copyright : (C) 2023 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#ifndef QGS2DGAMEPADCONTROLLER_H
17#define QGS2DGAMEPADCONTROLLER_H
18
19#include "qgsconfig.h"
20
21#include "qgis_sip.h"
22
23SIP_IF_MODULE( HAVE_QTGAMEPAD )
24
25#ifdef HAVE_QTGAMEPAD
26
27#include "qgis_gui.h"
28#include "qgis.h"
29#include "qgs2dmapcontroller.h"
30
31#include <QPointer>
32
33#ifdef SIP_RUN
34// this is needed for the "convert to subclass" code below to compile
35//%ModuleHeaderCode
37//%End
38#endif
39
40class QGamepad;
41
42
50class GUI_EXPORT QgsGamepad2DMapController : public QgsAbstract2DMapController
51{
52 Q_OBJECT
53
54#ifdef SIP_RUN
56 if ( qobject_cast<QgsGamepad2DMapController *>( sipCpp ) )
57
58 sipType = sipType_QgsGamepad2DMapController;
59 else
60 sipType = nullptr;
62#endif
63
64 public:
68 QgsGamepad2DMapController( int gamepadDeviceId, QObject *parent SIP_TRANSFERTHIS = nullptr );
69
70 QgsGamepad2DMapController *clone() const override SIP_FACTORY;
71 QString deviceId() const override;
72
73 // proxy QGamepad signals and properties here, as QGamepad isn't accessible from Python.
74 // Ideally we would share these with QgsGamepad3DMapController, but that would create a diamond
75 // inheritance
76
80 bool isConnected() const;
81
85 QString name() const;
86
90 double axisLeftX() const;
91
95 double axisLeftY() const;
96
100 double axisRightX() const;
101
105 double axisRightY() const;
106
110 bool buttonA() const;
111
115 bool buttonB() const;
116
120 bool buttonX() const;
121
125 bool buttonY() const;
126
130 bool buttonL1() const;
131
135 bool buttonR1() const;
136
140 double buttonL2() const;
141
145 double buttonR2() const;
146
152 bool buttonSelect() const;
153
159 bool buttonStart() const;
160
166 bool buttonL3() const;
167
173 bool buttonR3() const;
174
178 bool buttonUp() const;
179
183 bool buttonDown() const;
184
188 bool buttonLeft() const;
189
193 bool buttonRight() const;
194
198 bool buttonCenter() const;
199
205 bool buttonGuide() const;
206
207 signals:
208
212 void connectedChanged( bool value );
213
219 void axisLeftXChanged( double value );
220
226 void axisLeftYChanged( double value );
227
233 void axisRightXChanged( double value );
234
240 void axisRightYChanged( double value );
241
247 void buttonAChanged( bool value );
248
254 void buttonBChanged( bool value );
255
261 void buttonXChanged( bool value );
262
268 void buttonYChanged( bool value );
269
275 void buttonL1Changed( bool value );
276
282 void buttonR1Changed( bool value );
283
289 void buttonL2Changed( double value );
290
296 void buttonR2Changed( double value );
297
303 void buttonSelectChanged( bool value );
304
310 void buttonStartChanged( bool value );
311
317 void buttonL3Changed( bool value );
318
324 void buttonR3Changed( bool value );
325
331 void buttonUpChanged( bool value );
332
338 void buttonDownChanged( bool value );
339
345 void buttonLeftChanged( bool value );
346
352 void buttonRightChanged( bool value );
353
359 void buttonCenterChanged( bool value );
360
366 void buttonGuideChanged( bool value );
367
368 private:
369 int mGamepadDeviceId = -1;
370 QPointer<QGamepad> mGamepad;
371};
372
373#endif
374
375#endif // QGS2DGAMEPADCONTROLLER_H
Abstract base class for all 2D map controllers.
virtual QgsAbstractInputController * clone() const =0
Returns a new copy of the controller.
#define SIP_CONVERT_TO_SUBCLASS_CODE(code)
Definition qgis_sip.h:199
#define SIP_IF_MODULE(condition)
Definition qgis_sip.h:28
#define SIP_TRANSFERTHIS
Definition qgis_sip.h:53
#define SIP_FACTORY
Definition qgis_sip.h:84
#define SIP_END
Definition qgis_sip.h:216