File indexing completed on 2025-05-04 04:51:07

0001 /*
0002    SPDX-FileCopyrightText: 2016-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "viewerpluginexternalscriptparseargument.h"
0008 ViewerPluginExternalScriptParseArgument::ViewerPluginExternalScriptParseArgument() = default;
0009 
0010 void ViewerPluginExternalScriptParseArgument::setMessage(const KMime::Message::Ptr &msg)
0011 {
0012     mMessage = msg;
0013 }
0014 
0015 void ViewerPluginExternalScriptParseArgument::setAkonadiUrl(const QString &akonadiUrl)
0016 {
0017     mAkonadiUrl = akonadiUrl;
0018 }
0019 
0020 QStringList ViewerPluginExternalScriptParseArgument::parse(const QStringList &scriptArguments)
0021 {
0022     if (mMessage.isNull()) {
0023         return scriptArguments;
0024     }
0025 
0026     QStringList newArguments;
0027     newArguments.reserve(scriptArguments.count());
0028     for (const QString &arg : scriptArguments) {
0029         if (arg == QLatin1StringView("%s")) {
0030             const KMime::Headers::Subject *const subject = mMessage ? mMessage->subject(false) : nullptr;
0031             newArguments << QStringLiteral("\"%1\"").arg(subject ? subject->asUnicodeString() : QString());
0032         } else if (arg == QLatin1StringView("%from")) {
0033             const KMime::Headers::From *const from = mMessage ? mMessage->from(false) : nullptr;
0034             newArguments << QStringLiteral("\"%1\"").arg(from ? from->asUnicodeString() : QString());
0035         } else if (arg == QLatin1StringView("%to")) {
0036             const KMime::Headers::To *const to = mMessage ? mMessage->to(false) : nullptr;
0037             newArguments << QStringLiteral("\"%1\"").arg(to ? to->asUnicodeString() : QString());
0038         } else if (arg == QLatin1StringView("%cc")) {
0039             const KMime::Headers::Cc *const cc = mMessage ? mMessage->cc(false) : nullptr;
0040             newArguments << QStringLiteral("\"%1\"").arg(cc ? cc->asUnicodeString() : QString());
0041         } else if (arg == QLatin1StringView("%bcc")) {
0042             const KMime::Headers::Bcc *const bcc = mMessage ? mMessage->bcc(false) : nullptr;
0043             newArguments << QStringLiteral("\"%1\"").arg(bcc ? bcc->asUnicodeString() : QString());
0044         } else if (arg == QLatin1StringView("%body")) {
0045             const QByteArray body = mMessage ? mMessage->body() : nullptr;
0046             newArguments << QStringLiteral("\"%1\"").arg(QLatin1StringView(body));
0047         } else if (arg == QLatin1StringView("%inreplyto")) {
0048             KMime::Headers::InReplyTo *inReplyTo = mMessage ? mMessage->inReplyTo(false) : nullptr;
0049             newArguments << QStringLiteral("\"%1\"").arg(inReplyTo ? inReplyTo->asUnicodeString() : QString());
0050         } else if (arg == QLatin1StringView("%akonadiUrl")) {
0051             newArguments << mAkonadiUrl;
0052         } else {
0053             newArguments << arg;
0054         }
0055     }
0056     return newArguments;
0057 }