Subversion Repositories Scribus

Rev

Rev 308 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
304 Franz 1
/***************************************************************************
2
 *   Riku Leino, tsoots@welho.com                                          *
3
 ***************************************************************************/
4
#include "nftsettings.h"
5
#include <iostream>
6
 
7
nftsettings::nftsettings()
8
{
9
        scribusShare = PREL;
10
        scribusShare += "/share/scribus";
11
        scribusUserHome = QDir::convertSeparators(QDir::homeDirPath()+"/.scribus");
12
        nftRCFile = QDir::convertSeparators(scribusUserHome+"/nftrc.xml");
13
        read();
14
}
15
 
16
void nftsettings::read()
17
{
18
        QDir scribus(scribusUserHome);
19
        if (!scribus.exists("nftrc.xml")) {
20
                getDefaults();
21
        }
22
 
23
        handler = new nftrcreader(&templates,scribusUserHome);
24
 
25
        QFile* rc = new QFile(nftRCFile);
26
        QXmlInputSource* source = new QXmlInputSource(rc);
27
 
28
        reader = new QXmlSimpleReader();
29
        reader->setContentHandler(handler);
30
        reader->parse(source);
31
        delete source;
32
        delete rc;
33
 
34
        addTemplates(scribusShare);
35
        addTemplates(scribusUserHome);
36
}
37
 
38
void nftsettings::addTemplates(QString dir) // dir will be searched for a sub folder called templates
39
{
40
        QDir tmpldir(dir + "/templates");
41
        if (tmpldir.exists()) {
42
                tmpldir.setFilter(QDir::Dirs);
43
                QStringList dirs = tmpldir.entryList();
44
                for (uint i = 0; i < dirs.size(); i++) {
45
                        QFile* tmplxml = new QFile(QDir::convertSeparators(dir + "/templates/" + dirs[i] + "/template.xml"));
46
                        handler->setSourceDir(dir+"/templates/"+dirs[i]);
47
                        if (tmplxml->exists()) {
48
                                QXmlInputSource* source = new QXmlInputSource(tmplxml);
49
                                reader->parse(source);
50
                                delete source;
51
                        }
52
                        delete tmplxml;
53
                }
54
        }
55
}
56
 
57
void nftsettings::write()
58
{
59
//      QFile rc(nftRCFile);
60
}
61
 
62
void nftsettings::getDefaults()
63
{
64
        QString tPrel = PREL;
65
        QString tmplDir = tPrel + "/share/scribus/templates";
66
        // Create the defaults ~/.scribus/nft/nftrc.xml file
67
        QString text = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
68
        text += "<nft>\n";
69
        text += "\t<settings>\n";
70
        text += "\t</settings>\n";
71
        text += "</nft>\n";
72
 
73
        QFile rc(nftRCFile);
74
        if ( rc.open( IO_WriteOnly ) ) {
75
                QTextStream stream(&rc);
76
                stream.setEncoding(QTextStream::UnicodeUTF8);
77
                stream << text;
78
                rc.close();
79
        }
80
}
81
 
82
nftsettings::~ nftsettings()
83
{
84
        delete reader;
85
        delete handler;
86
        for (uint i = 0; i < templates.size(); i++) {
87
                delete templates[i];
88
        }
89
}