2
* Copyright (C) 2013 Canonical, Ltd.
5
* Michal Hruby <michal.hruby@canonical.com>
7
* This program is free software; you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License as published by
9
* the Free Software Foundation; version 3.
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
16
* You should have received a copy of the GNU General Public License
17
* along with this program. If not, see <http://www.gnu.org/licenses/>.
21
#include "categoryresults.h"
22
#include "iconutils.h"
24
// TODO: use something from libunity once it's public
37
CategoryResults::CategoryResults(QObject* parent)
38
: DeeListModel(parent)
41
m_roles[CategoryResults::RoleUri] = "uri";
42
m_roles[CategoryResults::RoleIconHint] = "icon";
43
m_roles[CategoryResults::RoleCategory] = "category";
44
m_roles[CategoryResults::RoleMimetype] = "mimetype";
45
m_roles[CategoryResults::RoleTitle] = "title";
46
m_roles[CategoryResults::RoleComment] = "comment";
47
m_roles[CategoryResults::RoleDndUri] = "dndUri";
48
m_roles[CategoryResults::RoleMetadata] = "metadata";
49
m_roles[CategoryResults::RoleRendererHints] = "rendererHints";
52
int CategoryResults::categoryIndex() const
54
return m_categoryIndex;
57
void CategoryResults::setCategoryIndex(int index)
59
if (m_categoryIndex != index) {
60
m_categoryIndex = index;
61
Q_EMIT categoryIndexChanged(m_categoryIndex);
65
QHash<int, QByteArray>
66
CategoryResults::roleNames() const
72
CategoryResults::data(const QModelIndex& index, int role) const
74
if (!index.isValid()) {
80
return DeeListModel::data(index, ResultsColumn::URI);
82
QString giconString(DeeListModel::data(index, ResultsColumn::ICON_HINT).toString());
83
if (giconString.isEmpty()) {
84
QString mimetype(DeeListModel::data(index, ResultsColumn::MIMETYPE).toString());
85
QString uri(DeeListModel::data(index, ResultsColumn::URI).toString());
86
QString thumbnailerUri(uriToThumbnailerProviderString(uri, mimetype, DeeListModel::data(index, ResultsColumn::METADATA).toHash()));
87
if (!thumbnailerUri.isNull()) {
88
return QVariant::fromValue(thumbnailerUri);
91
return QVariant::fromValue(gIconToDeclarativeImageProviderString(giconString));
94
return DeeListModel::data(index, ResultsColumn::CATEGORY);
96
return DeeListModel::data(index, ResultsColumn::MIMETYPE);
98
return DeeListModel::data(index, ResultsColumn::TITLE);
100
return DeeListModel::data(index, ResultsColumn::COMMENT);
102
return DeeListModel::data(index, ResultsColumn::DND_URI);
104
return DeeListModel::data(index, ResultsColumn::METADATA);
105
case RoleRendererHints:
107
QVariantHash hash(DeeListModel::data(index, ResultsColumn::METADATA).toHash());
108
if (hash.contains("content")) {
110
QVariantHash innerHash(hash["content"].toHash());
111
if (innerHash.contains("scope_disabled")) {
112
hints["scope_disabled"] = innerHash["scope_disabled"];
114
return hints.empty() ? QVariant() : QVariant::fromValue(hints);