You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/app-text/kjots/files/kjots-5.0.2-kontactinterfac...

149 lines
5.4 KiB

From bcf49fb95bee12bbc4bef0578285ad296deafcae Mon Sep 17 00:00:00 2001
From: David Faure <faure@kde.org>
Date: Fri, 24 Apr 2020 01:25:43 +0200
Subject: [PATCH] Install the kontact plugin into kontact5, with JSON metadata.
Summary: This will allow kontact to use KPluginLoader one day.
It also fixes compilation with current kontactinterface API.
Test Plan:
rm $prefix/lib64/plugins/kontact_zanshinplugin.so ; make install
kontact still finds the zanshin plugin
The same steps (other than old-kontact-interface compatibility) were already
pushed to all other kontact plugins.
This commit is very similar to https://phabricator.kde.org/D28847
and its predecessor commit, in zanshin.
---
src/kontact_plugin/CMakeLists.txt | 11 ++++++++-
src/kontact_plugin/kjots_plugin.cpp | 34 ++++++++++++++++++++------
src/kontact_plugin/kjots_plugin.h | 5 ++++
src/kontact_plugin/kjotsplugin.desktop | 2 +-
4 files changed, 43 insertions(+), 9 deletions(-)
diff --git a/src/kontact_plugin/CMakeLists.txt b/src/kontact_plugin/CMakeLists.txt
index 8a6b5e1..dec4b8b 100644
--- a/src/kontact_plugin/CMakeLists.txt
+++ b/src/kontact_plugin/CMakeLists.txt
@@ -1,13 +1,22 @@
include_directories(${kjots_SOURCE_DIR}/src)
+# TODO: remove once kontactinterface 5.14.42 is required
+if(NOT CMAKE_VERSION VERSION_LESS "3.10.0")
+ # CMake 3.9+ warns about automoc on files without Q_OBJECT, and doesn't know about other macros.
+ # 3.10+ lets us provide more macro names that require automoc.
+ # KF5 >= 5.42 takes care itself of adding its macros in its cmake config files
+ list(APPEND CMAKE_AUTOMOC_MACRO_NAMES "EXPORT_KONTACT_PLUGIN_WITH_JSON")
+endif()
+
set(kontact_kjots_PART_SRCS
kjots_plugin.cpp
)
add_library(kontact_kjotsplugin MODULE ${kontact_kjots_PART_SRCS})
target_link_libraries(kontact_kjotsplugin KF5::KontactInterface)
+kcoreaddons_desktop_to_json(kontact_kjotsplugin kjotsplugin.desktop)
-install(TARGETS kontact_kjotsplugin DESTINATION ${KDE_INSTALL_PLUGINDIR})
+install(TARGETS kontact_kjotsplugin DESTINATION ${KDE_INSTALL_PLUGINDIR}/kontact5)
install(FILES kjotsplugin.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}/kontact)
install(FILES kjots.setdlg DESTINATION ${KDE_INSTALL_DATADIR}/kontact/ksettingsdialog)
diff --git a/src/kontact_plugin/kjots_plugin.cpp b/src/kontact_plugin/kjots_plugin.cpp
index 66e7ed5..b74d601 100644
--- a/src/kontact_plugin/kjots_plugin.cpp
+++ b/src/kontact_plugin/kjots_plugin.cpp
@@ -33,7 +33,25 @@
#include <QIcon>
#include <QStandardPaths>
-EXPORT_KONTACT_PLUGIN(KJotsPlugin, kjots)
+#if KONTACTINTERFACE_VERSION < QT_VERSION_CHECK(5, 14, 42)
+/**
+ Exports Kontact plugin.
+ @param pluginclass the class to instanciate (must derive from KontactInterface::Plugin
+ @param jsonFile filename of the JSON file, generated from a .desktop file
+ */
+#define EXPORT_KONTACT_PLUGIN_WITH_JSON( pluginclass, jsonFile ) \
+ class Instance \
+ { \
+ public: \
+ static QObject *createInstance( QWidget *, QObject *parent, const QVariantList &list ) \
+ { return new pluginclass( static_cast<KontactInterface::Core*>( parent ), list ); } \
+ }; \
+ K_PLUGIN_FACTORY_WITH_JSON( KontactPluginFactory, jsonFile, registerPlugin< pluginclass > \
+ ( QString(), Instance::createInstance ); ) \
+ K_EXPORT_PLUGIN_VERSION(KONTACT_PLUGIN_VERSION)
+#endif
+
+EXPORT_KONTACT_PLUGIN_WITH_JSON(KJotsPlugin, "kjotsplugin.json")
KJotsPlugin::KJotsPlugin(KontactInterface::Core *core, const QVariantList &)
: KontactInterface::Plugin(core, core, "kjots")
@@ -63,15 +81,17 @@ QStringList KJotsPlugin::invisibleToolbarActions() const
return { QStringLiteral("new_page"), QStringLiteral("new_book") };
}
+#if KONTACTINTERFACE_VERSION >= QT_VERSION_CHECK(5, 14, 42)
+KParts::Part *KJotsPlugin::createPart()
+{
+ return loadPart();
+}
+#else
KParts::ReadOnlyPart *KJotsPlugin::createPart()
{
- KParts::ReadOnlyPart *part = loadPart();
- if (!part) {
- return Q_NULLPTR;
- }
-
- return part;
+ return loadPart();
}
+#endif
QStringList KJotsPlugin::configModules() const
{
diff --git a/src/kontact_plugin/kjots_plugin.h b/src/kontact_plugin/kjots_plugin.h
index cd62373..4945d25 100644
--- a/src/kontact_plugin/kjots_plugin.h
+++ b/src/kontact_plugin/kjots_plugin.h
@@ -24,6 +24,7 @@
#define KJOTS_PLUGIN_H
#include <KontactInterface/UniqueAppHandler>
+#include <kontactinterface_version.h>
namespace KontactInterface
{
@@ -62,7 +63,11 @@ public:
QStringList invisibleToolbarActions() const Q_DECL_OVERRIDE;
protected:
+#if KONTACTINTERFACE_VERSION >= QT_VERSION_CHECK(5, 14, 42)
+ KParts::Part *createPart() override;
+#else
KParts::ReadOnlyPart *createPart() Q_DECL_OVERRIDE;
+#endif
KontactInterface::UniqueAppWatcher *mUniqueAppWatcher;
private:
diff --git a/src/kontact_plugin/kjotsplugin.desktop b/src/kontact_plugin/kjotsplugin.desktop
index 1339753..d5a198f 100644
--- a/src/kontact_plugin/kjotsplugin.desktop
+++ b/src/kontact_plugin/kjotsplugin.desktop
@@ -3,7 +3,7 @@ Type=Service
Icon=kjots
X-KDE-ServiceTypes=Kontact/Plugin,KPluginInfo
-X-KDE-Library=kontact_kjotsplugin
+X-KDE-Library=kontact5/kontact_kjotsplugin
X-KDE-KontactPluginVersion=10
X-KDE-KontactPartLibraryName=kjotspart
X-KDE-KontactPartExecutableName=kjots
--
GitLab