@@ -19,146 +19,184 @@
19#include "WorkspaceManager.h"
19#include "WorkspaceManager.h"
20#include "Workspace.h"
20#include "Workspace.h"
22−ScreenInterface::ScreenInterface(QObject *parent)
22+Screen::Screen(QObject *parent)
23 : QObject(parent)
23 : QObject(parent)
27−void ScreenInterface::connectToScreen(qtmir::Screen *screen)
27+void Screen::connectToScreen(qtmir::Screen *screen)
29 m_wrapped = screen;
29 m_wrapped = screen;
30− connect(screen, &qtmir::Screen::usedChanged, this, &ScreenInterface::usedChanged);
30+ connect(screen, &qtmir::Screen::usedChanged, this, &Screen::usedChanged);
31− connect(screen, &qtmir::Screen::nameChanged, this, &ScreenInterface::nameChanged);
31+ connect(screen, &qtmir::Screen::nameChanged, this, &Screen::nameChanged);
32− connect(screen, &qtmir::Screen::outputTypeChanged, this, &ScreenInterface::outputTypeChanged);
32+ connect(screen, &qtmir::Screen::outputTypeChanged, this, &Screen::outputTypeChanged);
33+ connect(screen, &qtmir::Screen::outputTypeChanged, this, &Screen::outputTypeNameChanged);
33− connect(screen, &qtmir::Screen::scaleChanged, this, &ScreenInterface::scaleChanged);
34+ connect(screen, &qtmir::Screen::scaleChanged, this, &Screen::scaleChanged);
34− connect(screen, &qtmir::Screen::formFactorChanged, this, &ScreenInterface::formFactorChanged);
35+ connect(screen, &qtmir::Screen::formFactorChanged, this, &Screen::formFactorChanged);
35− connect(screen, &qtmir::Screen::physicalSizeChanged, this, &ScreenInterface::physicalSizeChanged);
36+ connect(screen, &qtmir::Screen::physicalSizeChanged, this, &Screen::physicalSizeChanged);
36− connect(screen, &qtmir::Screen::positionChanged, this, &ScreenInterface::positionChanged);
37+ connect(screen, &qtmir::Screen::positionChanged, this, &Screen::positionChanged);
37− connect(screen, &qtmir::Screen::activeChanged, this, &ScreenInterface::activeChanged);
38+ connect(screen, &qtmir::Screen::activeChanged, this, &Screen::activeChanged);
38− connect(screen, &qtmir::Screen::currentModeIndexChanged, this, &ScreenInterface::currentModeIndexChanged);
39+ connect(screen, &qtmir::Screen::currentModeIndexChanged, this, &Screen::currentModeIndexChanged);
39− connect(screen, &qtmir::Screen::availableModesChanged, this, &ScreenInterface::availableModesChanged);
40+ connect(screen, &qtmir::Screen::availableModesChanged, this, &Screen::availableModesChanged);
42−void ScreenInterface::connectToScreen(ScreenInterface *screen)
43+void Screen::connectToScreen(Screen *screen)
44 connectToScreen(screen->wrapped());
45 connectToScreen(screen->wrapped());
45− connect(screen, &ScreenInterface::currentWorkspaceChanged, this, &ScreenInterface::currentWorkspaceChanged);
46+ connect(screen, &Screen::currentWorkspaceChanged, this, &Screen::currentWorkspaceChanged);
48−qtmir::OutputId ScreenInterface::outputId() const
49+qtmir::OutputId Screen::outputId() const
50 if (!m_wrapped) return qtmir::OutputId(-1);
51 if (!m_wrapped) return qtmir::OutputId(-1);
51 return m_wrapped->outputId();
52 return m_wrapped->outputId();
54−bool ScreenInterface::used() const
55+bool Screen::used() const
56 if (!m_wrapped) return false;
57 if (!m_wrapped) return false;
57 return m_wrapped->used();
58 return m_wrapped->used();
60−QString ScreenInterface::name() const
61+QString Screen::name() const
62 if (!m_wrapped) return QString();
63 if (!m_wrapped) return QString();
63 return m_wrapped->name();
64 return m_wrapped->name();
66−float ScreenInterface::scale() const
67+float Screen::scale() const
68 if (!m_wrapped) return 1.0;
69 if (!m_wrapped) return 1.0;
69 return m_wrapped->scale();
70 return m_wrapped->scale();
72−QSizeF ScreenInterface::physicalSize() const
73+QSizeF Screen::physicalSize() const
74 if (!m_wrapped) return QSizeF();
75 if (!m_wrapped) return QSizeF();
75 return m_wrapped->physicalSize();
76 return m_wrapped->physicalSize();
78−qtmir::FormFactor ScreenInterface::formFactor() const
79+qtmir::FormFactor Screen::formFactor() const
80 if (!m_wrapped) return qtmir::FormFactorUnknown;
81 if (!m_wrapped) return qtmir::FormFactorUnknown;
81 return m_wrapped->formFactor();
82 return m_wrapped->formFactor();
84−qtmir::OutputTypes ScreenInterface::outputType() const
85+qtmir::OutputTypes Screen::outputType() const
86 if (!m_wrapped) return qtmir::Unknown;
87 if (!m_wrapped) return qtmir::Unknown;
87 return m_wrapped->outputType();
88 return m_wrapped->outputType();
90−MirPowerMode ScreenInterface::powerMode() const
91+MirPowerMode Screen::powerMode() const
92 if (!m_wrapped) return mir_power_mode_on;
93 if (!m_wrapped) return mir_power_mode_on;
93 return m_wrapped->powerMode();
94 return m_wrapped->powerMode();
96−Qt::ScreenOrientation ScreenInterface::orientation() const
97+Qt::ScreenOrientation Screen::orientation() const
98 if (!m_wrapped) return Qt::PrimaryOrientation;
99 if (!m_wrapped) return Qt::PrimaryOrientation;
99 return m_wrapped->orientation();
100 return m_wrapped->orientation();
102−QPoint ScreenInterface::position() const
103+QPoint Screen::position() const
104 if (!m_wrapped) return QPoint();
105 if (!m_wrapped) return QPoint();
105 return m_wrapped->position();
106 return m_wrapped->position();
108−QQmlListProperty<qtmir::ScreenMode> ScreenInterface::availableModes()
109+QQmlListProperty<qtmir::ScreenMode> Screen::availableModes()
110 if (!m_wrapped) return QQmlListProperty<qtmir::ScreenMode>();
111 if (!m_wrapped) return QQmlListProperty<qtmir::ScreenMode>();
111 return m_wrapped->availableModes();
112 return m_wrapped->availableModes();
114−uint ScreenInterface::currentModeIndex() const
115+uint Screen::currentModeIndex() const
116 if (!m_wrapped) return -1;
117 if (!m_wrapped) return -1;
117 return m_wrapped->currentModeIndex();
118 return m_wrapped->currentModeIndex();
120−bool ScreenInterface::isActive() const
121+bool Screen::isActive() const
122 if (!m_wrapped) return false;
123 if (!m_wrapped) return false;
123 return m_wrapped->isActive();
124 return m_wrapped->isActive();
126−void ScreenInterface::activate()
127+void Screen::activate()
128 setActive(true);
129 setActive(true);
131−void ScreenInterface::setActive(bool active)
132+void Screen::setActive(bool active)
133 if (!m_wrapped) return;
134 if (!m_wrapped) return;
134 m_wrapped->setActive(active);
135 m_wrapped->setActive(active);
137−QScreen *ScreenInterface::qscreen() const
138+QScreen *Screen::qscreen() const
139 if (!m_wrapped) return nullptr;
140 if (!m_wrapped) return nullptr;
140 return m_wrapped->qscreen();
141 return m_wrapped->qscreen();
143−qtmir::ScreenConfiguration *ScreenInterface::beginConfiguration() const
144+qtmir::ScreenConfiguration *Screen::beginConfiguration() const
145 if (!m_wrapped) return nullptr;
146 if (!m_wrapped) return nullptr;
146 return m_wrapped->beginConfiguration();
147 return m_wrapped->beginConfiguration();
149−bool ScreenInterface::applyConfiguration(qtmir::ScreenConfiguration *configuration)
150+bool Screen::applyConfiguration(qtmir::ScreenConfiguration *configuration)
151 if (!m_wrapped) return false;
152 if (!m_wrapped) return false;
152 return m_wrapped->applyConfiguration(configuration);
153 return m_wrapped->applyConfiguration(configuration);
155−void ScreenInterface::sync(ScreenInterface *proxy)
156+QString Screen::outputTypeName() const
158+ switch (m_wrapped->outputType()) {
159+ case qtmir::Unknown:
160+ return tr("Unknown");
167+ case qtmir::Composite:
168+ return tr("Composite");
170+ return tr("S-Video");
172+ case qtmir::NinePinDIN:
174+ return tr("Internal");
175+ case qtmir::Component:
176+ return tr("Component");
177+ case qtmir::DisplayPort:
178+ return tr("DisplayPort");
188+void Screen::setSyncing(bool syncing)
190+ workspaces()->setSyncing(syncing);
193+void Screen::sync(Screen *proxy)
157 if (!proxy) return;
195 if (!proxy) return;
158 workspaces()->sync(proxy->workspaces());
196 workspaces()->sync(proxy->workspaces());
161−Screen::Screen(qtmir::Screen* wrapped)
199+ConcreteScreen::ConcreteScreen(qtmir::Screen* wrapped)
162 : m_workspaces(new WorkspaceModel)
200 : m_workspaces(new WorkspaceModel)
164 connectToScreen(wrapped);
202 connectToScreen(wrapped);
@@ -185,7 +223,7 @@ Screen::Screen(qtmir::Screen* wrapped)
185 resetCurrentWorkspace();
223 resetCurrentWorkspace();
188− connect(this, &Screen::activeChanged, this, [this](bool active) {
226+ connect(this, &ConcreteScreen::activeChanged, this, [this](bool active) {
189 if (active && m_currentWorspace) {
227 if (active && m_currentWorspace) {
190 m_currentWorspace->activate();
228 m_currentWorspace->activate();
@@ -195,7 +233,7 @@ Screen::Screen(qtmir::Screen* wrapped)
195 WorkspaceManager::instance()->createWorkspace()->assign(m_workspaces.data());
233 WorkspaceManager::instance()->createWorkspace()->assign(m_workspaces.data());
198−void Screen::resetCurrentWorkspace()
236+void ConcreteScreen::resetCurrentWorkspace()
200 auto newCurrent = m_workspaces->rowCount() > 0 ? m_workspaces->get(0) : nullptr;
238 auto newCurrent = m_workspaces->rowCount() > 0 ? m_workspaces->get(0) : nullptr;
201 if (m_currentWorspace != newCurrent) {
239 if (m_currentWorspace != newCurrent) {
@@ -205,17 +243,17 @@ void Screen::resetCurrentWorkspace()
208−WorkspaceModel *Screen::workspaces() const
246+WorkspaceModel *ConcreteScreen::workspaces() const
210 return m_workspaces.data();
248 return m_workspaces.data();
213−Workspace *Screen::currentWorkspace() const
251+Workspace *ConcreteScreen::currentWorkspace() const
215 return m_currentWorspace.data();
253 return m_currentWorspace.data();
218−void Screen::setCurrentWorkspace(Workspace *workspace)
256+void ConcreteScreen::setCurrentWorkspace(Workspace *workspace)
220 if (m_currentWorspace != workspace) {
258 if (m_currentWorspace != workspace) {
221 m_currentWorspace = workspace;
259 m_currentWorspace = workspace;
@@ -223,15 +261,15 @@ void Screen::setCurrentWorkspace(Workspace *workspace)
226−ScreenProxy::ScreenProxy(ScreenInterface *const screen)
264+ProxyScreen::ProxyScreen(Screen *const screen)
227− : m_workspaces(new WorkspaceModelProxy(screen->workspaces()))
265+ : m_workspaces(new ProxyWorkspaceModel(screen->workspaces()))
228 , m_original(screen)
266 , m_original(screen)
230 connectToScreen(screen);
268 connectToScreen(screen);
232 auto updateCurrentWorkspaceFn = [this](Workspace* realWorkspace) {
270 auto updateCurrentWorkspaceFn = [this](Workspace* realWorkspace) {
233 Q_FOREACH(Workspace* workspace, m_workspaces->list()) {
271 Q_FOREACH(Workspace* workspace, m_workspaces->list()) {
234− auto p = qobject_cast<WorkspaceProxy*>(workspace);
272+ auto p = qobject_cast<ProxyWorkspace*>(workspace);
235 if (p && p->proxyObject() == realWorkspace) {
273 if (p && p->proxyObject() == realWorkspace) {
236 if (m_currentWorspace != p) {
274 if (m_currentWorspace != p) {
237 m_currentWorspace = p;
275 m_currentWorspace = p;
@@ -240,29 +278,29 @@ ScreenProxy::ScreenProxy(ScreenInterface *const screen)
243− connect(screen, &ScreenInterface::currentWorkspaceChanged, this, updateCurrentWorkspaceFn);
281+ connect(screen, &Screen::currentWorkspaceChanged, this, updateCurrentWorkspaceFn);
244 updateCurrentWorkspaceFn(screen->currentWorkspace());
282 updateCurrentWorkspaceFn(screen->currentWorkspace());
247−WorkspaceModel *ScreenProxy::workspaces() const
285+WorkspaceModel *ProxyScreen::workspaces() const
249 return m_workspaces.data();
287 return m_workspaces.data();
252−Workspace *ScreenProxy::currentWorkspace() const
290+Workspace *ProxyScreen::currentWorkspace() const
254 return m_currentWorspace.data();
292 return m_currentWorspace.data();
257−void ScreenProxy::setCurrentWorkspace(Workspace *workspace)
295+void ProxyScreen::setCurrentWorkspace(Workspace *workspace)
259− auto p = qobject_cast<WorkspaceProxy*>(workspace);
297+ auto p = qobject_cast<ProxyWorkspace*>(workspace);
261 m_original->setCurrentWorkspace(p->proxyObject());
299 m_original->setCurrentWorkspace(p->proxyObject());
265−void ScreenProxy::addWorkspace()
303+void ProxyScreen::addWorkspace()
267− (new WorkspaceProxy(WorkspaceManager::instance()->createWorkspace()))->assign(workspaces());
305+ (new ProxyWorkspace(WorkspaceManager::instance()->createWorkspace()))->assign(workspaces());