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

0001 /* SPDX-FileCopyrightText: 2010 David Faure <faure@kde.org>
0002 
0003    SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0004 */
0005 
0006 #include "messageviewer/headerstylepluginmanager.h"
0007 #include "messageviewer/viewer.h"
0008 #include <KActionCollection>
0009 
0010 #include "messageviewer_debug.h"
0011 #include <QApplication>
0012 #include <QCommandLineOption>
0013 #include <QCommandLineParser>
0014 #include <QDebug>
0015 #include <QFile>
0016 #include <QStandardPaths>
0017 #include <QWebEngineUrlScheme>
0018 
0019 using namespace MessageViewer;
0020 
0021 int main(int argc, char **argv)
0022 {
0023     // Necessary for "cid" support in kmail.
0024     QWebEngineUrlScheme cidScheme("cid");
0025     cidScheme.setFlags(QWebEngineUrlScheme::SecureScheme | QWebEngineUrlScheme::ContentSecurityPolicyIgnored | QWebEngineUrlScheme::LocalScheme
0026                        | QWebEngineUrlScheme::LocalAccessAllowed);
0027 
0028     cidScheme.setSyntax(QWebEngineUrlScheme::Syntax::Path);
0029     QWebEngineUrlScheme::registerScheme(cidScheme);
0030 
0031     QApplication app(argc, argv);
0032     QStandardPaths::setTestModeEnabled(true);
0033     QCommandLineParser parser;
0034     parser.addVersionOption();
0035     parser.addHelpOption();
0036     parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("+[file]"), QStringLiteral("File containing an email")));
0037 
0038     QCommandLineOption headerStylePluginOption(QStringList() << QStringLiteral("headerstyleplugin"),
0039                                                QStringLiteral("Header Style Plugin"),
0040                                                QStringLiteral("headerstyleplugin"));
0041     parser.addOption(headerStylePluginOption);
0042 
0043     QCommandLineOption listOption(QStringList() << QStringLiteral("list"), QStringLiteral("Show list of plugins installed."));
0044     parser.addOption(listOption);
0045 
0046     QCommandLineOption developerToolsOption(QStringList() << QStringLiteral("d") << QStringLiteral("developer-tools"),
0047                                             QStringLiteral("Activate Developer tools"));
0048     parser.addOption(developerToolsOption);
0049 
0050     parser.process(app);
0051 
0052     if (parser.isSet(listOption)) {
0053         qDebug() << "List of Plugin :" << MessageViewer::HeaderStylePluginManager::self()->pluginListName();
0054         return 0;
0055     }
0056 
0057     auto msg = new KMime::Message;
0058     if (parser.positionalArguments().isEmpty()) {
0059         QByteArray mail =
0060             "From: dfaure@example.com\n"
0061             "To: kde@example.com\n"
0062             "Sender: dfaure@example.com\n"
0063             "MIME-Version: 1.0\n"
0064             "Date: 02 Jul 2010 23:58:21 -0000\n"
0065             "Subject: Akademy\n"
0066             "Content-Type: text/plain\n"
0067             "X-Length: 0\n"
0068             "X-UID: 6161\n"
0069             "\n"
0070             "Hello this is a test mail\n";
0071         msg->setContent(mail);
0072     } else {
0073         const QString fileName = parser.positionalArguments().at(0);
0074         QFile file(fileName);
0075         if (file.open(QIODevice::ReadOnly)) {
0076             msg->setContent(file.readAll());
0077         } else {
0078             qCWarning(MESSAGEVIEWER_LOG) << "Couldn't read" << fileName;
0079         }
0080     }
0081     msg->parse();
0082 
0083     auto viewer = new Viewer(nullptr, nullptr, new KActionCollection(&app));
0084     if (parser.isSet(headerStylePluginOption)) {
0085         viewer->setPluginName(parser.value(headerStylePluginOption));
0086     }
0087     viewer->setMessage(KMime::Message::Ptr(msg));
0088 
0089     if (parser.isSet(developerToolsOption)) {
0090         viewer->showDevelopmentTools();
0091     }
0092     viewer->resize(600, 400);
0093     viewer->show();
0094 
0095     const int ret = app.exec();
0096 
0097     delete viewer;
0098     return ret;
0099 }