Krita Source Code Documentation
Loading...
Searching...
No Matches
KisResourceTypeModel.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2018 boud <boud@valdyas.org>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
7#include <QDebug>
8#include <QSqlError>
9#include <QSqlQuery>
10
11#include <KisResourceTypes.h>
12
15 QSqlQuery query;
16};
17
18
20 : QAbstractTableModel(parent)
21 , d(new Private)
22{
24}
25
30
31int KisResourceTypeModel::rowCount(const QModelIndex &parent) const
32{
33 if (parent.isValid()) {
34 return 0;
35 }
36
37 if (d->cachedRowCount < 0) {
38 QSqlQuery q;
39 q.prepare("SELECT count(*)\n"
40 "FROM resource_types\n");
41 q.exec();
42 q.first();
43
44 const_cast<KisResourceTypeModel*>(this)->d->cachedRowCount = q.value(0).toInt();
45 }
46 return d->cachedRowCount;
47}
48
49int KisResourceTypeModel::columnCount(const QModelIndex &parent) const
50{
51 if (parent.isValid()) {
52 return 0;
53 }
54
55 return 3;
56}
57
58QVariant KisResourceTypeModel::data(const QModelIndex &index, int role) const
59{
60 QVariant v;
61 if (!index.isValid()) return v;
62
63 if (index.row() > rowCount()) return v;
64 if (index.column() > (int)Name) return v;
65
66 bool pos = d->query.seek(index.row());
67
68 if (pos) {
69 QString id = d->query.value("id").toString();
70 QString resourceType = d->query.value("name").toString();
71 QString name = ResourceName::resourceTypeToName(resourceType);
72
73 switch(role) {
74 case Qt::DisplayRole:
75 {
76 switch(index.column()) {
77 case Id:
78 return id;
79 case ResourceType:
80 return resourceType;
81 case Name:
82 default:
83 return name;
84 }
85 }
86 case Qt::UserRole + Id:
87 return id;
88 case Qt::UserRole + ResourceType:
89 return resourceType;
90 case Qt::UserRole + Name:
91 return name;
92 default:
93 ;
94 }
95 }
96 return v;
97}
98
100{
101 beginResetModel();
102 bool r = d->query.prepare("SELECT id\n"
103 ", name\n"
104 "FROM resource_types\n");
105 if (!r) {
106 qWarning() << "Could not prepare KisResourceTypeModel query" << d->query.lastError();
107 }
108 r = d->query.exec();
109 if (!r) {
110 qWarning() << "Could not execute KisResourceTypeModel query" << d->query.lastError();
111 }
112 d->cachedRowCount = -1;
113 endResetModel();
114 return r;
115}
qreal v
int columnCount(const QModelIndex &parent=QModelIndex()) const override
KisResourceTypeModel(QObject *parent=0)
QVariant data(const QModelIndex &index, int role) const override
int rowCount(const QModelIndex &parent=QModelIndex()) const override
KRITARESOURCES_EXPORT QString resourceTypeToName(const QString &resourceType)