Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_workspace_resource.cpp
Go to the documentation of this file.
1/* This file is part of the KDE project
2 * SPDX-FileCopyrightText: 2011 Sven Langkamp <sven.langkamp@gmail.com>
3 *
4 * SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6
8
9#include <QFile>
10#include <QDomDocument>
11#include <QTextStream>
12#include <QBuffer>
13#include <KisPortingUtils.h>
14
15
16#define WORKSPACE_VERSION 1
17
18KisWorkspaceResource::KisWorkspaceResource(const QString& filename): KoResource(filename)
19{
20}
21
25
27 : KoResource(rhs)
29 , m_dockerState(rhs.m_dockerState)
30{
31}
32
37
38bool KisWorkspaceResource::saveToDevice(QIODevice *dev) const
39{
40 QDomDocument doc;
41 QDomElement root = doc.createElement("Workspace");
42 root.setAttribute("name", name() );
43 root.setAttribute("version", WORKSPACE_VERSION);
44 QDomElement state = doc.createElement("state");
45 state.appendChild(doc.createCDATASection(m_dockerState.toBase64()));
46 root.appendChild(state);
47
48 // Save KisPropertiesConfiguration settings
49 QDomElement settings = doc.createElement("settings");
51 root.appendChild(settings);
52
53 if (!image().isNull()) {
54 QDomElement thumb = doc.createElement("image");
55 QBuffer buffer;
56 buffer.open(QIODevice::WriteOnly);
57 image().save(&buffer, "PNG");
58 buffer.close();
59 thumb.appendChild(doc.createCDATASection(buffer.data().toBase64()));
60 root.appendChild(thumb);
61 }
62
63 doc.appendChild(root);
64
65 QTextStream textStream(dev);
67 doc.save(textStream, 4);
68
69 return true;
70
71}
72
73bool KisWorkspaceResource::loadFromDevice(QIODevice *dev, KisResourcesInterfaceSP resourcesInterface)
74{
75 Q_UNUSED(resourcesInterface);
76
77 QDomDocument doc;
78 if (!doc.setContent(dev)) {
79 return false;
80 }
81
82 QDomElement element = doc.documentElement();
83 setName(element.attribute("name"));
84
85 QDomElement state = element.firstChildElement("state");
86
87 if (!state.isNull()) {
88 m_dockerState = QByteArray::fromBase64(state.text().toLatin1());
89 }
90
91 QDomElement settings = element.firstChildElement("settings");
92 if (!settings.isNull()) {
94 }
95
96 QDomElement thumb = element.firstChildElement("image");
97 if (!thumb.isNull()) {
98 QImage img;
99 img.loadFromData(QByteArray::fromBase64(thumb.text().toLatin1()));
100 this->setImage(img);
101 }
102
103 setValid(true);
104 return true;
105}
106
108{
109 return QString(".kws");
110}
111
112void KisWorkspaceResource::setDockerState(const QByteArray& state)
113{
114 m_dockerState = state;
115}
116
118{
119 return m_dockerState;
120}
Resource for storing of workspaces.
bool saveToDevice(QIODevice *dev) const override
KoResourceSP clone() const override
bool loadFromDevice(QIODevice *dev, KisResourcesInterfaceSP resourcesInterface) override
KisWorkspaceResource(const QString &filename)
void setDockerState(const QByteArray &state)
QString defaultFileExtension() const override
QSharedPointer< KoResource > KoResourceSP
#define WORKSPACE_VERSION
void setUtf8OnStream(QTextStream &stream)
bool fromXML(const QString &xml, bool clear=true) override
void setValid(bool valid)
void setName(const QString &name)
QImage image
void setImage(const QImage &image)
QString name