8 #include <config-kcalutils.h>
10 #include "grantleeki18nlocalizer_p.h"
11 #include "grantleetemplatemanager_p.h"
12 #include "qtresourcetemplateloader.h"
15 #include <QStandardPaths>
17 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
18 #include <grantlee/engine.h>
19 #include <grantlee/template.h>
20 #include <grantlee/templateloader.h>
22 #include <KTextTemplate/Engine>
23 #include <KTextTemplate/Template>
24 #include <KTextTemplate/TemplateLoader>
27 #include <KLocalizedString>
29 GrantleeTemplateManager *GrantleeTemplateManager::sInstance =
nullptr;
31 GrantleeTemplateManager::GrantleeTemplateManager()
32 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
33 : mEngine(
new Grantlee::Engine)
37 , mLoader(
new KCalUtils::QtResourceTemplateLoader)
38 , mLocalizer(
new GrantleeKi18nLocalizer)
42 mLoader->setTemplateDirs({
path});
43 mLoader->setTheme(QStringLiteral(
"default"));
46 mEngine->addTemplateLoader(mLoader);
47 mEngine->addPluginPath(QStringLiteral(GRANTLEE_PLUGIN_INSTALL_DIR));
48 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
49 mEngine->addDefaultLibrary(QStringLiteral(
"grantlee_i18ntags"));
51 mEngine->addDefaultLibrary(QStringLiteral(
"ktexttemplate_i18ntags"));
53 mEngine->addDefaultLibrary(QStringLiteral(
"kcalendar_grantlee_plugin"));
54 mEngine->setSmartTrimEnabled(
true);
57 GrantleeTemplateManager::~GrantleeTemplateManager()
62 GrantleeTemplateManager *GrantleeTemplateManager::instance()
65 sInstance =
new GrantleeTemplateManager;
70 void GrantleeTemplateManager::setTemplatePath(
const QString &path)
72 mLoader->setTemplateDirs({
path});
76 void GrantleeTemplateManager::setPluginPath(
const QString &path)
80 mEngine->setPluginPaths(pluginPaths);
82 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
83 Grantlee::Context GrantleeTemplateManager::createContext(
const QVariantHash &hash)
const
88 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
89 Grantlee::Context ctx;
93 ctx.
insert(QStringLiteral(
"incidence"), hash);
98 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
99 QString GrantleeTemplateManager::errorTemplate(
const QString &reason,
const QString &origTemplateName,
const Grantlee::Template &failedTemplate)
const
104 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
105 Grantlee::Template tpl = mEngine->newTemplate(QStringLiteral(
"<h1>{{ error }}</h1>\n"
106 "<b>%1:</b> {{ templateName }}<br>\n"
107 "<b>%2:</b> {{ errorMessage }}")
108 .arg(
i18n(
"Template"),
i18n(
"Error message")),
109 QStringLiteral(
"TemplateError"));
111 Grantlee::Context ctx = createContext();
114 "<b>%1:</b> {{ templateName }}<br>\n"
115 "<b>%2:</b> {{ errorMessage }}")
116 .arg(
i18n(
"Template"),
i18n(
"Error message")),
117 QStringLiteral(
"TemplateError"));
121 ctx.
insert(QStringLiteral(
"error"), reason);
122 ctx.
insert(QStringLiteral(
"templateName"), origTemplateName);
123 ctx.
insert(QStringLiteral(
"errorMessage"), failedTemplate->errorString());
127 QString GrantleeTemplateManager::render(
const QString &templateName,
const QVariantHash &data)
const
129 if (!mLoader->canLoadTemplate(templateName)) {
130 qWarning() <<
"Cannot load template" << templateName <<
", please check your installation";
133 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
134 Grantlee::Template tpl = mLoader->loadByName(templateName, mEngine);
139 return errorTemplate(
i18n(
"Template parsing error"), templateName, tpl);
141 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
142 Grantlee::Context ctx = createContext(data);
148 return errorTemplate(
i18n(
"Template rendering error"), templateName, tpl);