2018-07-04 16:40:21 -07:00
|
|
|
#include "backend/computermanager.h"
|
2018-09-29 16:18:46 -07:00
|
|
|
#include "streaming/session.h"
|
2018-07-04 16:40:21 -07:00
|
|
|
|
|
|
|
#include <QAbstractListModel>
|
|
|
|
|
|
|
|
class ComputerModel : public QAbstractListModel
|
|
|
|
{
|
2018-07-05 20:11:35 -07:00
|
|
|
Q_OBJECT
|
|
|
|
|
2018-07-04 16:40:21 -07:00
|
|
|
enum Roles
|
|
|
|
{
|
|
|
|
NameRole = Qt::UserRole,
|
|
|
|
OnlineRole,
|
|
|
|
PairedRole,
|
|
|
|
BusyRole,
|
2018-07-31 22:10:38 -07:00
|
|
|
WakeableRole,
|
2019-03-26 21:31:51 -07:00
|
|
|
StatusUnknownRole
|
2018-07-04 16:40:21 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
public:
|
2018-07-05 20:11:35 -07:00
|
|
|
explicit ComputerModel(QObject* object = nullptr);
|
2018-07-04 16:40:21 -07:00
|
|
|
|
2018-07-05 22:08:55 -07:00
|
|
|
// Must be called before any QAbstractListModel functions
|
|
|
|
Q_INVOKABLE void initialize(ComputerManager* computerManager);
|
|
|
|
|
2018-07-04 16:40:21 -07:00
|
|
|
QVariant data(const QModelIndex &index, int role) const override;
|
|
|
|
|
|
|
|
int rowCount(const QModelIndex &parent) const override;
|
|
|
|
|
|
|
|
virtual QHash<int, QByteArray> roleNames() const override;
|
|
|
|
|
2018-07-05 22:08:55 -07:00
|
|
|
Q_INVOKABLE void deleteComputer(int computerIndex);
|
|
|
|
|
2018-07-05 23:12:55 -07:00
|
|
|
Q_INVOKABLE void pairComputer(int computerIndex, QString pin);
|
|
|
|
|
2018-09-05 16:10:32 -07:00
|
|
|
Q_INVOKABLE void wakeComputer(int computerIndex);
|
2018-07-06 00:34:16 -07:00
|
|
|
|
2018-07-07 16:30:26 -07:00
|
|
|
Q_INVOKABLE Session* createSessionForCurrentGame(int computerIndex);
|
|
|
|
|
2018-07-05 23:12:55 -07:00
|
|
|
signals:
|
|
|
|
void pairingCompleted(QVariant error);
|
|
|
|
|
2018-07-04 16:40:21 -07:00
|
|
|
private slots:
|
|
|
|
void handleComputerStateChanged(NvComputer* computer);
|
|
|
|
|
2018-07-05 23:12:55 -07:00
|
|
|
void handlePairingCompleted(NvComputer* computer, QString error);
|
|
|
|
|
2018-07-04 16:40:21 -07:00
|
|
|
private:
|
|
|
|
QVector<NvComputer*> m_Computers;
|
2018-07-05 22:08:55 -07:00
|
|
|
ComputerManager* m_ComputerManager;
|
2018-07-04 16:40:21 -07:00
|
|
|
};
|