File indexing completed on 2024-05-19 04:03:02
0001 /* 0002 SPDX-FileCopyrightText: 2017 Klarälvdalens Datakonsult AB a KDAB Group company info@kdab.com 0003 SPDX-FileContributor: Daniel Vrátil <daniel.vratil@kdab.com> 0004 0005 SPDX-License-Identifier: LGPL-2.1-or-later 0006 */ 0007 0008 #include <purpose/pluginbase.h> 0009 0010 #include <KApplicationTrader> 0011 #include <KEMailClientLauncherJob> 0012 #include <KLocalizedString> 0013 #include <KPluginFactory> 0014 0015 #include <QDebug> 0016 #include <QDesktopServices> 0017 #include <QJsonArray> 0018 #include <QProcess> 0019 #include <QStandardPaths> 0020 #include <QUrl> 0021 #include <QUrlQuery> 0022 0023 namespace 0024 { 0025 class EmailJob : public Purpose::Job 0026 { 0027 Q_OBJECT 0028 public: 0029 explicit EmailJob(QObject *parent = nullptr) 0030 : Purpose::Job(parent) 0031 { 0032 } 0033 0034 void start() override 0035 { 0036 KEMailClientLauncherJob *job = new KEMailClientLauncherJob; 0037 0038 QList<QUrl> attachments; 0039 QStringList bodyPieces; 0040 0041 const auto urls = data().value(QLatin1String("urls")).toArray(); 0042 for (const QJsonValue &val : urls) { 0043 const QUrl url = val.toVariant().toUrl(); 0044 if (url.isLocalFile()) { 0045 attachments << url; 0046 } else { 0047 bodyPieces << url.toString(); 0048 } 0049 } 0050 0051 job->setAttachments(attachments); 0052 job->setBody(bodyPieces.join(QLatin1Char('\n'))); 0053 job->setSubject(data().value(QLatin1String("title")).toString()); 0054 0055 connect(job, &KJob::result, this, [this](KJob *job) { 0056 setError(job->error()); 0057 setErrorText(job->errorText()); 0058 emitResult(); 0059 }); 0060 0061 job->start(); 0062 } 0063 }; 0064 0065 } 0066 0067 class EmailPlugin : public Purpose::PluginBase 0068 { 0069 Q_OBJECT 0070 public: 0071 using PluginBase::PluginBase; 0072 Purpose::Job *createJob() const override 0073 { 0074 return new EmailJob(nullptr); 0075 } 0076 }; 0077 0078 K_PLUGIN_CLASS_WITH_JSON(EmailPlugin, "emailplugin.json") 0079 0080 #include "emailplugin.moc"