20#include <qtmir/screen.h>
21#include <QScopedPointer>
24#include "WorkspaceModel.h"
30class Screen:
public QObject
36 Unknown = qtmir::FormFactorUnknown,
37 Phone = qtmir::FormFactorPhone,
38 Tablet = qtmir::FormFactorTablet,
39 Monitor = qtmir::FormFactorMonitor,
40 TV = qtmir::FormFactorTV,
41 Projector = qtmir::FormFactorProjector,
45 Q_PROPERTY(
bool active READ isActive WRITE setActive NOTIFY activeChanged)
46 Q_PROPERTY(
bool used READ used NOTIFY usedChanged)
47 Q_PROPERTY(QString name READ name NOTIFY nameChanged)
48 Q_PROPERTY(qtmir::OutputTypes outputType READ outputType NOTIFY outputTypeChanged)
49 Q_PROPERTY(
float scale READ scale NOTIFY scaleChanged)
50 Q_PROPERTY(Screen::FormFactor formFactor READ formFactor NOTIFY formFactorChanged)
51 Q_PROPERTY(MirPowerMode powerMode READ powerMode NOTIFY powerModeChanged)
52 Q_PROPERTY(Qt::ScreenOrientation orientation READ orientation NOTIFY orientationChanged)
53 Q_PROPERTY(QPoint position READ position NOTIFY positionChanged)
54 Q_PROPERTY(uint currentModeIndex READ currentModeIndex NOTIFY currentModeIndexChanged)
55 Q_PROPERTY(QQmlListProperty<qtmir::ScreenMode> availableModes READ availableModes NOTIFY availableModesChanged)
56 Q_PROPERTY(QSizeF physicalSize READ physicalSize NOTIFY physicalSizeChanged)
57 Q_PROPERTY(QString outputTypeName READ outputTypeName NOTIFY outputTypeChanged)
58 Q_PROPERTY(WorkspaceModel* workspaces READ workspaces CONSTANT)
59 Q_PROPERTY(Workspace* currentWorkspace READ currentWorkspace WRITE setCurrentWorkspace2 NOTIFY currentWorkspaceChanged)
64 QSizeF physicalSize()
const;
65 Screen::FormFactor formFactor()
const;
66 qtmir::OutputTypes outputType()
const;
67 MirPowerMode powerMode()
const;
68 Qt::ScreenOrientation orientation()
const;
69 QPoint position()
const;
70 QQmlListProperty<qtmir::ScreenMode> availableModes();
71 uint currentModeIndex()
const;
72 bool isActive()
const;
73 void setActive(
bool active);
74 QScreen* qscreen()
const;
75 QString outputTypeName()
const;
77 Q_INVOKABLE
bool isSameAs(Screen*)
const;
79 Q_INVOKABLE ScreenConfig *beginConfiguration()
const;
80 Q_INVOKABLE
bool applyConfiguration(ScreenConfig *configuration);
82 virtual WorkspaceModel* workspaces()
const = 0;
83 virtual Workspace *currentWorkspace()
const = 0;
84 virtual void setCurrentWorkspace(Workspace* workspace) = 0;
86 void sync(Screen* proxy);
88 qtmir::Screen* wrapped()
const {
return m_wrapped; }
96 void outputTypeChanged();
97 void outputTypeNameChanged();
99 void formFactorChanged();
100 void powerModeChanged();
101 void orientationChanged();
102 void positionChanged();
103 void currentModeIndexChanged();
104 void physicalSizeChanged();
105 void availableModesChanged();
106 void activeChanged(
bool active);
107 void currentWorkspaceChanged(Workspace*);
110 Screen(QObject* parent = 0);
112 void connectToScreen(qtmir::Screen* screen);
113 void connectToScreen(Screen* screen);
116 void setCurrentWorkspace2(Workspace* workspace);
119 QPointer<qtmir::Screen> m_wrapped;
123class ConcreteScreen :
public Screen
127 explicit ConcreteScreen(qtmir::Screen*
const wrapped);
130 WorkspaceModel* workspaces()
const override;
131 Workspace *currentWorkspace()
const override;
132 void setCurrentWorkspace(Workspace* workspace)
override;
135 void resetCurrentWorkspace();
137 const QScopedPointer<WorkspaceModel> m_workspaces;
138 QPointer<Workspace> m_currentWorspace;
141class ProxyScreen :
public Screen
145 explicit ProxyScreen(Screen*
const screen, ProxyScreens* screens);
148 WorkspaceModel* workspaces()
const override;
149 Workspace *currentWorkspace()
const override;
150 void setCurrentWorkspace(Workspace* workspace)
override;
152 Screen* proxyObject()
const {
return m_original.data(); }
154 bool isSyncing()
const;
157 const QScopedPointer<WorkspaceModel> m_workspaces;
158 const QPointer<Screen> m_original;
159 const ProxyScreens* m_screens;
160 QPointer<Workspace> m_currentWorspace;
163class ScreenConfig:
public QObject
166 Q_PRIVATE_PROPERTY(m_config,
bool valid MEMBER used CONSTANT)
167 Q_PRIVATE_PROPERTY(m_config,
bool used MEMBER used)
168 Q_PRIVATE_PROPERTY(m_config,
float scale MEMBER scale)
169 Q_PRIVATE_PROPERTY(m_config, qtmir::FormFactor formFactor MEMBER formFactor)
170 Q_PRIVATE_PROPERTY(m_config, uint currentModeIndex MEMBER currentModeIndex)
171 Q_PRIVATE_PROPERTY(m_config, QPoint position MEMBER topLeft)
174 ScreenConfig(qtmir::ScreenConfiguration*);
177 qtmir::ScreenConfiguration* m_config;