Krita Source Code Documentation
Loading...
Searching...
No Matches
KisResourceLoaderRegistry Class Reference

The KisResourceLoaderRegistry class manages the loader plugins for resources. Every resource can be loaded by a KisResourceLoader instance. A loader corresponds to a particular file type. Resources are organized in folders that represent the main type of a certain resource (brushes) and subtypes, that identify a particular resource format (gbr, gih, png, svg). More...

#include <KisResourceLoaderRegistry.h>

+ Inheritance diagram for KisResourceLoaderRegistry:

Classes

struct  Private
 
struct  ResourceCacheFixup
 

Public Member Functions

QStringList executeAllFixups ()
 
QStringList filters (const QString &resourceType) const
 
KisResourceLoaderBaseloader (const QString &resourceType, const QString &mimetype) const
 
QStringList mimeTypes (const QString &resourceType) const
 
void registerFixup (int priority, ResourceCacheFixup *fixup)
 
void registerLoader (KisResourceLoaderBase *loader)
 
QVector< KisResourceLoaderBase * > resourceTypeLoaders (const QString &resourceType) const
 
QStringList resourceTypes () const
 
 ~KisResourceLoaderRegistry () override
 
- Public Member Functions inherited from KoGenericRegistry< KisResourceLoaderBase * >
void add (const QString &id, KisResourceLoaderBase * item)
 
void add (KisResourceLoaderBase * item)
 
void addAlias (const QString &alias, const QString &id)
 
QHash< QString, KisResourceLoaderBase * >::const_iterator constBegin () const
 
QHash< QString, KisResourceLoaderBase * >::const_iterator constEnd () const
 
bool contains (const QString &id) const
 
int count () const
 
QList< KisResourceLoaderBase * > doubleEntries () const
 
KisResourceLoaderBaseget (const QString &id) const
 
QList< QString > keys () const
 
 KoGenericRegistry ()
 
void remove (const QString &id)
 
void removeAlias (const QString &alias)
 
const KisResourceLoaderBasevalue (const QString &id) const
 
QList< KisResourceLoaderBase * > values () const
 
virtual ~KoGenericRegistry ()
 

Static Public Member Functions

static KisResourceLoaderRegistryinstance ()
 

Private Member Functions

 KisResourceLoaderRegistry (const KisResourceLoaderRegistry &)
 
 KisResourceLoaderRegistry (QObject *parent)
 
KisResourceLoaderRegistry operator= (const KisResourceLoaderRegistry &)
 

Private Attributes

QScopedPointer< Privatem_d
 

Detailed Description

The KisResourceLoaderRegistry class manages the loader plugins for resources. Every resource can be loaded by a KisResourceLoader instance. A loader corresponds to a particular file type. Resources are organized in folders that represent the main type of a certain resource (brushes) and subtypes, that identify a particular resource format (gbr, gih, png, svg).

KisResourceLoaderRegistry has full knowledge of all resource types that are defined for Krita.

Definition at line 26 of file KisResourceLoaderRegistry.h.

Constructor & Destructor Documentation

◆ ~KisResourceLoaderRegistry()

KisResourceLoaderRegistry::~KisResourceLoaderRegistry ( )
override

Definition at line 27 of file KisResourceLoaderRegistry.cpp.

28{
29 qDeleteAll(values());
30 qDeleteAll(m_d->fixups);
31}
QScopedPointer< Private > m_d
QList< KisResourceLoaderBase * > values() const

References m_d, and KoGenericRegistry< KisResourceLoaderBase * >::values().

◆ KisResourceLoaderRegistry() [1/2]

KisResourceLoaderRegistry::KisResourceLoaderRegistry ( QObject * parent)
private

Definition at line 21 of file KisResourceLoaderRegistry.cpp.

22 : QObject(parent),
23 m_d(new Private)
24{
25}

◆ KisResourceLoaderRegistry() [2/2]

KisResourceLoaderRegistry::KisResourceLoaderRegistry ( const KisResourceLoaderRegistry & )
private

Member Function Documentation

◆ executeAllFixups()

QStringList KisResourceLoaderRegistry::executeAllFixups ( )

Definition at line 74 of file KisResourceLoaderRegistry.cpp.

75{
76 QStringList errorMessages;
77
78 Q_FOREACH (ResourceCacheFixup *fixup, m_d->fixups) {
79 errorMessages << fixup->executeFix();
80 }
81
82 return errorMessages;
83}

References KisResourceLoaderRegistry::ResourceCacheFixup::executeFix(), and m_d.

◆ filters()

QStringList KisResourceLoaderRegistry::filters ( const QString & resourceType) const
Returns
a list of filename extensions that can be present for the given resource type

Definition at line 85 of file KisResourceLoaderRegistry.cpp.

