File indexing completed on 2024-05-12 15:59:49
0001 /* 0002 * SPDX-FileCopyrightText: 2018 Boudewijn Rempt <boud@valdyas.org> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 #ifndef KISRESOURCEITERATOR_H 0007 #define KISRESOURCEITERATOR_H 0008 0009 #include <QImage> 0010 #include <QString> 0011 #include <QScopedPointer> 0012 #include <QModelIndex> 0013 0014 #include <KoResource.h> 0015 0016 class KisResourceModel; 0017 0018 #include <kritaresources_export.h> 0019 0020 /** 0021 * @brief The KisResourceItem class represents a resource, but until resource() is called, 0022 * the resource is not loaded; the rest of the information comes from the cache database. 0023 * 0024 * KisResourceItem is used in the KisStoragePlugin's resource iterators to populate the 0025 * database. 0026 */ 0027 class KRITARESOURCES_EXPORT KisResourceItem { 0028 private: 0029 friend class KisResourceIterator; 0030 KisResourceItem(KisResourceModel *resourceModel, const QModelIndex &index); 0031 public: 0032 int id(); 0033 QString resourceType(); 0034 QString name(); 0035 QString filename(); 0036 QString tooltip(); 0037 QString md5sum(); 0038 QImage thumbnail(); 0039 KoResourceSP resource(); 0040 private: 0041 KisResourceModel *m_resourceModel; 0042 QModelIndex m_index; 0043 }; 0044 0045 typedef QSharedPointer<KisResourceItem> KisResourceItemSP; 0046 0047 /** 0048 * @brief The KisResourceIterator class provides an iterator 0049 * for a KisResourceModel. 0050 */ 0051 class KRITARESOURCES_EXPORT KisResourceIterator 0052 { 0053 public: 0054 KisResourceIterator(KisResourceModel *resourceModel); 0055 ~KisResourceIterator(); 0056 0057 bool hasNext() const; 0058 bool hasPrevious() const; 0059 const KisResourceItemSP next(); 0060 const KisResourceItemSP peekNext() const; 0061 const KisResourceItemSP peekPrevious() const; 0062 const KisResourceItemSP previous(); 0063 void toFront(); 0064 void toBack(); 0065 0066 private: 0067 struct Private; 0068 QScopedPointer<Private> d; 0069 }; 0070 0071 #endif // KisResourceITERATOR_H