66 lines
1.7 KiB
C++
66 lines
1.7 KiB
C++
#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"
|