diff --git a/src/plugins/telegram/telegramplugin.cpp b/src/plugins/telegram/telegramplugin.cpp index 2f60fce..c52ac10 100644 --- a/src/plugins/telegram/telegramplugin.cpp +++ b/src/plugins/telegram/telegramplugin.cpp @@ -1,128 +1,128 @@ /* Copyright 2018 Nicolas Fella This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . */ #include #include #include #include #include #include #include #include #include #include #include #include #include "debug.h" Q_LOGGING_CATEGORY(PLUGIN_TELEGRAM, "org.kde.purpose.plugin.telegram") EXPORT_SHARE_VERSION class TelegramJob : public Purpose::Job { Q_OBJECT public: TelegramJob(QObject* parent) : Purpose::Job(parent) {} QStringList arrayToList(const QJsonArray& array) { QStringList ret; for (const QJsonValue& val : array) { QUrl url(val.toString()); if(url.isLocalFile()) { ret += KShell::quoteArg(url.toLocalFile()); } } return ret; } void start() override { - for (const QString &desktopFile: {QStringLiteral("org.telegram.desktop.desktop"), QStringLiteral("telegramdesktop.desktop") }) { + for (const QString &desktopFile: {QStringLiteral("org.telegram.desktop.desktop"), QStringLiteral("telegramdesktop.desktop"), QStringLiteral("telegram-desktop.desktop") }) { const auto path = QStandardPaths::locate(QStandardPaths::ApplicationsLocation, desktopFile); if (!path.isEmpty()) { useDesktopFile(path); return; } } //Failed to find the application QTimer::singleShot(0, this, [this]() { setError(1); setErrorText(i18n("Could not find telegram")); setOutput( {{ QStringLiteral("url"), QString() }}); emitResult(); }); } void useDesktopFile(const QString &path) { const KDesktopFile file(path); const KConfigGroup desktopEntryGroup = file.group("Desktop Entry"); QString execLine = desktopEntryGroup.readEntry("Exec"); execLine.replace(QLatin1String("%u"), arrayToList(data().value(QStringLiteral("urls")).toArray()).join(QLatin1Char(' '))); execLine.replace(QLatin1String("@@u"), QLatin1String("@@")); execLine.replace(QLatin1String(" -- "), QLatin1String(" -sendpath ")); QStringList args = KShell::splitArgs(execLine); QProcess* process = new QProcess(this); process->setProgram(args.takeFirst()); process->setArguments(args); connect(process, &QProcess::errorOccurred, this, &TelegramJob::processError); connect(process, &QProcess::readyRead, this, [process](){ qDebug() << process->program() << "output:" << process->readAll(); }); process->start(); QTimer::singleShot(500, this, &TelegramJob::jobFinished); } void processError(QProcess::ProcessError error) { QProcess* process = qobject_cast(sender()); qWarning() << "telegram share error:" << error << process->errorString(); setError(1 + error); setErrorText(process->errorString()); emitResult(); } void jobFinished() { setOutput( {{ QStringLiteral("url"), QString() }}); emitResult(); } private: }; class Q_DECL_EXPORT TelegramPlugin : public Purpose::PluginBase { Q_OBJECT public: TelegramPlugin(QObject* p, const QVariantList& ) : Purpose::PluginBase(p) {} Purpose::Job* createJob() const override { return new TelegramJob(nullptr); } }; K_PLUGIN_CLASS_WITH_JSON(TelegramPlugin, "telegramplugin.json") #include "telegramplugin.moc" diff --git a/src/plugins/telegram/telegramplugin.json b/src/plugins/telegram/telegramplugin.json index bf5cd1d..6a35df5 100644 --- a/src/plugins/telegram/telegramplugin.json +++ b/src/plugins/telegram/telegramplugin.json @@ -1,142 +1,143 @@ { "KPlugin": { "Authors": [ { "Name": "Nicolas Fella", "Name[ar]": "Nicolas Fella", "Name[ca@valencia]": "Nicolas Fella", "Name[ca]": "Nicolas Fella", "Name[cs]": "Nicolas Fella", "Name[da]": "Nicolas Fella", "Name[de]": "Nicolas Fella", "Name[en_GB]": "Nicolas Fella", "Name[es]": "Nicolas Fella", "Name[eu]": "Nicolas Fella", "Name[fi]": "Nicolas Fella", "Name[fr]": "Nicolas Fella", "Name[gl]": "Nicolas Fella", "Name[hu]": "Nicolas Fella", "Name[id]": "Nicolas Fella", "Name[it]": "Nicolas Fella", "Name[ko]": "Nicolas Fella", "Name[lt]": "Nicolas Fella", "Name[nl]": "Nicolas Fella", "Name[nn]": "Nicolas Fella", "Name[pl]": "Nicolas Fella", "Name[pt]": "Nicolas Fella", "Name[pt_BR]": "Nicolas Fella", "Name[ru]": "Nicolas Fella", "Name[sk]": "Nicolas Fella", "Name[sv]": "Nicolas Fella", "Name[tg]": "Николас Фелла (Nicolas Fella)", "Name[uk]": "Nicolas Fella", "Name[x-test]": "xxNicolas Fellaxx", "Name[zh_CN]": "Nicolas Fella", "Name[zh_TW]": "Nicolas Fella" } ], "Category": "Utilities", "Description": "Send via Telegram", "Description[ar]": "أرسِل عبر «تلغرام»", "Description[ca@valencia]": "Envia via Telegram", "Description[ca]": "Envia via Telegram", "Description[cs]": "Poslat přes Telegram", "Description[da]": "Send via Telegram", "Description[de]": "Mit Telegram senden", "Description[en_GB]": "Send via Telegram", "Description[es]": "Enviar por Telegram", "Description[eu]": "Bidali Telegram bidez", "Description[fi]": "Lähetä Telegramilla", "Description[fr]": "Envoyer par Telegram", "Description[gl]": "Enviar por Telegram", "Description[hu]": "Küldés Telegramon", "Description[id]": "Kirimkan via Telegram", "Description[it]": "Invia con Telegram", "Description[ko]": "텔레그램으로 보내기", "Description[lt]": "Siųsti per Telegram", "Description[ml]": "ടെലഗ്രാമിലൂടെ അയക്കുക", "Description[nl]": "Verzenden via Telegram", "Description[nn]": "Send via Telegram", "Description[pl]": "Prześlij przez Telegram", "Description[pt]": "Enviar por Telegram", "Description[pt_BR]": "Envia via Telegram", "Description[ru]": "Отправка в Telegram", "Description[sk]": "Poslať cez Telegram", "Description[sv]": "Skicka via Telegram", "Description[tg]": "Фиристодан ба воситаи Telegram", "Description[uk]": "Надсилання за допомогою Telegram", "Description[x-test]": "xxSend via Telegramxx", "Description[zh_CN]": "通过 Telegram 发送", "Description[zh_TW]": "透過 Telegram 傳送", "Icon": "telegram", "License": "GPL", "Name": "Send via Telegram", "Name[ca]": "Envia via Telegram", "Name[cs]": "Poslat přes Telegram", "Name[da]": "Send via Telegram", "Name[de]": "Mit Telegram senden", "Name[en_GB]": "Send via Telegram", "Name[es]": "Enviar por Telegram", "Name[eu]": "Bidali Telegram bidez", "Name[fi]": "Lähetä Telegramilla", "Name[fr]": "Envoyer par Telegram", "Name[gl]": "Enviar por Telegram", "Name[id]": "Kirimkan via Telegram", "Name[it]": "Invia con Telegram", "Name[ko]": "텔레그램으로 보내기", "Name[lt]": "Siųsti per Telegram", "Name[ml]": "ടെലഗ്രാമിലൂടെ അയക്കുക", "Name[nl]": "Verzenden via Telegram", "Name[nn]": "Send via Telegram", "Name[pl]": "Prześlij przez Telegram", "Name[pt]": "Enviar por Telegram", "Name[pt_BR]": "Enviar via Telegram", "Name[ru]": "Отправка в Telegram", "Name[sk]": "Poslať cez Telegram", "Name[sv]": "Skicka via Telegram", "Name[tg]": "Фиристодан ба воситаи Telegram", "Name[uk]": "Надсилання за допомогою Telegram", "Name[x-test]": "xxSend via Telegramxx", "Name[zh_CN]": "通过 Telegram 发送", "Name[zh_TW]": "透過 Telegram 傳送", "X-Purpose-ActionDisplay": "Send via Telegram...", "X-Purpose-ActionDisplay[ca]": "Envia via Telegram...", "X-Purpose-ActionDisplay[cs]": "Poslat přes Telegram...", "X-Purpose-ActionDisplay[da]": "Send via Telegram...", "X-Purpose-ActionDisplay[de]": "Mit Telegram senden ...", "X-Purpose-ActionDisplay[en_GB]": "Send via Telegram...", "X-Purpose-ActionDisplay[es]": "Enviar por Telegram...", "X-Purpose-ActionDisplay[eu]": "Bidali Telegram bidez...", "X-Purpose-ActionDisplay[fi]": "Lähetä Telegramilla…", "X-Purpose-ActionDisplay[fr]": "Envoyer par Telegram...", "X-Purpose-ActionDisplay[gl]": "Enviar por Telegram…", "X-Purpose-ActionDisplay[id]": "Kirimkan via Telegram...", "X-Purpose-ActionDisplay[it]": "Invia con Telegram...", "X-Purpose-ActionDisplay[ko]": "텔레그램으로 보내기...", "X-Purpose-ActionDisplay[lt]": "Siųsti per Telegram...", "X-Purpose-ActionDisplay[ml]": "ടെലഗ്രാമിലൂടെ അയക്കുക...", "X-Purpose-ActionDisplay[nl]": "Verzenden via Telegram...", "X-Purpose-ActionDisplay[nn]": "Send via Telegram …", "X-Purpose-ActionDisplay[pl]": "Prześlij przez Telegram...", "X-Purpose-ActionDisplay[pt]": "Enviar por Telegram...", "X-Purpose-ActionDisplay[pt_BR]": "Enviar via Telegram...", "X-Purpose-ActionDisplay[ru]": "Отправить в Telegram...", "X-Purpose-ActionDisplay[sk]": "Poslať cez Telegram...", "X-Purpose-ActionDisplay[sv]": "Skicka via Telegram...", "X-Purpose-ActionDisplay[tg]": "Фиристодан ба воситаи Telegram...", "X-Purpose-ActionDisplay[uk]": "Надіслати за допомогою Telegram…", "X-Purpose-ActionDisplay[x-test]": "xxSend via Telegram...xx", "X-Purpose-ActionDisplay[zh_CN]": "通过 Telegram 发送...", "X-Purpose-ActionDisplay[zh_TW]": "透過 Telegram 傳送……" }, "X-Purpose-Configuration": [], "X-Purpose-Constraints": [ [ "application:org.telegram.desktop.desktop", - "application:telegramdesktop.desktop" + "application:telegramdesktop.desktop", + "application:telegram-desktop.desktop" ] ], "X-Purpose-PluginTypes": [ "Export" ] }