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();
58 if (f.open(QFile::ReadOnly)) {
60 qWarning() <<
m_dirIterator->filePath() <<
"is not a valid tag desktop file";
101 item.
folder = fi.path().split(
"/").last();
110 QFile f(fi.absoluteFilePath());
111 if (!f.open(QFile::ReadOnly)) {
112 qWarning() <<
"Could not open" << fi.absoluteFilePath() <<
"for reading";
137 if (file.exists() && file.open(QIODevice::ReadOnly)) {
146 QFileInfo file(
location() +
"/" + url);
147 return file.exists() ? file.absoluteFilePath() : QString();
154 const QString resourcesSaveLocation =
location() +
"/" + resourceType;
156 QDirIterator it(resourcesSaveLocation,
158 QDir::Files | QDir::Readable,
159 QDirIterator::Subdirectories);;
161 while (it.hasNext()) {
163 QFileInfo info(it.fileInfo());
166 entry.
filename = it.filePath().mid(resourcesSaveLocation.size() + 1);
169 if (entry.
filename.contains(
"backup")) {
176 entries.append(entry);
193 const QString resourcesLocation =
location() +
"/" + url;
195 QFile f(resourcesLocation);
197 if (f.exists())
return result;
199 if (f.open(QFile::WriteOnly)) {
200 qint64 writtenBytes = f.write(device->readAll());
202 result = (writtenBytes == device->size());
204 qWarning() <<
"Cannot open" << resourcesLocation <<
"for writing";
209 if (resourceAfterLoading.isNull()) {
221 const QString resourcesLocation =
location() +
"/" + url;
223 QFile f(resourcesLocation);
225 if (!f.exists())
return result;
227 if (f.open(QFile::ReadOnly)) {
228 device->write(f.readAll());
232 qWarning() <<
"Cannot open" << resourcesLocation <<
"for reading";
242 const QString resourcesSaveLocation =
location() +
"/" + resourceType;
244 QFileInfo fi(resourcesSaveLocation +
"/" +
resource->filename());
246 qWarning() <<
"Resource" << resourceType <<
resource->filename() <<
"already exists in" << resourcesSaveLocation;
250 QFile resourceFile(fi.absoluteFilePath());
251 if (!resourceFile.open(QFile::WriteOnly)) {
252 qWarning() <<
"Could not open" << fi.absoluteFilePath() <<
"for writing.";
256 if (!
resource->saveToDevice(&resourceFile)) {
257 qWarning() <<
"Could not save resource to" << fi.absoluteFilePath();
258 resourceFile.close();
261 resourceFile.close();
277 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,.