7#include "plugineditorgrammarmanager.h"
8#include "messagecomposer_debug.h"
9#include "plugineditorgrammarcustomtoolsviewinterface.h"
10#include <KPluginFactory>
11#include <KPluginMetaData>
12#include <PimCommon/CustomToolsPlugin>
17class PluginEditorGrammarInfo
20 PluginEditorGrammarInfo() =
default;
22 PimCommon::PluginUtilData pluginData;
23 QString metaDataFileNameBaseName;
24 QString metaDataFileName;
26 PimCommon::CustomToolsPlugin *plugin =
nullptr;
27 bool isEnabled =
true;
32QString pluginEditorGrammarVersion()
34 return QStringLiteral(
"1.0");
38class MessageComposer::PluginEditorGrammarManagerPrivate
41 PluginEditorGrammarManagerPrivate(PluginEditorGrammarManager *qq)
47 void loadPlugin(PluginEditorGrammarInfo *item);
48 [[nodiscard]] QList<PimCommon::CustomToolsPlugin *> pluginsList()
const;
49 void initializePlugins();
50 [[nodiscard]] QString configPrefixSettingKey()
const;
51 [[nodiscard]] QString configGroupName()
const;
52 [[nodiscard]] QList<PimCommon::PluginUtilData> pluginsDataList()
const;
54 QList<PluginEditorGrammarInfo> mPluginList;
55 PimCommon::CustomToolsPlugin *pluginFromIdentifier(
const QString &
id);
58 QList<PimCommon::PluginUtilData> mPluginDataList;
59 PluginEditorGrammarManager *
const q;
62QString PluginEditorGrammarManagerPrivate::configGroupName()
const
64 return QStringLiteral(
"KMailPluginEditorGrammar");
67QString PluginEditorGrammarManagerPrivate::configPrefixSettingKey()
const
69 return QStringLiteral(
"PluginEditorGrammar");
72QList<PimCommon::PluginUtilData> PluginEditorGrammarManagerPrivate::pluginsDataList()
const
74 return mPluginDataList;
77void PluginEditorGrammarManagerPrivate::initializePlugins()
81 const QPair<QStringList, QStringList> pair = PimCommon::PluginUtil::loadPluginSetting(configGroupName(), configPrefixSettingKey());
83 QListIterator<KPluginMetaData> i(plugins);
85 while (i.hasPrevious()) {
86 PluginEditorGrammarInfo info;
87 const KPluginMetaData data = i.previous();
90 info.pluginData = PimCommon::PluginUtil::createPluginMetaData(data);
92 const bool isPluginActivated =
93 PimCommon::PluginUtil::isPluginActivated(pair.first, pair.second, info.pluginData.mEnableByDefault, info.pluginData.mIdentifier);
94 info.isEnabled = isPluginActivated;
95 info.metaDataFileNameBaseName = QFileInfo(data.
fileName()).baseName();
96 info.metaDataFileName = data.
fileName();
98 if (pluginEditorGrammarVersion() == data.
version()) {
99 info.plugin =
nullptr;
100 mPluginList.push_back(info);
102 qCWarning(MESSAGECOMPOSER_LOG) <<
"Plugin " << data.
name() <<
" doesn't have correction plugin version. It will not be loaded.";
105 QList<PluginEditorGrammarInfo>::iterator
end(mPluginList.end());
106 for (QList<PluginEditorGrammarInfo>::iterator it = mPluginList.begin(); it != end; ++it) {
111void PluginEditorGrammarManagerPrivate::loadPlugin(PluginEditorGrammarInfo *item)
113 if (
auto plugin = KPluginFactory::instantiatePlugin<PimCommon::CustomToolsPlugin>(item->data, q, QVariantList() << item->metaDataFileName).plugin) {
114 item->plugin = plugin;
115 item->plugin->setIsEnabled(item->isEnabled);
116 item->pluginData.mHasConfigureDialog = item->plugin->hasConfigureDialog();
117 mPluginDataList.append(item->pluginData);
121QList<PimCommon::CustomToolsPlugin *> PluginEditorGrammarManagerPrivate::pluginsList()
const
123 QList<PimCommon::CustomToolsPlugin *> lst;
126 if (
auto plugin = (*it).plugin) {
133PimCommon::CustomToolsPlugin *PluginEditorGrammarManagerPrivate::pluginFromIdentifier(
const QString &
id)
137 if ((*it).pluginData.mIdentifier ==
id) {
144PluginEditorGrammarManager::PluginEditorGrammarManager(QObject *parent)
146 , d(new MessageComposer::PluginEditorGrammarManagerPrivate(this))
148 qRegisterMetaType<MessageComposer::PluginGrammarAction>();
151PluginEditorGrammarManager::~PluginEditorGrammarManager() =
default;
155 static PluginEditorGrammarManager s_self;
159QList<PimCommon::CustomToolsPlugin *> PluginEditorGrammarManager::pluginsList()
const
161 return d->pluginsList();
164QString PluginEditorGrammarManager::configGroupName()
const
166 return d->configGroupName();
169QString PluginEditorGrammarManager::configPrefixSettingKey()
const
171 return d->configPrefixSettingKey();
174QList<PimCommon::PluginUtilData> PluginEditorGrammarManager::pluginsDataList()
const
176 return d->pluginsDataList();
179PimCommon::CustomToolsPlugin *PluginEditorGrammarManager::pluginFromIdentifier(
const QString &
id)
181 return d->pluginFromIdentifier(
id);
184#include "moc_plugineditorgrammarmanager.cpp"
The PluginEditorGrammarManager class.
const QList< QKeySequence > & end()
Simple interface that both EncryptJob and SignEncryptJob implement so the composer can extract some e...