22#include <QRegularExpression>
23#include <QRegularExpressionMatch>
26#include "moc_qgsinputcontrollermanager.cpp"
28using namespace Qt::StringLiterals;
33#include <QtGamepad/QGamepadManager>
47 qDeleteAll( m2DMapControllers );
48 qDeleteAll( m3DMapControllers );
56 if ( m2DMapControllers.contains( controller->
deviceId() ) )
62 m2DMapControllers.insert( controller->
deviceId(), controller );
71 if ( m3DMapControllers.contains( controller->
deviceId() ) )
77 m3DMapControllers.insert( controller->
deviceId(), controller );
83 QStringList devices = m2DMapControllers.keys();
86 const QList<int> gamepadIds = QGamepadManager::instance()->connectedGamepads();
87 for (
int id : gamepadIds )
89 devices.append( u
"gamepad2d:%1"_s.arg(
id ) );
99 const thread_local QRegularExpression gamepadRx( u
"^gamepad2d:(\\d+)$"_s );
100 const QRegularExpressionMatch gamepadMatch = gamepadRx.match( deviceId );
101 if ( gamepadMatch.hasMatch() )
103 const int gamepadId = gamepadMatch.captured( 1 ).toInt();
104 return new QgsGamepad2DMapController( gamepadId );
108 auto it = m2DMapControllers.constFind( deviceId );
109 if ( it == m2DMapControllers.constEnd() )
112 return qgis::down_cast<QgsAbstract2DMapController *>( it.value()->clone() );
117 QStringList devices = m3DMapControllers.keys();
120 const QList<int> gamepadIds = QGamepadManager::instance()->connectedGamepads();
121 for (
int id : gamepadIds )
123 devices.append( u
"gamepad3d:%1"_s.arg(
id ) );
133 const thread_local QRegularExpression gamepadRx( u
"^gamepad3d:(\\d+)$"_s );
134 const QRegularExpressionMatch gamepadMatch = gamepadRx.match( deviceId );
135 if ( gamepadMatch.hasMatch() )
137 const int gamepadId = gamepadMatch.captured( 1 ).toInt();
138 return new QgsGamepad3DMapController( gamepadId );
142 auto it = m3DMapControllers.constFind( deviceId );
143 if ( it == m3DMapControllers.constEnd() )
146 return qgis::down_cast<QgsAbstract3DMapController *>( it.value()->clone() );
Abstract base class for all 2D map controllers.
Abstract base class for all 3D map controllers.