Krita Source Code Documentation
Loading...
Searching...
No Matches
KisResourceLoader.h
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 */
6
7#ifndef KISRESOURCELOADER_H
8#define KISRESOURCELOADER_H
9
10#include <QString>
11#include <QStringList>
12#include <QSharedPointer>
13#include <QIODevice>
14
15#include <KoResource.h>
16#include <KoID.h>
17
18#include <kritaresources_export.h>
19
20
26class KRITARESOURCES_EXPORT KisResourceLoaderBase
27{
28public:
29
30 KisResourceLoaderBase(const QString &resourceSubType, const QString &resourceType, const QString &name, const QStringList &mimetypes)
31 {
32 m_resourceSubType = resourceSubType;
33 m_resourceType = resourceType;
34 m_mimetypes = mimetypes;
35 m_name = name;
36 }
37
39 {
40 }
41
46 QStringList filters() const;
47
52 {
53 return m_mimetypes;
54 }
55
60 QString resourceType() const
61 {
62 return m_resourceType;
63 }
64
65 QString resourceSubType() const
66 {
67 return id();
68 }
69
71 QString id() const
72 {
73 return m_resourceSubType;
74 }
75
77 QString name() const
78 {
79 return m_name;
80 }
81
82 virtual KoResourceSP create(const QString &name) = 0;
83
84 bool load(KoResourceSP resource, QIODevice &dev, KisResourcesInterfaceSP resourcesInterface)
85 {
86 Q_ASSERT(dev.isOpen() && dev.isReadable());
87 return resource->loadFromDevice(&dev, resourcesInterface);
88 }
89
94 KoResourceSP load(const QString &name, QIODevice &dev, KisResourcesInterfaceSP resourcesInterface)
95 {
96 KoResourceSP resource = create(name);
97 return load(resource, dev, resourcesInterface) ? resource : 0;
98 }
99
100
101private:
105 QString m_name;
106
107};
108
109template<typename T>
111public:
112 KisResourceLoader(const QString &id, const QString &folder, const QString &name, const QStringList &mimetypes)
113 : KisResourceLoaderBase(id, folder, name, mimetypes)
114 {
115 }
116
117 virtual KoResourceSP create(const QString &name) override
118 {
120 return resource;
121 }
122};
123
124
125
126#endif // KISRESOURCELOADER_H
The KisResourceLoader class is an abstract interface class that must be implemented by actual resourc...
QString resourceType() const
KisResourceLoaderBase(const QString &resourceSubType, const QString &resourceType, const QString &name, const QStringList &mimetypes)
virtual KoResourceSP create(const QString &name)=0
QString resourceSubType() const
bool load(KoResourceSP resource, QIODevice &dev, KisResourcesInterfaceSP resourcesInterface)
QString id() const
For registration in KisResourceLoaderRegistry.
KoResourceSP load(const QString &name, QIODevice &dev, KisResourcesInterfaceSP resourcesInterface)
QString name() const
The user-friendly name of the category.
QStringList mimetypes() const
KisResourceLoader(const QString &id, const QString &folder, const QString &name, const QStringList &mimetypes)
virtual KoResourceSP create(const QString &name) override