GrantleeTheme

genericformatter.cpp
1/*
2 SPDX-FileCopyrightText: 2016-2024 Laurent Montel <montel@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5*/
6
7#include "genericformatter.h"
8#include "grantleeki18nlocalizer.h"
9#include "grantleethemeengine.h"
10
11using namespace GrantleeTheme;
12
13class GrantleeTheme::GenericFormatterPrivate
14{
15public:
16 GenericFormatterPrivate()
17 : mEngine(new Engine)
18 {
19 }
20
21 QString mThemePath;
22 QString mDefaultMainFile;
23 std::unique_ptr<Engine> const mEngine;
24 QString mErrorMessage;
27};
28
29GenericFormatter::GenericFormatter(const QString &defaultHtmlMain, const QString &themePath)
30 : d(new GenericFormatterPrivate)
31{
32 d->mThemePath = themePath;
33 d->mDefaultMainFile = defaultHtmlMain;
34 setTemplatePath(d->mThemePath);
35}
36
37GenericFormatter::GenericFormatter()
38 : d(new GenericFormatterPrivate)
39{
40}
41
42GenericFormatter::~GenericFormatter() = default;
43
44void GenericFormatter::setDefaultHtmlMainFile(const QString &name)
45{
46 if (d->mDefaultMainFile != name) {
47 d->mDefaultMainFile = name;
48 reloadTemplate();
49 }
50}
51
52void GenericFormatter::setTemplatePath(const QString &path)
53{
54 if (!d->mTemplateLoader) {
55 d->mTemplateLoader.reset(new KTextTemplate::FileSystemTemplateLoader);
56 }
57 d->mTemplateLoader->setTemplateDirs(QStringList() << path);
58 d->mEngine->addTemplateLoader(d->mTemplateLoader);
59
60 reloadTemplate();
61}
62
64{
65 d->mEngine->localizer()->setApplicationDomain(domain);
66}
67
68QString GenericFormatter::errorMessage() const
69{
70 return d->mErrorMessage;
71}
72
73QString GenericFormatter::render(const QVariantHash &mapping) const
74{
75 KTextTemplate::Context context(mapping);
76 context.setLocalizer(d->mEngine->localizer());
77
78 const QString contentHtml = d->mTemplate->render(&context);
79 return contentHtml;
80}
81
83{
84 d->mTemplate = d->mEngine->newTemplate(content, QStringLiteral("content"));
85 if (d->mTemplate->error()) {
86 d->mErrorMessage = d->mTemplate->errorString() + QLatin1StringView("<br>");
87 }
88}
89
90void GenericFormatter::reloadTemplate()
91{
92 d->mTemplate = d->mEngine->loadByName(d->mDefaultMainFile);
93 if (d->mTemplate->error()) {
94 d->mErrorMessage += d->mTemplate->errorString() + QLatin1StringView("<br>");
95 }
96}
void setTemplateContent(const QString &content)
Set template content from a string rather than a file.
void setApplicationDomain(const QByteArray &domain)
Translation domain for the Grantlee localizer.
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Tue Mar 26 2024 11:12:59 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.