1 /*
2    SPDX-FileCopyrightText: 2018-2021 Laurent Montel <montel@kde.org>
3 
4    SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #pragma once
8 
9 #include <MessageComposer/PluginEditorConvertTextInterface>
10 #include <QHash>
11 #include <QObject>
12 class QWidget;
13 namespace KPIMTextEdit
14 {
15 class RichTextComposer;
16 }
17 class KActionCollection;
18 class KMailPluginEditorConvertTextManagerInterface : public QObject
19 {
20     Q_OBJECT
21 public:
22     explicit KMailPluginEditorConvertTextManagerInterface(QObject *parent = nullptr);
23     ~KMailPluginEditorConvertTextManagerInterface() override;
24     QWidget *parentWidget() const;
25     void setParentWidget(QWidget *parentWidget);
26 
27     KActionCollection *actionCollection() const;
28     void setActionCollection(KActionCollection *actionCollection);
29 
30     void initializePlugins();
31 
32     KPIMTextEdit::RichTextComposer *richTextEditor() const;
33     void setRichTextEditor(KPIMTextEdit::RichTextComposer *richTextEditor);
34 
35     Q_REQUIRED_RESULT QHash<MessageComposer::PluginActionType::Type, QList<QAction *>> actionsType();
36     Q_REQUIRED_RESULT QList<QAction *> actionsType(MessageComposer::PluginActionType::Type type);
37 
38     void reformatText();
39     MessageComposer::PluginEditorConvertTextInterface::ConvertTextStatus convertTextToFormat(MessageComposer::TextPart *textPart);
40 
41     void setInitialData(const MessageComposer::PluginEditorConverterInitialData &data);
42     void setDataBeforeConvertingText(const MessageComposer::PluginEditorConverterBeforeConvertingData &data);
43     void enableDisablePluginActions(bool richText);
44 
45     Q_REQUIRED_RESULT QList<QWidget *> statusBarWidgetList();
46 Q_SIGNALS:
47     void reformatingTextDone();
48 
49 private:
50     Q_DISABLE_COPY(KMailPluginEditorConvertTextManagerInterface)
51     QList<MessageComposer::PluginEditorConvertTextInterface *> mListPluginInterface;
52     QHash<MessageComposer::PluginActionType::Type, QList<QAction *>> mActionHash;
53     KPIMTextEdit::RichTextComposer *mRichTextEditor = nullptr;
54     QWidget *mParentWidget = nullptr;
55     KActionCollection *mActionCollection = nullptr;
56     QList<QWidget *> mStatusBarWidget;
57 };
58 
59