Unity 8
quicklistmodel.cpp
1 /*
2  * Copyright 2014-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 
17 #include "quicklistmodel.h"
18 
19 QuickListModel::QuickListModel(QObject *parent) :
20  QuickListModelInterface(parent)
21 {
22 
23 }
24 
25 QuickListModel::~QuickListModel()
26 {
27 
28 }
29 
30 void QuickListModel::appendAction(const QuickListEntry &entry)
31 {
32  beginInsertRows(QModelIndex(), m_list.count(), m_list.count());
33  m_list.append(entry);
34  endInsertRows();
35 }
36 
37 void QuickListModel::updateAction(const QuickListEntry &entry)
38 {
39  for (int i = 0; i < m_list.count(); ++i) {
40  if (m_list.at(i).actionId() == entry.actionId()) {
41  m_list.replace(i, entry);
42  Q_EMIT dataChanged(index(i), index(i));
43  return;
44  }
45  }
46 }
47 
48 QuickListEntry QuickListModel::get(int index) const
49 {
50  return m_list.at(index);
51 }
52 
53 int QuickListModel::rowCount(const QModelIndex &index) const
54 {
55  Q_UNUSED(index)
56  return m_list.count();
57 }
58 
59 QVariant QuickListModel::data(const QModelIndex &index, int role) const
60 {
61  switch (role) {
62  case RoleLabel:
63  return m_list.at(index.row()).text();
64  case RoleIcon:
65  return m_list.at(index.row()).icon();
66  case RoleClickable:
67  return m_list.at(index.row()).clickable();
68  }
69  return QVariant();
70 }