File indexing completed on 2024-06-23 05:18:35
0001 /* 0002 SPDX-FileCopyrightText: 2018-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "messagecomposer_export.h" 0010 #include <KMime/Message> 0011 #include <MessageComposer/PluginActionType> 0012 #include <QObject> 0013 0014 namespace KPIMTextEdit 0015 { 0016 class RichTextComposer; 0017 } 0018 class KActionCollection; 0019 namespace MessageComposer 0020 { 0021 class TextPart; 0022 class PluginEditorConvertTextInterfacePrivate; 0023 class PluginEditorConverterInitialData; 0024 class PluginEditorConverterBeforeConvertingData; 0025 class PluginEditorConvertText; 0026 /** 0027 * @brief The PluginEditorConvertTextInterface class 0028 * @author Laurent Montel <montel@kde.org> 0029 */ 0030 class MESSAGECOMPOSER_EXPORT PluginEditorConvertTextInterface : public QObject 0031 { 0032 Q_OBJECT 0033 public: 0034 explicit PluginEditorConvertTextInterface(QObject *parent = nullptr); 0035 ~PluginEditorConvertTextInterface() override; 0036 0037 enum class ConvertTextStatus { 0038 NotConverted, 0039 Converted, 0040 Error, 0041 }; 0042 0043 virtual bool reformatText(); 0044 0045 virtual PluginEditorConvertTextInterface::ConvertTextStatus convertTextToFormat(MessageComposer::TextPart *textPart) = 0; 0046 0047 void setParentWidget(QWidget *parent); 0048 [[nodiscard]] QWidget *parentWidget() const; 0049 0050 [[nodiscard]] KPIMTextEdit::RichTextComposer *richTextEditor() const; 0051 void setRichTextEditor(KPIMTextEdit::RichTextComposer *richTextEditor); 0052 0053 void setActionType(const QList<PluginActionType> &type); 0054 void addActionType(PluginActionType type); 0055 [[nodiscard]] QList<PluginActionType> actionTypes() const; 0056 0057 virtual void createAction(KActionCollection *ac); 0058 0059 virtual void setInitialData(const PluginEditorConverterInitialData &data); 0060 [[nodiscard]] PluginEditorConverterInitialData initialData() const; 0061 0062 virtual void setBeforeConvertingData(const PluginEditorConverterBeforeConvertingData &data); 0063 [[nodiscard]] PluginEditorConverterBeforeConvertingData beforeConvertingData() const; 0064 0065 virtual void enableDisablePluginActions(bool richText); 0066 0067 void setStatusBarWidget(QWidget *w); 0068 0069 QWidget *statusBarWidget() const; 0070 0071 void setPlugin(PluginEditorConvertText *plugin); 0072 [[nodiscard]] PluginEditorConvertText *plugin() const; 0073 0074 public Q_SLOTS: 0075 virtual void reloadConfig(); 0076 0077 Q_SIGNALS: 0078 void textReformated(); 0079 0080 private: 0081 std::unique_ptr<PluginEditorConvertTextInterfacePrivate> const d; 0082 }; 0083 }