17#ifndef WINDOWMANAGER_WORKSPACE_H
18#define WINDOWMANAGER_WORKSPACE_H
23#include <QSharedPointer>
28#include "WindowManagerGlobal.h"
34namespace miral {
class Workspace; }
38 namespace application {
39 class MirSurfaceInterface;
44class WINDOWMANAGERQML_EXPORT Workspace :
public QObject
47 Q_PROPERTY(
bool active READ isActive NOTIFY activeChanged)
52 virtual void assign(WorkspaceModel* model,
const QVariant& index = QVariant());
53 virtual void unassign();
55 virtual bool isActive()
const = 0;
57 virtual void setCurrentOn(Screen*) = 0;
59 std::shared_ptr<miral::Workspace> workspace()
const {
return m_workspace; }
60 bool isAssigned()
const;
61 Q_INVOKABLE
bool isSameAs(Workspace*)
const;
64 virtual void activate() = 0;
70 void activeChanged(
bool);
73 Workspace(QObject *parent =
nullptr);
74 Workspace(Workspace
const& other);
76 std::shared_ptr<miral::Workspace> m_workspace;
77 WorkspaceModel* m_model;
80class WINDOWMANAGERQML_EXPORT ConcreteWorkspace :
public Workspace
85 bool isActive()
const override {
return m_active; }
87 void activate()
override;
88 void setCurrentOn(Screen*)
override;
91 explicit ConcreteWorkspace(QObject *parent =
nullptr);
94 const QScopedPointer<TopLevelWindowModel> m_windowModel;
96 friend class WorkspaceManager;
99class ProxyWorkspace :
public Workspace
103 explicit ProxyWorkspace(Workspace*
const workspace);
104 ~ProxyWorkspace() =
default;
106 Q_INVOKABLE
void assign(WorkspaceModel* model,
const QVariant& index = QVariant())
override;
108 bool isActive()
const override;
110 void activate()
override;
111 void setCurrentOn(Screen*)
override;
113 Workspace* proxyObject()
const {
return m_original.data(); }
116 void unassign()
override;
119 const QPointer<Workspace> m_original;
A model of top-level surfaces.