From dbfaedd5155360edecddbd18db4b06102841ec99 Mon Sep 17 00:00:00 2001 From: Laurent Montel Date: Tue, 5 Feb 2019 14:00:09 +0100 Subject: [PATCH] Load plugins here (still a bug here) --- CMakeLists.txt | 4 +- src/CMakeLists.txt | 1 + src/editor/kmcomposerwin.cpp | 14 ++- src/editor/kmcomposerwin.h | 2 + ...ailplugingrammareditormanagerinterface.cpp | 105 ++++++++++++++++++ ...kmailplugingrammareditormanagerinterface.h | 60 ++++++++++ 6 files changed, 183 insertions(+), 3 deletions(-) create mode 100644 src/editor/plugininterface/kmailplugingrammareditormanagerinterface.cpp create mode 100644 src/editor/plugininterface/kmailplugingrammareditormanagerinterface.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 2661275a2..169e88485 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,9 +66,9 @@ find_package(Qt5 ${QT_REQUIRED_VERSION} CONFIG REQUIRED DBus Network Test Widget set(LIBGRAVATAR_VERSION_LIB "5.10.40") set(MAILCOMMON_LIB_VERSION_LIB "5.10.42") set(KDEPIM_APPS_LIB_VERSION_LIB "5.10.40") -set(MESSAGELIB_LIB_VERSION_LIB "5.10.47") +set(MESSAGELIB_LIB_VERSION_LIB "5.10.48") set(LIBKLEO_LIB_VERSION_LIB "5.10.40") -set(PIMCOMMON_LIB_VERSION_LIB "5.10.41") +set(PIMCOMMON_LIB_VERSION_LIB "5.10.42") set(LIBKDEPIM_LIB_VERSION_LIB "5.10.41") set(LIBKSIEVE_LIB_VERSION_LIB "5.10.40") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index de93d520e..0e2dd342b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -163,6 +163,7 @@ set(kmailprivate_editor_plugininterface_LIB_SRCS editor/plugininterface/kmailplugineditorcheckbeforesendmanagerinterface.cpp editor/plugininterface/kmailplugineditorinitmanagerinterface.cpp editor/plugininterface/kmailplugineditorconverttextmanagerinterface.cpp + editor/plugininterface/kmailplugingrammareditormanagerinterface.cpp ) set(kmailprivate_checkindexing_LIB_SRCS diff --git a/src/editor/kmcomposerwin.cpp b/src/editor/kmcomposerwin.cpp index 69da19213..840c55b44 100644 --- a/src/editor/kmcomposerwin.cpp +++ b/src/editor/kmcomposerwin.cpp @@ -32,6 +32,7 @@ #include "editor/plugininterface/kmailplugineditorinitmanagerinterface.h" #include "editor/plugininterface/kmailplugineditormanagerinterface.h" #include "editor/plugininterface/kmailplugineditorconverttextmanagerinterface.h" +#include "editor/plugininterface/kmailplugingrammareditormanagerinterface.h" #include "editor/potentialphishingemail/potentialphishingemailjob.h" #include "editor/potentialphishingemail/potentialphishingemailwarning.h" #include "editor/warningwidgets/incorrectidentityfolderwarning.h" @@ -141,6 +142,7 @@ #include #include #include +#include #include #include @@ -247,6 +249,8 @@ KMComposerWin::KMComposerWin(const KMime::Message::Ptr &aMsg, bool lastSignState mPluginEditorInitManagerInterface = new KMailPluginEditorInitManagerInterface(this); mPluginEditorConvertTextManagerInterface = new KMailPluginEditorConvertTextManagerInterface(this); + mPluginEditorGrammarManagerInterface = new KMailPluginGrammarEditorManagerInterface(this); + connect(mComposerBase, &MessageComposer::ComposerViewBase::disableHtml, this, &KMComposerWin::disableHtml); connect(mComposerBase, &MessageComposer::ComposerViewBase::enableHtml, this, &KMComposerWin::enableHtml); connect(mComposerBase, &MessageComposer::ComposerViewBase::failed, this, &KMComposerWin::slotSendFailed); @@ -399,7 +403,8 @@ KMComposerWin::KMComposerWin(const KMime::Message::Ptr &aMsg, bool lastSignState setWindowTitle(i18n("Composer")); setMinimumSize(200, 200); - mCustomToolsWidget = new PimCommon::CustomToolsWidgetNg(actionCollection(), this); + mCustomToolsWidget = new PimCommon::CustomToolsWidgetNg(this); + mCustomToolsWidget->initializeView(actionCollection(), PimCommon::CustomToolsPluginManager::self()->pluginsList()); mSplitter->addWidget(mCustomToolsWidget); connect(mCustomToolsWidget, &PimCommon::CustomToolsWidgetNg::insertText, this, &KMComposerWin::slotInsertShortUrl); @@ -436,6 +441,12 @@ KMComposerWin::KMComposerWin(const KMime::Message::Ptr &aMsg, bool lastSignState mPluginEditorConvertTextManagerInterface->setActionCollection(actionCollection()); mPluginEditorConvertTextManagerInterface->setRichTextEditor(composerEditorNg); + mPluginEditorGrammarManagerInterface->setParentWidget(this); + mPluginEditorGrammarManagerInterface->setActionCollection(actionCollection()); + mPluginEditorGrammarManagerInterface->setRichTextEditor(composerEditorNg); + mPluginEditorGrammarManagerInterface->setCustomToolsWidget(mCustomToolsWidget); + + setupStatusBar(attachmentView->widget()); setupActions(); setupEditor(); @@ -1290,6 +1301,7 @@ void KMComposerWin::setupActions() mPluginEditorCheckBeforeSendManagerInterface->initializePlugins(); mPluginEditorInitManagerInterface->initializePlugins(); mPluginEditorConvertTextManagerInterface->initializePlugins(); + mPluginEditorGrammarManagerInterface->initializePlugins(); mHideMenuBarAction = KStandardAction::showMenubar(this, &KMComposerWin::slotToggleMenubar, actionCollection()); mHideMenuBarAction->setChecked(KMailSettings::self()->composerShowMenuBar()); diff --git a/src/editor/kmcomposerwin.h b/src/editor/kmcomposerwin.h index f74c224f3..5ae29702b 100644 --- a/src/editor/kmcomposerwin.h +++ b/src/editor/kmcomposerwin.h @@ -74,6 +74,7 @@ class KMailPluginEditorCheckBeforeSendManagerInterface; class KMailPluginEditorInitManagerInterface; class IncorrectIdentityFolderWarning; class KMailPluginEditorConvertTextManagerInterface; +class KMailPluginGrammarEditorManagerInterface; namespace MailTransport { class Transport; } @@ -661,6 +662,7 @@ private: KMailPluginEditorCheckBeforeSendManagerInterface *mPluginEditorCheckBeforeSendManagerInterface = nullptr; KMailPluginEditorInitManagerInterface *mPluginEditorInitManagerInterface = nullptr; KMailPluginEditorConvertTextManagerInterface *mPluginEditorConvertTextManagerInterface = nullptr; + KMailPluginGrammarEditorManagerInterface *mPluginEditorGrammarManagerInterface = nullptr; }; #endif diff --git a/src/editor/plugininterface/kmailplugingrammareditormanagerinterface.cpp b/src/editor/plugininterface/kmailplugingrammareditormanagerinterface.cpp new file mode 100644 index 000000000..f914f4bec --- /dev/null +++ b/src/editor/plugininterface/kmailplugingrammareditormanagerinterface.cpp @@ -0,0 +1,105 @@ +/* + Copyright (C) 2019 Montel Laurent + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "kmailplugingrammareditormanagerinterface.h" +#include "kmail_debug.h" +#include +#include +#include +#include + +KMailPluginGrammarEditorManagerInterface::KMailPluginGrammarEditorManagerInterface(QObject *parent) + : QObject(parent) +{ +} + +KPIMTextEdit::RichTextComposer *KMailPluginGrammarEditorManagerInterface::richTextEditor() const +{ + return mRichTextEditor; +} + +void KMailPluginGrammarEditorManagerInterface::setRichTextEditor(KPIMTextEdit::RichTextComposer *richTextEditor) +{ + mRichTextEditor = richTextEditor; +} + +QWidget *KMailPluginGrammarEditorManagerInterface::parentWidget() const +{ + return mParentWidget; +} + +void KMailPluginGrammarEditorManagerInterface::setParentWidget(QWidget *parentWidget) +{ + mParentWidget = parentWidget; +} + +KActionCollection *KMailPluginGrammarEditorManagerInterface::actionCollection() const +{ + return mActionCollection; +} + +void KMailPluginGrammarEditorManagerInterface::setActionCollection(KActionCollection *actionCollection) +{ + mActionCollection = actionCollection; +} + +PimCommon::CustomToolsWidgetNg *KMailPluginGrammarEditorManagerInterface::customToolsWidget() const +{ + return mCustomToolsWidget; +} + +void KMailPluginGrammarEditorManagerInterface::setCustomToolsWidget(PimCommon::CustomToolsWidgetNg *customToolsWidget) +{ + mCustomToolsWidget = customToolsWidget; +} + +void KMailPluginGrammarEditorManagerInterface::initializePlugins() +{ + if (mWasInitialized) { + qCDebug(KMAIL_LOG) << "KMailPluginGrammarEditorManagerInterface : Plugin was already initialized. This is a bug"; + return; + } + if (!mRichTextEditor) { + qCDebug(KMAIL_LOG) << "KMailPluginGrammarEditorManagerInterface : Richtexteditor is null. This is a bug"; + return; + } + if (!mParentWidget) { + qCDebug(KMAIL_LOG) << "KMailPluginGrammarEditorManagerInterface : Parent is null. This is a bug"; + } + if (!mCustomToolsWidget) { + qCDebug(KMAIL_LOG) << "KMailPluginGrammarEditorManagerInterface : mCustomToolsWidget is null. This is a bug"; + return; + } + + const QVector lstPlugin = MessageComposer::PluginEditorGrammarManager::self()->pluginsList(); + qDebug() << "lstPlugin " << lstPlugin.count(); + for (PimCommon::CustomToolsPlugin *plugin : lstPlugin) { + if (plugin->isEnabled()) { + MessageComposer::PluginEditorGrammarCustomToolsViewInterface *interface = static_cast(plugin->createView(mActionCollection, mCustomToolsWidget)); + mCustomToolsWidget->addCustomToolViewInterface(interface); + interface->setParentWidget(mParentWidget); + interface->setRichTextEditor(mRichTextEditor); +// interface->reloadConfig(); +// if (!interface->exec()) { +// qCWarning(KMAIL_LOG) << "KMailPluginGrammarEditorManagerInterface::initializePlugins: error during execution of plugin:" << interface; +// } + } + } + mWasInitialized = true; +} diff --git a/src/editor/plugininterface/kmailplugingrammareditormanagerinterface.h b/src/editor/plugininterface/kmailplugingrammareditormanagerinterface.h new file mode 100644 index 000000000..8e11a5580 --- /dev/null +++ b/src/editor/plugininterface/kmailplugingrammareditormanagerinterface.h @@ -0,0 +1,60 @@ +/* + Copyright (C) 2019 Montel Laurent + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef KMAILPLUGINGrammarEDITORMANAGERINTERFACE_H +#define KMAILPLUGINGrammarEDITORMANAGERINTERFACE_H + +#include +namespace KPIMTextEdit { +class RichTextComposer; +} +namespace PimCommon { +class CustomToolsWidgetNg; +} +class KActionCollection; +class KMailPluginGrammarEditorManagerInterface : public QObject +{ + Q_OBJECT +public: + explicit KMailPluginGrammarEditorManagerInterface(QObject *parent = nullptr); + ~KMailPluginGrammarEditorManagerInterface() = default; + + KPIMTextEdit::RichTextComposer *richTextEditor() const; + void setRichTextEditor(KPIMTextEdit::RichTextComposer *richTextEditor); + + QWidget *parentWidget() const; + void setParentWidget(QWidget *parentWidget); + + void initializePlugins(); + KActionCollection *actionCollection() const; + void setActionCollection(KActionCollection *actionCollection); + + PimCommon::CustomToolsWidgetNg *customToolsWidget() const; + void setCustomToolsWidget(PimCommon::CustomToolsWidgetNg *customToolsWidget); + +private: + Q_DISABLE_COPY(KMailPluginGrammarEditorManagerInterface) + KPIMTextEdit::RichTextComposer *mRichTextEditor = nullptr; + PimCommon::CustomToolsWidgetNg *mCustomToolsWidget = nullptr; + QWidget *mParentWidget = nullptr; + KActionCollection *mActionCollection = nullptr; + bool mWasInitialized = false; +}; + +#endif // KMAILPLUGINGrammarEDITORMANAGERINTERFACE_H