diff --git a/src/pimcommon/genericgrantlee/genericgrantleeformatter.h b/src/pimcommon/genericgrantlee/genericgrantleeformatter.h --- a/src/pimcommon/genericgrantlee/genericgrantleeformatter.h +++ b/src/pimcommon/genericgrantlee/genericgrantleeformatter.h @@ -23,6 +23,8 @@ #include #include +#include + namespace PimCommon { class GenericGrantleeFormatterPrivate; class PIMCOMMON_EXPORT GenericGrantleeFormatter : public QObject @@ -44,7 +46,7 @@ void setContent(const QString &content); void refreshTemplate(); private: - GenericGrantleeFormatterPrivate *const d; + std::unique_ptr const d; }; } #endif // GENERICGRANTLEEFORMATTER_H diff --git a/src/pimcommon/genericgrantlee/genericgrantleeformatter.cpp b/src/pimcommon/genericgrantlee/genericgrantleeformatter.cpp --- a/src/pimcommon/genericgrantlee/genericgrantleeformatter.cpp +++ b/src/pimcommon/genericgrantlee/genericgrantleeformatter.cpp @@ -26,114 +26,53 @@ { public: GenericGrantleeFormatterPrivate() + : mEngine(new Grantlee::Engine) { - mEngine = new Grantlee::Engine; } - GenericGrantleeFormatterPrivate(const QString &defaultHtmlMain, const QString &themePath) - : mThemePath(themePath) - , mDefaultMainFile(defaultHtmlMain) - { - initializeEngine(); - } - - ~GenericGrantleeFormatterPrivate() - { - delete mEngine; - mTemplateLoader.clear(); - } - - void setContent(const QString &content); - void setDefaultHtmlMainFile(const QString &name); - void initializeEngine(); - void refreshTemplate(); - void changeGrantleePath(const QString &path); - void insertToContext(const QString &key, const QVariantHash &mapping); - QString render(const QVariantHash &mapping) const; - QString mThemePath; QString mDefaultMainFile; - Grantlee::Engine *mEngine = nullptr; + std::unique_ptr mEngine; QString mErrorMessage; QSharedPointer mTemplateLoader; - Grantlee::Template mSelfcontainedTemplate; + Grantlee::Template mTemplate; }; -void GenericGrantleeFormatterPrivate::setContent(const QString &content) -{ - mSelfcontainedTemplate = mEngine->newTemplate(content, QStringLiteral("content")); - if (mSelfcontainedTemplate->error()) { - mErrorMessage = mSelfcontainedTemplate->errorString() + QLatin1String("
"); - } -} - -void GenericGrantleeFormatterPrivate::setDefaultHtmlMainFile(const QString &name) -{ - if (mDefaultMainFile != name) { - mDefaultMainFile = name; - refreshTemplate(); - } -} - -void GenericGrantleeFormatterPrivate::initializeEngine() -{ - mEngine = new Grantlee::Engine; - mTemplateLoader = QSharedPointer(new Grantlee::FileSystemTemplateLoader); - - changeGrantleePath(mThemePath); -} - -void GenericGrantleeFormatterPrivate::refreshTemplate() -{ - mSelfcontainedTemplate = mEngine->loadByName(mDefaultMainFile); - if (mSelfcontainedTemplate->error()) { - mErrorMessage += mSelfcontainedTemplate->errorString() + QLatin1String("
"); - } -} - -void GenericGrantleeFormatterPrivate::changeGrantleePath(const QString &path) -{ - if (!mTemplateLoader) { - mTemplateLoader = QSharedPointer(new Grantlee::FileSystemTemplateLoader); - } - mTemplateLoader->setTemplateDirs(QStringList() << path); - mEngine->addTemplateLoader(mTemplateLoader); - - refreshTemplate(); -} - -QString GenericGrantleeFormatterPrivate::render(const QVariantHash &mapping) const -{ - Grantlee::Context context(mapping); - const QString contentHtml = mSelfcontainedTemplate->render(&context); - return contentHtml; -} GenericGrantleeFormatter::GenericGrantleeFormatter(const QString &defaultHtmlMain, const QString &themePath, QObject *parent) : QObject(parent) - , d(new PimCommon::GenericGrantleeFormatterPrivate(defaultHtmlMain, themePath)) + , d(new PimCommon::GenericGrantleeFormatterPrivate) { + d->mThemePath = themePath; + d->mDefaultMainFile = defaultHtmlMain; + changeGrantleePath(d->mThemePath); } GenericGrantleeFormatter::GenericGrantleeFormatter(QObject *parent) : QObject(parent) , d(new PimCommon::GenericGrantleeFormatterPrivate) { } -GenericGrantleeFormatter::~GenericGrantleeFormatter() -{ - delete d; -} +GenericGrantleeFormatter::~GenericGrantleeFormatter() = default; void GenericGrantleeFormatter::setDefaultHtmlMainFile(const QString &name) { - d->setDefaultHtmlMainFile(name); + if (d->mDefaultMainFile != name) { + d->mDefaultMainFile = name; + refreshTemplate(); + } } void GenericGrantleeFormatter::changeGrantleePath(const QString &path) { - d->changeGrantleePath(path); + if (!d->mTemplateLoader) { + d->mTemplateLoader.reset(new Grantlee::FileSystemTemplateLoader); + } + d->mTemplateLoader->setTemplateDirs(QStringList() << path); + d->mEngine->addTemplateLoader(d->mTemplateLoader); + + refreshTemplate(); } QString GenericGrantleeFormatter::errorMessage() const @@ -143,15 +82,23 @@ QString GenericGrantleeFormatter::render(const QVariantHash &mapping) const { - return d->render(mapping); + Grantlee::Context context(mapping); + const QString contentHtml = d->mTemplate->render(&context); + return contentHtml; } void GenericGrantleeFormatter::setContent(const QString &content) { - d->setContent(content); + d->mTemplate = d->mEngine->newTemplate(content, QStringLiteral("content")); + if (d->mTemplate->error()) { + d->mErrorMessage = d->mTemplate->errorString() + QLatin1String("
"); + } } void GenericGrantleeFormatter::refreshTemplate() { - d->refreshTemplate(); + d->mTemplate = d->mEngine->loadByName(d->mDefaultMainFile); + if (d->mTemplate->error()) { + d->mErrorMessage += d->mTemplate->errorString() + QLatin1String("
"); + } }