22#include <QRegularExpression>
23#include <QRegularExpressionMatch>
25#include "moc_qgsinputcontrollermanager.cpp"
30#include <QtGamepad/QGamepadManager>
44 qDeleteAll( m2DMapControllers );
45 qDeleteAll( m3DMapControllers );
53 if ( m2DMapControllers.contains( controller->
deviceId() ) )
59 m2DMapControllers.insert( controller->
deviceId(), controller );
68 if ( m3DMapControllers.contains( controller->
deviceId() ) )
74 m3DMapControllers.insert( controller->
deviceId(), controller );
80 QStringList devices = m2DMapControllers.keys();
83 const QList<int> gamepadIds = QGamepadManager::instance()->connectedGamepads();
84 for (
int id : gamepadIds )
86 devices.append( QStringLiteral(
"gamepad2d:%1" ).arg(
id ) );
96 const thread_local QRegularExpression gamepadRx( QStringLiteral(
"^gamepad2d:(\\d+)$" ) );
97 const QRegularExpressionMatch gamepadMatch = gamepadRx.match( deviceId );
98 if ( gamepadMatch.hasMatch() )
100 const int gamepadId = gamepadMatch.captured( 1 ).toInt();
101 return new QgsGamepad2DMapController( gamepadId );
105 auto it = m2DMapControllers.constFind( deviceId );
106 if ( it == m2DMapControllers.constEnd() )
109 return qgis::down_cast<QgsAbstract2DMapController *>( it.value()->clone() );
114 QStringList devices = m3DMapControllers.keys();
117 const QList<int> gamepadIds = QGamepadManager::instance()->connectedGamepads();
118 for (
int id : gamepadIds )
120 devices.append( QStringLiteral(
"gamepad3d:%1" ).arg(
id ) );
130 const thread_local QRegularExpression gamepadRx( QStringLiteral(
"^gamepad3d:(\\d+)$" ) );
131 const QRegularExpressionMatch gamepadMatch = gamepadRx.match( deviceId );
132 if ( gamepadMatch.hasMatch() )
134 const int gamepadId = gamepadMatch.captured( 1 ).toInt();
135 return new QgsGamepad3DMapController( gamepadId );
139 auto it = m3DMapControllers.constFind( deviceId );
140 if ( it == m3DMapControllers.constEnd() )
143 return qgis::down_cast<QgsAbstract3DMapController *>( it.value()->clone() );
Abstract base class for all 2D map controllers.
Abstract base class for all 3D map controllers.