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