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