Krita Source Code Documentation
Loading...
Searching...
No Matches
KisResourceLoaderRegistry.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 */
6
8
9#include <QApplication>
10#include <QString>
11#include <QDebug>
12
13#include <KisResourceCacheDb.h>
14#include <KisMimeDatabase.h>
15
17{
18 QMap<int, ResourceCacheFixup*> fixups;
19};
20
22 : QObject(parent),
23 m_d(new Private)
24{
25}
26
28{
29 qDeleteAll(values());
30 qDeleteAll(m_d->fixups);
31}
32
34{
35 KisResourceLoaderRegistry *reg = qApp->findChild<KisResourceLoaderRegistry *>(QString());
36 if (!reg) {
37 reg = new KisResourceLoaderRegistry(qApp);
38 }
39 return reg;
40}
41
46
47KisResourceLoaderBase *KisResourceLoaderRegistry::loader(const QString &resourceType, const QString &mimetype) const
48{
49 Q_FOREACH(KisResourceLoaderBase *loader, resourceTypeLoaders(resourceType)) {
50
51 if (loader->mimetypes().contains(mimetype)) {
52 return loader;
53 }
54 }
55 return 0;
56}
57
59{
61 Q_FOREACH(KisResourceLoaderBase *loader, values()) {
62 if (loader->resourceType() == resourceType) {
63 r << loader;
64 }
65 }
66 return r;
67}
68
70{
71 m_d->fixups.insert(priority, fixup);
72}
73
75{
76 QStringList errorMessages;
77
78 Q_FOREACH (ResourceCacheFixup *fixup, m_d->fixups) {
79 errorMessages << fixup->executeFix();
80 }
81
82 return errorMessages;
83}
84
85QStringList KisResourceLoaderRegistry::filters(const QString &resourceType) const
86{
88 Q_FOREACH(KisResourceLoaderBase *loader, resourceTypeLoaders(resourceType)) {
89 r.append(loader->filters());
90 }
91 r.removeDuplicates();
92 r.sort();
93 return r;
94}
95
96QStringList KisResourceLoaderRegistry::mimeTypes(const QString &resourceType) const
97{
98 QStringList extensions = KisResourceLoaderRegistry::instance()->filters(resourceType);
100 Q_FOREACH(const QString &extension, extensions) {
102 }
103 mimeTypes.removeDuplicates();
104 mimeTypes.sort();
105
106 return mimeTypes;
107}
108
109
110
112{
113 QStringList r;
114 Q_FOREACH(KisResourceLoaderBase *loader, values()) {
115 r << loader->resourceType();
116 }
117 r.removeDuplicates();
118 r.sort();
119
120 return r;
121}
static QString mimeTypeForSuffix(const QString &suffix)
Find the mimetype for a given extension. The extension may have the form "*.xxx" or "xxx".
The KisResourceLoader class is an abstract interface class that must be implemented by actual resourc...
QStringList filters() const
QString resourceType() const
QStringList mimetypes() const
The KisResourceLoaderRegistry class manages the loader plugins for resources. Every resource can be l...
QScopedPointer< Private > m_d
static KisResourceLoaderRegistry * instance()
QVector< KisResourceLoaderBase * > resourceTypeLoaders(const QString &resourceType) const
QStringList mimeTypes(const QString &resourceType) const
QStringList filters(const QString &resourceType) const
KisResourceLoaderBase * loader(const QString &resourceType, const QString &mimetype) const
void registerLoader(KisResourceLoaderBase *loader)
void registerFixup(int priority, ResourceCacheFixup *fixup)
void add(KisResourceLoaderBase * item)
QList< KisResourceLoaderBase * > values() const
QMap< int, ResourceCacheFixup * > fixups