diff options
| author | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
|---|---|---|
| committer | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
| commit | 7ed83b6c6666eb8b6b104c211ae7e52907350372 (patch) | |
| tree | 4430b556abac0ad660a0aacf1887d77f85d8be02 /scribus/nftsettings.cpp | |
| download | scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.gz scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.xz scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.zip | |
Branch 1.3.5 tree to 1.4.x tree, goodbye 1.3.x
git-svn-id: svn://scribus.net/branches/Version14x/Scribus@17163 11d20701-8431-0410-a711-e3c959e3b870
Diffstat (limited to 'scribus/nftsettings.cpp')
| -rw-r--r-- | scribus/nftsettings.cpp | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/scribus/nftsettings.cpp b/scribus/nftsettings.cpp new file mode 100644 index 0000000..8d88959 --- /dev/null +++ b/scribus/nftsettings.cpp @@ -0,0 +1,99 @@ +/* +For general Scribus (>=1.3.2) copyright and licensing information please refer +to the COPYING file provided with the program. Following this notice may exist +a copyright and/or license notice that predates the release of Scribus 1.3.2 +for which a new license (GPL+exception) is in place. +*/ +/*************************************************************************** + * Riku Leino, tsoots@gmail.com * + ***************************************************************************/ +#include "nftsettings.h" +#include "prefsmanager.h" +#include "scpaths.h" + +nftsettings::nftsettings(QString guilang) +{ + lang = guilang; + scribusShare = ScPaths::instance().templateDir(); + scribusUserHome = QDir::toNativeSeparators(ScPaths::getApplicationDataDir()); + read(); +} + +void nftsettings::read() +{ + handler = new nftrcreader(&templates,scribusUserHome); + reader = new QXmlSimpleReader(); + reader->setContentHandler(handler); + + addTemplates(scribusShare); + addTemplates(scribusUserHome+"/templates"); + QString userTemplateDir(PrefsManager::instance()->appPrefs.documentTemplatesDir); + if (userTemplateDir.right(1) == "/") + userTemplateDir.chop(1); + if ((!userTemplateDir.isNull()) && (!userTemplateDir.isEmpty())) + addTemplates(userTemplateDir);} + +void nftsettings::addTemplates(QString dir) // dir will be searched for a sub folder called templates +{ + // Add templates from the dir itself + QString tmplFile = findTemplateXml(dir); + QFile* tmplxml = new QFile(QDir::toNativeSeparators(tmplFile)); + handler->setSourceDir(dir); + handler->setSourceFile(tmplFile); + if (tmplxml->exists()) + { + QXmlInputSource* source = new QXmlInputSource(tmplxml); + reader->parse(source); + delete source; + } + delete tmplxml; + + + // And from all the subdirectories. template.xml file is only searched one dir level deeper than the dir + QDir tmpldir(dir); + if (tmpldir.exists()) + { + tmpldir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot); + QStringList dirs = tmpldir.entryList(); + for (int i = 0; i < dirs.size(); ++i) + { + tmplFile = findTemplateXml(dir + "/" + dirs[i]); + QFile* tmplxml = new QFile(QDir::toNativeSeparators(tmplFile)); + handler->setSourceDir(dir+"/"+dirs[i]); + handler->setSourceFile(tmplFile); + if (tmplxml->exists()) + { + QXmlInputSource* source = new QXmlInputSource(tmplxml); + reader->parse(source); + delete source; + } + delete tmplxml; + } + } +} + +QString nftsettings::findTemplateXml(QString dir) +{ + QString tmp = dir + "/template." + lang + ".xml"; + if (QFile(tmp).exists()) + return tmp; + + if (lang.length() > 2) + { + tmp = dir + "/template." + lang.left(2) + ".xml"; + if (QFile(tmp).exists()) + return tmp; + } + return dir + "/template.xml"; +} + +nftsettings::~ nftsettings() +{ + delete reader; + delete handler; + for (uint i = 0; i < templates.size(); ++i) + { + if (templates[i] != NULL) + delete templates[i]; + } +} |
