Lomiri
Loading...
Searching...
No Matches
quicklistmodel.cpp
1/*
2 * Copyright 2013, 2015 Canonical Ltd.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published by
6 * the Free Software Foundation; version 3.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU 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 *
16 * Authors:
17 * Michael Zanetti <michael.zanetti@canonical.com>
18 */
19
20#include "quicklistmodel.h"
21
22QuickListModel::QuickListModel(QObject *parent) :
23 QuickListModelInterface(parent)
24{
25
26}
27
28QuickListModel::~QuickListModel()
29{
30
31}
32
33void QuickListModel::appendAction(const QuickListEntry &entry)
34{
35 beginInsertRows(QModelIndex(), m_list.count(), m_list.count());
36 m_list.append(entry);
37 endInsertRows();
38}
39
40void QuickListModel::insertAction(const QuickListEntry &entry, int index)
41{
42 beginInsertRows(QModelIndex(), index, index);
43 m_list.insert(index, entry);
44 endInsertRows();
45}
46
47void QuickListModel::updateAction(const QuickListEntry &entry)
48{
49 for (int i = 0; i < m_list.count(); ++i) {
50 if (m_list.at(i).actionId() == entry.actionId()) {
51 m_list.replace(i, entry);
52 Q_EMIT dataChanged(index(i), index(i));
53 return;
54 }
55 }
56}
57
58void QuickListModel::removeAction(const QuickListEntry &entry)
59{
60 const int start = m_list.indexOf(entry);
61 if (start > -1) {
62 beginRemoveRows(QModelIndex(), start, start);
63 m_list.removeOne(entry);
64 Q_EMIT dataChanged(index(start), index(start));
65 endRemoveRows();
66 }
67}
68
69QuickListEntry QuickListModel::get(int index) const
70{
71 return m_list.at(index);
72}
73
74int QuickListModel::rowCount(const QModelIndex &index) const
75{
76 Q_UNUSED(index)
77 return m_list.count();
78}
79
80QVariant QuickListModel::data(const QModelIndex &index, int role) const
81{
82 switch (role) {
83 case RoleLabel:
84 return m_list.at(index.row()).text();
85 case RoleIcon:
86 return m_list.at(index.row()).icon();
87 case RoleClickable:
88 return m_list.at(index.row()).clickable();
89 case RoleHasSeparator:
90 return m_list.at(index.row()).hasSeparator();
91 case RoleIsPrivate:
92 return m_list.at(index.row()).isPrivate();
93 }
94 return QVariant();
95}