mirror of
https://invent.kde.org/marcoa/a-la-karte.git
synced 2026-02-09 21:13:08 +00:00
55 lines
1.3 KiB
C
55 lines
1.3 KiB
C
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||
|
|
// SPDX-FileCopyrightText: 2026 A-La-Karte Contributors
|
||
|
|
|
||
|
|
#pragma once
|
||
|
|
|
||
|
|
#include <QObject>
|
||
|
|
#include <QQmlEngine>
|
||
|
|
|
||
|
|
class QEvent;
|
||
|
|
class QJSEngine;
|
||
|
|
|
||
|
|
class InputManager : public QObject
|
||
|
|
{
|
||
|
|
Q_OBJECT
|
||
|
|
QML_ELEMENT
|
||
|
|
QML_SINGLETON
|
||
|
|
|
||
|
|
Q_PROPERTY(ActiveInput activeInput READ activeInput NOTIFY activeInputChanged)
|
||
|
|
Q_PROPERTY(bool hasSeenKeyboardMouse READ hasSeenKeyboardMouse NOTIFY inputHistoryChanged)
|
||
|
|
Q_PROPERTY(bool hasSeenGamepad READ hasSeenGamepad NOTIFY inputHistoryChanged)
|
||
|
|
|
||
|
|
public:
|
||
|
|
enum ActiveInput {
|
||
|
|
KeyboardMouse = 0,
|
||
|
|
Gamepad = 1,
|
||
|
|
};
|
||
|
|
Q_ENUM(ActiveInput)
|
||
|
|
|
||
|
|
static InputManager *instance();
|
||
|
|
static InputManager *create(QQmlEngine *engine, QJSEngine *scriptEngine);
|
||
|
|
|
||
|
|
ActiveInput activeInput() const;
|
||
|
|
|
||
|
|
bool hasSeenKeyboardMouse() const;
|
||
|
|
bool hasSeenGamepad() const;
|
||
|
|
|
||
|
|
Q_SIGNALS:
|
||
|
|
void activeInputChanged();
|
||
|
|
void inputHistoryChanged();
|
||
|
|
|
||
|
|
protected:
|
||
|
|
bool eventFilter(QObject *watched, QEvent *event) override;
|
||
|
|
|
||
|
|
private:
|
||
|
|
explicit InputManager(QObject *parent = nullptr);
|
||
|
|
|
||
|
|
static InputManager *s_instance;
|
||
|
|
|
||
|
|
ActiveInput m_activeInput = KeyboardMouse;
|
||
|
|
bool m_hasSeenKeyboardMouse = false;
|
||
|
|
bool m_hasSeenGamepad = false;
|
||
|
|
|
||
|
|
void setActiveInput(ActiveInput input);
|
||
|
|
};
|