diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -40,6 +40,8 @@
XmlGui
)
+find_package(KF5 COMPONENTS Purpose)
+
#option(QTINDICATE_DISABLE "Disable support for notifications via indicator")
find_package(Qca-qt5 REQUIRED)
diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt
--- a/plugins/CMakeLists.txt
+++ b/plugins/CMakeLists.txt
@@ -21,3 +21,8 @@
ELSEIF(KF5WebKit_FOUND AND KF5Parts_FOUND)
message(WARNING "Optional dependency \"KF5::WebKit\" or \"KF5::Parts\" NOT FOUND, won't build \"Konqueror Choqok\" plugin")
ENDIF(KF5WebKit_FOUND AND KF5Parts_FOUND)
+
+if(KF5Purpose_FOUND)
+ message(STATUS "Found KF5::Purpose: Will build Share plugin")
+ add_subdirectory(purpose)
+endif()
diff --git a/plugins/konqueror/CMakeLists.txt b/plugins/konqueror/CMakeLists.txt
--- a/plugins/konqueror/CMakeLists.txt
+++ b/plugins/konqueror/CMakeLists.txt
@@ -22,4 +22,4 @@
install(TARGETS konqchoqokplugin DESTINATION ${PLUGIN_INSTALL_DIR}/kf5/parts)
install(FILES konqchoqok.rc DESTINATION ${KXMLGUI_INSTALL_DIR}/konqchoqokplugin)
install(FILES konqchoqok.desktop DESTINATION ${SERVICES_INSTALL_DIR})
-install(FILES choqok_share.desktop choqok_upload.desktop DESTINATION ${SERVICES_INSTALL_DIR}/ServiceMenus)
+install(FILES choqok_share.desktop DESTINATION ${SERVICES_INSTALL_DIR}/ServiceMenus)
diff --git a/plugins/konqueror/choqok_upload.desktop b/plugins/konqueror/choqok_upload.desktop
deleted file mode 100644
--- a/plugins/konqueror/choqok_upload.desktop
+++ /dev/null
@@ -1,46 +0,0 @@
-[Desktop Entry]
-Actions=ChoqokUploadFile;
-Type=Service
-Icon=
-Name=
-X-KDE-ServiceTypes=KonqPopupMenu/Plugin,image/*
-X-KDE-ExcludeServiceTypes=kdedevice/*
-
-[Desktop Action ChoqokUploadFile]
-Exec=qdbus org.kde.choqok / uploadFile %U
-Icon=choqok
-Name=Upload with Choqok
-Name[ar]=ارفع بِ«چغوك»
-Name[bg]=Качване с Choqok
-Name[bs]=Slanje datoteke Choqok-om
-Name[ca]=Puja amb el Choqok
-Name[ca@valencia]=Puja amb el Choqok
-Name[cs]=Odeslat pomocí Choqok
-Name[da]=Upload med Choqok
-Name[de]=Mit Choqok hochladen
-Name[el]=Αποστολή με Choqok
-Name[en_GB]=Upload with Choqok
-Name[es]=Enviar con Choqok
-Name[et]=Üleslaadimine Choqokiga
-Name[fi]=Lähetä Choqokilla
-Name[fr]=Envoi avec Choqok
-Name[gl]=Envío co Choqok
-Name[hu]=Feltöltés Choqokkal
-Name[it]=Carica con Choqok
-Name[km]=ផ្ទុកឡើងជាមួយ Choqok
-Name[nb]=Last opp med Choqok
-Name[nds]=Mit Choqok hoochladen
-Name[nl]=Met Choqok uploaden
-Name[nn]=Last opp via Choqok
-Name[pa]=ਚੋਕਿਉਕ ਨਾਲ ਅੱਪਲੋਡ
-Name[pl]=Wyślij za pomocą Choqok
-Name[pt]=Enviar com o Choqok
-Name[pt_BR]=Enviar com o Choqok
-Name[ru]=Загрузить файл с помощью Choqok
-Name[sl]=Pošlji s Choqok-om
-Name[sv]=Ladda upp med Choqok
-Name[tr]=Choqok ile Yükle
-Name[uk]=Вивантажити за допомогою Choqok
-Name[x-test]=xxUpload with Choqokxx
-Name[zh_CN]=用 Choqok 上传
-Name[zh_TW]=用 Choqok 上傳
diff --git a/plugins/purpose/CMakeLists.txt b/plugins/purpose/CMakeLists.txt
new file mode 100644
--- /dev/null
+++ b/plugins/purpose/CMakeLists.txt
@@ -0,0 +1,9 @@
+set(purposeplugin_SRCS purposeplugin.cpp)
+
+qt5_add_dbus_interface(purposeplugin_SRCS org.kde.choqok.xml choqokinterface)
+
+add_library(purposeplugin MODULE ${purposeplugin_SRCS})
+
+target_link_libraries(purposeplugin Qt5::DBus KF5::Purpose)
+
+install(TARGETS purposeplugin DESTINATION ${PLUGIN_INSTALL_DIR}/kf5/purpose)
diff --git a/plugins/purpose/org.kde.choqok.xml b/plugins/purpose/org.kde.choqok.xml
new file mode 100644
--- /dev/null
+++ b/plugins/purpose/org.kde.choqok.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+"
diff --git a/plugins/purpose/purposeplugin.cpp b/plugins/purpose/purposeplugin.cpp
new file mode 100644
--- /dev/null
+++ b/plugins/purpose/purposeplugin.cpp
@@ -0,0 +1,79 @@
+/*
+ Copyright 2019 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 "choqokinterface.h"
+EXPORT_SHARE_VERSION
+
+class ChoqokJob : public Purpose::Job
+{
+ Q_OBJECT
+ public:
+ ChoqokJob(QObject* parent)
+ : Purpose::Job(parent)
+ {}
+
+ QStringList arrayToList(const QJsonArray& array)
+ {
+ QStringList ret;
+ for (const QJsonValue& val : array) {
+ ret += val.toString();
+ }
+ return ret;
+ }
+
+ void start() override
+ {
+ OrgKdeChoqokInterface iface(QStringLiteral("org.kde.choqok"), QStringLiteral("/"), QDBusConnection::sessionBus(), this);
+ const QStringList urls = arrayToList(data().value(QStringLiteral("urls")).toArray());
+
+ for (const QString url : urls) {
+ iface.uploadFile(url);
+ }
+
+ QTimer::singleShot(0, this, [this]() {
+ emitResult();
+ });
+ }
+};
+
+
+class Q_DECL_EXPORT PurposePlugin : public Purpose::PluginBase
+{
+
+ Q_OBJECT
+public:
+ PurposePlugin(QObject* p, const QVariantList& ) : Purpose::PluginBase(p) {}
+
+ Purpose::Job* createJob() const override
+ {
+ return new ChoqokJob(nullptr);
+ }
+
+};
+
+K_PLUGIN_CLASS_WITH_JSON(PurposePlugin, "purposeplugin.json")
+
+#include "purposeplugin.moc"
diff --git a/plugins/purpose/purposeplugin.json b/plugins/purpose/purposeplugin.json
new file mode 100644
--- /dev/null
+++ b/plugins/purpose/purposeplugin.json
@@ -0,0 +1,24 @@
+{
+ "KPlugin": {
+ "Authors": [
+ {
+ "Name": "Nicolas Fella"
+ }
+ ],
+ "Category": "Utilities",
+ "Description": "Upload with Choqok",
+ "Icon": "choqok",
+ "License": "GPL",
+ "Name": "Upload with Choqok",
+ "X-Purpose-ActionDisplay": "Upload with Choqok..."
+ },
+ "X-Purpose-Configuration": [],
+ "X-Purpose-Constraints": [
+ [
+ "mimeType:image/*"
+ ]
+ ],
+ "X-Purpose-PluginTypes": [
+ "Export"
+ ]
+}