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::insertAction(const QuickListEntry &entry, int index)
41 {
42  beginInsertRows(QModelIndex(), index, index);
43  m_list.insert(index, entry);
44  endInsertRows();
45 }
46 
47 void 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 
58 void 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 
69 QuickListEntry QuickListModel::get(int index) const
70 {
71  return m_list.at(index);
72 }
73 
74 int QuickListModel::rowCount(const QModelIndex &index) const
75 {
76  Q_UNUSED(index)
77  return m_list.count();
78 }
79 
80 QVariant 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 }