From 76e3eab6ea3545339da2fd30b838acbc8c0ff607 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9ven=20Car?= Date: Sun, 7 May 2023 18:27:41 +0200 Subject: [PATCH] Port to Qt6 --- CMakeLists.txt | 26 ++++++++----------- src/CMakeLists.txt | 7 ++--- src/dolphinnavigatorswidgetaction.cpp | 4 +-- src/dolphinpart.cpp | 5 ++-- src/dolphintabbar.cpp | 6 ++--- src/kitemviews/kfileitemmodelrolesupdater.cpp | 2 +- src/panels/places/placespanel.cpp | 2 +- .../contextmenu/contextmenusettingspage.cpp | 2 +- src/settings/kcm/kcmdolphingeneral.cpp | 9 ++++--- src/settings/kcm/kcmdolphingeneral.h | 2 +- src/settings/kcm/kcmdolphinnavigation.cpp | 9 ++++--- src/settings/kcm/kcmdolphinnavigation.h | 2 +- src/settings/kcm/kcmdolphinviewmodes.cpp | 10 ++++--- src/settings/kcm/kcmdolphinviewmodes.h | 2 +- src/settings/trash/trashsettingspage.cpp | 16 +++++++----- src/settings/trash/trashsettingspage.h | 4 +-- 16 files changed, 56 insertions(+), 52 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0054a55401..d4ad4c69f5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,8 +7,8 @@ set (RELEASE_SERVICE_VERSION_MICRO "70") set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}") project(Dolphin VERSION ${RELEASE_SERVICE_VERSION}) -set(QT_MIN_VERSION "5.15.2") -set(KF6_MIN_VERSION "5.102.0") +set(QT_MIN_VERSION "6.4.0") +set(KF6_MIN_VERSION "5.240.0") # ECM setup find_package(ECM ${KF6_MIN_VERSION} CONFIG REQUIRED) @@ -32,14 +32,14 @@ ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHIN VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/src/dolphin_version.h" ) -ecm_setup_version("5.0.0" VARIABLE_PREFIX DOLPHINVCS +ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHINVCS VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/dolphinvcs_version.h" PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfigVersion.cmake" - SOVERSION 5 + SOVERSION ${QT_MAJOR_VERSION} ) -ecm_setup_version("5.0.0" VARIABLE_PREFIX DOLPHINPRIVATE - SOVERSION 5 +ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHINPRIVATE + SOVERSION ${QT_MAJOR_VERSION} ) find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS @@ -77,16 +77,17 @@ find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS WindowSystem WidgetsAddons Codecs + MoreTools ) -find_package(KF6MoreTools) -find_package(KUserFeedback 1.2.0) +find_package(KUserFeedbackQt6 1.2.0) set_package_properties(KUserFeedback PROPERTIES TYPE OPTIONAL PURPOSE "Used for submission of telemetry data" ) -if(KUserFeedback_FOUND) +if(KUserFeedbackQt6_FOUND) + message ("HAVE_KUSERFEEDBACK") set(HAVE_KUSERFEEDBACK TRUE) endif() @@ -119,7 +120,7 @@ set_package_properties(KF6Baloo PROPERTIES DESCRIPTION "Baloo Core libraries" PURPOSE "For adding desktop-wide search and tagging support to dolphin" ) -find_package(KF6BalooWidgets 19.07.70) +find_package(KF6BalooWidgets 23.07.70) set_package_properties(KF6BalooWidgets PROPERTIES DESCRIPTION "Baloos Widgets" URL "https://www.kde.org" TYPE OPTIONAL @@ -150,11 +151,6 @@ else() set(HAVE_TERMINAL TRUE) endif() -ecm_set_disabled_deprecation_versions( - QT 5.15 - KF 5.90 -) - add_subdirectory(src) add_subdirectory(doc) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index af942a4d6e..fedf96688f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -208,6 +208,7 @@ target_link_libraries( KF6::WindowSystem KF6::WidgetsAddons KF6::Codecs + KF6::KCMUtils KF6::MoreTools ) @@ -443,8 +444,8 @@ endif() if (HAVE_KUSERFEEDBACK) target_link_libraries( dolphinstatic - KUserFeedbackCore - KUserFeedbackWidgets + KUserFeedbackCoreQt6 + KUserFeedbackWidgetsQt6 ) endif() @@ -473,7 +474,7 @@ target_link_libraries(dolphin if (HAVE_X11) if (QT_MAJOR_VERSION STREQUAL "5") - target_link_libraries(dolphin PRIVATE Qt5::X11Extras) + target_link_libraries(dolphin PRIVATE Qt{QT_MAJOR_VERSION}::X11Extras) else() target_link_libraries(dolphin PRIVATE Qt::GuiPrivate) endif() diff --git a/src/dolphinnavigatorswidgetaction.cpp b/src/dolphinnavigatorswidgetaction.cpp index 47a2a23034..cb2e4bc002 100644 --- a/src/dolphinnavigatorswidgetaction.cpp +++ b/src/dolphinnavigatorswidgetaction.cpp @@ -42,7 +42,7 @@ DolphinNavigatorsWidgetAction::DolphinNavigatorsWidgetAction(QWidget *parent) void DolphinNavigatorsWidgetAction::adjustSpacing() { - m_previousWindowWidth = parentWidget()->window()->width(); + m_previousWindowWidth = qobject_cast(parent())->window()->width(); auto viewGeometries = m_viewGeometriesHelper.viewGeometries(); const int widthOfSplitterPrimary = viewGeometries.globalXOfPrimary + viewGeometries.widthOfPrimary - viewGeometries.globalXOfNavigatorsWidget; const QList splitterSizes = {widthOfSplitterPrimary, m_splitter->width() - widthOfSplitterPrimary}; @@ -298,7 +298,7 @@ DolphinNavigatorsWidgetAction::ViewGeometriesHelper::ViewGeometriesHelper(QWidge bool DolphinNavigatorsWidgetAction::ViewGeometriesHelper::eventFilter(QObject *watched, QEvent *event) { if (event->type() == QEvent::Resize) { - if (m_navigatorsWidgetAction->parentWidget()->window()->width() != m_navigatorsWidgetAction->m_previousWindowWidth) { + if (qobject_cast(m_navigatorsWidgetAction->parent())->window()->width() != m_navigatorsWidgetAction->m_previousWindowWidth) { // The window is being resized which means not all widgets have gotten their new sizes yet. // Let's wait a bit so the sizes of the navigatorsWidget and the viewContainers have all // had a chance to be updated. diff --git a/src/dolphinpart.cpp b/src/dolphinpart.cpp index cb5d31c1fd..0af0fd6b34 100644 --- a/src/dolphinpart.cpp +++ b/src/dolphinpart.cpp @@ -46,15 +46,16 @@ #include #include +#include + K_PLUGIN_CLASS_WITH_JSON(DolphinPart, "dolphinpart.json") DolphinPart::DolphinPart(QWidget *parentWidget, QObject *parent, const KPluginMetaData &metaData, const QVariantList &args) - : KParts::ReadOnlyPart(parent) + : KParts::ReadOnlyPart(parent, metaData) , m_openTerminalAction(nullptr) , m_removeAction(nullptr) { Q_UNUSED(args) - setMetaData(metaData); m_extension = new DolphinPartBrowserExtension(this); diff --git a/src/dolphintabbar.cpp b/src/dolphintabbar.cpp index 82695ac21a..aa74e17ae6 100644 --- a/src/dolphintabbar.cpp +++ b/src/dolphintabbar.cpp @@ -32,7 +32,7 @@ DolphinTabBar::DolphinTabBar(QWidget *parent) void DolphinTabBar::dragEnterEvent(QDragEnterEvent *event) { const QMimeData *mimeData = event->mimeData(); - const int index = tabAt(event->pos()); + const int index = tabAt(event->position().toPoint()); if (mimeData->hasUrls()) { event->acceptProposedAction(); @@ -52,7 +52,7 @@ void DolphinTabBar::dragLeaveEvent(QDragLeaveEvent *event) void DolphinTabBar::dragMoveEvent(QDragMoveEvent *event) { const QMimeData *mimeData = event->mimeData(); - const int index = tabAt(event->pos()); + const int index = tabAt(event->position().toPoint()); if (mimeData->hasUrls()) { updateAutoActivationTimer(index); @@ -67,7 +67,7 @@ void DolphinTabBar::dropEvent(QDropEvent *event) updateAutoActivationTimer(-1); const QMimeData *mimeData = event->mimeData(); - const int index = tabAt(event->pos()); + const int index = tabAt(event->position().toPoint()); if (mimeData->hasUrls()) { Q_EMIT tabDropEvent(index, event); diff --git a/src/kitemviews/kfileitemmodelrolesupdater.cpp b/src/kitemviews/kfileitemmodelrolesupdater.cpp index 1a849dcd5e..4ff7306524 100644 --- a/src/kitemviews/kfileitemmodelrolesupdater.cpp +++ b/src/kitemviews/kfileitemmodelrolesupdater.cpp @@ -118,7 +118,7 @@ KFileItemModelRolesUpdater::KFileItemModelRolesUpdater(KFileItemModel *model, QO m_directoryContentsCounter = new KDirectoryContentsCounter(m_model, this); connect(m_directoryContentsCounter, &KDirectoryContentsCounter::result, this, &KFileItemModelRolesUpdater::slotDirectoryContentsCountReceived); - const QString pluginNamespace = QStringLiteral("kf" QT_STRINGIFY(QT_VERSION_MAJOR)) + QStringLiteral("/overlayicon"); + const QString pluginNamespace = QStringLiteral("kf" QT_STRINGIFY(QT_MAJOR_VERSION)) + QStringLiteral("/overlayicon"); const auto plugins = KPluginMetaData::findPlugins(pluginNamespace, {}, KPluginMetaData::AllowEmptyMetaData); for (const KPluginMetaData &data : plugins) { auto instance = QPluginLoader(data.fileName()).instance(); diff --git a/src/panels/places/placespanel.cpp b/src/panels/places/placespanel.cpp index 6467f9c230..2155f29bdc 100644 --- a/src/panels/places/placespanel.cpp +++ b/src/panels/places/placespanel.cpp @@ -142,7 +142,7 @@ static bool isInternalDrag(const QMimeData *mimeData) void PlacesPanel::dragMoveEvent(QDragMoveEvent *event) { - const QModelIndex index = indexAt(event->pos()); + const QModelIndex index = indexAt(event->position().toPoint()); if (index.isValid()) { auto *placesModel = static_cast(model()); diff --git a/src/settings/contextmenu/contextmenusettingspage.cpp b/src/settings/contextmenu/contextmenusettingspage.cpp index daf15bc1b3..ebdda1c1c1 100644 --- a/src/settings/contextmenu/contextmenusettingspage.cpp +++ b/src/settings/contextmenu/contextmenusettingspage.cpp @@ -300,7 +300,7 @@ void ContextMenuSettingsPage::loadServices() } // Load JSON-based plugins that implement the KFileItemActionPlugin interface - const auto jsonPlugins = KPluginMetaData::findPlugins(QStringLiteral("kf" QT_STRINGIFY(QT_VERSION_MAJOR)) + QStringLiteral("/kfileitemaction")); + const auto jsonPlugins = KPluginMetaData::findPlugins(QStringLiteral("kf" QT_STRINGIFY(QT_MAJOR_VERSION)) + QStringLiteral("/kfileitemaction")); for (const auto &jsonMetadata : jsonPlugins) { const QString desktopEntryName = jsonMetadata.pluginId(); diff --git a/src/settings/kcm/kcmdolphingeneral.cpp b/src/settings/kcm/kcmdolphingeneral.cpp index 25e3b6876d..417979d234 100644 --- a/src/settings/kcm/kcmdolphingeneral.cpp +++ b/src/settings/kcm/kcmdolphingeneral.cpp @@ -19,16 +19,17 @@ K_PLUGIN_CLASS_WITH_JSON(DolphinGeneralConfigModule, "kcmdolphingeneral.json") -DolphinGeneralConfigModule::DolphinGeneralConfigModule(QWidget *parent, const QVariantList &args) - : KCModule(parent, args) +DolphinGeneralConfigModule::DolphinGeneralConfigModule(QObject *parent, const KPluginMetaData &data) + : KCModule(qobject_cast(parent), data) , m_pages() { setButtons(KCModule::Default | KCModule::Help | KCModule::Apply); - QVBoxLayout *topLayout = new QVBoxLayout(this); + const auto parentWidget = qobject_cast(parent); + QVBoxLayout *topLayout = new QVBoxLayout(parentWidget); topLayout->setContentsMargins(0, 0, 0, 0); - QTabWidget *tabWidget = new QTabWidget(this); + QTabWidget *tabWidget = new QTabWidget(parentWidget); // initialize 'Behavior' tab BehaviorSettingsPage *behaviorPage = new BehaviorSettingsPage(QUrl::fromLocalFile(QDir::homePath()), tabWidget); diff --git a/src/settings/kcm/kcmdolphingeneral.h b/src/settings/kcm/kcmdolphingeneral.h index 8893177387..828332539e 100644 --- a/src/settings/kcm/kcmdolphingeneral.h +++ b/src/settings/kcm/kcmdolphingeneral.h @@ -21,7 +21,7 @@ class DolphinGeneralConfigModule : public KCModule Q_OBJECT public: - DolphinGeneralConfigModule(QWidget *parent, const QVariantList &args); + DolphinGeneralConfigModule(QObject *parent, const KPluginMetaData &data); ~DolphinGeneralConfigModule() override; void save() override; diff --git a/src/settings/kcm/kcmdolphinnavigation.cpp b/src/settings/kcm/kcmdolphinnavigation.cpp index 63591f4fd2..b18f00c5b1 100644 --- a/src/settings/kcm/kcmdolphinnavigation.cpp +++ b/src/settings/kcm/kcmdolphinnavigation.cpp @@ -15,16 +15,17 @@ K_PLUGIN_CLASS_WITH_JSON(DolphinNavigationConfigModule, "kcmdolphinnavigation.json") -DolphinNavigationConfigModule::DolphinNavigationConfigModule(QWidget *parent, const QVariantList &args) - : KCModule(parent, args) +DolphinNavigationConfigModule::DolphinNavigationConfigModule(QObject *parent) + : KCModule(qobject_cast(parent)) , m_navigation(nullptr) { setButtons(KCModule::Default | KCModule::Help | KCModule::Apply); - QVBoxLayout *topLayout = new QVBoxLayout(this); + const auto parentWidget = qobject_cast(parent); + QVBoxLayout *topLayout = new QVBoxLayout(parentWidget); topLayout->setContentsMargins(0, 0, 0, 0); - m_navigation = new NavigationSettingsPage(this); + m_navigation = new NavigationSettingsPage(parentWidget); connect(m_navigation, &NavigationSettingsPage::changed, this, &DolphinNavigationConfigModule::markAsChanged); topLayout->addWidget(m_navigation, 0, {}); } diff --git a/src/settings/kcm/kcmdolphinnavigation.h b/src/settings/kcm/kcmdolphinnavigation.h index 97d7bff85a..a254051559 100644 --- a/src/settings/kcm/kcmdolphinnavigation.h +++ b/src/settings/kcm/kcmdolphinnavigation.h @@ -19,7 +19,7 @@ class DolphinNavigationConfigModule : public KCModule Q_OBJECT public: - DolphinNavigationConfigModule(QWidget *parent, const QVariantList &args); + DolphinNavigationConfigModule(QObject *parent); ~DolphinNavigationConfigModule() override; void save() override; diff --git a/src/settings/kcm/kcmdolphinviewmodes.cpp b/src/settings/kcm/kcmdolphinviewmodes.cpp index 50ee136189..0f0068108f 100644 --- a/src/settings/kcm/kcmdolphinviewmodes.cpp +++ b/src/settings/kcm/kcmdolphinviewmodes.cpp @@ -10,6 +10,7 @@ #include #include +#include #include #include @@ -19,16 +20,17 @@ K_PLUGIN_CLASS_WITH_JSON(DolphinViewModesConfigModule, "kcmdolphinviewmodes.json") -DolphinViewModesConfigModule::DolphinViewModesConfigModule(QWidget *parent, const QVariantList &args) - : KCModule(parent, args) +DolphinViewModesConfigModule::DolphinViewModesConfigModule(QObject *parent, const KPluginMetaData &data) + : KCModule(qobject_cast(parent), data) , m_tabs() { setButtons(KCModule::Default | KCModule::Help | KCModule::Apply); - QVBoxLayout *topLayout = new QVBoxLayout(this); + const auto parentWidget = qobject_cast(parent); + QVBoxLayout *topLayout = new QVBoxLayout(parentWidget); topLayout->setContentsMargins(0, 0, 0, 0); - QTabWidget *tabWidget = new QTabWidget(this); + QTabWidget *tabWidget = new QTabWidget(parentWidget); // Initialize 'Icons' tab ViewSettingsTab *iconsTab = new ViewSettingsTab(ViewSettingsTab::IconsMode, tabWidget); diff --git a/src/settings/kcm/kcmdolphinviewmodes.h b/src/settings/kcm/kcmdolphinviewmodes.h index 33c0b77a52..59cbca3141 100644 --- a/src/settings/kcm/kcmdolphinviewmodes.h +++ b/src/settings/kcm/kcmdolphinviewmodes.h @@ -19,7 +19,7 @@ class DolphinViewModesConfigModule : public KCModule Q_OBJECT public: - DolphinViewModesConfigModule(QWidget *parent, const QVariantList &args); + DolphinViewModesConfigModule(QObject *parent, const KPluginMetaData &data); ~DolphinViewModesConfigModule() override; void save() override; diff --git a/src/settings/trash/trashsettingspage.cpp b/src/settings/trash/trashsettingspage.cpp index 511d6b3535..d21b4833e8 100644 --- a/src/settings/trash/trashsettingspage.cpp +++ b/src/settings/trash/trashsettingspage.cpp @@ -6,7 +6,8 @@ #include "trashsettingspage.h" -#include +#include +#include #include #include @@ -16,12 +17,13 @@ TrashSettingsPage::TrashSettingsPage(QWidget *parent) { QFormLayout *topLayout = new QFormLayout(this); - m_proxy = new KCModuleProxy(KPluginMetaData(QStringLiteral("kcm_trash"))); - topLayout->addRow(m_proxy); + m_kcm = KCModuleLoader::loadModule(KPluginMetaData(QStringLiteral("kcm_trash"))); + + topLayout->addRow(m_kcm->widget()); loadSettings(); - connect(m_proxy, &KCModuleProxy::changed, this, &TrashSettingsPage::changed); + connect(m_kcm, &KCModule::needsSaveChanged, this, &TrashSettingsPage::changed); } TrashSettingsPage::~TrashSettingsPage() @@ -30,15 +32,15 @@ TrashSettingsPage::~TrashSettingsPage() void TrashSettingsPage::applySettings() { - m_proxy->save(); + m_kcm->save(); } void TrashSettingsPage::restoreDefaults() { - m_proxy->defaults(); + m_kcm->defaults(); } void TrashSettingsPage::loadSettings() { - m_proxy->load(); + m_kcm->load(); } diff --git a/src/settings/trash/trashsettingspage.h b/src/settings/trash/trashsettingspage.h index b0e48a018d..a5253774cf 100644 --- a/src/settings/trash/trashsettingspage.h +++ b/src/settings/trash/trashsettingspage.h @@ -8,7 +8,7 @@ #include "settings/settingspagebase.h" -class KCModuleProxy; +class KCModule; /** * @brief Tab page for the 'Trash' settings of the Dolphin settings dialog, it uses the KCM. @@ -29,7 +29,7 @@ public: private: void loadSettings(); - KCModuleProxy *m_proxy; + KCModule *m_kcm; }; #endif