QGIS API Documentation 3.99.0-Master (d270888f95f)
Loading...
Searching...
No Matches
qgs2dgamepadcontroller.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgs2dgamepadcontroller.cpp
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
17
18#include <QString>
19
20using namespace Qt::StringLiterals;
21
22#ifdef HAVE_QTGAMEPAD
23#include "moc_qgs2dgamepadcontroller.cpp"
24
25#include <QtGamepad/QGamepad>
26
27QgsGamepad2DMapController::QgsGamepad2DMapController( int gamepadDeviceId, QObject *parent )
29 , mGamepadDeviceId( gamepadDeviceId )
30{
31 mGamepad = new QGamepad( gamepadDeviceId, this );
32
33 // proxy raw signals for interested PyQGIS
34 connect( mGamepad, &QGamepad::connectedChanged, this, &QgsGamepad2DMapController::connectedChanged );
35 connect( mGamepad, &QGamepad::axisLeftXChanged, this, &QgsGamepad2DMapController::axisLeftXChanged );
36 connect( mGamepad, &QGamepad::axisLeftYChanged, this, &QgsGamepad2DMapController::axisLeftYChanged );
37 connect( mGamepad, &QGamepad::axisRightXChanged, this, &QgsGamepad2DMapController::axisRightXChanged );
38 connect( mGamepad, &QGamepad::axisRightYChanged, this, &QgsGamepad2DMapController::axisRightYChanged );
39 connect( mGamepad, &QGamepad::buttonAChanged, this, &QgsGamepad2DMapController::buttonAChanged );
40 connect( mGamepad, &QGamepad::buttonBChanged, this, &QgsGamepad2DMapController::buttonBChanged );
41 connect( mGamepad, &QGamepad::buttonXChanged, this, &QgsGamepad2DMapController::buttonXChanged );
42 connect( mGamepad, &QGamepad::buttonYChanged, this, &QgsGamepad2DMapController::buttonYChanged );
43 connect( mGamepad, &QGamepad::buttonL1Changed, this, &QgsGamepad2DMapController::buttonL1Changed );
44 connect( mGamepad, &QGamepad::buttonR1Changed, this, &QgsGamepad2DMapController::buttonR1Changed );
45 connect( mGamepad, &QGamepad::buttonL2Changed, this, &QgsGamepad2DMapController::buttonL2Changed );
46 connect( mGamepad, &QGamepad::buttonR2Changed, this, &QgsGamepad2DMapController::buttonR2Changed );
47 connect( mGamepad, &QGamepad::buttonSelectChanged, this, &QgsGamepad2DMapController::buttonSelectChanged );
48 connect( mGamepad, &QGamepad::buttonStartChanged, this, &QgsGamepad2DMapController::buttonStartChanged );
49 connect( mGamepad, &QGamepad::buttonL3Changed, this, &QgsGamepad2DMapController::buttonL3Changed );
50 connect( mGamepad, &QGamepad::buttonR3Changed, this, &QgsGamepad2DMapController::buttonR3Changed );
51 connect( mGamepad, &QGamepad::buttonUpChanged, this, &QgsGamepad2DMapController::buttonUpChanged );
52 connect( mGamepad, &QGamepad::buttonDownChanged, this, &QgsGamepad2DMapController::buttonDownChanged );
53 connect( mGamepad, &QGamepad::buttonLeftChanged, this, &QgsGamepad2DMapController::buttonLeftChanged );
54 connect( mGamepad, &QGamepad::buttonRightChanged, this, &QgsGamepad2DMapController::buttonRightChanged );
55 connect( mGamepad, &QGamepad::buttonCenterChanged, this, &QgsGamepad2DMapController::buttonCenterChanged );
56 connect( mGamepad, &QGamepad::buttonGuideChanged, this, &QgsGamepad2DMapController::buttonGuideChanged );
57
58 // also here we would make connections to the 2D map controller signals like zoomMap, depending on some
59 // reasonable defaults and user defined QSettings
60#if 0
61 connect( mGamepad, &QGamepad::axisRightYChanged, this, []( double value )
62 {
63 // actually should be on a timer ;)
64 emit zoomMap( value + 1 );
65 } );
66#endif
67}
68
69QgsGamepad2DMapController *QgsGamepad2DMapController::clone() const
70{
71 return new QgsGamepad2DMapController( mGamepadDeviceId );
72}
73
74QString QgsGamepad2DMapController::deviceId() const
75{
76 return u"gamepad2d:%1"_s.arg( mGamepadDeviceId );
77}
78
79bool QgsGamepad2DMapController::isConnected() const
80{
81 return mGamepad->isConnected();
82}
83
84QString QgsGamepad2DMapController::name() const
85{
86 return mGamepad->name();
87}
88
89double QgsGamepad2DMapController::axisLeftX() const
90{
91 return mGamepad->axisLeftX();
92}
93
94double QgsGamepad2DMapController::axisLeftY() const
95{
96 return mGamepad->axisLeftY();
97}
98
99double QgsGamepad2DMapController::axisRightX() const
100{
101 return mGamepad->axisRightX();
102}
103
104double QgsGamepad2DMapController::axisRightY() const
105{
106 return mGamepad->axisRightY();
107}
108
109bool QgsGamepad2DMapController::buttonA() const
110{
111 return mGamepad->buttonA();
112}
113
114bool QgsGamepad2DMapController::buttonB() const
115{
116 return mGamepad->buttonB();
117}
118
119bool QgsGamepad2DMapController::buttonX() const
120{
121 return mGamepad->buttonX();
122}
123
124bool QgsGamepad2DMapController::buttonY() const
125{
126 return mGamepad->buttonY();
127}
128
129bool QgsGamepad2DMapController::buttonL1() const
130{
131 return mGamepad->buttonL1();
132}
133
134bool QgsGamepad2DMapController::buttonR1() const
135{
136 return mGamepad->buttonR1();
137}
138
139double QgsGamepad2DMapController::buttonL2() const
140{
141 return mGamepad->buttonL2();
142}
143
144double QgsGamepad2DMapController::buttonR2() const
145{
146 return mGamepad->buttonR2();
147}
148
149bool QgsGamepad2DMapController::buttonSelect() const
150{
151 return mGamepad->buttonSelect();
152}
153
154bool QgsGamepad2DMapController::buttonStart() const
155{
156 return mGamepad->buttonStart();
157}
158
159bool QgsGamepad2DMapController::buttonL3() const
160{
161 return mGamepad->buttonL3();
162}
163
164bool QgsGamepad2DMapController::buttonR3() const
165{
166 return mGamepad->buttonR3();
167}
168
169bool QgsGamepad2DMapController::buttonUp() const
170{
171 return mGamepad->buttonUp();
172}
173
174bool QgsGamepad2DMapController::buttonDown() const
175{
176 return mGamepad->buttonDown();
177}
178
179bool QgsGamepad2DMapController::buttonLeft() const
180{
181 return mGamepad->buttonLeft();
182}
183
184bool QgsGamepad2DMapController::buttonRight() const
185{
186 return mGamepad->buttonRight();
187}
188
189bool QgsGamepad2DMapController::buttonCenter() const
190{
191 return mGamepad->buttonCenter();
192}
193
194bool QgsGamepad2DMapController::buttonGuide() const
195{
196 return mGamepad->buttonGuide();
197}
198
199#endif
Abstract base class for all 2D map controllers.