File indexing completed on 2025-03-09 04:54:36
0001 /* 0002 This file is part of KMail, the KDE mail client. 0003 SPDX-FileCopyrightText: 2017 Sandro Knauß <sknauss@kde.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #pragma once 0009 0010 #include "messageviewer_export.h" 0011 0012 #include <MimeTreeParser/MessagePart> 0013 0014 #include <QList> 0015 0016 #include <memory> 0017 0018 namespace MessageViewer 0019 { 0020 class MessagePartRendererBase; 0021 class MessagePartRendererFactoryPrivate; 0022 /** 0023 * @brief The MessagePartRendererFactory class 0024 */ 0025 class MESSAGEVIEWER_EXPORT MessagePartRendererFactory 0026 { 0027 public: 0028 MessagePartRendererFactory(); 0029 ~MessagePartRendererFactory(); 0030 0031 /** Customize where to look for render plugins. 0032 * This is the sub directory appended to the Qt plugin search paths. 0033 * An empty string disables plugin loading. 0034 * This only has any effect before the first call to renderersForPart(). 0035 */ 0036 void setPluginPath(const QString &subdir); 0037 0038 static MessagePartRendererFactory *instance(); 0039 0040 [[nodiscard]] QList<MessagePartRendererBase *> renderersForPart(const QMetaObject *mo, const MimeTreeParser::MessagePart::Ptr &mp) const; 0041 0042 private: 0043 Q_DISABLE_COPY(MessagePartRendererFactory) 0044 std::unique_ptr<MessagePartRendererFactoryPrivate> d; 0045 }; 0046 }