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"