File indexing completed on 2024-06-16 04:16:23

0001 /*
0002  *  SPDX-FileCopyrightText: 2011 Sven Langkamp <sven.langkamp@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 #include "taskset_resource.h"
0008 
0009 #include <QFile>
0010 #include <QDomDocument>
0011 #include <QTextStream>
0012 #include <QBuffer>
0013 #include <QByteArray>
0014 
0015 #include <kis_debug.h>
0016 
0017 #define TASKSET_VERSION 1
0018 
0019 TasksetResource::TasksetResource(const QString& f)
0020     : KoResource(f)
0021 {
0022 }
0023 
0024 TasksetResource::~TasksetResource()
0025 {
0026 }
0027 
0028 TasksetResource::TasksetResource(const TasksetResource &rhs)
0029     : KoResource(rhs),
0030       m_actions(rhs.m_actions)
0031 {
0032 }
0033 
0034 KoResourceSP TasksetResource::clone() const
0035 {
0036     return KoResourceSP(new TasksetResource(*this));
0037 }
0038 
0039 bool TasksetResource::loadFromDevice(QIODevice *dev, KisResourcesInterfaceSP resourcesInterface)
0040 {
0041     Q_UNUSED(resourcesInterface);
0042 
0043     QDomDocument doc;
0044     if (!doc.setContent(dev)) {
0045         return false;
0046     }
0047     QDomElement element = doc.documentElement();
0048     setName(element.attribute("name"));
0049     QDomNode node = element.firstChild();
0050     while (!node.isNull()) {
0051         QDomElement child = node.toElement();
0052         if (!child.isNull() && child.tagName() == "action") {
0053                 m_actions.append(child.text());
0054         }
0055         node = node.nextSibling();
0056     }
0057     setValid(true);
0058     return true;
0059 }
0060 
0061 QString TasksetResource::defaultFileExtension() const
0062 {
0063     return QString(".kts");
0064 }
0065 
0066 void TasksetResource::setActionList(const QStringList actions)
0067 {
0068     m_actions = actions;
0069 }
0070 
0071 QStringList TasksetResource::actionList()
0072 {
0073     return m_actions;
0074 }
0075 
0076 bool TasksetResource::saveToDevice(QIODevice *io) const
0077 {
0078 
0079     QDomDocument doc;
0080     QDomElement root = doc.createElement("Taskset");
0081     root.setAttribute("name", name() );
0082     root.setAttribute("version", TASKSET_VERSION);
0083     Q_FOREACH (const QString& action, m_actions) {
0084         QDomElement element = doc.createElement("action");
0085         element.appendChild(doc.createTextNode(action));
0086         root.appendChild(element);
0087     }
0088     doc.appendChild(root);
0089 
0090     QTextStream textStream(io);
0091     textStream.setCodec("UTF-8");
0092     doc.save(textStream, 4);
0093 
0094     KoResource::saveToDevice(io);
0095 
0096     return true;
0097 }
0098 
0099