chiaki/gui/include/logsniffer.h
2020-12-28 16:43:11 +01:00

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