7#include "viewerplugintoolmanager.h"
8#include "viewerplugin.h"
9#include "viewerpluginmanager.h"
13using namespace MessageViewer;
15class MessageViewer::ViewerPluginToolManagerPrivate
18 ViewerPluginToolManagerPrivate(ViewerPluginToolManager *qq, QWidget *parentWidget)
19 : mParentWidget(parentWidget)
24 void setPluginName(
const QString &pluginName);
25 [[nodiscard]] QString pluginDirectory()
const;
26 [[nodiscard]] QString pluginName()
const;
28 void refreshActionList();
30 void setActionCollection(KActionCollection *ac);
31 void updateActions(
const Akonadi::Item &messageItem);
32 [[nodiscard]] QList<QAction *> actionList(ViewerPluginInterface::SpecificFeatureTypes features)
const;
33 QList<MessageViewer::ViewerPluginInterface *> mListInterface;
34 KActionCollection *mActionCollection =
nullptr;
35 QWidget *mParentWidget =
nullptr;
36 ViewerPluginToolManager *
const q;
37 void setPluginDirectory(
const QString &directory);
40void ViewerPluginToolManagerPrivate::setPluginDirectory(
const QString &directory)
42 MessageViewer::ViewerPluginManager::self()->setPluginDirectory(directory);
45QString ViewerPluginToolManagerPrivate::pluginDirectory()
const
47 return MessageViewer::ViewerPluginManager::self()->pluginDirectory();
50void ViewerPluginToolManagerPrivate::setPluginName(
const QString &pluginName)
52 MessageViewer::ViewerPluginManager::self()->setPluginName(pluginName);
55QString ViewerPluginToolManagerPrivate::pluginName()
const
57 return MessageViewer::ViewerPluginManager::self()->pluginName();
60void ViewerPluginToolManagerPrivate::refreshActionList()
62 for (MessageViewer::ViewerPluginInterface *interface : std::as_const(mListInterface)) {
63 interface->refreshActionList(mActionCollection);
67void ViewerPluginToolManagerPrivate::createView()
69 const QList<MessageViewer::ViewerPlugin *> listPlugin = MessageViewer::ViewerPluginManager::self()->pluginsList();
70 for (MessageViewer::ViewerPlugin *plugin : listPlugin) {
71 if (plugin->isEnabled()) {
72 MessageViewer::ViewerPluginInterface *
interface = plugin->createView(mParentWidget, mActionCollection);
73 q->connect(interface, &MessageViewer::ViewerPluginInterface::activatePlugin, q, &ViewerPluginToolManager::activatePlugin);
75 mListInterface.append(interface);
80void ViewerPluginToolManagerPrivate::closeAllTools()
82 for (MessageViewer::ViewerPluginInterface *interface : std::as_const(mListInterface)) {
83 interface->closePlugin();
87void ViewerPluginToolManagerPrivate::setActionCollection(KActionCollection *ac)
89 mActionCollection = ac;
92QList<QAction *> ViewerPluginToolManagerPrivate::actionList(ViewerPluginInterface::SpecificFeatureTypes features)
const
94 QList<QAction *> lstAction;
95 for (MessageViewer::ViewerPluginInterface *interface : std::as_const(mListInterface)) {
96 if (features & ViewerPluginInterface::All) {
97 lstAction.
append(interface->actions());
99 if (interface->featureTypes() & features) {
100 lstAction.
append(interface->actions());
107void ViewerPluginToolManagerPrivate::updateActions(
const Akonadi::Item &messageItem)
109 for (MessageViewer::ViewerPluginInterface *interface : std::as_const(mListInterface)) {
110 interface->updateAction(messageItem);
114ViewerPluginToolManager::ViewerPluginToolManager(QWidget *parentWidget, QObject *parent)
116 , d(new MessageViewer::ViewerPluginToolManagerPrivate(this, parentWidget))
120ViewerPluginToolManager::~ViewerPluginToolManager() =
default;
122void ViewerPluginToolManager::closeAllTools()
129 d->refreshActionList();
132void ViewerPluginToolManager::createView()
139 d->setActionCollection(ac);
142void ViewerPluginToolManager::setPluginDirectory(
const QString &directory)
144 d->setPluginDirectory(directory);
147QString ViewerPluginToolManager::pluginDirectory()
const
149 return d->pluginDirectory();
152void ViewerPluginToolManager::setPluginName(
const QString &pluginName)
154 d->setPluginName(pluginName);
157QString ViewerPluginToolManager::pluginName()
const
159 return d->pluginName();
162bool ViewerPluginToolManager::initializePluginList()
164 return MessageViewer::ViewerPluginManager::self()->initializePluginList();
167QList<QAction *> ViewerPluginToolManager::viewerPluginActionList(ViewerPluginInterface::SpecificFeatureTypes features)
const
169 return d->actionList(features);
172void ViewerPluginToolManager::updateActions(
const Akonadi::Item &messageItem)
174 d->updateActions(messageItem);
177#include "moc_viewerplugintoolmanager.cpp"
void append(QList< T > &&value)