7#ifndef KISRESOURCESTORAGE_H
8#define KISRESOURCESTORAGE_H
10#include <QSharedPointer>
11#include <QScopedPointer>
19#include <klocalizedstring.h>
21#include <kritaresources_export.h>
37 return new T(location);
87 virtual QString
url()
const = 0;
88 virtual QString
type()
const = 0;
108 AdobeBrushLibrary = 4,
109 AdobeStyleLibrary = 5,
115 switch (storageType) {
116 case StorageType::Unknown:
117 return i18n(
"Unknown");
118 case StorageType::Folder:
119 return i18n(
"Folder");
120 case StorageType::Bundle:
121 return i18n(
"Bundle");
122 case StorageType::AdobeBrushLibrary:
123 return i18n(
"Adobe Brush Library");
124 case StorageType::AdobeStyleLibrary:
125 return i18n(
"Adobe Style Library");
126 case StorageType::FontStorage:
127 return i18n(
"Font Storage");
128 case StorageType::Memory:
129 return i18n(
"Memory");
131 return i18n(
"Invalid");
137 switch (storageType) {
138 case StorageType::Unknown:
140 case StorageType::Folder:
142 case StorageType::Bundle:
144 case StorageType::AdobeBrushLibrary:
145 return (
"Adobe Brush Library");
146 case StorageType::AdobeStyleLibrary:
147 return (
"Adobe Style Library");
148 case StorageType::FontStorage:
149 return (
"Font Storage");
150 case StorageType::Memory:
167 QString name()
const;
170 QString location()
const;
176 StorageType type()
const;
179 QImage thumbnail()
const;
183 QDateTime timestamp()
const;
187 QDateTime timeStampForResource(
const QString &resourceType,
const QString &filename)
const;
190 ResourceItem resourceItem(
const QString &url);
196 QString resourceMd5(
const QString &url);
203 QString resourceFilePath(
const QString &url);
230 bool importResource(
const QString &url, QIODevice *device);
238 bool exportResource(
const QString &url, QIODevice *device);
242 bool supportsVersioning()
const;
266 void setMetaData(
const QString &key,
const QVariant &
value);
268 QVariant metaData(
const QString &key)
const;
275 friend class TestResourceLocator;
279 void setStorageId(
int storageId);
283 QScopedPointer<Private>
d;
290 if (storage.isNull()) {
291 dbg.nospace() <<
"[RESOURCESTORAGE] NULL";
294 dbg.nospace() <<
"[RESOURCESTORAGE] Name: " << storage->name()
295 <<
" Version: " << storage->location()
296 <<
" Valid: " << storage->valid()
298 <<
" Timestamp: " << storage->timestamp()
299 <<
" Pointer: " << storage.data();
344 static bool addVersionedResource(
const QString &saveLocation,
KoResourceSP resource,
int minVersion);
347 std::function<
bool(QString)> checkExists);
361 void next()
override;
362 QString
url()
const override;
363 QString
type()
const override;
float value(const T *src, size_t ch)
QDebug operator<<(QDebug dbg, const KisResourceStorageSP storage)
QSharedPointer< KisResourceStorage > KisResourceStorageSP
PythonPluginManager * instance
The KisResourceCacheDb class encapsulates the database that caches information about the resources av...
virtual ~ResourceIterator()
virtual void next()=0
The iterator is only valid if next() has been called at least once.
virtual QString url() const =0
virtual KoResourceSP resourceImpl() const =0
This only loads the resource when called.
virtual bool hasNext() const =0
virtual int guessedVersion() const
KoResourceSP m_cachedResource
virtual QDateTime lastModified() const =0
QString m_cachedResourceUrl
virtual QString type() const =0
virtual void next()=0
The iterator is only valid if next() has been called at least once.
virtual KisTagSP tag() const =0
A tag object on which we can set properties and which we can save.
virtual bool hasNext() const =0
static const QString s_meta_author
static const QString s_meta_title
static const QString s_meta_user_defined
static const QString s_meta_creation_date
static const QString s_meta_value
static const QString s_meta_email
static QString storageTypeToString(StorageType storageType)
static const QString s_meta_license
static const QString s_xmlns_meta
static QString storageTypeToUntranslatedString(StorageType storageType)
bool addTag(const QString &resourceType, KisTagSP tag)
static const QString s_meta_description
static const QString s_meta_dc_date
static const QString s_meta_website
static const QString s_meta_generator
static const QString s_meta_version
static const QString s_meta_name
QScopedPointer< Private > d
static const QString s_xmlns_dc
static const QString s_meta_initial_creator
static const QString s_meta_creator
virtual KisStoragePlugin * create(const QString &)
virtual ~KisStoragePluginFactoryBase()
KisStoragePlugin * create(const QString &location) override
QMap< KisResourceStorage::StorageType, KisStoragePluginFactoryBase * > m_storageFactoryMap
int guessedVersion() const override
const QVector< VersionedResourceEntry > m_entries
QString url() const override
QVector< VersionedResourceEntry >::const_iterator m_it
QDateTime lastModified() const override
KisVersionedStorageIterator(const QVector< VersionedResourceEntry > &entries, KisStoragePlugin *_q)
bool hasNext() const override
QVector< VersionedResourceEntry >::const_iterator m_begin
void next() override
The iterator is only valid if next() has been called at least once.
QVector< VersionedResourceEntry >::const_iterator m_chunkStart
QVector< VersionedResourceEntry >::const_iterator m_end
QString type() const override
QSharedPointer< KisResourceStorage::ResourceIterator > versions() const override
KoResourceSP resourceImpl() const override
This only loads the resource when called.
A resource item is simply an entry in the storage,.
bool operator()(const VersionedResourceEntry &lhs, const VersionedResourceEntry &rhs) const
bool operator()(const VersionedResourceEntry &lhs, const VersionedResourceEntry &rhs) const