summaryrefslogtreecommitdiffstats
path: root/scribus/nftsettings.cpp
diff options
context:
space:
mode:
authorcraig <craig@11d20701-8431-0410-a711-e3c959e3b870>2012-01-01 11:40:09 +0000
committercraig <craig@11d20701-8431-0410-a711-e3c959e3b870>2012-01-01 11:40:09 +0000
commit7ed83b6c6666eb8b6b104c211ae7e52907350372 (patch)
tree4430b556abac0ad660a0aacf1887d77f85d8be02 /scribus/nftsettings.cpp
downloadscribus-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.cpp99
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];
+ }
+}