Subversion Repositories Scribus

Rev

Rev 18649 | Rev 22635 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
16736 jghali 1
/*
2
For general Scribus (>=1.3.2) copyright and licensing information please refer
3
to the COPYING file provided with the program. Following this notice may exist
4
a copyright and/or license notice that predates the release of Scribus 1.3.2
5
for which a new license (GPL+exception) is in place.
6
*/
7
/***************************************************************************
8
 *   Riku Leino, tsoots@gmail.com                                          *
9
 ***************************************************************************/
10
 
11
#include "nftrcreader.h"
12
 
13
using namespace std;
14
 
15
nftrcreader::nftrcreader(std::vector<nfttemplate*> *tmplts,QString sourceDir)
16
{
17
        templates = tmplts;
18
        currentDir = sourceDir;
19
        setupCategories();
20
}
21
 
18655 jghali 22
bool nftrcreader::parse(QString filePath)
16736 jghali 23
{
18655 jghali 24
        bool firstElement = true;
16736 jghali 25
 
18655 jghali 26
        QFile file(filePath);
27
        if (!file.open(QFile::ReadOnly))
28
                return false;
16736 jghali 29
 
18655 jghali 30
        QXmlStreamReader reader(&file);
31
        while (!reader.atEnd() && !reader.hasError())
32
        {
33
                QXmlStreamReader::TokenType tType = reader.readNext();
34
                if (tType != QXmlStreamReader::StartElement)
35
                        continue;
16736 jghali 36
 
18655 jghali 37
                QStringRef tagName = reader.name();
38
                if (firstElement)
16736 jghali 39
                {
18655 jghali 40
                        if (tagName != "templates")
41
                                return false;
42
                        firstElement = false;
43
                        continue;
16736 jghali 44
                }
18655 jghali 45
 
46
                if (tagName == "template")
47
                {
48
                        QXmlStreamAttributes attrs = reader.attributes();
49
                        QString attrCat  = attrs.value("category").toString();
50
                        QString category = getCategory(attrCat);
51
 
52
                        nfttemplate* tmpTemplate = new nfttemplate(currentFile, category);
53
                        tmpTemplate->enCategory = attrCat;
54
                        if (parseTemplate(reader, tmpTemplate))
55
                                templates->push_back(tmpTemplate);
56
                        else
57
                                delete tmpTemplate;
58
                }
59
                else
60
                {
61
                        reader.skipCurrentElement();
62
                }
16736 jghali 63
        }
64
 
18655 jghali 65
        return (!reader.hasError());
16736 jghali 66
}
67
 
18655 jghali 68
bool nftrcreader::parseTemplate(QXmlStreamReader& reader, nfttemplate* nftTemplate)
16736 jghali 69
{
18655 jghali 70
        if (!reader.isStartElement())
71
                return false;
72
 
73
        QStringRef elemName = reader.name();
74
        if (elemName != "template")
75
                return false;
76
 
77
        while (!reader.atEnd() && !reader.hasError())
16736 jghali 78
        {
18655 jghali 79
                QXmlStreamReader::TokenType tType = reader.readNext();
80
                if (reader.hasError())
81
                        return false;
16736 jghali 82
 
18655 jghali 83
                if (tType == QXmlStreamReader::EndElement)
84
                        break;
85
                if (tType != QXmlStreamReader::StartElement)
86
                        continue;
16736 jghali 87
 
18655 jghali 88
                QStringRef tagName = reader.name();
89
                if (tagName == "name")
90
                        nftTemplate->name = reader.readElementText();
91
                else if (tagName == "file")
18649 jghali 92
                {
18655 jghali 93
                        QString tmp = reader.readElementText();
94
                        if (tmp.left(1) == "/")
95
                                nftTemplate->file = tmp;
96
                        else
97
                                nftTemplate->file = currentDir + "/" + tmp;
18649 jghali 98
                }
18655 jghali 99
                else if (tagName == "tnail")
100
                {
101
                        QString tmp = reader.readElementText();
102
                        if (tmp.left(1) == "/")
103
                                nftTemplate->tnail = tmp;
104
                        else
105
                                nftTemplate->tnail = currentDir + "/" + tmp;
106
                }
107
                else if (tagName == "img")
108
                {
109
                        QString tmp = reader.readElementText();
110
                        if (tmp.left(1) == "/")
111
                                nftTemplate->img = tmp;
112
                        else
113
                                nftTemplate->img = currentDir + "/" + tmp;
114
                }
115
                else if (tagName == "psize")
116
                        nftTemplate->psize = reader.readElementText();
117
                else if (tagName == "color")
118
                        nftTemplate->color = reader.readElementText();
119
                else if (tagName == "descr")
120
                        nftTemplate->descr = reader.readElementText();
121
                else if (tagName == "usage")
122
                        nftTemplate->usage = reader.readElementText();
123
                else if (tagName == "scribus_version")
124
                        nftTemplate->scribusVersion = reader.readElementText();
125
                else if (tagName == "date")
126
                        nftTemplate->date = reader.readElementText();
127
                else if (tagName == "author")
128
                        nftTemplate->author = reader.readElementText();
129
                else if (tagName == "email")
130
                        nftTemplate->email = reader.readElementText();
131
                else
132
                {
133
                        reader.skipCurrentElement();
134
                }
16736 jghali 135
        }
136
 
18655 jghali 137
        return (nftTemplate->isValid());
16736 jghali 138
}
139
 