86{
88 Q_FOREACH(KisResourceLoaderBase *loader, resourceTypeLoaders(resourceType)) {
89 r.append(loader->filters());
90 }
91 r.removeDuplicates();
92 r.sort();
93 return r;
94}
The KisResourceLoader class is an abstract interface class that must be implemented by actual resourc...
QStringList filters() const
QVector< KisResourceLoaderBase * > resourceTypeLoaders(const QString &resourceType) const
KisResourceLoaderBase * loader(const QString &resourceType, const QString &mimetype) const

References KisResourceLoaderBase::filters(), loader(), and resourceTypeLoaders().

◆ instance()

KisResourceLoaderRegistry * KisResourceLoaderRegistry::instance ( )
static

Definition at line 33 of file KisResourceLoaderRegistry.cpp.

34{
35 KisResourceLoaderRegistry *reg = qApp->findChild<KisResourceLoaderRegistry *>(QString());
36 if (!reg) {
37 reg = new KisResourceLoaderRegistry(qApp);
38 }
39 return reg;
40}
The KisResourceLoaderRegistry class manages the loader plugins for resources. Every resource can be l...

References KisResourceLoaderRegistry().

◆ loader()

KisResourceLoaderBase * KisResourceLoaderRegistry::loader ( const QString & resourceType,
const QString & mimetype ) const
Returns
the first loader for the given resource type and mimetype

Definition at line 47 of file KisResourceLoaderRegistry.cpp.

48{
49 Q_FOREACH(KisResourceLoaderBase *loader, resourceTypeLoaders(resourceType)) {
50
51 if (loader->mimetypes().contains(mimetype)) {
52 return loader;
53 }
54 }
55 return 0;
56}
QStringList mimetypes() const

References loader(), KisResourceLoaderBase::mimetypes(), and resourceTypeLoaders().

◆ mimeTypes()

QStringList KisResourceLoaderRegistry::mimeTypes ( const QString & resourceType) const
Returns
a list of mimetypes that can be loaded for the given resource type

Definition at line 96 of file KisResourceLoaderRegistry.cpp.

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}
static QString mimeTypeForSuffix(const QString &suffix)
Find the mimetype for a given extension. The extension may have the form "*.xxx" or "xxx".
static KisResourceLoaderRegistry * instance()
QStringList mimeTypes(const QString &resourceType) const
QStringList filters(const QString &resourceType) const

References filters(), instance(), KisMimeDatabase::mimeTypeForSuffix(), and mimeTypes().

◆ operator=()

KisResourceLoaderRegistry KisResourceLoaderRegistry::operator= ( const KisResourceLoaderRegistry & )
private

◆ registerFixup()

void KisResourceLoaderRegistry::registerFixup ( int priority,
ResourceCacheFixup * fixup )

Definition at line 69 of file KisResourceLoaderRegistry.cpp.

70{
71 m_d->fixups.insert(priority, fixup);
72}

References m_d.

◆ registerLoader()

void KisResourceLoaderRegistry::registerLoader ( KisResourceLoaderBase * loader)

Adds the given loader and registers its type in the database, if it hasn't been registered yet.

Definition at line 42 of file KisResourceLoaderRegistry.cpp.

43{
44 add(loader);
45}
void add(KisResourceLoaderBase * item)

References KoGenericRegistry< KisResourceLoaderBase * >::add(), and loader().

◆ resourceTypeLoaders()

QVector< KisResourceLoaderBase * > KisResourceLoaderRegistry::resourceTypeLoaders ( const QString & resourceType) const
Returns
a list of loader plugins that can handle the resources stored in the folder. A folder can contain multiple subtypes.

Definition at line 58 of file KisResourceLoaderRegistry.cpp.

59{
61 Q_FOREACH(KisResourceLoaderBase *loader, values()) {
62 if (loader->resourceType() == resourceType) {
63 r << loader;
64 }
65 }
66 return r;
67}
QString resourceType() const

References loader(), KisResourceLoaderBase::resourceType(), and KoGenericRegistry< KisResourceLoaderBase * >::values().

◆ resourceTypes()

QStringList KisResourceLoaderRegistry::resourceTypes ( ) const
Returns
the list of folders for which resource loaders have been registered

Definition at line 111 of file KisResourceLoaderRegistry.cpp.

112{
114 Q_FOREACH(KisResourceLoaderBase *loader, values()) {
115 r << loader->resourceType();
116 }
117 r.removeDuplicates();
118 r.sort();
119
120 return r;
121}

References loader(), KisResourceLoaderBase::resourceType(), and KoGenericRegistry< KisResourceLoaderBase * >::values().

Member Data Documentation

◆ m_d

QScopedPointer<Private> KisResourceLoaderRegistry::m_d
private

Definition at line 84 of file KisResourceLoaderRegistry.h.


The documentation for this class was generated from the following files: