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 }