]> cloud.milkyroute.net Git - dolphin.git/blob - src/settings/servicemodel.cpp
GIT_SILENT Update Appstream for new release
[dolphin.git] / src / settings / servicemodel.cpp
1 /*
2 * SPDX-FileCopyrightText: 2011 Peter Penz <peter.penz19@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7 #include "servicemodel.h"
8
9 #include <QIcon>
10
11 ServiceModel::ServiceModel(QObject *parent)
12 : QAbstractListModel(parent)
13 , m_items()
14 {
15 }
16
17 ServiceModel::~ServiceModel()
18 {
19 }
20
21 bool ServiceModel::insertRows(int row, int count, const QModelIndex &parent)
22 {
23 if (row > rowCount()) {
24 return false;
25 }
26
27 if (count <= 0) {
28 count = 1;
29 }
30
31 beginInsertRows(parent, row, row + count - 1);
32 for (int i = 0; i < count; ++i) {
33 ServiceItem item;
34 item.checked = Qt::Unchecked;
35 m_items.insert(row, item);
36 }
37 endInsertRows();
38
39 return true;
40 }
41
42 bool ServiceModel::setData(const QModelIndex &index, const QVariant &value, int role)
43 {
44 const int row = index.row();
45 if (row >= rowCount()) {
46 return false;
47 }
48
49 switch (role) {
50 case Qt::CheckStateRole:
51 m_items[row].checked = value.value<Qt::CheckState>();
52 break;
53 case Qt::DecorationRole:
54 m_items[row].icon = value.toString();
55 break;
56 case Qt::DisplayRole:
57 m_items[row].text = value.toString();
58 break;
59 case DesktopEntryNameRole:
60 m_items[row].desktopEntryName = value.toString();
61 break;
62 default:
63 return false;
64 }
65
66 Q_EMIT dataChanged(index, index);
67 return true;
68 }
69
70 QVariant ServiceModel::data(const QModelIndex &index, int role) const
71 {
72 const int row = index.row();
73 if (row < rowCount()) {
74 switch (role) {
75 case Qt::CheckStateRole:
76 return m_items[row].checked;
77 case Qt::DecorationRole:
78 return QIcon::fromTheme(m_items[row].icon);
79 case Qt::DisplayRole:
80 return m_items[row].text;
81 case DesktopEntryNameRole:
82 return m_items[row].desktopEntryName;
83 default:
84 break;
85 }
86 }
87
88 return QVariant();
89 }
90
91 int ServiceModel::rowCount(const QModelIndex &parent) const
92 {
93 Q_UNUSED(parent)
94 return m_items.count();
95 }
96
97 void ServiceModel::clear()
98 {
99 beginRemoveRows(QModelIndex(), 0, m_items.count());
100 m_items.clear();
101 endRemoveRows();
102 }
103
104 Qt::ItemFlags ServiceModel::flags(const QModelIndex &index) const
105 {
106 return QAbstractListModel::flags(index) | Qt::ItemIsUserCheckable;
107 }
108
109 #include "moc_servicemodel.cpp"