mirror of
https://github.com/moonlight-stream/moonlight-qt
synced 2024-11-13 06:57:11 +00:00
52 lines
1.3 KiB
C++
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;
|
|
};
|