Krita Source Code Documentation
Loading...
Searching...
No Matches
KisResourcesInterface::ResourceSourceAdapter Class Referenceabstract

#include <KisResourcesInterface.h>

Public Member Functions

KoResourceSP bestMatch (const QString md5, const QString filename, const QString name)
 bestMatch retrieves a resource, preferably by md5, but with filename and name as fallback for older files that do not store the md5sum. If the resource is not found by md5 and the md5 isn't empty, then it will try to fallback to searching by filename, but will show a warning in case sanity checks are enabled.
 
KoResourceLoadResult bestMatchLoadResult (const QString md5, const QString filename, const QString name)
 
virtual KoResourceSP fallbackResource () const =0
 
virtual QVector< KoResourceSPresourcesForFilename (const QString &filename) const =0
 
virtual QVector< KoResourceSPresourcesForMD5 (const QString &md5) const =0
 
virtual QVector< KoResourceSPresourcesForName (const QString &name) const =0
 
 ResourceSourceAdapter (const QString &type)
 
virtual ~ResourceSourceAdapter ()
 

Private Member Functions

 Q_DISABLE_COPY (ResourceSourceAdapter)
 

Private Attributes

const QString m_type
 

Friends

class KisResourcesInterface
 

Detailed Description

Definition at line 43 of file KisResourcesInterface.h.

Constructor & Destructor Documentation

◆ ResourceSourceAdapter()

KisResourcesInterface::ResourceSourceAdapter::ResourceSourceAdapter ( const QString & type)

Definition at line 62 of file KisResourcesInterface.cpp.

◆ ~ResourceSourceAdapter()

KisResourcesInterface::ResourceSourceAdapter::~ResourceSourceAdapter ( )
virtual

Definition at line 67 of file KisResourcesInterface.cpp.

68{
69}

Member Function Documentation

◆ bestMatch()

KoResourceSP KisResourcesInterface::ResourceSourceAdapter::bestMatch ( const QString md5,
const QString filename,
const QString name )

bestMatch retrieves a resource, preferably by md5, but with filename and name as fallback for older files that do not store the md5sum. If the resource is not found by md5 and the md5 isn't empty, then it will try to fallback to searching by filename, but will show a warning in case sanity checks are enabled.

If multiple resources with the same md5 exist, then it prefers the one with the same filename and name.

Returns
a resource, or 0 of the resource doesn't exist.

filename is more important than name, so it gives higher penalty

Definition at line 71 of file KisResourcesInterface.cpp.

72{
74
75 if (!md5.isEmpty()) {
76 Q_FOREACH (KoResourceSP res, resourcesForMD5(md5)) {
77 int penalty = 0;
78
79 if (!res->active()) {
80 penalty += 100;
81 }
82
83 if (!filename.isEmpty() && filename != res->filename()) {
86 penalty += 2;
87 }
88
89 if (!name.isEmpty() && name != res->name()) {
90 penalty++;
91 }
92
93 foundResources.append(qMakePair(res, penalty));
94 }
95 }
96
97#ifdef SANITY_CHECKS
104 const bool warnAboutIncorrectMd5Fetch =
105 foundResources.isEmpty() && !md5.isEmpty();
106#endif
107
108 if (foundResources.isEmpty()) {
109 if (!filename.isEmpty()) {
110 Q_FOREACH (KoResourceSP res, resourcesForFilename(filename)) {
111 int penalty = 0;
112
113 if (!res->active()) {
114 penalty += 100;
115 }
116
117 if (!name.isEmpty() && name != res->name()) {
118 penalty++;
119 }
120
121 foundResources.append(qMakePair(res, penalty));
122 }
123 } else if (!name.isEmpty()) {
124 Q_FOREACH (KoResourceSP res, resourcesForName(name)) {
125 int penalty = 0;
126
127 if (!res->active()) {
128 penalty += 100;
129 }
130
131 foundResources.append(qMakePair(res, penalty));
132 }
133 }
134 }
135
136 auto it = std::min_element(foundResources.begin(), foundResources.end(),
137 [] (const QPair<KoResourceSP, int> &lhs,
138 const QPair<KoResourceSP, int> &rhs) {return lhs.second < rhs.second;});
139
140 KoResourceSP result = it != foundResources.end() ? it->first : KoResourceSP();
141
142#ifdef SANITY_CHECKS
143 if (warnAboutIncorrectMd5Fetch && result) {
144 qWarning() << "KisResourcesInterface::ResourceSourceAdapter::bestMatch: failed to fetch a resource using md5; falling back for filename...";
145 qWarning() << " requested:" << ppVar(md5) << ppVar(filename) << ppVar(name);
146 qWarning() << " found:" << result;
147 }
148#endif
149
150 return result;
151}
virtual QVector< KoResourceSP > resourcesForFilename(const QString &filename) const =0
virtual QVector< KoResourceSP > resourcesForMD5(const QString &md5) const =0
virtual QVector< KoResourceSP > resourcesForName(const QString &name) const =0
#define ppVar(var)
Definition kis_debug.h:155
QSharedPointer< KoResource > KoResourceSP
const char * name(StandardAction id)

References ppVar.

◆ bestMatchLoadResult()

KoResourceLoadResult KisResourcesInterface::ResourceSourceAdapter::bestMatchLoadResult ( const QString md5,
const QString filename,
const QString name )

Same as bestMatch(), but returns KoResourceLoadResult. In case the resource is not found in the backend storage, the load-result will be set in FailedLink state

Definition at line 153 of file KisResourcesInterface.cpp.

154{
155 KoResourceSP resource = bestMatch(md5, filename, name);
156 return
157 resource ?
158 KoResourceLoadResult(resource) :
160}
KoResourceSP bestMatch(const QString md5, const QString filename, const QString name)
bestMatch retrieves a resource, preferably by md5, but with filename and name as fallback for older f...
A simple wrapper object for the main information about the resource.

◆ fallbackResource()

virtual KoResourceSP KisResourcesInterface::ResourceSourceAdapter::fallbackResource ( ) const
pure virtual

◆ Q_DISABLE_COPY()

KisResourcesInterface::ResourceSourceAdapter::Q_DISABLE_COPY ( ResourceSourceAdapter )
private

◆ resourcesForFilename()

virtual QVector< KoResourceSP > KisResourcesInterface::ResourceSourceAdapter::resourcesForFilename ( const QString & filename) const
pure virtual

◆ resourcesForMD5()

virtual QVector< KoResourceSP > KisResourcesInterface::ResourceSourceAdapter::resourcesForMD5 ( const QString & md5) const
pure virtual

◆ resourcesForName()

virtual QVector< KoResourceSP > KisResourcesInterface::ResourceSourceAdapter::resourcesForName ( const QString & name) const
pure virtual

Friends And Related Symbol Documentation

◆ KisResourcesInterface

friend class KisResourcesInterface
friend

Definition at line 49 of file KisResourcesInterface.h.

Member Data Documentation

◆ m_type

const QString KisResourcesInterface::ResourceSourceAdapter::m_type
private

Definition at line 80 of file KisResourcesInterface.h.


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