Krita Source Code Documentation
Loading...
Searching...
No Matches
KisResourceIterator.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2018 Boudewijn Rempt <boud@valdyas.org>
3 *
4 * SPDX-License-Identifier: LGPL-2.0-or-later
5 */
7
8#include <KisResourceModel.h>
9#include <QModelIndex>
10
11KisResourceItem::KisResourceItem(KisResourceModel *resourceModel, const QModelIndex &index)
12 : m_resourceModel(resourceModel)
13 , m_index(index)
14{
15
16}
17
19{
20 if (m_index.isValid()) {
21 return m_index.data(Qt::UserRole + KisAbstractResourceModel::Id).toInt();
22 }
23 return -1;
24}
25
27{
28 if (m_index.isValid()) {
29 return m_index.data(Qt::UserRole + KisAbstractResourceModel::ResourceType).toString();
30 }
31 return QString();
32}
33
35{
36 if (m_index.isValid()) {
37 return m_index.data(Qt::UserRole + KisAbstractResourceModel::Name).toString();
38 }
39 return QString();
40}
41
43{
44 if (m_index.isValid()) {
45 return m_index.data(Qt::UserRole + KisAbstractResourceModel::Filename).toString();
46 }
47 return QString();
48}
49
51{
52 if (m_index.isValid()) {
53 return m_index.data(Qt::UserRole + KisAbstractResourceModel::Tooltip).toString();
54 }
55 return QString();
56}
57
59{
60 return resource()->md5Sum();
61}
62
64{
65 if (m_index.isValid()) {
66 return m_index.data(Qt::UserRole + KisAbstractResourceModel::Thumbnail).value<QImage>();
67 }
68 return QImage();
69}
70
72{
73 if (m_index.isValid() && m_resourceModel) {
75 }
76 return 0;
77}
78
80{
81 Private(KisResourceModel *_resourceModel)
82 : resourceModel(_resourceModel)
83 {}
84
86 int currentRow {0};
87};
88
90 : d(new Private(resourceModel))
91{
92}
93
97
98
100{
101 return d->currentRow < d->resourceModel->rowCount();
102}
103
105{
106 return d->currentRow > 0 && d->resourceModel->rowCount() > 0;
107}
108
110{
111 if (hasNext()) {
112 QModelIndex idx = d->resourceModel->index(d->currentRow, 0);
113 d->currentRow++;
114 return KisResourceItemSP(new KisResourceItem(d->resourceModel, idx));
115 }
116 return KisResourceItemSP(new KisResourceItem(0, QModelIndex()));
117}
118
120{
121 if (hasNext()) {
122 QModelIndex idx = d->resourceModel->index(d->currentRow, 0);
123 return KisResourceItemSP(new KisResourceItem(d->resourceModel, idx));
124 }
125 return KisResourceItemSP(new KisResourceItem(0, QModelIndex()));
126}
127
129{
130 if (hasPrevious()) {
131 QModelIndex idx = d->resourceModel->index(d->currentRow - 1, 0);
132 return KisResourceItemSP(new KisResourceItem(d->resourceModel, idx));
133 }
134 return KisResourceItemSP(new KisResourceItem(0, QModelIndex()));
135}
136
138{
139 if (hasPrevious()) {
140 d->currentRow--;
141 QModelIndex idx = d->resourceModel->index(d->currentRow, 0);
142 return KisResourceItemSP(new KisResourceItem(d->resourceModel, idx));
143 }
144 return KisResourceItemSP(new KisResourceItem(0, QModelIndex()));
145
146}
147
149{
150 d->currentRow = 0;
151}
152
154{
155 d->currentRow = d->resourceModel->rowCount();
156}
QSharedPointer< KisResourceItem > KisResourceItemSP
The KisResourceItem class represents a resource, but until resource() is called, the resource is not ...
KoResourceSP resource()
KisResourceModel * m_resourceModel
KisResourceItem(KisResourceModel *resourceModel, const QModelIndex &index)
const KisResourceItemSP previous()
const KisResourceItemSP peekPrevious() const
const KisResourceItemSP next()
KisResourceIterator(KisResourceModel *resourceModel)
const KisResourceItemSP peekNext() const
QScopedPointer< Private > d
The KisResourceModel class provides the main access to resources. It is possible to filter the resour...
KoResourceSP resourceForIndex(QModelIndex index=QModelIndex()) const override
resourceForIndex returns a properly versioned and id'ed resource object
Private(KisResourceModel *_resourceModel)