1 /*************************************************************************** 2 * This file is part of the Lime Report project * 3 * Copyright (C) 2015 by Alexander Arin * 4 * arin_a@bk.ru * 5 * * 6 ** GNU General Public License Usage ** 7 * * 8 * This library is free software: you can redistribute it and/or modify * 9 * it under the terms of the GNU General Public License as published by * 10 * the Free Software Foundation, either version 3 of the License, or * 11 * (at your option) any later version. * 12 * You should have received a copy of the GNU General Public License * 13 * along with this program. If not, see <http://www.gnu.org/licenses/>. * 14 * * 15 ** GNU Lesser General Public License ** 16 * * 17 * This library is free software: you can redistribute it and/or modify * 18 * it under the terms of the GNU Lesser General Public License as * 19 * published by the Free Software Foundation, either version 3 of the * 20 * License, or (at your option) any later version. * 21 * You should have received a copy of the GNU Lesser General Public * 22 * License along with this library. * 23 * If not, see <http://www.gnu.org/licenses/>. * 24 * * 25 * This library is distributed in the hope that it will be useful, * 26 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 28 * GNU General Public License for more details. * 29 ****************************************************************************/ 30 #ifndef LRXMLBASETYPESSERIALIZATORS_H 31 #define LRXMLBASETYPESSERIALIZATORS_H 32 33 #include "lrserializatorintf.h" 34 #include <QtXml> 35 #include <QDebug> 36 37 namespace LimeReport{ 38 39 class XmlBaseSerializator : public virtual SerializatorIntf{ 40 public: XmlBaseSerializator(QDomDocument * doc,QDomElement * node)41 XmlBaseSerializator(QDomDocument *doc, QDomElement *node):m_doc(doc),m_node(node){} 42 protected: doc()43 QDomDocument* doc() {return m_doc;} node()44 QDomElement* node() {if (!m_node) qDebug()<<QLatin1String("Warning node is null"); return m_node;} 45 void saveBool(QDomElement node, QString name, bool value); 46 private: 47 QDomDocument *m_doc; 48 QDomElement *m_node; 49 }; 50 51 class XmlCryptedSerializator : public XmlBaseSerializator, public virtual CryptedSerializator{ 52 public: XmlCryptedSerializator(QDomDocument * doc,QDomElement * node)53 XmlCryptedSerializator(QDomDocument *doc, QDomElement *node) 54 :XmlBaseSerializator(doc, node){} setPassPhrase(const QString & passPhrase)55 virtual void setPassPhrase(const QString& passPhrase) {m_passPhrase = passPhrase;} 56 protected: passPhrase()57 QString passPhrase(){ return m_passPhrase;} 58 private: 59 QString m_passPhrase; 60 }; 61 62 class XmlQStringSerializator : public XmlCryptedSerializator 63 { 64 public: XmlQStringSerializator(QDomDocument * doc,QDomElement * node)65 XmlQStringSerializator(QDomDocument *doc, QDomElement *node):XmlCryptedSerializator(doc,node){} 66 private: 67 virtual void save(const QVariant &value,QString name); 68 virtual QVariant loadValue(); 69 }; 70 71 class XmlIntSerializator : public XmlBaseSerializator 72 { 73 public: XmlIntSerializator(QDomDocument * doc,QDomElement * node)74 XmlIntSerializator(QDomDocument *doc, QDomElement *node):XmlBaseSerializator(doc,node){} 75 private: 76 virtual void save(const QVariant &value,QString name); 77 virtual QVariant loadValue(); 78 }; 79 80 class XmlQRealSerializator : public XmlBaseSerializator 81 { 82 public: XmlQRealSerializator(QDomDocument * doc,QDomElement * node)83 XmlQRealSerializator(QDomDocument *doc, QDomElement *node):XmlBaseSerializator(doc,node){} 84 private: 85 virtual void save(const QVariant &value,QString name); 86 virtual QVariant loadValue(); 87 }; 88 89 class XmlEnumAndFlagsSerializator : public XmlBaseSerializator 90 { 91 public: XmlEnumAndFlagsSerializator(QDomDocument * doc,QDomElement * node)92 XmlEnumAndFlagsSerializator(QDomDocument *doc, QDomElement *node):XmlBaseSerializator(doc,node){} 93 private: 94 virtual void save(const QVariant &value, QString name); 95 virtual QVariant loadValue(); 96 }; 97 98 class XmlBoolSerializator : public XmlBaseSerializator 99 { 100 public: XmlBoolSerializator(QDomDocument * doc,QDomElement * node)101 XmlBoolSerializator(QDomDocument *doc, QDomElement *node):XmlBaseSerializator(doc,node){} 102 private: 103 virtual void save(const QVariant &value, QString name); 104 virtual QVariant loadValue(); 105 }; 106 107 class XmlFontSerializator : public XmlBaseSerializator 108 { 109 public: XmlFontSerializator(QDomDocument * doc,QDomElement * node)110 XmlFontSerializator(QDomDocument *doc, QDomElement *node):XmlBaseSerializator(doc,node){} 111 private: 112 virtual void save(const QVariant &value, QString name); 113 virtual QVariant loadValue(); 114 }; 115 116 class XmlQSizeFSerializator : public XmlBaseSerializator 117 { 118 public: XmlQSizeFSerializator(QDomDocument * doc,QDomElement * node)119 XmlQSizeFSerializator(QDomDocument *doc, QDomElement *node):XmlBaseSerializator(doc,node){} 120 private: 121 virtual void save(const QVariant &value, QString name); 122 virtual QVariant loadValue(); 123 }; 124 125 class XmlColorSerializator : public XmlBaseSerializator 126 { 127 public: XmlColorSerializator(QDomDocument * doc,QDomElement * node)128 XmlColorSerializator(QDomDocument *doc, QDomElement *node):XmlBaseSerializator(doc,node){} 129 private: 130 virtual void save(const QVariant &value, QString name); 131 virtual QVariant loadValue(); 132 }; 133 134 class XmlQImageSerializator : public XmlBaseSerializator 135 { 136 public: XmlQImageSerializator(QDomDocument * doc,QDomElement * node)137 XmlQImageSerializator(QDomDocument *doc, QDomElement *node):XmlBaseSerializator(doc,node){} 138 private: 139 virtual void save(const QVariant &value, QString name); 140 virtual QVariant loadValue(); 141 }; 142 143 class XmlQByteArraySerializator : public XmlBaseSerializator{ 144 public: XmlQByteArraySerializator(QDomDocument * doc,QDomElement * node)145 XmlQByteArraySerializator(QDomDocument *doc, QDomElement *node):XmlBaseSerializator(doc,node){} 146 private: 147 virtual void save(const QVariant &value, QString name); 148 virtual QVariant loadValue(); 149 }; 150 151 class XmlQVariantSerializator : public XmlBaseSerializator 152 { 153 public: XmlQVariantSerializator(QDomDocument * doc,QDomElement * node)154 XmlQVariantSerializator(QDomDocument *doc, QDomElement *node):XmlBaseSerializator(doc,node){} 155 private: 156 virtual void save(const QVariant &value, QString name); 157 virtual QVariant loadValue(); 158 }; 159 160 } 161 #endif // LRXMLBASETYPESSERIALIZATORS_H 162