@@ -19,146 +19,184 @@
1919#include "WorkspaceManager.h"
2020#include "Workspace.h"
2121
22−ScreenInterface::ScreenInterface(QObject *parent)
22+Screen::Screen(QObject *parent)
2323 : QObject(parent)
2424{
2525}
2626
27−void ScreenInterface::connectToScreen(qtmir::Screen *screen)
27+void Screen::connectToScreen(qtmir::Screen *screen)
2828{
2929 m_wrapped = screen;
30− connect(screen, &qtmir::Screen::usedChanged, this, &ScreenInterface::usedChanged);
31− connect(screen, &qtmir::Screen::nameChanged, this, &ScreenInterface::nameChanged);
32− connect(screen, &qtmir::Screen::outputTypeChanged, this, &ScreenInterface::outputTypeChanged);
33− connect(screen, &qtmir::Screen::scaleChanged, this, &ScreenInterface::scaleChanged);
34− connect(screen, &qtmir::Screen::formFactorChanged, this, &ScreenInterface::formFactorChanged);
35− connect(screen, &qtmir::Screen::physicalSizeChanged, this, &ScreenInterface::physicalSizeChanged);
36− connect(screen, &qtmir::Screen::positionChanged, this, &ScreenInterface::positionChanged);
37− connect(screen, &qtmir::Screen::activeChanged, this, &ScreenInterface::activeChanged);
38− connect(screen, &qtmir::Screen::currentModeIndexChanged, this, &ScreenInterface::currentModeIndexChanged);
39− connect(screen, &qtmir::Screen::availableModesChanged, this, &ScreenInterface::availableModesChanged);
30+ connect(screen, &qtmir::Screen::usedChanged, this, &Screen::usedChanged);
31+ connect(screen, &qtmir::Screen::nameChanged, this, &Screen::nameChanged);
32+ connect(screen, &qtmir::Screen::outputTypeChanged, this, &Screen::outputTypeChanged);
33+ connect(screen, &qtmir::Screen::outputTypeChanged, this, &Screen::outputTypeNameChanged);
34+ connect(screen, &qtmir::Screen::scaleChanged, this, &Screen::scaleChanged);
35+ connect(screen, &qtmir::Screen::formFactorChanged, this, &Screen::formFactorChanged);
36+ connect(screen, &qtmir::Screen::physicalSizeChanged, this, &Screen::physicalSizeChanged);
37+ connect(screen, &qtmir::Screen::positionChanged, this, &Screen::positionChanged);
38+ connect(screen, &qtmir::Screen::activeChanged, this, &Screen::activeChanged);
39+ connect(screen, &qtmir::Screen::currentModeIndexChanged, this, &Screen::currentModeIndexChanged);
40+ connect(screen, &qtmir::Screen::availableModesChanged, this, &Screen::availableModesChanged);
4041}
4142
42−void ScreenInterface::connectToScreen(ScreenInterface *screen)
43+void Screen::connectToScreen(Screen *screen)
4344{
4445 connectToScreen(screen->wrapped());
45− connect(screen, &ScreenInterface::currentWorkspaceChanged, this, &ScreenInterface::currentWorkspaceChanged);
46+ connect(screen, &Screen::currentWorkspaceChanged, this, &Screen::currentWorkspaceChanged);
4647}
4748
48−qtmir::OutputId ScreenInterface::outputId() const
49+qtmir::OutputId Screen::outputId() const
4950{
5051 if (!m_wrapped) return qtmir::OutputId(-1);
5152 return m_wrapped->outputId();
5253}
5354
54−bool ScreenInterface::used() const
55+bool Screen::used() const
5556{
5657 if (!m_wrapped) return false;
5758 return m_wrapped->used();
5859}
5960
60−QString ScreenInterface::name() const
61+QString Screen::name() const
6162{
6263 if (!m_wrapped) return QString();
6364 return m_wrapped->name();
6465}
6566
66−float ScreenInterface::scale() const
67+float Screen::scale() const
6768{
6869 if (!m_wrapped) return 1.0;
6970 return m_wrapped->scale();
7071}
7172
72−QSizeF ScreenInterface::physicalSize() const
73+QSizeF Screen::physicalSize() const
7374{
7475 if (!m_wrapped) return QSizeF();
7576 return m_wrapped->physicalSize();
7677}
7778
78−qtmir::FormFactor ScreenInterface::formFactor() const
79+qtmir::FormFactor Screen::formFactor() const
7980{
8081 if (!m_wrapped) return qtmir::FormFactorUnknown;
8182 return m_wrapped->formFactor();
8283}
8384
84−qtmir::OutputTypes ScreenInterface::outputType() const
85+qtmir::OutputTypes Screen::outputType() const
8586{
8687 if (!m_wrapped) return qtmir::Unknown;
8788 return m_wrapped->outputType();
8889}
8990
90−MirPowerMode ScreenInterface::powerMode() const
91+MirPowerMode Screen::powerMode() const
9192{
9293 if (!m_wrapped) return mir_power_mode_on;
9394 return m_wrapped->powerMode();
9495}
9596
96−Qt::ScreenOrientation ScreenInterface::orientation() const
97+Qt::ScreenOrientation Screen::orientation() const
9798{
9899 if (!m_wrapped) return Qt::PrimaryOrientation;
99100 return m_wrapped->orientation();
100101}
101102
102−QPoint ScreenInterface::position() const
103+QPoint Screen::position() const
103104{
104105 if (!m_wrapped) return QPoint();
105106 return m_wrapped->position();
106107}
107108
108−QQmlListProperty<qtmir::ScreenMode> ScreenInterface::availableModes()
109+QQmlListProperty<qtmir::ScreenMode> Screen::availableModes()
109110{
110111 if (!m_wrapped) return QQmlListProperty<qtmir::ScreenMode>();
111112 return m_wrapped->availableModes();
112113}
113114
114−uint ScreenInterface::currentModeIndex() const
115+uint Screen::currentModeIndex() const
115116{
116117 if (!m_wrapped) return -1;
117118 return m_wrapped->currentModeIndex();
118119}
119120
120−bool ScreenInterface::isActive() const
121+bool Screen::isActive() const
121122{
122123 if (!m_wrapped) return false;
123124 return m_wrapped->isActive();
124125}
125126
126−void ScreenInterface::activate()
127+void Screen::activate()
127128{
128129 setActive(true);
129130}
130131
131−void ScreenInterface::setActive(bool active)
132+void Screen::setActive(bool active)
132133{
133134 if (!m_wrapped) return;
134135 m_wrapped->setActive(active);
135136}
136137
137−QScreen *ScreenInterface::qscreen() const
138+QScreen *Screen::qscreen() const
138139{
139140 if (!m_wrapped) return nullptr;
140141 return m_wrapped->qscreen();
141142}
142143
143−qtmir::ScreenConfiguration *ScreenInterface::beginConfiguration() const
144+qtmir::ScreenConfiguration *Screen::beginConfiguration() const
144145{
145146 if (!m_wrapped) return nullptr;
146147 return m_wrapped->beginConfiguration();
147148}
148149
149−bool ScreenInterface::applyConfiguration(qtmir::ScreenConfiguration *configuration)
150+bool Screen::applyConfiguration(qtmir::ScreenConfiguration *configuration)
150151{
151152 if (!m_wrapped) return false;
152153 return m_wrapped->applyConfiguration(configuration);
153154}
154155
155−void ScreenInterface::sync(ScreenInterface *proxy)
156+QString Screen::outputTypeName() const
157+{
158+ switch (m_wrapped->outputType()) {
159+ case qtmir::Unknown:
160+ return tr("Unknown");
161+ case qtmir::VGA:
162+ return tr("VGA");
163+ case qtmir::DVII:
164+ case qtmir::DVID:
165+ case qtmir::DVIA:
166+ return tr("DVI");
167+ case qtmir::Composite:
168+ return tr("Composite");
169+ case qtmir::SVideo:
170+ return tr("S-Video");
171+ case qtmir::LVDS:
172+ case qtmir::NinePinDIN:
173+ case qtmir::EDP:
174+ return tr("Internal");
175+ case qtmir::Component:
176+ return tr("Component");
177+ case qtmir::DisplayPort:
178+ return tr("DisplayPort");
179+ case qtmir::HDMIA:
180+ case qtmir::HDMIB:
181+ return tr("HDMI");
182+ case qtmir::TV:
183+ return tr("TV");
184+ }
185+ return QString();
186+}
187+
188+void Screen::setSyncing(bool syncing)
189+{
190+ workspaces()->setSyncing(syncing);
191+}
192+
193+void Screen::sync(Screen *proxy)
156194{
157195 if (!proxy) return;
158196 workspaces()->sync(proxy->workspaces());
159197}
160198
161−Screen::Screen(qtmir::Screen* wrapped)
199+ConcreteScreen::ConcreteScreen(qtmir::Screen* wrapped)
162200 : m_workspaces(new WorkspaceModel)
163201{
164202 connectToScreen(wrapped);
@@ -185,7 +223,7 @@ Screen::Screen(qtmir::Screen* wrapped)
185223 resetCurrentWorkspace();
186224 }
187225 });
188− connect(this, &Screen::activeChanged, this, [this](bool active) {
226+ connect(this, &ConcreteScreen::activeChanged, this, [this](bool active) {
189227 if (active && m_currentWorspace) {
190228 m_currentWorspace->activate();
191229 }
@@ -195,7 +233,7 @@ Screen::Screen(qtmir::Screen* wrapped)
195233 WorkspaceManager::instance()->createWorkspace()->assign(m_workspaces.data());
196234}
197235
198−void Screen::resetCurrentWorkspace()
236+void ConcreteScreen::resetCurrentWorkspace()
199237{
200238 auto newCurrent = m_workspaces->rowCount() > 0 ? m_workspaces->get(0) : nullptr;
201239 if (m_currentWorspace != newCurrent) {
@@ -205,17 +243,17 @@ void Screen::resetCurrentWorkspace()
205243}
206244
207245
208−WorkspaceModel *Screen::workspaces() const
246+WorkspaceModel *ConcreteScreen::workspaces() const
209247{
210248 return m_workspaces.data();
211249}
212250
213−Workspace *Screen::currentWorkspace() const
251+Workspace *ConcreteScreen::currentWorkspace() const
214252{
215253 return m_currentWorspace.data();
216254}
217255
218−void Screen::setCurrentWorkspace(Workspace *workspace)
256+void ConcreteScreen::setCurrentWorkspace(Workspace *workspace)
219257{
220258 if (m_currentWorspace != workspace) {
221259 m_currentWorspace = workspace;
@@ -223,15 +261,15 @@ void Screen::setCurrentWorkspace(Workspace *workspace)
223261 }
224262}
225263
226−ScreenProxy::ScreenProxy(ScreenInterface *const screen)
227− : m_workspaces(new WorkspaceModelProxy(screen->workspaces()))
264+ProxyScreen::ProxyScreen(Screen *const screen)
265+ : m_workspaces(new ProxyWorkspaceModel(screen->workspaces()))
228266 , m_original(screen)
229267{
230268 connectToScreen(screen);
231269
232270 auto updateCurrentWorkspaceFn = [this](Workspace* realWorkspace) {
233271 Q_FOREACH(Workspace* workspace, m_workspaces->list()) {
234− auto p = qobject_cast<WorkspaceProxy*>(workspace);
272+ auto p = qobject_cast<ProxyWorkspace*>(workspace);
235273 if (p && p->proxyObject() == realWorkspace) {
236274 if (m_currentWorspace != p) {
237275 m_currentWorspace = p;
@@ -240,29 +278,29 @@ ScreenProxy::ScreenProxy(ScreenInterface *const screen)
240278 }
241279 }
242280 };
243− connect(screen, &ScreenInterface::currentWorkspaceChanged, this, updateCurrentWorkspaceFn);
281+ connect(screen, &Screen::currentWorkspaceChanged, this, updateCurrentWorkspaceFn);
244282 updateCurrentWorkspaceFn(screen->currentWorkspace());
245283}
246284
247−WorkspaceModel *ScreenProxy::workspaces() const
285+WorkspaceModel *ProxyScreen::workspaces() const
248286{
249287 return m_workspaces.data();
250288}
251289
252−Workspace *ScreenProxy::currentWorkspace() const
290+Workspace *ProxyScreen::currentWorkspace() const
253291{
254292 return m_currentWorspace.data();
255293}
256294
257−void ScreenProxy::setCurrentWorkspace(Workspace *workspace)
295+void ProxyScreen::setCurrentWorkspace(Workspace *workspace)
258296{
259− auto p = qobject_cast<WorkspaceProxy*>(workspace);
297+ auto p = qobject_cast<ProxyWorkspace*>(workspace);
260298 if (p) {
261299 m_original->setCurrentWorkspace(p->proxyObject());
262300 }
263301}
264302
265−void ScreenProxy::addWorkspace()
303+void ProxyScreen::addWorkspace()
266304{
267− (new WorkspaceProxy(WorkspaceManager::instance()->createWorkspace()))->assign(workspaces());
305+ (new ProxyWorkspace(WorkspaceManager::instance()->createWorkspace()))->assign(workspaces());
268306}