27 m_dirIterator.reset(
new QDirIterator(location +
'/' + resourceType,
29 QDir::Files | QDir::Readable,
30 QDirIterator::Subdirectories));
43 qWarning() <<
"Could not load tag" <<
m_dirIterator->filePath();
59 f.open(QFile::ReadOnly);
61 qWarning() <<
m_dirIterator->filePath() <<
"is not a valid tag desktop file";
102 item.
folder = fi.path().split(
"/").last();
111 QFile f(fi.absoluteFilePath());
112 if (!f.open(QFile::ReadOnly)) {
113 qWarning() <<
"Could not open" << fi.absoluteFilePath() <<
"for reading";
138 if (file.exists() && file.open(QIODevice::ReadOnly)) {
147 QFileInfo file(
location() +
"/" + url);
148 return file.exists() ? file.absoluteFilePath() : QString();
155 const QString resourcesSaveLocation =
location() +
"/" + resourceType;
157 QDirIterator it(resourcesSaveLocation,
159 QDir::Files | QDir::Readable,
160 QDirIterator::Subdirectories);;
162 while (it.hasNext()) {
164 QFileInfo info(it.fileInfo());
167 entry.
filename = it.filePath().mid(resourcesSaveLocation.size() + 1);
170 if (entry.
filename.contains(
"backup")) {
177 entries.append(entry);
194 const QString resourcesLocation =
location() +
"/" + url;
196 QFile f(resourcesLocation);
198 if (f.exists())
return result;
200 if (f.open(QFile::WriteOnly)) {
201 qint64 writtenBytes = f.write(device->readAll());
203 result = (writtenBytes == device->size());
205 qWarning() <<
"Cannot open" << resourcesLocation <<
"for writing";
210 if (resourceAfterLoading.isNull()) {
222 const QString resourcesLocation =
location() +
"/" + url;
224 QFile f(resourcesLocation);
226 if (!f.exists())
return result;
228 if (f.open(QFile::ReadOnly)) {
229 device->write(f.readAll());
233 qWarning() <<
"Cannot open" << resourcesLocation <<
"for reading";
243 const QString resourcesSaveLocation =
location() +
"/" + resourceType;
245 QFileInfo fi(resourcesSaveLocation +
"/" +
resource->filename());
247 qWarning() <<
"Resource" << resourceType <<
resource->filename() <<
"already exists in" << resourcesSaveLocation;
251 QFile resourceFile(fi.absoluteFilePath());
252 if (!resourceFile.open(QFile::WriteOnly)) {
253 qWarning() <<
"Could not open" << fi.absoluteFilePath() <<
"for writing.";
257 if (!
resource->saveToDevice(&resourceFile)) {
258 qWarning() <<
"Could not save resource to" << fi.absoluteFilePath();
259 resourceFile.close();
262 resourceFile.close();
278 return i18n(
"Local Resources");
QList< QString > QStringList
bool hasNext() const override
KisTagSP tag() const override
A tag object on which we can set properties and which we can save.
void next() override
The iterator is only valid if next() has been called at least once.
bool load(KisTagSP tag) const
QScopedPointer< QDirIterator > m_dirIterator
FolderTagIterator(const QString &location, const QString &resourceType)
KisFolderStorage(const QString &location)
bool loadVersionedResource(KoResourceSP resource) override
QString resourceMd5(const QString &url) override
QVariant metaData(const QString &key) const override
bool addResource(const QString &resourceType, KoResourceSP resource) override
QStringList metaDataKeys() const override
QString resourceFilePath(const QString &url) override
KisResourceStorage::ResourceItem resourceItem(const QString &url) override
bool importResource(const QString &url, QIODevice *device) override
bool exportResource(const QString &url, QIODevice *device) override
QSharedPointer< KisResourceStorage::ResourceIterator > resources(const QString &resourceType) override
bool saveAsNewVersion(const QString &resourceType, KoResourceSP resource) override
Adds or updates this resource to the storage.
QSharedPointer< KisResourceStorage::TagIterator > tags(const QString &resourceType) override
virtual ~KisFolderStorage()
static KisResourcesInterfaceSP instance()
static KisResourceLoaderRegistry * instance()
static const QString s_meta_name
virtual KoResourceSP resource(const QString &url)
void sanitizeResourceFileNameCase(KoResourceSP resource, const QDir &parentDir)
static void detectFileVersions(QVector< VersionedResourceEntry > &allFiles)
static bool addVersionedResource(const QString &saveLocation, KoResourceSP resource, int minVersion)
The KisTag loads a tag from a .tag file. A .tag file is a .desktop file. The following fields are imp...
static QString generateHash(const QString &filename)
generateHash reads the given file and generates a hex-encoded md5sum for the file.
QSharedPointer< T > toQShared(T *ptr)
A resource item is simply an entry in the storage,.