20 #include <qtmir/screen.h>
21 #include <QScopedPointer>
24 #include "WorkspaceModel.h"
30 class Screen:
public QObject
34 Q_PROPERTY(
bool active READ isActive WRITE setActive NOTIFY activeChanged)
35 Q_PROPERTY(
bool used READ used NOTIFY usedChanged)
36 Q_PROPERTY(QString name READ name NOTIFY nameChanged)
37 Q_PROPERTY(qtmir::OutputTypes outputType READ outputType NOTIFY outputTypeChanged)
38 Q_PROPERTY(
float scale READ scale NOTIFY scaleChanged)
39 Q_PROPERTY(qtmir::FormFactor formFactor READ formFactor NOTIFY formFactorChanged)
40 Q_PROPERTY(MirPowerMode powerMode READ powerMode NOTIFY powerModeChanged)
41 Q_PROPERTY(Qt::ScreenOrientation orientation READ orientation NOTIFY orientationChanged)
42 Q_PROPERTY(QPoint position READ position NOTIFY positionChanged)
43 Q_PROPERTY(uint currentModeIndex READ currentModeIndex NOTIFY currentModeIndexChanged)
44 Q_PROPERTY(QQmlListProperty<qtmir::ScreenMode> availableModes READ availableModes NOTIFY availableModesChanged)
45 Q_PROPERTY(QSizeF physicalSize READ physicalSize NOTIFY physicalSizeChanged)
46 Q_PROPERTY(QString outputTypeName READ outputTypeName NOTIFY outputTypeChanged)
47 Q_PROPERTY(WorkspaceModel* workspaces READ workspaces CONSTANT)
48 Q_PROPERTY(Workspace* currentWorkspace READ currentWorkspace WRITE setCurrentWorkspace2 NOTIFY currentWorkspaceChanged)
53 QSizeF physicalSize()
const;
54 qtmir::FormFactor formFactor()
const;
55 qtmir::OutputTypes outputType()
const;
56 MirPowerMode powerMode()
const;
57 Qt::ScreenOrientation orientation()
const;
58 QPoint position()
const;
59 QQmlListProperty<qtmir::ScreenMode> availableModes();
60 uint currentModeIndex()
const;
61 bool isActive()
const;
62 void setActive(
bool active);
63 QScreen* qscreen()
const;
64 QString outputTypeName()
const;
66 Q_INVOKABLE
bool isSameAs(Screen*)
const;
68 Q_INVOKABLE ScreenConfig *beginConfiguration()
const;
69 Q_INVOKABLE
bool applyConfiguration(ScreenConfig *configuration);
71 virtual WorkspaceModel* workspaces()
const = 0;
72 virtual Workspace *currentWorkspace()
const = 0;
73 virtual void setCurrentWorkspace(Workspace* workspace) = 0;
75 void sync(Screen* proxy);
77 qtmir::Screen* wrapped()
const {
return m_wrapped; }
85 void outputTypeChanged();
86 void outputTypeNameChanged();
88 void formFactorChanged();
89 void powerModeChanged();
90 void orientationChanged();
91 void positionChanged();
92 void currentModeIndexChanged();
93 void physicalSizeChanged();
94 void availableModesChanged();
95 void activeChanged(
bool active);
96 void currentWorkspaceChanged(Workspace*);
99 Screen(QObject* parent = 0);
101 void connectToScreen(qtmir::Screen* screen);
102 void connectToScreen(Screen* screen);
105 void setCurrentWorkspace2(Workspace* workspace);
108 QPointer<qtmir::Screen> m_wrapped;
112 class ConcreteScreen :
public Screen
116 explicit ConcreteScreen(qtmir::Screen*
const wrapped);
119 WorkspaceModel* workspaces()
const override;
120 Workspace *currentWorkspace()
const override;
121 void setCurrentWorkspace(Workspace* workspace)
override;
124 void resetCurrentWorkspace();
126 const QScopedPointer<WorkspaceModel> m_workspaces;
127 QPointer<Workspace> m_currentWorspace;
130 class ProxyScreen :
public Screen
134 explicit ProxyScreen(Screen*
const screen, ProxyScreens* screens);
137 WorkspaceModel* workspaces()
const override;
138 Workspace *currentWorkspace()
const override;
139 void setCurrentWorkspace(Workspace* workspace)
override;
141 Screen* proxyObject()
const {
return m_original.data(); }
143 bool isSyncing()
const;
146 const QScopedPointer<WorkspaceModel> m_workspaces;
147 const QPointer<Screen> m_original;
148 const ProxyScreens* m_screens;
149 QPointer<Workspace> m_currentWorspace;
152 class ScreenConfig:
public QObject
155 Q_PRIVATE_PROPERTY(m_config,
bool valid MEMBER used CONSTANT)
156 Q_PRIVATE_PROPERTY(m_config,
bool used MEMBER used)
157 Q_PRIVATE_PROPERTY(m_config,
float scale MEMBER scale)
158 Q_PRIVATE_PROPERTY(m_config, qtmir::FormFactor formFactor MEMBER formFactor)
159 Q_PRIVATE_PROPERTY(m_config, uint currentModeIndex MEMBER currentModeIndex)
160 Q_PRIVATE_PROPERTY(m_config, QPoint position MEMBER topLeft)
163 ScreenConfig(qtmir::ScreenConfiguration*);
166 qtmir::ScreenConfiguration* m_config;