File indexing completed on 2025-03-09 04:54:36
0001 /* 0002 SPDX-FileCopyrightText: 2016-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 #include "messageviewer_export.h" 0009 #include <QObject> 0010 0011 #include <KTextTemplate/Template> 0012 0013 #include <QMetaType> 0014 0015 #include <functional> 0016 0017 namespace GrantleeTheme 0018 { 0019 class Engine; 0020 } 0021 0022 namespace MessageViewer 0023 { 0024 class GlobalContext; 0025 0026 using KTextTemplateCallback = std::function<void(KTextTemplate::OutputStream *)>; 0027 /** 0028 * @brief The MessagePartRendererManager class 0029 */ 0030 class MESSAGEVIEWER_EXPORT MessagePartRendererManager : public QObject 0031 { 0032 Q_OBJECT 0033 public: 0034 explicit MessagePartRendererManager(QObject *parent = nullptr); 0035 ~MessagePartRendererManager() override; 0036 static MessagePartRendererManager *self(); 0037 [[nodiscard]] KTextTemplate::Template loadByName(const QString &name); 0038 [[nodiscard]] KTextTemplate::Context createContext(); 0039 0040 private: 0041 void initializeRenderer(); 0042 GrantleeTheme::Engine *m_engine = nullptr; 0043 GlobalContext *const m_globalContext; 0044 }; 0045 } 0046 0047 Q_DECLARE_METATYPE(MessageViewer::KTextTemplateCallback)