File indexing completed on 2024-05-12 05:15:01

0001 /*
0002  * SPDX-FileCopyrightText: 2015 Daniel Vrátil <dvratil@redhat.com>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-or-later
0005  *
0006  */
0007 
0008 #pragma once
0009 
0010 #include "kcalutils_private_export.h"
0011 #include <QSharedPointer>
0012 #include <QVariantHash>
0013 
0014 namespace KTextTemplate
0015 {
0016 class Engine;
0017 class FileSystemTemplateLoader;
0018 class TemplateImpl;
0019 class Context;
0020 using Template = QSharedPointer<TemplateImpl>;
0021 }
0022 
0023 class QString;
0024 class GrantleeKi18nLocalizer;
0025 
0026 class KCALUTILS_TESTS_EXPORT GrantleeTemplateManager
0027 {
0028 public:
0029     ~GrantleeTemplateManager();
0030 
0031     static GrantleeTemplateManager *instance();
0032 
0033     void setTemplatePath(const QString &path);
0034     void setPluginPath(const QString &path);
0035 
0036     [[nodiscard]] QString render(const QString &templateName, const QVariantHash &data) const;
0037 
0038 private:
0039     Q_DISABLE_COPY(GrantleeTemplateManager)
0040     GrantleeTemplateManager();
0041     QString errorTemplate(const QString &reason, const QString &origTemplateName, const KTextTemplate::Template &failedTemplate) const;
0042     KTextTemplate::Context createContext(const QVariantHash &hash = QVariantHash()) const;
0043     KTextTemplate::Engine *const mEngine;
0044     QSharedPointer<KTextTemplate::FileSystemTemplateLoader> mLoader;
0045 
0046     QSharedPointer<GrantleeKi18nLocalizer> mLocalizer;
0047 
0048     static GrantleeTemplateManager *sInstance;
0049 };