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