add purposeplugin for kde

This commit is contained in:
2026-08-13 20:08:24 +02:00
parent acc859919e
commit 5bef759fae
8 changed files with 244 additions and 3 deletions

View File

@@ -0,0 +1,65 @@
#include <purpose/pluginbase.h>
#include <purpose/job.h>
#include <KPluginFactory>
#include <QProcess>
#include <QJsonObject>
#include <QJsonArray>
#include <QUrl>
#include <QDir>
#include <QStandardPaths>
#include <QDebug>
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"