#include "backend/computermanager.h" #include "streaming/session.hpp" #include class ComputerModel : public QAbstractListModel { Q_OBJECT enum Roles { NameRole = Qt::UserRole, OnlineRole, PairedRole, BusyRole, AddPcRole }; public: explicit ComputerModel(QObject* object = nullptr); // Must be called before any QAbstractListModel functions Q_INVOKABLE void initialize(ComputerManager* computerManager); QVariant data(const QModelIndex &index, int role) const override; int rowCount(const QModelIndex &parent) const override; virtual QHash roleNames() const override; Q_INVOKABLE void deleteComputer(int computerIndex); Q_INVOKABLE void pairComputer(int computerIndex, QString pin); Q_INVOKABLE bool wakeComputer(int computerIndex); Q_INVOKABLE Session* createSessionForCurrentGame(int computerIndex); signals: void pairingCompleted(QVariant error); private slots: void handleComputerStateChanged(NvComputer* computer); void handlePairingCompleted(NvComputer* computer, QString error); private: QVector m_Computers; ComputerManager* m_ComputerManager; };