on cc008fc help sign in
unity8/tests/mocks/Unity/scopes-ng/fake_preview_model.cpp
96 lines 2.6 kB history raw
1/*
2 * Copyright (C) 2014 Canonical, Ltd.
3 *
4 * Authors:
5 * Michał Sawicz <michal.sawicz@canonical.com>
6 * Michal Hruby <michal.hruby@canonical.com>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; version 3.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 */
21// self
22#include "fake_preview_model.h"
24// Qt
25#include <QVariantMap>
27namespace scopes_ng
30struct PreviewData
32 QString id;
33 QString type;
34 QVariantMap data;
36 PreviewData(QString const& id_, QString const& type_, QVariantMap const& data_): id(id_), type(type_), data(data_)
37 {
38 }
39};
41PreviewModel::PreviewModel(QObject* parent) : QAbstractListModel(parent)
43 m_roles[Roles::RoleWidgetId] = "widgetId";
44 m_roles[Roles::RoleType] = "type";
45 m_roles[Roles::RoleProperties] = "properties";
47 populateWidgets();
50void PreviewModel::populateWidgets()
52 beginResetModel();
53 m_previewWidgets.clear();
54 for (int i = 0; i <= 20; i++) {
55 // FIXME: the API will expose nicer getters soon, use those!
56 QVariantMap attributes;
57 attributes["text"] = QVariant::fromValue(QString("Widget %1").arg(i));
58 attributes["title"] = QVariant::fromValue(QString("Title %1").arg(i));
59 PreviewData* preview_data = new PreviewData(QString("widget-%1").arg(i), QString("text"), attributes);
60 m_previewWidgets.append(QSharedPointer<PreviewData>(preview_data));
61 }
62 endResetModel();
66void PreviewModel::triggered(QString widgetId, QString actionId, QVariantMap data)
68 Q_EMIT actionTriggered(widgetId, actionId, data);
71QHash<int, QByteArray> PreviewModel::roleNames() const
73 return m_roles;
76int PreviewModel::rowCount(const QModelIndex&) const
78 return m_previewWidgets.size();
81QVariant PreviewModel::data(const QModelIndex& index, int role) const
83 auto widget_data = m_previewWidgets.at(index.row());
84 switch (role) {
85 case RoleWidgetId:
86 return widget_data->id;
87 case RoleType:
88 return widget_data->type;
89 case RoleProperties:
90 return widget_data->data;
91 default:
92 return QVariant();
93 }
96} // namespace scopes_ng