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.
149 lines
5.4 KiB
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
|
|
|