#pragma once #include "WindowTypes.hpp" #include #include #include class WorkspaceModel : public QAbstractListModel { Q_OBJECT QML_ELEMENT QML_UNCREATABLE("Obtained from WindowService") Q_PROPERTY(int count READ count NOTIFY countChanged) public: enum Roles { WorkspaceIdRole = Qt::UserRole + 1, NameRole, NumberRole, FocusedRole, VisibleRole, OutputRole, WindowCountRole }; Q_ENUM(Roles) explicit WorkspaceModel(QObject *parent = nullptr); int rowCount(const QModelIndex &parent = QModelIndex()) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; QHash roleNames() const override; int count() const; void setWorkspaces(QVector workspaces); const WorkspaceInfo *workspaceAt(int row) const; const WorkspaceInfo *focusedWorkspace() const; const WorkspaceInfo *workspaceByName(const QString &name) const; signals: void countChanged(); private: QVector m_workspaces; };