add purposeplugin for kde
This commit is contained in:
65
purpose_plugin/f0ckmplugin.cpp
Normal file
65
purpose_plugin/f0ckmplugin.cpp
Normal 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"
|
||||
Reference in New Issue
Block a user