File indexing completed on 2025-03-09 04:54:44

0001 /*
0002    SPDX-FileCopyrightText: 2015-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "viewerplugin_gui.h"
0008 #include "viewerplugins/viewerplugintoolmanager.h"
0009 #include <KActionCollection>
0010 #include <QStandardPaths>
0011 
0012 #include <QApplication>
0013 #include <QCommandLineParser>
0014 #include <QMenuBar>
0015 #include <QTextEdit>
0016 #include <QVBoxLayout>
0017 
0018 #include "viewerplugins/viewerplugininterface.h"
0019 
0020 ViewerPluginTest::ViewerPluginTest(QWidget *parent)
0021     : QWidget(parent)
0022 {
0023     auto menuBar = new QMenuBar(this);
0024     auto vbox = new QVBoxLayout(this);
0025     vbox->addWidget(menuBar);
0026     auto textEdit = new QTextEdit(this);
0027     vbox->addWidget(textEdit);
0028 
0029     auto toolManagerWidget = new QWidget(this);
0030     vbox->addWidget(toolManagerWidget);
0031     vbox = new QVBoxLayout;
0032     vbox->setContentsMargins({});
0033     vbox->setSpacing(0);
0034     toolManagerWidget->setLayout(vbox);
0035     auto toolManager = new MessageViewer::ViewerPluginToolManager(toolManagerWidget, this);
0036     connect(toolManager, &MessageViewer::ViewerPluginToolManager::activatePlugin, this, &ViewerPluginTest::slotActivatePlugin);
0037 
0038     toolManager->setPluginName(QStringLiteral("messageviewer"));
0039     toolManager->setPluginDirectory(QStringLiteral("pim6/messageviewer/viewerplugin"));
0040     if (!toolManager->initializePluginList()) {
0041         qDebug() << " Impossible to initialize plugins";
0042     }
0043     toolManager->setActionCollection(new KActionCollection(this));
0044     toolManager->createView();
0045     auto menu = new QMenu(this);
0046     menu->setTitle(QStringLiteral("tools"));
0047     menu->addActions(toolManager->viewerPluginActionList(MessageViewer::ViewerPluginInterface::All));
0048     menuBar->addMenu(menu);
0049 
0050     menu = new QMenu(this);
0051     menu->setTitle(QStringLiteral("selected tools"));
0052     menu->addActions(toolManager->viewerPluginActionList(MessageViewer::ViewerPluginInterface::NeedSelection));
0053     menuBar->addMenu(menu);
0054 
0055     menu = new QMenu(this);
0056     menu->setTitle(QStringLiteral("message tools"));
0057     menu->addActions(toolManager->viewerPluginActionList(MessageViewer::ViewerPluginInterface::NeedMessage));
0058     menuBar->addMenu(menu);
0059 
0060     menu = new QMenu(this);
0061     menu->setTitle(QStringLiteral("message tools and selected tools"));
0062     MessageViewer::ViewerPluginInterface::SpecificFeatureTypes featureTypes;
0063     featureTypes |= MessageViewer::ViewerPluginInterface::NeedMessage;
0064     featureTypes |= MessageViewer::ViewerPluginInterface::NeedSelection;
0065     featureTypes |= MessageViewer::ViewerPluginInterface::NeedUrl;
0066     menu->addActions(toolManager->viewerPluginActionList(featureTypes));
0067     menuBar->addMenu(menu);
0068 }
0069 
0070 ViewerPluginTest::~ViewerPluginTest() = default;
0071 
0072 void ViewerPluginTest::slotActivatePlugin(MessageViewer::ViewerPluginInterface *interface)
0073 {
0074     interface->execute();
0075 }
0076 
0077 int main(int argc, char **argv)
0078 {
0079     QApplication app(argc, argv);
0080     QStandardPaths::setTestModeEnabled(true);
0081     QCommandLineParser parser;
0082     parser.addVersionOption();
0083     parser.addHelpOption();
0084     parser.process(app);
0085 
0086     auto w = new ViewerPluginTest();
0087     w->resize(800, 200);
0088     w->show();
0089     app.exec();
0090     delete w;
0091     return 0;
0092 }
0093 
0094 #include "moc_viewerplugin_gui.cpp"