@@ -1,5 +1,5 @@
2− * Copyright (C) 2015 Canonical, Ltd.
2+ * Copyright (C) 2016-2017 Canonical, Ltd.
4 * This program is free software: you can redistribute it and/or modify it under
4 * This program is free software: you can redistribute it and/or modify it under
5 * the terms of the GNU Lesser General Public License version 3, as published by
5 * the terms of the GNU Lesser General Public License version 3, as published by
@@ -14,14 +14,20 @@
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17−#include "screens.h"
17+#include "Screens.h"
19−// Qt
20+// qtmirserver
21+#include <qtmir/qtmir.h>
22+#include <qtmir/screens.h>
20#include <QGuiApplication>
23#include <QGuiApplication>
23−Screens::Screens(QObject *parent) :
29+Screens::Screens(QObject *parent)
24− QAbstractListModel(parent)
30+ : QAbstractListModel(parent)
26 bool ok = false;
32 bool ok = false;
27 int screenCount = qEnvironmentVariableIntValue("UNITY_MOCK_SCREEN_COUNT", &ok);
33 int screenCount = qEnvironmentVariableIntValue("UNITY_MOCK_SCREEN_COUNT", &ok);
@@ -29,13 +35,14 @@ Screens::Screens(QObject *parent) :
29 QPoint lastPoint(0,0);
35 QPoint lastPoint(0,0);
30 for (int i = 0; i < screenCount; ++i) {
36 for (int i = 0; i < screenCount; ++i) {
31 auto screen = new Screen();
37 auto screen = new Screen();
38+ screen->m_id = qtmir::OutputId{i};
32 screen->m_active = i == 0;
39 screen->m_active = i == 0;
33 screen->m_name = QString("Monitor %1").arg(i);
40 screen->m_name = QString("Monitor %1").arg(i);
34 screen->m_position = QPoint(lastPoint.x(), lastPoint.y());
41 screen->m_position = QPoint(lastPoint.x(), lastPoint.y());
35− screen->m_sizes.append(new ScreenMode(50, QSize(640,480)));
42+ screen->m_sizes.append(new qtmir::ScreenMode(50, QSize(640,480)));
36− screen->m_sizes.append(new ScreenMode(60, QSize(1280,1024)));
43+ screen->m_sizes.append(new qtmir::ScreenMode(60, QSize(1280,1024)));
37− screen->m_sizes.append(new ScreenMode(60, QSize(1440,900)));
44+ screen->m_sizes.append(new qtmir::ScreenMode(60, QSize(1440,900)));
38− screen->m_sizes.append(new ScreenMode(60, QSize(1920,1080)));
45+ screen->m_sizes.append(new qtmir::ScreenMode(60, QSize(1920,1080)));
39 screen->m_currentModeIndex = 3;
46 screen->m_currentModeIndex = 3;
40 screen->m_physicalSize = QSize(800,568);
47 screen->m_physicalSize = QSize(800,568);
41 m_screenList.append(screen);
48 m_screenList.append(screen);
@@ -44,12 +51,6 @@ Screens::Screens(QObject *parent) :
47−Screens::~Screens() noexcept
49− qDeleteAll(m_screenList);
50− m_screenList.clear();
53QHash<int, QByteArray> Screens::roleNames() const
54QHash<int, QByteArray> Screens::roleNames() const
55 QHash<int, QByteArray> roles;
56 QHash<int, QByteArray> roles;
@@ -66,7 +67,7 @@ QVariant Screens::data(const QModelIndex &index, int role) const
66 switch(role) {
67 switch(role) {
67 case ScreenRole:
68 case ScreenRole:
68 return QVariant::fromValue(m_screenList.at(index.row()));
69 return QVariant::fromValue(m_screenList.at(index.row()));
71 return QVariant();
72 return QVariant();
@@ -81,34 +82,20 @@ int Screens::count() const
81 return m_screenList.size();
82 return m_screenList.size();
84−void Screens::activateScreen(int)
85+QVariant Screens::activeScreen() const
86− qWarning("Not Implemented");
87+ for (int i = 0; i < m_screenList.count(); i++) {
87−}
88+ if (m_screenList[i]->isActive()) return i;
89−Screen::Screen(QObject* parent)
90+ return QVariant();
100−QQmlListProperty<ScreenMode> Screen::availableModes()
102− return QQmlListProperty<ScreenMode>(this, m_sizes);
105−Screen *Screen::beginConfiguration()
93+void Screens::activateScreen(const QVariant& vindex)
107− qWarning("Not Implemented");
95+ bool ok = false;
108− return nullptr;
96+ int index = vindex.toInt(&ok);
109−}
97+ if (!ok || index < 0 || m_screenList.count() <= index) return;
111−void Screen::applyConfiguration()
99+ auto screen = m_screenList.at(index);
112−{
100+ screen->setActive(true);
113− qWarning("Not Implemented");