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 }