moonlight-qt/app/gui/computermodel.h

52 lines
1.3 KiB
C++

#include "backend/computermanager.h"
#include "streaming/session.hpp"
#include <QAbstractListModel>
class ComputerModel : public QAbstractListModel
{
Q_OBJECT
enum Roles
{
NameRole = Qt::UserRole,
OnlineRole,
PairedRole,
BusyRole,
WakeableRole,
StatusUnknownRole,
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<int, QByteArray> 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<NvComputer*> m_Computers;
ComputerManager* m_ComputerManager;
};