File indexing completed on 2024-05-19 04:03:03

0001 /*
0002     SPDX-FileCopyrightText: 2018 Nicolas Fella <nicolas.fella@gmx.de>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-or-later
0005 */
0006 
0007 #include <KIO/CommandLauncherJob>
0008 #include <KLocalizedString>
0009 #include <KPluginFactory>
0010 
0011 #include <QJsonArray>
0012 #include <QProcess>
0013 #include <QStandardPaths>
0014 #include <QTimer>
0015 #include <purpose/pluginbase.h>
0016 
0017 class KDEConnectSMSJob : public Purpose::Job
0018 {
0019     Q_OBJECT
0020 public:
0021     KDEConnectSMSJob(QObject *parent)
0022         : Purpose::Job(parent)
0023     {
0024     }
0025 
0026     QStringList arrayToList(const QJsonArray &array)
0027     {
0028         QStringList ret;
0029         for (const QJsonValue &val : array) {
0030             ret += val.toString();
0031         }
0032         return ret;
0033     }
0034 
0035     void start() override
0036     {
0037         QJsonArray urlsJson = data().value(QLatin1String("urls")).toArray();
0038         QString title = data().value(QLatin1String("title")).toString();
0039         QString message = i18n("%1 - %2").arg(title).arg(arrayToList(urlsJson).join(QLatin1Char(' ')));
0040 
0041         auto *job = new KIO::CommandLauncherJob(QStringLiteral("kdeconnect-sms"), {QStringLiteral("--message"), message});
0042         job->setDesktopName(QStringLiteral("org.kde.kdeconnect.sms"));
0043         connect(job, &KJob::finished, this, &KDEConnectSMSJob::emitResult);
0044         job->start();
0045     }
0046 };
0047 
0048 class KDEConnectSMSPlugin : public Purpose::PluginBase
0049 {
0050     Q_OBJECT
0051 public:
0052     using PluginBase::PluginBase;
0053     Purpose::Job *createJob() const override
0054     {
0055         return new KDEConnectSMSJob(nullptr);
0056     }
0057 };
0058 
0059 K_PLUGIN_FACTORY_WITH_JSON(KDEConnectSMS, "kdeconnectsmsplugin.json", registerPlugin<KDEConnectSMSPlugin>();)
0060 
0061 #include "kdeconnectsmsplugin.moc"