17#ifndef WORKSPACEMODEL_H
18#define WORKSPACEMODEL_H
20#include <QAbstractListModel>
21#include <QLoggingCategory>
24Q_DECLARE_LOGGING_CATEGORY(WORKSPACES)
27class ProxyWorkspaceModel;
30class WorkspaceModel :
public QAbstractListModel
33 Q_PROPERTY(
int count READ rowCount NOTIFY countChanged)
41 WorkspaceRole = Qt::UserRole
44 explicit WorkspaceModel(QObject *parent = 0);
47 void append(Workspace *workspace);
48 void insert(
int index, Workspace *workspace);
49 void remove(Workspace* workspace);
50 virtual void move(
int from,
int to);
52 Q_INVOKABLE
int indexOf(Workspace *workspace)
const;
53 Q_INVOKABLE Workspace* get(
int index)
const;
56 int rowCount(
const QModelIndex &parent = QModelIndex())
const override;
57 QVariant data(
const QModelIndex& index,
int role)
const override;
58 QHash<int, QByteArray> roleNames()
const override {
59 QHash<int, QByteArray> roleNames { {WorkspaceRole,
"workspace"} };
63 const QVector<Workspace*>& list()
const {
return m_workspaces; }
65 void sync(WorkspaceModel* proxy);
71 void workspaceInserted(
int index, Workspace *workspace);
72 void workspaceRemoved(Workspace *workspace);
73 void workspaceMoved(
int from,
int to);
76 void insertUnassigned(Workspace* workspace);
78 QVector<Workspace*> m_workspaces;
79 QSet<Workspace*> m_unassignedWorkspaces;
81 friend class ProxyWorkspaceModel;
84class ProxyWorkspaceModel :
public WorkspaceModel
88 explicit ProxyWorkspaceModel(WorkspaceModel*
const model, ProxyScreen* screen);
90 Q_INVOKABLE
void move(
int from,
int to)
override;
92 bool isSyncing()
const;
98 const QPointer<WorkspaceModel> m_original;
99 const ProxyScreen* m_screen;