140
void nftrcreader::setSourceDir(QString source)
141
{
142
        currentDir = source;
143
}
144
 
145
void nftrcreader::setSourceFile(QString sourceFile)
146
{
147
        currentFile = sourceFile;
148
}
149
 
150
QString nftrcreader::getCategory(QString cat)
151
{
152
        QMap<QString, QString>::iterator it = cats.find(cat);
153
        if (it==cats.end())
154
                cats.insert(cat, cat);
155
        if (it != cats.end())
156
                return it.value();
157
        return cat;
158
}
159
 
160
void nftrcreader::setupCategories()
161
{
162
        // en will be used in template.xml and it will be then replaced with the lang when used for users
163
        // to get the categories in their language.
16710 jghali 164
        cats.insert(QString("Advertisements"), QObject::tr("Advertisements"));
165
        cats.insert(QString("Announcements") , QObject::tr("Announcements"));
166
        cats.insert(QString("Brochures")  , QObject::tr("Brochures"));
167
        cats.insert(QString("Business Cards"), QObject::tr("Business Cards"));
168
        cats.insert(QString("Calendars")  , QObject::tr("Calendars"));
169
        cats.insert(QString("Cards")      , QObject::tr("Cards"));
170
        cats.insert(QString("Catalogs")   , QObject::tr("Catalogs"));
171
        cats.insert(QString("Envelopes")  , QObject::tr("Envelopes"));
172
        cats.insert(QString("Flyers")     , QObject::tr("Flyers"));
173
        cats.insert(QString("Folds")      , QObject::tr("Folds"));
174
        cats.insert(QString("Grids")      , QObject::tr("Grids"));
175
        cats.insert(QString("Labels")     , QObject::tr("Labels"));
176
        cats.insert(QString("Letterheads"), QObject::tr("Letterheads"));
177
        cats.insert(QString("Magazines")  , QObject::tr("Magazines"));
178
        cats.insert(QString("Media Cases")  , QObject::tr("Media Cases"));
179
        cats.insert(QString("Menus")      , QObject::tr("Menus"));
180
        cats.insert(QString("Newsletters"), QObject::tr("Newsletters"));
181
        cats.insert(QString("Own Templates"), QObject::tr("Own Templates"));
182
        cats.insert(QString("PDF Forms")  , QObject::tr("PDF Forms"));
183
        cats.insert(QString("PDF Presentations") , QObject::tr("PDF Presentations"));
184
        cats.insert(QString("Posters")    , QObject::tr("Posters"));
185
        cats.insert(QString("Programs")   , QObject::tr("Programs"));
186
        cats.insert(QString("Signs")      , QObject::tr("Signs"));
16736 jghali 187
        cats.insert(QString("Text Documents"), QObject::tr("Text Documents"));
188
}