Krita Source Code Documentation
Loading...
Searching...
No Matches
KoResourceBundle.cpp File Reference
#include "KoResourceBundle.h"
#include <QBuffer>
#include <QByteArray>
#include <QCryptographicHash>
#include <QDate>
#include <QDir>
#include <QMessageBox>
#include <QPainter>
#include <QProcessEnvironment>
#include <QScopedPointer>
#include <QStringList>
#include <klocalizedstring.h>
#include <KisMimeDatabase.h>
#include "KoResourceBundleManifest.h"
#include <KoMD5Generator.h>
#include <KoResourcePaths.h>
#include <KoStore.h>
#include <KoXmlWriter.h>
#include "KisStoragePlugin.h"
#include "KisResourceLoaderRegistry.h"
#include <KisResourceModelProvider.h>
#include <KisResourceModel.h>
#include <KritaVersionWrapper.h>
#include <kis_debug.h>
#include <KisGlobalResourcesInterface.h>

Go to the source code of this file.

Functions

bool saveResourceToStore (const QString &filename, KoResourceSP resource, KoStore *store, const QString &resType, KisResourceModel &model)
 

Function Documentation

◆ saveResourceToStore()

bool saveResourceToStore ( const QString & filename,
KoResourceSP resource,
KoStore * store,
const QString & resType,
KisResourceModel & model )

Definition at line 120 of file KoResourceBundle.cpp.

121{
122 if (!resource) {
123 qWarning() << "No Resource";
124 return false;
125 }
126
127 if (!resource->valid()) {
128 qWarning() << "Resource is not valid";
129 return false;
130 }
131 if (!store || store->bad()) {
132 qWarning() << "No Store or Store is Bad";
133 return false;
134 }
135
136 QBuffer buf;
137 buf.open(QFile::WriteOnly);
138
139 bool response = model.exportResource(resource, &buf);
140 if (!response) {
141 qWarning() << "Cannot save to device";
142 return false;
143 }
144
145 if (!store->open(resType + "/" + filename)) {
146 qWarning() << "Could not open file in store for resource";
147 return false;
148 }
149
150 qint64 size = store->write(buf.data());
151 store->close();
152 buf.close();
153 if (size != buf.size()) {
154 qWarning() << "Cannot save resource to the store" << size << buf.size();
155 return false;
156 }
157
158 if (!resource->thumbnailPath().isEmpty()) {
159 // hack for MyPaint brush presets previews
160 const QImage thumbnail = resource->thumbnail();
161
162 // clone resource to find out the file path for its preview
163 KoResourceSP clonedResource = resource->clone();
164 clonedResource->setFilename(filename);
165
166 if (!store->open(resType + "/" + clonedResource->thumbnailPath())) {
167 qWarning() << "Could not open file in store for resource thumbnail";
168 return false;
169 }
170 QBuffer buf;
171 buf.open(QFile::ReadWrite);
172 thumbnail.save(&buf, "PNG");
173
174 int size2 = store->write(buf.data());
175 if (size2 != buf.size()) {
176 qWarning() << "Cannot save thumbnail to the store" << size << buf.size();
177 }
178 store->close();
179 buf.close();
180 }
181
182
183 return size == buf.size();
184}
bool exportResource(KoResourceSP resource, QIODevice *device) override
exportResource exports a resource into a QIODevice
qint64 write(const QByteArray &data)
Definition KoStore.cpp:198
bool close()
Definition KoStore.cpp:156
bool bad() const
Definition KoStore.cpp:414
bool open(const QString &name)
Definition KoStore.cpp:109
int size(const Forest< T > &forest)
Definition KisForest.h:1232

References KoStore::bad(), KoStore::close(), KisResourceModel::exportResource(), KoStore::open(), and KoStore::write().