diff options
Diffstat (limited to 'src/backend/managers/cdisplaytemplatemgr.cpp')
-rw-r--r-- | src/backend/managers/cdisplaytemplatemgr.cpp | 54 |
1 files changed, 30 insertions, 24 deletions
diff --git a/src/backend/managers/cdisplaytemplatemgr.cpp b/src/backend/managers/cdisplaytemplatemgr.cpp index fbeb921..734d912 100644 --- a/src/backend/managers/cdisplaytemplatemgr.cpp +++ b/src/backend/managers/cdisplaytemplatemgr.cpp @@ -2,7 +2,7 @@ * * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ @@ -13,7 +13,7 @@ #include <QFileInfo> #include <QStringList> #include <QTextStream> -#include "backend/config/cbtconfig.h" +#include "backend/config/btconfig.h" #include "backend/drivers/cswordmoduleinfo.h" #include "backend/managers/clanguagemgr.h" #include "util/directory.h" @@ -21,6 +21,15 @@ #define CSSTEMPLATEBASE "Basic.tmpl" +namespace { + +inline QString readFileToString(const QString & filename) { + QFile f(filename); + return f.open(QIODevice::ReadOnly) ? QTextStream(&f).readAll() : QString(); +} + +} // anonymous namespace + CDisplayTemplateMgr * CDisplayTemplateMgr::m_instance = 0; CDisplayTemplateMgr::CDisplayTemplateMgr(QString & errorMessage) { @@ -57,7 +66,7 @@ CDisplayTemplateMgr::CDisplayTemplateMgr(QString & errorMessage) { loadCSSTemplate(td.canonicalPath() + "/" + file); // Load user app stylesheets Q_FOREACH(const QString & file, utd.entryList(cssfilter, readableFileFilter)) - loadCSSTemplate(td.canonicalPath() + "/" + file); + loadCSSTemplate(utd.canonicalPath() + "/" + file); } } @@ -145,12 +154,7 @@ QString CDisplayTemplateMgr::fillTemplate(const QString & name, QString langCSS; { - /* - At first append the font standard settings for all languages without - configured font. Create a dummy language (the langmap may be empty). - */ - const CLanguageMgr::Language lang(QString("en"), QString("English"), QString::null); - const QFont f = CBTConfig::getDefault(&lang); + const QFont & f = btConfig().getDefaultFont(); langCSS.append("#content{font-family:").append(f.family()) .append(";font-size:").append(QString::number(f.pointSizeF(), 'f')) .append("pt;font-weight:").append(f.bold() ? "bold" : "normal") @@ -160,8 +164,12 @@ QString CDisplayTemplateMgr::fillTemplate(const QString & name, { const CLanguageMgr::LangMap & langMap = CLanguageMgr::instance()->availableLanguages(); Q_FOREACH (const CLanguageMgr::Language * lang, langMap) { - if (!lang->abbrev().isEmpty() && CBTConfig::get(lang).first) { - const QFont f = CBTConfig::get(lang).second; + if (lang->abbrev().isEmpty()) + continue; + + BtConfig::FontSettingsPair fp = btConfig().getFontForLanguage(*lang); + if (fp.first) { + const QFont & f = fp.second; langCSS.append("*[lang=").append(lang->abbrev()).append("]{") .append("font-family:").append(f.family()) @@ -188,28 +196,26 @@ QString CDisplayTemplateMgr::fillTemplate(const QString & name, .replace("#DISPLAY_TEMPLATES_PATH#", DU::getDisplayTemplatesDir().absolutePath()); if (templateIsCss) - output.replace("#THEME_STYLE#", m_cssMap[name]); + output.replace("#THEME_STYLE#", readFileToString(m_cssMap[name])); return output; } QString CDisplayTemplateMgr::activeTemplateName() { - const QString tn = CBTConfig::get(CBTConfig::displayStyle); - if (tn.isEmpty()) - return defaultTemplateName(); - - return tn; + const QString tn = btConfig().value<QString>("GUI/activeTemplateName", + QString()); + return (tn.isEmpty() + || !instance()->m_availableTemplateNamesCache.contains(tn)) + ? defaultTemplateName() + : tn; } void CDisplayTemplateMgr::loadTemplate(const QString & filename) { Q_ASSERT(filename.endsWith(".tmpl")); Q_ASSERT(QFileInfo(filename).isFile()); - QFile f(filename); - if (f.open(QIODevice::ReadOnly)) { - const QString fileContent(QTextStream(&f).readAll()); - if (!fileContent.isEmpty()) - m_templateMap.insert(QFileInfo(f).fileName(), fileContent); - } + const QString templateString = readFileToString(filename); + if (!templateString.isEmpty()) + m_templateMap.insert(QFileInfo(filename).fileName(), templateString); } void CDisplayTemplateMgr::loadCSSTemplate(const QString & filename) { @@ -217,5 +223,5 @@ void CDisplayTemplateMgr::loadCSSTemplate(const QString & filename) { const QFileInfo fi(filename); Q_ASSERT(fi.isFile()); if (fi.isReadable()) - m_cssMap.insert(fi.fileName(), fi.absoluteFilePath()); + m_cssMap.insert(fi.fileName(), filename); } |