on bionic help sign in
71 lines 1.8 kB history raw
1/*
2 * Copyright (C) 2015 Canonical, Ltd.
3 *
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
6 * the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranties of MERCHANTABILITY,
10 * SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
17#include "screens.h"
19// Qt
20#include <QGuiApplication>
21#include <QScreen>
22#include <QDebug>
24Q_DECLARE_METATYPE(QScreen*)
26Screens::Screens(QObject *parent) :
27 QAbstractListModel(parent)
29 // start with one screen attached
30 m_screenList.append(new Screen());
33Screens::~Screens() noexcept
35 qDeleteAll(m_screenList);
36 m_screenList.clear();
39QHash<int, QByteArray> Screens::roleNames() const
41 QHash<int, QByteArray> roles;
42 roles[ScreenRole] = "screen";
43 roles[OutputTypeRole] = "outputType";
44 return roles;
47QVariant Screens::data(const QModelIndex &index, int role) const
49 if (!index.isValid() || index.row() >= m_screenList.size()) {
50 return QVariant();
51 }
53 switch(role) {
54 case ScreenRole:
55 return QVariant::fromValue(m_screenList.at(index.row())->qScreen);
56 case OutputTypeRole:
57 return m_screenList.at(index.row())->outputTypes;
58 }
60 return QVariant();
63int Screens::rowCount(const QModelIndex &) const
65 return count();
68int Screens::count() const
70 return m_screenList.size();