mirror of
https://git.sr.ht/~thestr4ng3r/chiaki
synced 2025-03-12 05:25:23 -07:00
82 lines
1.4 KiB
C++
82 lines
1.4 KiB
C++
// SPDX-License-Identifier: LicenseRef-GPL-3.0-or-later-OpenSSL
|
|
|
|
#ifndef CHIAKI_LOG_SNIFFER_H
|
|
#define CHIAKI_LOG_SNIFFER_H
|
|
|
|
#include <chiaki/controller.h>
|
|
|
|
#include <QObject>
|
|
#include <QSet>
|
|
#include <QMap>
|
|
#include <QString>
|
|
|
|
#ifdef CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER
|
|
#include <SDL.h>
|
|
#endif
|
|
|
|
class Controller;
|
|
|
|
class ControllerManager : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
friend class Controller;
|
|
|
|
private:
|
|
#ifdef CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER
|
|
QSet<SDL_JoystickID> available_controllers;
|
|
#endif
|
|
QMap<int, Controller *> open_controllers;
|
|
|
|
void ControllerClosed(Controller *controller);
|
|
|
|
private slots:
|
|
void UpdateAvailableControllers();
|
|
void HandleEvents();
|
|
void ControllerEvent(int device_id);
|
|
|
|
public:
|
|
static ControllerManager *GetInstance();
|
|
|
|
ControllerManager(QObject *parent = nullptr);
|
|
~ControllerManager();
|
|
|
|
QSet<int> GetAvailableControllers();
|
|
Controller *OpenController(int device_id);
|
|
|
|
signals:
|
|
void AvailableControllersUpdated();
|
|
};
|
|
|
|
class Controller : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
friend class ControllerManager;
|
|
|
|
private:
|
|
Controller(int device_id, ControllerManager *manager);
|
|
|
|
void UpdateState();
|
|
|
|
ControllerManager *manager;
|
|
int id;
|
|
|
|
#ifdef CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER
|
|
SDL_GameController *controller;
|
|
#endif
|
|
|
|
public:
|
|
~Controller();
|
|
|
|
bool IsConnected();
|
|
int GetDeviceID();
|
|
QString GetName();
|
|
ChiakiControllerState GetState();
|
|
|
|
signals:
|
|
void StateChanged();
|
|
};
|
|
|
|
#endif // CHIAKI_CONTROLLERMANAGER_H
|