#pragma once #include "backend/boxartmanager.h" #include "backend/computermanager.h" #include "streaming/session.h" #include class AppModel : public QAbstractListModel { Q_OBJECT enum Roles { NameRole = Qt::UserRole, RunningRole, BoxArtRole, HiddenRole, AppIdRole, }; public: explicit AppModel(QObject *parent = nullptr); // Must be called before any QAbstractListModel functions Q_INVOKABLE void initialize(ComputerManager* computerManager, int computerIndex, bool showHiddenGames); Q_INVOKABLE Session* createSessionForApp(int appIndex); Q_INVOKABLE int getRunningAppId(); Q_INVOKABLE QString getRunningAppName(); Q_INVOKABLE void quitRunningApp(); Q_INVOKABLE void setAppHidden(int appIndex, bool hidden); QVariant data(const QModelIndex &index, int role) const override; int rowCount(const QModelIndex &parent) const override; virtual QHash roleNames() const override; private slots: void handleComputerStateChanged(NvComputer* computer); void handleBoxArtLoaded(NvComputer* computer, NvApp app, QUrl image); signals: void computerLost(); private: void updateAppList(QVector newList); QVector getVisibleApps(const QVector& appList); NvComputer* m_Computer; BoxArtManager m_BoxArtManager; ComputerManager* m_ComputerManager; QVector m_VisibleApps, m_AllApps; int m_CurrentGameId; bool m_ShowHiddenGames; };