21#include "templateloader.h"
25#include "nulllocalizer_p.h"
28#include <QtCore/QFile>
29#include <QtCore/QFileInfo>
37class FileSystemTemplateLoaderPrivate
40 std::shared_ptr<AbstractLocalizer> localizer)
44 : std::shared_ptr<AbstractLocalizer>(
new NullLocalizer))
52 const std::shared_ptr<AbstractLocalizer> m_localizer;
57 const std::shared_ptr<AbstractLocalizer> localizer)
72InMemoryTemplateLoader::~InMemoryTemplateLoader() {}
78 d->m_localizer->unloadCatalog(dir +
QLatin1Char(
'/') + d->m_themeName);
87 return d->m_themeName;
95 d->m_localizer->unloadCatalog(dir +
QLatin1Char(
'/') + d->m_themeName);
96 d->m_templateDirs = dirs;
98 d->m_localizer->loadCatalog(dir +
QLatin1Char(
'/') + d->m_themeName,
105 return d->m_templateDirs;
115 if (i >= d->m_templateDirs.size())
131 Engine const *engine)
const
138 if (i >= d->m_templateDirs.size())
158 const auto fileContent = fstream.
readAll();
163std::pair<QString, QString>
170 if (i >= d->m_templateDirs.size())
186 return {path, fileName};
196 m_namedTemplates.insert(name, content);
201 return m_namedTemplates.contains(name);
205 Engine const *engine)
const
207 const auto it = m_namedTemplates.constFind(name);
208 if (it != m_namedTemplates.constEnd()) {
213 QStringLiteral(
"Couldn't load template %1. Template does not exist.")
217std::pair<QString, QString>
222 return std::pair<QString, QString>();
An retrieval interface to a storage location for Template objects.
virtual ~AbstractTemplateLoader()
Cutelee::Engine is the main entry point for creating Cutelee Templates.
Template newTemplate(const QString &content, const QString &name) const
An exception for use when implementing template tags.
The FileSystemTemplateLoader loads Templates from the file system.
FileSystemTemplateLoader(const std::shared_ptr< AbstractLocalizer > localizer={})
Template loadByName(const QString &name, Engine const *engine) const override
void setTheme(const QString &themeName)
bool canLoadTemplate(const QString &name) const override
QStringList templateDirs() const
void setTemplateDirs(const QStringList &dirs)
QString themeName() const
~FileSystemTemplateLoader() override
std::pair< QString, QString > getMediaUri(const QString &fileName) const override
bool canLoadTemplate(const QString &name) const override
void setTemplate(const QString &name, const QString &content)
std::pair< QString, QString > getMediaUri(const QString &fileName) const override
Template loadByName(const QString &name, Engine const *engine) const override
The Template class is a tree of nodes which may be rendered.
The Cutelee namespace holds all public Cutelee API.
QString canonicalPath() const const
bool exists(const QString &fileName)
bool open(FILE *fh, QIODeviceBase::OpenMode mode, QFileDevice::FileHandleFlags handleFlags)
void setFileName(const QString &name)
virtual void close() override
QString absoluteFilePath() const const
QString canonicalFilePath() const const
bool contains(QChar ch, Qt::CaseSensitivity cs) const const
qsizetype size() const const
void setEncoding(QStringConverter::Encoding encoding)