on 14ca310 help sign in
unity8/tests/mocks/Unity/fake_previewwidgetmodel.cpp
86 lines 2.5 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_previewwidgetmodel.h"
24// Qt
25#include <QVariantMap>
27struct PreviewData
29 QString id;
30 QString type;
31 QVariantMap data;
33 PreviewData(QString const& id_, QString const& type_, QVariantMap const& data_): id(id_), type(type_), data(data_)
34 {
35 }
36};
38PreviewWidgetModel::PreviewWidgetModel(QObject* parent) : QAbstractListModel(parent)
40 m_roles[Roles::RoleWidgetId] = "widgetId";
41 m_roles[Roles::RoleType] = "type";
42 m_roles[Roles::RoleProperties] = "properties";
44 populateWidgets();
47void PreviewWidgetModel::populateWidgets()
49 beginResetModel();
50 m_previewWidgets.clear();
51 for (int i = 0; i <= 20; i++) {
52 // FIXME: the API will expose nicer getters soon, use those!
53 QVariantMap attributes;
54 attributes["text"] = QVariant::fromValue(QString("Widget %1").arg(i));
55 attributes["title"] = QVariant::fromValue(QString("Title %1").arg(i));
56 PreviewData* preview_data = new PreviewData(QString("widget-%1").arg(i), QString("text"), attributes);
57 m_previewWidgets.append(QSharedPointer<PreviewData>(preview_data));
58 }
59 endResetModel();
63QHash<int, QByteArray> PreviewWidgetModel::roleNames() const
65 return m_roles;
68int PreviewWidgetModel::rowCount(const QModelIndex&) const
70 return m_previewWidgets.size();
73QVariant PreviewWidgetModel::data(const QModelIndex& index, int role) const
75 auto widget_data = m_previewWidgets.at(index.row());
76 switch (role) {
77 case RoleWidgetId:
78 return widget_data->id;
79 case RoleType:
80 return widget_data->type;
81 case RoleProperties:
82 return widget_data->data;
83 default:
84 return QVariant();
85 }