From eef47e7ef1c9a55aff43e75616ef6a3c19d441df Mon Sep 17 00:00:00 2001 From: Martchus Date: Tue, 7 Feb 2023 20:57:21 +0100 Subject: [PATCH] Allow building KIO/Dolphin against Qt/KF 6 * Avoid using function that is deprecated in Qt 6 * Remove unused include not available in KF6 * Don't hardcode CMake-package-prefix of KF modules --- fileitemactionplugin/CMakeLists.txt | 14 +++++++++++++- fileitemactionplugin/syncthingfileitemaction.cpp | 3 +-- fileitemactionplugin/syncthingmenuaction.cpp | 7 ++++--- fileitemactionplugin/syncthingmenuaction.h | 5 ++++- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/fileitemactionplugin/CMakeLists.txt b/fileitemactionplugin/CMakeLists.txt index f8222b5..179d092 100644 --- a/fileitemactionplugin/CMakeLists.txt +++ b/fileitemactionplugin/CMakeLists.txt @@ -31,7 +31,19 @@ use_syncthingmodel() # link also explicitly against the following Qt and KF modules list(APPEND ADDITIONAL_QT_MODULES Network) list(APPEND ADDITIONAL_KF_MODULES KIO) -set(KIO_MODULE_TARGETS KF5::KIOCore KF5::KIOFileWidgets KF5::KIOWidgets KF5::KIONTLM) +set(KF_PACKAGE_PREFIX + "KF5" + CACHE STRING "specifies the prefix for KDE Frameworks packages") +set(KIO_MODULE_TARGETS "${KF_PACKAGE_PREFIX}::KIOCore" "${KF_PACKAGE_PREFIX}::KIOFileWidgets" + "${KF_PACKAGE_PREFIX}::KIOWidgets") +if (KF_PACKAGE_PREFIX MATCHES ".*KF([0-9]+).*") + set(KF_VERSION ${CMAKE_MATCH_1}) + if (KF_VERSION GREATER_EQUAL 6) + list(APPEND KIO_MODULE_TARGETS) + else () + list(APPEND KIO_MODULE_TARGETS "${KF_PACKAGE_PREFIX}::KIONTLM") + endif () +endif () # include modules to apply configuration include(BasicConfig) diff --git a/fileitemactionplugin/syncthingfileitemaction.cpp b/fileitemactionplugin/syncthingfileitemaction.cpp index 52d6beb..be79f2d 100644 --- a/fileitemactionplugin/syncthingfileitemaction.cpp +++ b/fileitemactionplugin/syncthingfileitemaction.cpp @@ -9,7 +9,6 @@ #include #include -#include #include #include @@ -70,7 +69,7 @@ QList SyncthingFileItemAction::actions(const KFileItemListProperties parentWidget->installEventFilter(this); } - topLevelActions << new SyncthingMenuAction(fileItemInfo, subActions, this); + topLevelActions << new SyncthingMenuAction(fileItemInfo, subActions, parentWidget); return topLevelActions; } diff --git a/fileitemactionplugin/syncthingmenuaction.cpp b/fileitemactionplugin/syncthingmenuaction.cpp index cda3ced..49c6607 100644 --- a/fileitemactionplugin/syncthingmenuaction.cpp +++ b/fileitemactionplugin/syncthingmenuaction.cpp @@ -19,10 +19,11 @@ using namespace CppUtilities; using namespace Data; -SyncthingMenuAction::SyncthingMenuAction(const KFileItemListProperties &properties, const QList &actions, QObject *parent) - : QAction(parent) +SyncthingMenuAction::SyncthingMenuAction(const KFileItemListProperties &properties, const QList &actions, QWidget *parentWidget) + : QAction(parentWidget) , m_properties(properties) , m_notifier(SyncthingFileItemAction::staticData().connection()) + , m_parentWidget(parentWidget) { #ifdef CPP_UTILITIES_DEBUG_BUILD std::cerr << EscapeCodes::Phrases::Info << "Creating SyncthingMenuAction: " << this << EscapeCodes::Phrases::EndFlush; @@ -88,7 +89,7 @@ void SyncthingMenuAction::createMenu(const QList &actions) if (actions.isEmpty()) { return; } - auto *const menu = new QMenu(parentWidget()); + auto *const menu = new QMenu(m_parentWidget); menu->addActions(actions); setMenu(menu); } diff --git a/fileitemactionplugin/syncthingmenuaction.h b/fileitemactionplugin/syncthingmenuaction.h index 4c8a88f..3fb8582 100644 --- a/fileitemactionplugin/syncthingmenuaction.h +++ b/fileitemactionplugin/syncthingmenuaction.h @@ -7,6 +7,8 @@ #include +QT_FORWARD_DECLARE_CLASS(QWidget) + namespace Data { enum class SyncthingStatus; } @@ -19,7 +21,7 @@ class SyncthingMenuAction : public QAction { public: explicit SyncthingMenuAction(const KFileItemListProperties &properties = KFileItemListProperties(), - const QList &actions = QList(), QObject *parent = nullptr); + const QList &actions = QList(), QWidget *parentWidget = nullptr); #ifdef CPP_UTILITIES_DEBUG_BUILD ~SyncthingMenuAction() override; #endif @@ -33,6 +35,7 @@ private: KFileItemListProperties m_properties; Data::SyncthingNotifier m_notifier; + QWidget *m_parentWidget; }; #endif // SYNCTHINGMENUACTION_H