Unity 8
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 
22 QuickListModel::QuickListModel(QObject *parent) :
23  QuickListModelInterface(parent)
24 {
25 
26 }
27 
28 QuickListModel::~QuickListModel()
29 {
30 
31 }
32 
33 void QuickListModel::appendAction(const QuickListEntry &entry)
34 {
35  beginInsertRows(QModelIndex(), m_list.count(), m_list.count());
36  m_list.append(entry);
37  endInsertRows();
38 }
39 
40 void QuickListModel::updateAction(const QuickListEntry &entry)
41 {
42  for (int i = 0; i < m_list.count(); ++i) {
43  if (m_list.at(i).actionId() == entry.actionId()) {
44  m_list.replace(i, entry);
45  Q_EMIT dataChanged(index(i), index(i));
46  return;
47  }
48  }
49 }
50 
51 void QuickListModel::removeAction(const QuickListEntry &entry)
52 {
53  const int start = m_list.indexOf(entry);
54  if (start > -1) {
55  beginRemoveRows(QModelIndex(), start, start);
56  m_list.removeOne(entry);
57  Q_EMIT dataChanged(index(start), index(start));
58  endRemoveRows();
59  }
60 }
61 
62 QuickListEntry QuickListModel::get(int index) const
63 {
64  return m_list.at(index);
65 }
66 
67 int QuickListModel::rowCount(const QModelIndex &index) const
68 {
69  Q_UNUSED(index)
70  return m_list.count();
71 }
72 
73 QVariant QuickListModel::data(const QModelIndex &index, int role) const
74 {
75  switch (role) {
76  case RoleLabel:
77  return m_list.at(index.row()).text();
78  case RoleIcon:
79  return m_list.at(index.row()).icon();
80  case RoleClickable:
81  return m_list.at(index.row()).clickable();
82  }
83  return QVariant();
84 }