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 }