#include #include #include #include #include #include #include #include #include #include class F0ckmJob : public Purpose::Job { Q_OBJECT public: explicit F0ckmJob(QObject *parent = nullptr) : Purpose::Job(parent) {} void start() override { QJsonObject d = data(); QJsonArray urls = d.value(QStringLiteral("urls")).toArray(); QStringList args; args << QStringLiteral("--upload"); for (const QJsonValue &val : urls) { QUrl url(val.toString()); if (url.isLocalFile()) { args << url.toLocalFile(); } else { args << val.toString(); } } QString execPath = QStandardPaths::findExecutable(QStringLiteral("f0ckm-uploader-gui")); if (execPath.isEmpty()) { execPath = QDir::homePath() + QStringLiteral("/.local/bin/f0ckm-uploader-gui"); } bool ok = QProcess::startDetached(execPath, args); if (!ok) { setError(1); setErrorText(QStringLiteral("Failed to launch f0ckm-uploader-gui")); } emitResult(); } }; class F0ckmPlugin : public Purpose::PluginBase { Q_OBJECT public: explicit F0ckmPlugin(QObject *parent = nullptr, const QVariantList &args = QVariantList()) : Purpose::PluginBase(parent) { Q_UNUSED(args); } Purpose::Job *createJob() const override { return new F0ckmJob(); } }; K_PLUGIN_CLASS_WITH_JSON(F0ckmPlugin, "f0ckmplugin.json") #include "f0ckmplugin.moc"