/* SPDX-FileCopyrightText: 2023 Joshua Goins SPDX-FileCopyrightText: 2023 Jeremy Whiting SPDX-FileCopyrightText: 2023 Niccolò Venerandi SPDX-License-Identifier: GPL-2.0-or-later */ #pragma once #include #include #include class QTimer; class Gamepad; class DeviceModel : public QAbstractListModel { Q_OBJECT Q_PROPERTY(int count READ count NOTIFY devicesChanged) public: DeviceModel(); virtual ~DeviceModel(); Q_INVOKABLE Gamepad *device(int index) const; int rowCount(const QModelIndex &parent) const override; QVariant data(const QModelIndex &index, int role) const override; int count() const; Q_SIGNALS: void devicesChanged(); private Q_SLOTS: void poll(); private: void addDevice(const int deviceIndex); void removeDevice(const int deviceIndex); // Map of sdl indexes to Gamepad devices QMap m_devices; QPointer m_timer; };