Cutelee 6.1.0
Cutelee::FileSystemTemplateLoader Class Reference

The FileSystemTemplateLoader loads Templates from the file system. More...

#include <templateloader.h>

Inheritance diagram for Cutelee::FileSystemTemplateLoader:

Public Member Functions

 FileSystemTemplateLoader (const std::shared_ptr< AbstractLocalizer > localizer={})
 ~FileSystemTemplateLoader () override
bool canLoadTemplate (const QString &name) const override
std::pair< QString, QStringgetMediaUri (const QString &fileName) const override
Template loadByName (const QString &name, Engine const *engine) const override
void setTemplateDirs (const QStringList &dirs)
void setTheme (const QString &themeName)
QStringList templateDirs () const
QString themeName () const
Public Member Functions inherited from Cutelee::AbstractTemplateLoader
virtual ~AbstractTemplateLoader ()

Detailed Description

This template loader works by traversing a list of directories to find templates. Directories are checked in order, and the first match hit is parsed and returned.

loader->setTemplateDirs({
"/home/user/app/templates",
"/usr/local/share/app/templates"
});
engine->setTemplateLoader( loader );
// This will try /home/user/app/templates/mytemplate.html
// followed by /usr/local/share/app/templates/mytemplate.html
engine->loadByName( "mytemplate.html" );

Additionally, a themeName may be set on the template loader, which will be appended to search paths before the template name.

loader->setTemplateDirs({
"/home/user/app/templates" <<
"/usr/local/share/app/templates"
});
loader->setTheme( "simple_theme" );
engine->setTemplateLoader( loader );
// This will try /home/user/app/templates/simple_theme/mytemplate.html
// followed by /usr/local/share/app/templates/simple_theme/mytemplate.html
engine->loadByName( "mytemplate.html" );

Media URIs may be retrieved for media relative to the directories searched queried for templates.

loader->setTemplateDirs({
"/home/user/app/templates",
"/usr/local/share/app/templates"
});
loader->setTheme( "simple_theme" );
engine->setTemplateLoader( loader );
// This will try /home/user/app/templates/simple_theme/logo.png
// followed by /usr/local/share/app/templates/simple_theme/logo.png
// and return the first one that exists.
engine->mediaUri( "logo.png" );

The template files loaded by a %**FileSystemTemplateLoader** must be UTF-8 encoded.

See also
Deploying Templates

Definition at line 135 of file templateloader.h.

Constructor & Destructor Documentation

◆ FileSystemTemplateLoader()

FileSystemTemplateLoader::FileSystemTemplateLoader ( const std::shared_ptr< AbstractLocalizer > localizer = {})

◆ ~FileSystemTemplateLoader()

FileSystemTemplateLoader::~FileSystemTemplateLoader ( )
override

Destructor

Definition at line 63 of file templateloader.cpp.

References templateDirs(), and themeName().

Member Function Documentation

◆ canLoadTemplate()

bool FileSystemTemplateLoader::canLoadTemplate ( const QString & name) const
overridevirtual

Return true if a Template identified by name exists and can be loaded.

Implements Cutelee::AbstractTemplateLoader.

Definition at line 108 of file templateloader.cpp.

References FileSystemTemplateLoader(), QFileDevice::close(), QFile::exists(), QFile::open(), QIODevice::ReadOnly, QFile::setFileName(), and QIODevice::Text.

◆ getMediaUri()

std::pair< QString, QString > FileSystemTemplateLoader::getMediaUri ( const QString & fileName) const
overridevirtual

◆ loadByName()

Template FileSystemTemplateLoader::loadByName ( const QString & name,
Engine const * engine ) const
overridevirtual

◆ setTemplateDirs()

void FileSystemTemplateLoader::setTemplateDirs ( const QStringList & dirs)

Sets the directories to look for template files to dirs.

Definition at line 90 of file templateloader.cpp.

References FileSystemTemplateLoader(), and templateDirs().

◆ setTheme()

void FileSystemTemplateLoader::setTheme ( const QString & themeName)

Sets the theme of this loader to themeName

Definition at line 74 of file templateloader.cpp.

References FileSystemTemplateLoader(), templateDirs(), and themeName().

◆ templateDirs()

QStringList FileSystemTemplateLoader::templateDirs ( ) const

The directories this TemplateLoader looks in for template files.

Definition at line 102 of file templateloader.cpp.

References FileSystemTemplateLoader().

Referenced by ~FileSystemTemplateLoader(), setTemplateDirs(), and setTheme().

◆ themeName()

QString FileSystemTemplateLoader::themeName ( ) const

The themeName of this TemplateLoader

Definition at line 84 of file templateloader.cpp.

References FileSystemTemplateLoader().

Referenced by ~FileSystemTemplateLoader(), and setTheme().