17 #ifndef TOPLEVELSURFACELIST_H 18 #define TOPLEVELSURFACELIST_H 20 #include <QAbstractListModel> 22 #include <QLoggingCategory> 24 Q_DECLARE_LOGGING_CATEGORY(UNITY_TOPSURFACELIST)
28 namespace application {
29 class ApplicationInfoInterface;
30 class MirSurfaceInterface;
57 Q_PROPERTY(QAbstractListModel* applicationsModel READ applicationsModel
58 WRITE setApplicationsModel
59 NOTIFY applicationsModelChanged)
66 Q_PROPERTY(
int count READ rowCount NOTIFY countChanged)
72 Q_PROPERTY(
int nextId READ nextId NOTIFY nextIdChanged)
83 SurfaceRole = Qt::UserRole,
84 ApplicationRole = Qt::UserRole + 1,
85 IdRole = Qt::UserRole + 2,
92 int rowCount(
const QModelIndex &parent = QModelIndex())
const override;
93 QVariant data(
const QModelIndex& index,
int role)
const override;
94 QHash<int, QByteArray> roleNames()
const override {
95 QHash<int, QByteArray> roleNames { {SurfaceRole,
"surface"},
96 {ApplicationRole,
"application"},
101 int nextId()
const {
return m_nextId; }
103 QAbstractListModel *applicationsModel()
const;
104 void setApplicationsModel(QAbstractListModel*);
113 unity::shell::application::MirSurfaceInterface *surfaceAt(
int index)
const;
118 unity::shell::application::ApplicationInfoInterface *applicationAt(
int index)
const;
123 int idAt(
int index)
const;
130 int indexForId(
int id)
const;
135 void raiseId(
int id);
137 void doRaiseId(
int id);
149 void nextIdChanged();
151 void applicationsModelChanged();
154 void addApplication(unity::shell::application::ApplicationInfoInterface *application);
155 void removeApplication(unity::shell::application::ApplicationInfoInterface *application);
157 int indexOf(unity::shell::application::MirSurfaceInterface *surface);
158 void raise(unity::shell::application::MirSurfaceInterface *surface);
159 void move(
int from,
int to);
160 void appendSurfaceHelper(unity::shell::application::MirSurfaceInterface *surface,
161 unity::shell::application::ApplicationInfoInterface *application);
162 void connectSurface(unity::shell::application::MirSurfaceInterface *surface);
164 int nextFreeId(
int candidateId);
166 void onSurfaceDestroyed(unity::shell::application::MirSurfaceInterface *surface);
167 void onSurfaceDied(unity::shell::application::MirSurfaceInterface *surface);
168 void removeAt(
int index);
169 void findApplicationRole();
171 unity::shell::application::ApplicationInfoInterface *getApplicationFromModelAt(
int index);
180 void appendPlaceholder(unity::shell::application::ApplicationInfoInterface *application);
188 void appendSurface(unity::shell::application::MirSurfaceInterface *surface,
189 unity::shell::application::ApplicationInfoInterface *application);
192 ModelEntry(unity::shell::application::MirSurfaceInterface *surface, unity::shell::application::ApplicationInfoInterface *application,
int id)
193 : surface(surface), application(application), id(
id) {}
194 unity::shell::application::MirSurfaceInterface *surface;
195 unity::shell::application::ApplicationInfoInterface *application;
197 bool removeOnceSurfaceDestroyed{
false};
200 QList<ModelEntry> m_surfaceList;
202 static const int m_maxId{1000000};
205 QList<unity::shell::application::ApplicationInfoInterface *> m_applications;
207 QAbstractListModel* m_applicationsModel{
nullptr};
208 int m_applicationRole{-1};
217 ModelState m_modelState{IdleState};
221 Q_DECLARE_METATYPE(QAbstractListModel*)
223 #endif // TOPLEVELSURFACELIST_H Roles
The Roles supported by the model.
A model of top-level surfaces.