]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Merge branch 'master' into kf6
authorNicolas Fella <nicolas.fella@gmx.de>
Tue, 24 Oct 2023 21:12:22 +0000 (23:12 +0200)
committerNicolas Fella <nicolas.fella@gmx.de>
Tue, 24 Oct 2023 21:14:25 +0000 (23:14 +0200)
82 files changed:
.git-blame-ignore-revs
.gitlab-ci.yml
.kde-ci.yml
CMakeLists.txt
DolphinVcsConfig.cmake.in
doc/CMakeLists.txt
src/CMakeLists.txt
src/dolphinbookmarkhandler.cpp
src/dolphinbookmarkhandler.h
src/dolphincontextmenu.cpp
src/dolphinmainwindow.cpp
src/dolphinnavigatorswidgetaction.cpp
src/dolphinnewfilemenu.cpp
src/dolphinnewfilemenu.h
src/dolphinpart.cpp
src/dolphinpart_ext.cpp
src/dolphinpart_ext.h
src/dolphintabbar.cpp
src/dolphintabwidget.cpp
src/dolphinviewcontainer.cpp
src/global.cpp
src/kitemviews/kfileitemmodel.cpp
src/kitemviews/kfileitemmodelrolesupdater.cpp
src/kitemviews/kitemlistview.cpp
src/kitemviews/kitemlistviewaccessible.cpp
src/kitemviews/kitemset.cpp
src/kitemviews/kitemset.h
src/kitemviews/kstandarditemlistwidget.cpp
src/kitemviews/kstandarditemlistwidget.h
src/kitemviews/private/kbaloorolesprovider.cpp
src/kitemviews/private/kdirectorycontentscounter.cpp
src/kitemviews/private/kitemlistheaderwidget.cpp
src/panels/folders/treeviewcontextmenu.cpp
src/panels/information/informationpanel.cpp
src/panels/information/informationpanelcontent.cpp
src/panels/information/phononwidget.cpp
src/panels/information/phononwidget.h
src/panels/places/placespanel.cpp
src/panels/terminal/terminalpanel.cpp
src/search/dolphinfacetswidget.cpp
src/settings/contextmenu/contextmenusettingspage.cpp
src/settings/contextmenu/servicemenuinstaller/CMakeLists.txt
src/settings/contextmenu/servicemenuinstaller/servicemenuinstaller.cpp
src/settings/dolphinsettingsdialog.cpp
src/settings/interface/configurepreviewplugindialog.cpp [deleted file]
src/settings/interface/configurepreviewplugindialog.h [deleted file]
src/settings/interface/folderstabssettingspage.cpp
src/settings/interface/interfacesettingspage.cpp
src/settings/interface/previewssettingspage.cpp
src/settings/interface/previewssettingspage.h
src/settings/kcm/kcmdolphingeneral.cpp
src/settings/kcm/kcmdolphingeneral.h
src/settings/kcm/kcmdolphinnavigation.cpp [new file with mode: 0644]
src/settings/kcm/kcmdolphinnavigation.h [new file with mode: 0644]
src/settings/kcm/kcmdolphinviewmodes.cpp
src/settings/kcm/kcmdolphinviewmodes.h
src/settings/serviceitemdelegate.cpp [deleted file]
src/settings/serviceitemdelegate.h [deleted file]
src/settings/servicemodel.cpp
src/settings/servicemodel.h
src/settings/trash/trashsettingspage.cpp
src/settings/trash/trashsettingspage.h
src/settings/userfeedback/userfeedbacksettingspage.cpp
src/settings/viewmodes/viewsettingspage.cpp
src/statusbar/mountpointobserver.cpp
src/statusbar/mountpointobserver.h
src/tests/CMakeLists.txt
src/tests/kfileitemmodelbenchmark.cpp
src/tests/kfileitemmodeltest.cpp
src/tests/kitemlistcontrollertest.cpp
src/tests/kitemsettest.cpp
src/trash/dolphintrash.cpp
src/userfeedback/dolphinfeedbackprovider.cpp
src/userfeedback/dolphinfeedbackprovider.h
src/userfeedback/placesdatasource.cpp
src/userfeedback/placesdatasource.h
src/userfeedback/settingsdatasource.cpp
src/userfeedback/settingsdatasource.h
src/views/dolphinremoteencoding.cpp
src/views/dolphinview.cpp
src/views/dolphinviewactionhandler.cpp
src/views/versioncontrol/versioncontrolobserver.cpp

index b8bdaf61af8c343a26ff87afb032c0534932e71a..f7df1a33b87c4b8f0f2ab5c2fd3e90c117bee9f6 100644 (file)
@@ -1,2 +1 @@
-#clang-format
-38c34eeca315c7be58e65d4d3fb72aaf7b866719
+b58a346be96f7d0973ed96e52c4cf95463ba244d
index 8c7d812eff95caa9f6efca52e24695d7b4e04bf1..6c54587fa359fce765e1a556e11bff9a180be1fa 100644 (file)
@@ -1,5 +1,4 @@
 include:
-  - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/linux.yml
-  - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/freebsd.yml
-  - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/windows.yml
-  - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/flatpak.yml
+  - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/linux-qt6.yml
+  - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/freebsd-qt6.yml
+  - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/windows-qt6.yml
index a3ecb80993ff06102004078d5851a522a55236f6..2cbc8de11f4c3b42ccce2d3db5df7ed3d076be48 100644 (file)
@@ -2,36 +2,40 @@
 # SPDX-License-Identifier: CC0-1.0
 
 Dependencies:
-- 'on': ['@all']
+- 'on': ['Linux/Qt6', 'FreeBSD/Qt6', 'Windows/Qt6', 'macOS/Qt6']
   'require':
-    'frameworks/extra-cmake-modules': '@stable'
-    'frameworks/kcoreaddons': '@stable'
-    'frameworks/kcmutils': '@stable'
-    'frameworks/knewstuff': '@stable'
-    'frameworks/ki18n': '@stable'
-    'frameworks/kdbusaddons': '@stable'
-    'frameworks/kbookmarks': '@stable'
-    'frameworks/kconfig': '@stable'
-    'frameworks/kio': '@stable'
-    'frameworks/kparts': '@stable'
-    'frameworks/solid': '@stable'
-    'frameworks/kiconthemes': '@stable'
-    'frameworks/kcompletion': '@stable'
-    'frameworks/ktextwidgets': '@stable'
-    'frameworks/knotifications': '@stable'
-    'frameworks/kcrash': '@stable'
-    'frameworks/kwindowsystem': '@stable'
-    'frameworks/kactivities': '@stable'
-    'frameworks/kdoctools': '@stable'
-    'frameworks/kwindowsystem': '@stable'
-    'frameworks/kfilemetadata': '@stable'
-    'frameworks/kcodecs': '@stable'
-    'libraries/kuserfeedback': '@stable'
-    'libraries/phonon': '@stable'
+    'frameworks/extra-cmake-modules': '@latest-kf6'
+    'frameworks/kcoreaddons': '@latest-kf6'
+    'frameworks/kcmutils': '@latest-kf6'
+    'frameworks/knewstuff': '@latest-kf6'
+    'frameworks/ki18n': '@latest-kf6'
+    'frameworks/kdbusaddons': '@latest-kf6'
+    'frameworks/kbookmarks': '@latest-kf6'
+    'frameworks/kconfig': '@latest-kf6'
+    'frameworks/kio': '@latest-kf6'
+    'frameworks/kparts': '@latest-kf6'
+    'frameworks/solid': '@latest-kf6'
+    'frameworks/kiconthemes': '@latest-kf6'
+    'frameworks/kcompletion': '@latest-kf6'
+    'frameworks/ktextwidgets': '@latest-kf6'
+    'frameworks/knotifications': '@latest-kf6'
+    'frameworks/kcrash': '@latest-kf6'
+    'frameworks/kwindowsystem': '@latest-kf6'
+    'frameworks/kactivities': '@latest-kf6'
+    'frameworks/kdoctools': '@latest-kf6'
+    'frameworks/kwindowsystem': '@latest-kf6'
+    'frameworks/kfilemetadata': '@latest-kf6'
+    'frameworks/kcodecs': '@latest-kf6'
+    'libraries/kuserfeedback': '@latest-kf6'
+    'libraries/phonon': '@latest-kf6'
+    'libraries/kmoretools': '@latest-kf6'
 
-- 'on': ['Linux', 'FreeBSD']
+- 'on': ['Linux/Qt6', 'FreeBSD/Qt6']
   'require':
-    'frameworks/baloo': '@stable'
-    'libraries/baloo-widgets': '@same'
+    'frameworks/baloo': '@latest-kf6'
+    'libraries/baloo-widgets': '@latest-kf6'
     'third-party/packagekit-qt': '@latest'
 
+- 'on': ['Linux/Qt6', 'Windows/Qt6', 'macOS/Qt6']
+  'require':
+    'network/kio-extras': '@latest-kf6'
index 57dc3ae11eef5527d925500e24e1fcf932ac9df8..0a655babb3769527aff2b662869fb3f38d1b1bf0 100644 (file)
@@ -7,11 +7,11 @@ 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(KF5_MIN_VERSION "5.101.0")
+set(QT_MIN_VERSION "6.4.0")
+set(KF6_MIN_VERSION "5.240.0")
 
 # ECM setup
-find_package(ECM ${KF5_MIN_VERSION} CONFIG REQUIRED)
+find_package(ECM ${KF6_MIN_VERSION} CONFIG REQUIRED)
 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
 
 include(KDEInstallDirs)
@@ -27,19 +27,21 @@ include(GenerateExportHeader)
 include(FeatureSummary)
 include(ECMQtDeclareLoggingCategory)
 include(ECMDeprecationSettings)
+include(CheckIncludeFiles)
+include(CheckLibraryExists)
 
 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
@@ -58,7 +60,7 @@ if (UNIX AND NOT APPLE)
     endif()
 endif()
 
-find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
+find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS
     KCMUtils
     NewStuff
     CoreAddons
@@ -77,23 +79,24 @@ find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
     WindowSystem
     WidgetsAddons
     Codecs
+    MoreTools
 )
 
-find_package(KUserFeedback 1.2.0)
-set_package_properties(KUserFeedback
+find_package(KUserFeedbackQt6 1.2.1)
+set_package_properties(KUserFeedbackQt6
         PROPERTIES TYPE OPTIONAL
         PURPOSE "Used for submission of telemetry data"
         )
 
-if(KUserFeedback_FOUND)
+if(KUserFeedbackQt6_FOUND)
     set(HAVE_KUSERFEEDBACK TRUE)
 endif()
 
-find_package(KF5 ${KF5_MIN_VERSION} OPTIONAL_COMPONENTS
+find_package(KF6 ${KF6_MIN_VERSION} OPTIONAL_COMPONENTS
     Activities
     DocTools
 )
-set_package_properties(KF5Activities PROPERTIES DESCRIPTION "KActivities libraries"
+set_package_properties(KF6Activities PROPERTIES DESCRIPTION "KActivities libraries"
                        URL "https://www.kde.org"
                        TYPE OPTIONAL
                        PURPOSE "For tracking which folders are frequently accessed on a Plasma desktop"
@@ -111,31 +114,31 @@ if(PackageKitQt${QT_MAJOR_VERSION}_FOUND)
     set(HAVE_PACKAGEKIT TRUE)
 endif()
 
-find_package(KF5Baloo ${KF5_MIN_VERSION})
-set_package_properties(KF5Baloo PROPERTIES DESCRIPTION "Baloo Core libraries"
+find_package(KF6Baloo ${KF6_MIN_VERSION})
+set_package_properties(KF6Baloo PROPERTIES DESCRIPTION "Baloo Core libraries"
                        URL "https://www.kde.org"
                        TYPE OPTIONAL
                        PURPOSE "For adding desktop-wide search and tagging support to dolphin"
                       )
 
-find_package(KF5BalooWidgets 19.07.70)
-set_package_properties(KF5BalooWidgets PROPERTIES DESCRIPTION "Baloos Widgets"
+find_package(KF6BalooWidgets ${RELEASE_SERVICE_VERSION})
+set_package_properties(KF6BalooWidgets PROPERTIES DESCRIPTION "Baloos Widgets"
                        URL "https://www.kde.org"
                        TYPE OPTIONAL
                       )
 
-find_package(KF5FileMetaData ${KF5_MIN_VERSION})
-set_package_properties(KF5FileMetaData PROPERTIES
+find_package(KF6FileMetaData ${KF6_MIN_VERSION})
+set_package_properties(KF6FileMetaData PROPERTIES
                        URL "https://projects.kde.org/kfilemetadata"
                        TYPE OPTIONAL
                        PURPOSE "For accessing file metadata labels"
                       )
 
-if (KF5Activities_FOUND)
+if (KF6Activities_FOUND)
     set(HAVE_KACTIVITIES TRUE)
 endif()
 
-if (KF5Baloo_FOUND AND KF5BalooWidgets_FOUND AND KF5FileMetaData_FOUND)
+if (KF6Baloo_FOUND AND KF6BalooWidgets_FOUND AND KF6FileMetaData_FOUND)
     message(STATUS "Baloo packages are found")
     set(HAVE_BALOO TRUE)
 else()
@@ -149,11 +152,20 @@ else()
     set(HAVE_TERMINAL TRUE)
 endif()
 
-ecm_set_disabled_deprecation_versions(
-    QT 5.15
-    KF 5.90
-    KSERVICE 5.89 # We use KServiceTypeTrader in a compat code path
-)
+# Compatibility with platforms without native fts (e.g. musl)
+check_include_files("sys/types.h;sys/stat.h;fts.h" HAVE_FTS_H)
+if(HAVE_FTS_H)
+    check_function_exists(fts_open HAVE_FTS_OPEN)
+    if(NOT HAVE_FTS_OPEN)
+        check_library_exists(fts fts_open "" HAVE_LIB_FTS)
+    endif()
+endif()
+
+if(HAVE_LIB_FTS)
+    set(FTS_LIB fts)
+else()
+    set(FTS_LIB "")
+endif()
 
 add_subdirectory(src)
 add_subdirectory(doc)
@@ -211,7 +223,7 @@ ecm_qt_install_logging_categories(
         )
 
 ki18n_install(po)
-if(KF5DocTools_FOUND)
+if(KF6DocTools_FOUND)
     kdoctools_install(po)
 endif()
 
index b6e3d42f60954025b58d83c214622b98bff1ffbe..c73d093ed4a4e58be97e25015382ebe2bf9ed779 100644 (file)
@@ -3,6 +3,6 @@
 include(CMakeFindDependencyMacro)
 
 find_dependency(Qt@QT_MAJOR_VERSION@Widgets)
-find_dependency(KF5KIO)
+find_dependency(KF6KIO)
 
 include("${CMAKE_CURRENT_LIST_DIR}/DolphinVcsTargets.cmake")
index 934f7a9ff4a9e74c38041977e3c6ca52243d099f..7527bbfa9a7ea8d15ab4f0a8e721a033fa8d93ef 100644 (file)
@@ -1,4 +1,4 @@
 
-if (KF5DocTools_FOUND)
+if (KF6DocTools_FOUND)
     kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${KDE_INSTALL_DOCBUNDLEDIR}/en SUBDIR dolphin)
 endif()
index cd9abec81daef9ede99603c130200924bd995cab..d78b05f9119a7ea99079f09b9233e228fae7a28c 100644 (file)
@@ -39,6 +39,7 @@ ecm_generate_headers(dolphinvcs_LIB_HEADERS
     RELATIVE "views/versioncontrol"
     REQUIRED_HEADERS dolphinvcs_LIB_HEADERS
 )
+target_include_directories(dolphinvcs INTERFACE "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR}>")
 
 install(TARGETS dolphinvcs EXPORT DolphinVcsTargets ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
 
@@ -196,28 +197,32 @@ target_link_libraries(
     dolphinvcs
     Qt${QT_MAJOR_VERSION}::Concurrent
     Qt${QT_MAJOR_VERSION}::Gui
-    KF5::I18n
-    KF5::IconThemes
-    KF5::KIOCore
-    KF5::KIOWidgets
-    KF5::KIOFileWidgets
-    KF5::Completion
-    KF5::TextWidgets
-    KF5::ConfigCore
-    KF5::NewStuff
-    KF5::NewStuffWidgets    # KNSWidgets::Button
-    KF5::Parts
-    KF5::WindowSystem
-    KF5::WidgetsAddons
-    KF5::Codecs
+    KF6::I18n
+    KF6::IconThemes
+    KF6::KIOCore
+    KF6::KIOWidgets
+    KF6::KIOFileWidgets
+    KF6::Completion
+    KF6::TextWidgets
+    KF6::ConfigCore
+    KF6::NewStuffWidgets    # KNSWidgets::Button
+    KF6::Parts
+    KF6::WindowSystem
+    KF6::WidgetsAddons
+    KF6::Codecs
+    KF6::KCMUtils
+
+    KF6::MoreTools
+
+    ${FTS_LIB}
 )
 
 if(HAVE_BALOO)
     target_link_libraries(
         dolphinprivate PUBLIC
-        KF5::FileMetaData
-        KF5::Baloo
-        KF5::BalooWidgets
+        KF6::FileMetaData
+        KF6::Baloo
+        KF6::BalooWidgets
     )
 endif()
 
@@ -290,14 +295,12 @@ target_sources(dolphinstatic PRIVATE
     selectionmode/topbar.cpp
     settings/interface/folderstabssettingspage.cpp
     settings/interface/statusandlocationbarssettingspage.cpp
-    settings/interface/configurepreviewplugindialog.cpp
     settings/interface/confirmationssettingspage.cpp
     settings/interface/interfacesettingspage.cpp
     settings/interface/previewssettingspage.cpp
     settings/dolphinsettingsdialog.cpp
     settings/contextmenu/contextmenusettingspage.cpp
     settings/settingspagebase.cpp
-    settings/serviceitemdelegate.cpp
     settings/servicemodel.cpp
     settings/trash/trashsettingspage.cpp
     settings/viewmodes/dolphinfontrequester.cpp
@@ -349,14 +352,12 @@ target_sources(dolphinstatic PRIVATE
     selectionmode/topbar.h
     settings/interface/folderstabssettingspage.h
     settings/interface/statusandlocationbarssettingspage.h
-    settings/interface/configurepreviewplugindialog.h
     settings/interface/confirmationssettingspage.h
     settings/interface/interfacesettingspage.h
     settings/interface/previewssettingspage.h
     settings/dolphinsettingsdialog.h
     settings/contextmenu/contextmenusettingspage.h
     settings/settingspagebase.h
-    settings/serviceitemdelegate.h
     settings/servicemodel.h
     settings/trash/trashsettingspage.h
     settings/viewmodes/dolphinfontrequester.h
@@ -429,25 +430,26 @@ target_sources(dolphinstatic PRIVATE
 target_include_directories(dolphinstatic SYSTEM PRIVATE ${PHONON_INCLUDES})
 target_link_libraries(dolphinstatic
     dolphinprivate
-    KF5::CoreAddons
-    KF5::KCMUtils
-    KF5::DBusAddons
-    KF5::Notifications
+    KF6::CoreAddons
+    KF6::KCMUtils
+    KF6::DBusAddons
+    KF6::Notifications
+    KF6::BookmarksWidgets
     Phonon::phonon4qt${QT_MAJOR_VERSION}
 )
 
 if (HAVE_KACTIVITIES)
     target_link_libraries(
         dolphinstatic
-        KF5::Activities
+        KF6::Activities
     )
 endif()
 
 if (HAVE_KUSERFEEDBACK)
     target_link_libraries(
         dolphinstatic
-        KUserFeedbackCore
-        KUserFeedbackWidgets
+        KUserFeedbackCoreQt6
+        KUserFeedbackWidgetsQt6
     )
 endif()
 
@@ -471,12 +473,12 @@ target_link_libraries(dolphin
     PRIVATE
     dolphinprivate
     dolphinstatic
-    KF5::Crash
+    KF6::Crash
 )
 
 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()
@@ -518,10 +520,8 @@ if(NOT WIN32)
         settings/interface/folderstabssettingspage.cpp
         settings/interface/statusandlocationbarssettingspage.cpp
         settings/interface/previewssettingspage.cpp
-        settings/interface/configurepreviewplugindialog.cpp
         settings/interface/confirmationssettingspage.cpp
         settings/settingspagebase.cpp
-        settings/serviceitemdelegate.cpp
         settings/servicemodel.cpp
         dolphin_generalsettings.cpp
         dolphindebug.cpp
@@ -533,10 +533,8 @@ if(NOT WIN32)
         settings/interface/folderstabssettingspage.h
         settings/interface/statusandlocationbarssettingspage.h
         settings/interface/previewssettingspage.h
-        settings/interface/configurepreviewplugindialog.h
         settings/interface/confirmationssettingspage.h
         settings/settingspagebase.h
-        settings/serviceitemdelegate.h
         settings/servicemodel.h
         dolphin_generalsettings.h
         dolphindebug.h
index 2264ca5a5401ee89cde7f2c2f03b49938ef0aa32..9f04e74214ceda2a4e21f1eb767fa8da96bed422 100644 (file)
@@ -28,9 +28,9 @@ DolphinBookmarkHandler::DolphinBookmarkHandler(DolphinMainWindow *mainWindow, KA
         QDir().mkpath(bookmarksFile);
         bookmarksFile += QLatin1String("/bookmarks.xml");
     }
-    m_bookmarkManager = KBookmarkManager::managerForFile(bookmarksFile, QStringLiteral("dolphin"));
+    m_bookmarkManager = std::make_unique<KBookmarkManager>(bookmarksFile);
     m_bookmarkManager->setUpdate(true);
-    m_bookmarkMenu.reset(new KBookmarkMenu(m_bookmarkManager, this, menu));
+    m_bookmarkMenu.reset(new KBookmarkMenu(m_bookmarkManager.get(), this, menu));
 
     collection->addAction(QStringLiteral("add_bookmark"), m_bookmarkMenu->addBookmarkAction());
     collection->addAction(QStringLiteral("edit_bookmarks"), m_bookmarkMenu->editBookmarksAction());
index a40c0267548bd0fc25eae3c273d5a46d24dfc06b..ceb172fdc8aa80524d1867634c3cb374a4a39ff0 100644 (file)
@@ -41,7 +41,7 @@ private:
 
 private:
     DolphinMainWindow *m_mainWindow;
-    KBookmarkManager *m_bookmarkManager;
+    std::unique_ptr<KBookmarkManager> m_bookmarkManager;
     QScopedPointer<KBookmarkMenu> m_bookmarkMenu;
 };
 
index 4dc54946f6f869586de4f9cb3f6ae9fdb2257b0c..34d2102ef0e83df6e5a90fb3fc09cf105c11436b 100644 (file)
@@ -27,7 +27,6 @@
 #include <KLocalizedString>
 #include <KNewFileMenu>
 #include <KStandardAction>
-#include <kio_version.h>
 
 #include <QApplication>
 #include <QClipboard>
@@ -138,7 +137,7 @@ void DolphinContextMenu::addTrashItemContextMenu()
     addAction(QIcon::fromTheme("restoration"), i18nc("@action:inmenu", "Restore"), [this]() {
         QList<QUrl> selectedUrls;
         selectedUrls.reserve(m_selectedItems.count());
-        for (const KFileItem &item : qAsConst(m_selectedItems)) {
+        for (const KFileItem &item : std::as_const(m_selectedItems)) {
             selectedUrls.append(item.url());
         }
 
@@ -173,7 +172,7 @@ void DolphinContextMenu::addDirectoryItemContextMenu()
     addOpenWithActions();
 
     // set up 'Create New' menu
-    DolphinNewFileMenu *newFileMenu = new DolphinNewFileMenu(m_mainWindow->actionCollection(), m_mainWindow);
+    DolphinNewFileMenu *newFileMenu = new DolphinNewFileMenu(m_mainWindow->actionCollection()->action(QStringLiteral("create_dir")), m_mainWindow);
     newFileMenu->checkUpToDate();
     newFileMenu->setWorkingDirectory(m_fileInfo.url());
     newFileMenu->setEnabled(selectedItemsProps.supportsWriting());
@@ -236,7 +235,7 @@ void DolphinContextMenu::addItemContextMenu()
     } else {
         // multiple files
         bool selectionHasOnlyDirs = true;
-        for (const auto &item : qAsConst(m_selectedItems)) {
+        for (const auto &item : std::as_const(m_selectedItems)) {
             const QUrl &url = DolphinView::openItemAsFolderUrl(item);
             if (url.isEmpty()) {
                 selectionHasOnlyDirs = false;
index ca0038586951c2ea5a9a111401d6ce8106157278..27e4d238115ec82935e9826130ec85bd5b412178 100644 (file)
@@ -54,7 +54,6 @@
 #include <KShell>
 #include <KShortcutsDialog>
 #include <KStandardAction>
-#include <KStartupInfo>
 #include <KSycoca>
 #include <KTerminalLauncherJob>
 #include <KToggleAction>
@@ -64,7 +63,8 @@
 #include <KUrlNavigator>
 #include <KWindowSystem>
 #include <KXMLGUIFactory>
-#include <kio_version.h>
+
+#include <kwidgetsaddons_version.h>
 
 #include <QApplication>
 #include <QClipboard>
 
 #include <algorithm>
 
+#if HAVE_X11
+#include <KStartupInfo>
+#endif
+
 namespace
 {
 // Used for GeneralSettings::version() to determine whether
@@ -158,6 +162,9 @@ DolphinMainWindow::DolphinMainWindow()
     connect(m_actionHandler, &DolphinViewActionHandler::createDirectoryTriggered, this, &DolphinMainWindow::createDirectory);
     connect(m_actionHandler, &DolphinViewActionHandler::selectionModeChangeTriggered, this, &DolphinMainWindow::slotSetSelectionMode);
 
+    Q_CHECK_PTR(actionCollection()->action(QStringLiteral("create_dir")));
+    m_newFileMenu->setNewFolderShortcutAction(actionCollection()->action(QStringLiteral("create_dir")));
+
     m_remoteEncoding = new DolphinRemoteEncoding(this, m_actionHandler);
     connect(this, &DolphinMainWindow::urlChanged, m_remoteEncoding, &DolphinRemoteEncoding::slotAboutToOpenUrl);
 
@@ -276,8 +283,10 @@ void DolphinMainWindow::activateWindow(const QString &activationToken)
 
     if (KWindowSystem::isPlatformWayland()) {
         KWindowSystem::setCurrentXdgActivationToken(activationToken);
-    } else {
+    } else if (KWindowSystem::isPlatformX11()) {
+#if HAVE_X11
         KStartupInfo::setNewStartupId(window()->windowHandle(), activationToken.toUtf8());
+#endif
     }
 
     KWindowSystem::activateWindow(window()->windowHandle());
@@ -528,7 +537,7 @@ void DolphinMainWindow::showTarget()
     const KFileItem link = m_activeViewContainer->view()->selectedItems().at(0);
     const QUrl destinationUrl = link.url().resolved(QUrl(link.linkDest()));
 
-    auto job = KIO::statDetails(destinationUrl, KIO::StatJob::SourceSide, KIO::StatNoDetails);
+    auto job = KIO::stat(destinationUrl, KIO::StatJob::SourceSide, KIO::StatNoDetails);
 
     connect(job, &KJob::finished, this, [this, destinationUrl](KJob *job) {
         KIO::StatJob *statJob = static_cast<KIO::StatJob *>(job);
@@ -835,10 +844,11 @@ void DolphinMainWindow::slotAboutToShowBackPopupMenu()
 {
     const KUrlNavigator *urlNavigator = m_activeViewContainer->urlNavigatorInternalWithHistory();
     int entries = 0;
-    m_backAction->menu()->clear();
+    QMenu *menu = m_backAction->popupMenu();
+    menu->clear();
     for (int i = urlNavigator->historyIndex() + 1; i < urlNavigator->historySize() && entries < MaxNumberOfNavigationentries; ++i, ++entries) {
-        QAction *action = urlNavigatorHistoryAction(urlNavigator, i, m_backAction->menu());
-        m_backAction->menu()->addAction(action);
+        QAction *action = urlNavigatorHistoryAction(urlNavigator, i, menu);
+        menu->addAction(action);
     }
 }
 
@@ -863,10 +873,10 @@ void DolphinMainWindow::slotAboutToShowForwardPopupMenu()
 {
     const KUrlNavigator *urlNavigator = m_activeViewContainer->urlNavigatorInternalWithHistory();
     int entries = 0;
-    m_forwardAction->menu()->clear();
+    QMenu *menu = m_forwardAction->popupMenu();
     for (int i = urlNavigator->historyIndex() - 1; i >= 0 && entries < MaxNumberOfNavigationentries; --i, ++entries) {
-        QAction *action = urlNavigatorHistoryAction(urlNavigator, i, m_forwardAction->menu());
-        m_forwardAction->menu()->addAction(action);
+        QAction *action = urlNavigatorHistoryAction(urlNavigator, i, menu);
+        menu->addAction(action);
     }
 }
 
@@ -1539,7 +1549,8 @@ void DolphinMainWindow::setupActions()
     auto hamburgerMenuAction = KStandardAction::hamburgerMenu(nullptr, nullptr, actionCollection());
 
     // setup 'File' menu
-    m_newFileMenu = new DolphinNewFileMenu(actionCollection(), this);
+    m_newFileMenu = new DolphinNewFileMenu(nullptr, this);
+    actionCollection()->addAction(QStringLiteral("new_menu"), m_newFileMenu);
     QMenu *menu = m_newFileMenu->menu();
     menu->setTitle(i18nc("@title:menu Create new folder, file, link, etc.", "Create New"));
     menu->setIcon(QIcon::fromTheme(QStringLiteral("list-add")));
@@ -1563,7 +1574,7 @@ void DolphinMainWindow::setupActions()
                                 "<emphasis>Tab</emphasis> with the current location and view.<nl/>"
                                 "A tab is an additional view within this window. "
                                 "You can drag and drop items between tabs."));
-    actionCollection()->setDefaultShortcuts(newTab, {Qt::CTRL | Qt::Key_T, Qt::CTRL | Qt::SHIFT | Qt::Key_N});
+    actionCollection()->setDefaultShortcut(newTab, Qt::CTRL | Qt::Key_T);
     connect(newTab, &QAction::triggered, this, &DolphinMainWindow::openNewActivatedTab);
 
     QAction *addToPlaces = actionCollection()->addAction(QStringLiteral("add_to_places"));
@@ -1718,7 +1729,7 @@ void DolphinMainWindow::setupActions()
     toggleSelectionModeToolBarAction->setWhatsThis(toggleSelectionModeAction->whatsThis());
     actionCollection()->addAction(QStringLiteral("toggle_selection_mode_tool_bar"), toggleSelectionModeToolBarAction);
     toggleSelectionModeToolBarAction->setCheckable(true);
-    toggleSelectionModeToolBarAction->setPopupMode(QToolButton::DelayedPopup);
+    toggleSelectionModeToolBarAction->setPopupMode(KToolBarPopupAction::DelayedPopup);
     connect(toggleSelectionModeToolBarAction, &QAction::triggered, toggleSelectionModeAction, &QAction::trigger);
     connect(toggleSelectionModeAction, &QAction::toggled, toggleSelectionModeToolBarAction, &QAction::setChecked);
 
@@ -1807,10 +1818,10 @@ void DolphinMainWindow::setupActions()
         m_backAction->setObjectName(backAction->objectName());
         m_backAction->setShortcuts(backAction->shortcuts());
     }
-    m_backAction->setPopupMode(QToolButton::DelayedPopup);
+    m_backAction->setPopupMode(KToolBarPopupAction::DelayedPopup);
     connect(m_backAction, &QAction::triggered, this, &DolphinMainWindow::goBack);
-    connect(m_backAction->menu(), &QMenu::aboutToShow, this, &DolphinMainWindow::slotAboutToShowBackPopupMenu);
-    connect(m_backAction->menu(), &QMenu::triggered, this, &DolphinMainWindow::slotGoBack);
+    connect(m_backAction->popupMenu(), &QMenu::aboutToShow, this, &DolphinMainWindow::slotAboutToShowBackPopupMenu);
+    connect(m_backAction->popupMenu(), &QMenu::triggered, this, &DolphinMainWindow::slotGoBack);
     actionCollection()->addAction(m_backAction->objectName(), m_backAction);
 
     auto backShortcuts = m_backAction->shortcuts();
@@ -1848,18 +1859,18 @@ void DolphinMainWindow::setupActions()
         m_forwardAction->setObjectName(forwardAction->objectName());
         m_forwardAction->setShortcuts(forwardAction->shortcuts());
     }
-    m_forwardAction->setPopupMode(QToolButton::DelayedPopup);
+    m_forwardAction->setPopupMode(KToolBarPopupAction::DelayedPopup);
     connect(m_forwardAction, &QAction::triggered, this, &DolphinMainWindow::goForward);
-    connect(m_forwardAction->menu(), &QMenu::aboutToShow, this, &DolphinMainWindow::slotAboutToShowForwardPopupMenu);
-    connect(m_forwardAction->menu(), &QMenu::triggered, this, &DolphinMainWindow::slotGoForward);
+    connect(m_forwardAction->popupMenu(), &QMenu::aboutToShow, this, &DolphinMainWindow::slotAboutToShowForwardPopupMenu);
+    connect(m_forwardAction->popupMenu(), &QMenu::triggered, this, &DolphinMainWindow::slotGoForward);
     actionCollection()->addAction(m_forwardAction->objectName(), m_forwardAction);
     actionCollection()->setDefaultShortcuts(m_forwardAction, m_forwardAction->shortcuts());
 
     // enable middle-click to open in a new tab
     auto *middleClickEventFilter = new MiddleClickActionEventFilter(this);
     connect(middleClickEventFilter, &MiddleClickActionEventFilter::actionMiddleClicked, this, &DolphinMainWindow::slotBackForwardActionMiddleClicked);
-    m_backAction->menu()->installEventFilter(middleClickEventFilter);
-    m_forwardAction->menu()->installEventFilter(middleClickEventFilter);
+    m_backAction->popupMenu()->installEventFilter(middleClickEventFilter);
+    m_forwardAction->popupMenu()->installEventFilter(middleClickEventFilter);
     KStandardAction::up(this, &DolphinMainWindow::goUp, actionCollection());
     QAction *homeAction = KStandardAction::home(this, &DolphinMainWindow::goHome, actionCollection());
     homeAction->setWhatsThis(xi18nc("@info:whatsthis",
@@ -2487,6 +2498,7 @@ void DolphinMainWindow::createPanelAction(const QIcon &icon, const QKeySequence
     panelAction->setText(dockAction->text());
     panelAction->setIcon(icon);
     dockAction->setIcon(icon);
+    dockAction->setEnabled(true);
     actionCollection()->setDefaultShortcut(panelAction, shortcut);
 
     connect(panelAction, &QAction::triggered, dockAction, &QAction::trigger);
index cadfbe9412ce4542c6d5de47effad8122a2605b2..7dc44f59db8904c115659070de4057256d3039fa 100644 (file)
@@ -42,7 +42,7 @@ DolphinNavigatorsWidgetAction::DolphinNavigatorsWidgetAction(QWidget *parent)
 
 void DolphinNavigatorsWidgetAction::adjustSpacing()
 {
-    m_previousWindowWidth = parentWidget()->window()->width();
+    m_previousWindowWidth = qobject_cast<QWidget *>(parent())->window()->width();
     auto viewGeometries = m_viewGeometriesHelper.viewGeometries();
     const int widthOfSplitterPrimary = viewGeometries.globalXOfPrimary + viewGeometries.widthOfPrimary - viewGeometries.globalXOfNavigatorsWidget;
     const QList<int> 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<QWidget*>(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.
index ec2f19d6e8818685b699aad76763b8c7d4ca313d..a64cf3def966207181535a555bcd60a65059382f 100644 (file)
@@ -8,12 +8,14 @@
 
 #include "views/dolphinnewfilemenuobserver.h"
 
-#include <KActionCollection>
 #include <KIO/Job>
 
-DolphinNewFileMenu::DolphinNewFileMenu(KActionCollection *collection, QObject *parent)
-    : KNewFileMenu(collection, QStringLiteral("new_menu"), parent)
+#include <QAction>
+
+DolphinNewFileMenu::DolphinNewFileMenu(QAction *createDirAction, QObject *parent)
+    : KNewFileMenu(parent)
 {
+    setNewFolderShortcutAction(createDirAction);
     DolphinNewFileMenuObserver::instance().attach(this);
 }
 
index 4fa173ef9dce8d6906f78c9ca67cb73e60fa887f..5538c92659ee8c9ff187e4ba3f4817818fd744cc 100644 (file)
@@ -25,7 +25,7 @@ class DOLPHIN_EXPORT DolphinNewFileMenu : public KNewFileMenu
     Q_OBJECT
 
 public:
-    DolphinNewFileMenu(KActionCollection *collection, QObject *parent);
+    DolphinNewFileMenu(QAction *createDirAction, QObject *parent);
     ~DolphinNewFileMenu() override;
 
 Q_SIGNALS:
index aac2780353163d9d9eb0fad28d5d502f38ed740f..a3856de6a6a03eb79a4ce578ea121e9950315582 100644 (file)
@@ -33,7 +33,6 @@
 #include <KPluginMetaData>
 #include <KSharedConfig>
 #include <KTerminalLauncherJob>
-#include <kio_version.h>
 
 #include <QActionGroup>
 #include <QApplication>
 #include <QStandardPaths>
 #include <QTextDocument>
 
+#include <KPluginFactory>
+
 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);
 
@@ -85,7 +85,7 @@ DolphinPart::DolphinPart(QWidget *parentWidget, QObject *parent, const KPluginMe
     });
     connect(m_view, &DolphinView::tabRequested, this, &DolphinPart::createNewWindow);
     connect(m_view, &DolphinView::requestContextMenu, this, &DolphinPart::slotOpenContextMenu);
-    connect(m_view, &DolphinView::selectionChanged, m_extension, &KParts::BrowserExtension::selectionInfo);
+    connect(m_view, &DolphinView::selectionChanged, m_extension, &KParts::NavigationExtension::selectionInfo);
     connect(m_view, &DolphinView::selectionChanged, this, &DolphinPart::slotSelectionChanged);
     connect(m_view, &DolphinView::requestItemInfo, this, &DolphinPart::slotRequestItemInfo);
     connect(m_view, &DolphinView::modeChanged, this, &DolphinPart::viewModeChanged); // relay signal
@@ -141,7 +141,7 @@ void DolphinPart::createActions()
 {
     // Edit menu
 
-    m_newFileMenu = new DolphinNewFileMenu(actionCollection(), this);
+    m_newFileMenu = new DolphinNewFileMenu(actionCollection()->action(QStringLiteral("create_dir")), this);
     m_newFileMenu->setParentWidget(widget());
     connect(m_newFileMenu->menu(), &QMenu::aboutToShow, this, &DolphinPart::updateNewMenu);
 
@@ -362,8 +362,8 @@ void DolphinPart::createNewWindow(const QUrl &url)
 
 void DolphinPart::slotOpenContextMenu(const QPoint &pos, const KFileItem &_item, const KFileItemList &selectedItems, const QUrl &)
 {
-    KParts::BrowserExtension::PopupFlags popupFlags =
-        KParts::BrowserExtension::DefaultPopupItems | KParts::BrowserExtension::ShowProperties | KParts::BrowserExtension::ShowUrlOperations;
+    KParts::NavigationExtension::PopupFlags popupFlags =
+        KParts::NavigationExtension::DefaultPopupItems | KParts::NavigationExtension::ShowProperties | KParts::NavigationExtension::ShowUrlOperations;
 
     KFileItem item(_item);
 
@@ -384,7 +384,7 @@ void DolphinPart::slotOpenContextMenu(const QPoint &pos, const KFileItem &_item,
 
     KFileItemListProperties capabilities(items);
 
-    KParts::BrowserExtension::ActionGroupMap actionGroups;
+    KParts::NavigationExtension::ActionGroupMap actionGroups;
     QList<QAction *> editActions;
     editActions += m_view->versionControlActions(m_view->selectedItems());
 
@@ -409,7 +409,7 @@ void DolphinPart::slotOpenContextMenu(const QPoint &pos, const KFileItem &_item,
                 m_removeAction->update();
             }
         } else {
-            popupFlags |= KParts::BrowserExtension::NoDeletion;
+            popupFlags |= KParts::NavigationExtension::NoDeletion;
         }
 
         if (supportsMoving) {
@@ -420,7 +420,7 @@ void DolphinPart::slotOpenContextMenu(const QPoint &pos, const KFileItem &_item,
         // since otherwise the created file would not be visible.
         // But in treeview mode we should allow it.
         if (m_view->itemsExpandable())
-            popupFlags |= KParts::BrowserExtension::ShowCreateDirectory;
+            popupFlags |= KParts::NavigationExtension::ShowCreateDirectory;
     }
 
     actionGroups.insert(QStringLiteral("editactions"), editActions);
index 0bb016ea9d72039d35e75ef675e4d9a3516e841c..5d48454858ce857a7d2e6ad5d36d37a93b37fc73 100644 (file)
 #include "views/dolphinview.h"
 
 DolphinPartBrowserExtension::DolphinPartBrowserExtension(DolphinPart *part)
-    : KParts::BrowserExtension(part)
+    : KParts::NavigationExtension(part)
     , m_part(part)
 {
 }
 
 void DolphinPartBrowserExtension::restoreState(QDataStream &stream)
 {
-    KParts::BrowserExtension::restoreState(stream);
+    KParts::NavigationExtension::restoreState(stream);
     m_part->view()->restoreState(stream);
 }
 
 void DolphinPartBrowserExtension::saveState(QDataStream &stream)
 {
-    KParts::BrowserExtension::saveState(stream);
+    KParts::NavigationExtension::saveState(stream);
     m_part->view()->saveState(stream);
 }
 
index 615f14252aa59e66522876554a91356f207b08fc..7f8792fbb2135b1a0e6808737fed302354f92a7c 100644 (file)
@@ -7,16 +7,16 @@
 #ifndef DOLPHINPART_EXT_H
 #define DOLPHINPART_EXT_H
 
-#include <kparts/browserextension.h>
-#include <kparts/fileinfoextension.h>
-#include <kparts/listingfilterextension.h>
-#include <kparts/listingnotificationextension.h>
+#include <KParts/FileInfoExtension>
+#include <KParts/ListingFilterExtension>
+#include <KParts/ListingNotificationExtension>
+#include <KParts/NavigationExtension>
 
 #include <QUrl>
 
 class DolphinPart;
 
-class DolphinPartBrowserExtension : public KParts::BrowserExtension
+class DolphinPartBrowserExtension : public KParts::NavigationExtension
 {
     Q_OBJECT
 public:
index a7799a669c3e3e84765db6996512543d3a79bbb1..c70089223da4a6b62525c46e6f0c1f7673ee742f 100644 (file)
@@ -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);
index 89dd9feba544bf598a77b270f8e01e0eb501934d..edc1cb7d84f87f12f1d2c03998db3a51c6a119fd 100644 (file)
@@ -393,7 +393,7 @@ void DolphinTabWidget::tabDropEvent(int index, QDropEvent *event)
         const auto urls = event->mimeData()->urls();
 
         for (const QUrl &url : urls) {
-            auto *job = KIO::statDetails(url, KIO::StatJob::SourceSide, KIO::StatDetail::StatBasic, KIO::JobFlag::HideProgressInfo);
+            auto *job = KIO::stat(url, KIO::StatJob::SourceSide, KIO::StatDetail::StatBasic, KIO::JobFlag::HideProgressInfo);
             connect(job, &KJob::result, this, [this, job]() {
                 if (!job->error() && job->statResult().isDir()) {
                     openNewTab(job->url(), QUrl(), NewTabPosition::AtEnd);
index 5b2a318d679f2e299b9a5c20166941aad7f61c68..076551e5dc3d432614e2065c4c53d06791233c70 100644 (file)
@@ -728,7 +728,8 @@ void DolphinViewContainer::slotItemActivated(const KFileItem &item)
     }
 
     KIO::OpenUrlJob *job = new KIO::OpenUrlJob(item.targetUrl(), item.mimetype());
-    job->setUiDelegate(KIO::createDefaultJobUiDelegate(KJobUiDelegate::AutoHandlingEnabled, this));
+    // Auto*Warning*Handling, errors are put in a KMessageWidget by us in slotOpenUrlFinished.
+    job->setUiDelegate(KIO::createDefaultJobUiDelegate(KJobUiDelegate::AutoWarningHandlingEnabled, this));
     job->setShowOpenOrExecuteDialog(true);
     connect(job, &KIO::OpenUrlJob::finished, this, &DolphinViewContainer::slotOpenUrlFinished);
     job->start();
@@ -842,7 +843,11 @@ void DolphinViewContainer::slotUrlNavigatorLocationChanged(const QUrl &url)
         QDesktopServices::openUrl(url);
         redirect(QUrl(), m_urlNavigator->locationUrl(1));
     } else {
-        showMessage(i18nc("@info:status", "Invalid protocol"), Error);
+        if (!url.scheme().isEmpty()) {
+            showMessage(i18nc("@info:status", "Invalid protocol '%1'", url.scheme()), Error);
+        } else {
+            showMessage(i18nc("@info:status", "Invalid protocol"), Error);
+        }
         m_urlNavigator->goBack();
     }
 }
index fa2b8e98a20fbf7fad3b100d82d3bb7750cd146e..c91046efbfb8765c541fdd4603e3745a7e4fa492 100644 (file)
@@ -75,7 +75,7 @@ bool Dolphin::attachToExistingInstance(const QList<QUrl> &inputUrls,
     }
 
     int activeWindowIndex = -1;
-    for (const auto &interface : qAsConst(dolphinInterfaces)) {
+    for (const auto &interface : std::as_const(dolphinInterfaces)) {
         ++activeWindowIndex;
 
         auto isActiveWindowReply = interface.first->isActiveWindow();
@@ -116,7 +116,7 @@ bool Dolphin::attachToExistingInstance(const QList<QUrl> &inputUrls,
         }
     }
 
-    for (const auto &interface : qAsConst(dolphinInterfaces)) {
+    for (const auto &interface : std::as_const(dolphinInterfaces)) {
         if (interface.second.isEmpty()) {
             continue;
         }
index f42f2c193877d34183fff9cc82e74f766c39425f..77d5a319ca5670c585a6cfaed78fbf0db7c50ec5 100644 (file)
@@ -17,7 +17,6 @@
 #include <KIO/Job>
 #include <KLocalizedString>
 #include <KUrlMimeData>
-#include <kio_version.h>
 
 #include <QElapsedTimer>
 #include <QIcon>
@@ -982,7 +981,7 @@ void KFileItemModel::resortAllItems()
     // been moved because of the resorting.
     QList<QUrl> oldUrls;
     oldUrls.reserve(itemCount);
-    for (const ItemData *itemData : qAsConst(m_itemData)) {
+    for (const ItemData *itemData : std::as_const(m_itemData)) {
         oldUrls.append(itemData->item.url());
     }
 
@@ -1232,7 +1231,7 @@ void KFileItemModel::slotItemsDeleted(const KFileItemList &items)
         indexesToRemoveWithChildren.reserve(m_itemData.count());
 
         const int itemCount = m_itemData.count();
-        for (int index : qAsConst(indexesToRemove)) {
+        for (int index : std::as_const(indexesToRemove)) {
             indexesToRemoveWithChildren.append(index);
 
             const int parentLevel = expandedParentsCount(index);
@@ -1650,7 +1649,7 @@ void KFileItemModel::prepareItemsForSorting(QList<ItemData *> &itemDataList)
     case DeletionTimeRole:
         // These roles can be determined with retrieveData, and they have to be stored
         // in the QHash "values" for the sorting.
-        for (ItemData *itemData : qAsConst(itemDataList)) {
+        for (ItemData *itemData : std::as_const(itemDataList)) {
             if (itemData->values.isEmpty()) {
                 itemData->values = retrieveData(itemData->item, itemData->parent);
             }
@@ -1659,7 +1658,7 @@ void KFileItemModel::prepareItemsForSorting(QList<ItemData *> &itemDataList)
 
     case TypeRole:
         // At least store the data including the file type for items with known MIME type.
-        for (ItemData *itemData : qAsConst(itemDataList)) {
+        for (ItemData *itemData : std::as_const(itemDataList)) {
             if (itemData->values.isEmpty()) {
                 const KFileItem item = itemData->item;
                 if (item.isDir() || item.isMimeTypeKnown()) {
@@ -2599,7 +2598,7 @@ QList<QPair<int, QVariant>> KFileItemModel::permissionRoleGroups() const
         if (info.permission(QFile::ExeUser)) {
             user += i18nc("@item:intext Access permission, concatenated", "Execute, ");
         }
-        user = user.isEmpty() ? i18nc("@item:intext Access permission, concatenated", "Forbidden") : user.mid(0, user.count() - 2);
+        user = user.isEmpty() ? i18nc("@item:intext Access permission, concatenated", "Forbidden") : user.mid(0, user.length() - 2);
 
         // Set group string
         QString group;
@@ -2612,7 +2611,7 @@ QList<QPair<int, QVariant>> KFileItemModel::permissionRoleGroups() const
         if (info.permission(QFile::ExeGroup)) {
             group += i18nc("@item:intext Access permission, concatenated", "Execute, ");
         }
-        group = group.isEmpty() ? i18nc("@item:intext Access permission, concatenated", "Forbidden") : group.mid(0, group.count() - 2);
+        group = group.isEmpty() ? i18nc("@item:intext Access permission, concatenated", "Forbidden") : group.mid(0, group.length() - 2);
 
         // Set others string
         QString others;
@@ -2625,7 +2624,7 @@ QList<QPair<int, QVariant>> KFileItemModel::permissionRoleGroups() const
         if (info.permission(QFile::ExeOther)) {
             others += i18nc("@item:intext Access permission, concatenated", "Execute, ");
         }
-        others = others.isEmpty() ? i18nc("@item:intext Access permission, concatenated", "Forbidden") : others.mid(0, others.count() - 2);
+        others = others.isEmpty() ? i18nc("@item:intext Access permission, concatenated", "Forbidden") : others.mid(0, others.length() - 2);
 
         const QString newGroupValue = i18nc("@title:group Files and folders by permissions", "User: %1 | Group: %2 | Others: %3", user, group, others);
         if (newGroupValue != groupValue) {
index 09894f13ddabc10cfa07cbb62d992c82bb68eb8a..795b85a44f3909d55f4c432e0c20dca6d6705ab2 100644 (file)
@@ -119,8 +119,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 auto plugins = KPluginMetaData::findPlugins(pluginNamespace, {}, KPluginMetaData::AllowEmptyMetaData);
+    const auto plugins = KPluginMetaData::findPlugins(QStringLiteral("kf6/overlayicon"), {}, KPluginMetaData::AllowEmptyMetaData);
     for (const KPluginMetaData &data : plugins) {
         auto instance = QPluginLoader(data.fileName()).instance();
         auto plugin = qobject_cast<KOverlayIconPlugin *>(instance);
@@ -906,7 +905,7 @@ void KFileItemModelRolesUpdater::startUpdating()
         m_pendingPreviewItems.clear();
         m_pendingPreviewItems.reserve(indexes.count());
 
-        for (int index : qAsConst(indexes)) {
+        for (int index : std::as_const(indexes)) {
             const KFileItem item = m_model->fileItem(index);
             if (!m_finishedItems.contains(item)) {
                 m_pendingPreviewItems.append(item);
@@ -1171,11 +1170,11 @@ void KFileItemModelRolesUpdater::updateChangedItems()
     std::sort(visibleChangedIndexes.begin(), visibleChangedIndexes.end());
 
     if (m_previewShown) {
-        for (int index : qAsConst(visibleChangedIndexes)) {
+        for (int index : std::as_const(visibleChangedIndexes)) {
             m_pendingPreviewItems.append(m_model->fileItem(index));
         }
 
-        for (int index : qAsConst(invisibleChangedIndexes)) {
+        for (int index : std::as_const(invisibleChangedIndexes)) {
             m_pendingPreviewItems.append(m_model->fileItem(index));
         }
 
@@ -1360,7 +1359,7 @@ QHash<QByteArray, QVariant> KFileItemModelRolesUpdater::rolesData(const KFileIte
     }
 
     QStringList overlays = item.overlays();
-    for (KOverlayIconPlugin *it : qAsConst(m_overlayIconsPlugin)) {
+    for (KOverlayIconPlugin *it : std::as_const(m_overlayIconsPlugin)) {
         overlays.append(it->getOverlays(item.url()));
     }
     if (!overlays.isEmpty()) {
@@ -1385,7 +1384,7 @@ void KFileItemModelRolesUpdater::slotOverlaysChanged(const QUrl &url, const QStr
     const int index = m_model->index(item);
     QHash<QByteArray, QVariant> data = m_model->data(index);
     QStringList overlays = item.overlays();
-    for (KOverlayIconPlugin *it : qAsConst(m_overlayIconsPlugin)) {
+    for (KOverlayIconPlugin *it : std::as_const(m_overlayIconsPlugin)) {
         overlays.append(it->getOverlays(url));
     }
     data.insert("iconOverlays", overlays);
index be22b91cce91a4af301520c8d79359135f1dabed..cf14836592ffe680a7cccb640a361f769eefa5c0 100644 (file)
@@ -236,7 +236,7 @@ void KItemListView::setVisibleRoles(const QList<QByteArray> &roles)
         if (!m_headerWidget->automaticColumnResizing()) {
             // The column-width of new roles are still 0. Apply the preferred
             // column-width as default with.
-            for (const QByteArray &role : qAsConst(m_visibleRoles)) {
+            for (const QByteArray &role : std::as_const(m_visibleRoles)) {
                 if (m_headerWidget->columnWidth(role) == 0) {
                     const qreal width = m_headerWidget->preferredColumnWidth(role);
                     m_headerWidget->setColumnWidth(role, width);
@@ -723,7 +723,7 @@ void KItemListView::paint(QPainter *painter, const QStyleOptionGraphicsItem *opt
 {
     QGraphicsWidget::paint(painter, option, widget);
 
-    for (auto animation : qAsConst(m_rubberBandAnimations)) {
+    for (auto animation : std::as_const(m_rubberBandAnimations)) {
         QRectF rubberBandRect = animation->property(RubberPropertyName).toRectF();
 
         const QPointF topLeft = rubberBandRect.topLeft();
@@ -1100,12 +1100,9 @@ void KItemListView::updateFont()
 
 void KItemListView::updatePalette()
 {
-    if (scene() && !scene()->views().isEmpty()) {
-        KItemListStyleOption option = styleOption();
-        option.palette = scene()->views().first()->palette();
-
-        setStyleOption(option);
-    }
+    KItemListStyleOption option = styleOption();
+    option.palette = palette();
+    setStyleOption(option);
 }
 
 void KItemListView::slotItemsInserted(const KItemRangeList &itemRanges)
@@ -1289,7 +1286,7 @@ void KItemListView::slotItemsRemoved(const KItemRangeList &itemRanges)
         // after the deleted items. It is important to update them in ascending
         // order to prevent overlaps when setting the new index.
         std::sort(itemsToMove.begin(), itemsToMove.end());
-        for (int i : qAsConst(itemsToMove)) {
+        for (int i : std::as_const(itemsToMove)) {
             KItemListWidget *widget = m_visibleItems.value(i);
             Q_ASSERT(widget);
             const int newIndex = i - count;
@@ -1915,7 +1912,7 @@ void KItemListView::doLayout(LayoutAnimationHint hint, int changedIndex, int cha
     }
 
     // Delete invisible KItemListWidget instances that have not been reused
-    for (int index : qAsConst(reusableItems)) {
+    for (int index : std::as_const(reusableItems)) {
         recycleWidget(m_visibleItems.value(index));
     }
 
@@ -2291,7 +2288,7 @@ QHash<QByteArray, qreal> KItemListView::preferredColumnWidths(const KItemRangeLi
     const QFontMetricsF fontMetrics(m_headerWidget->font());
     const int gripMargin = m_headerWidget->style()->pixelMetric(QStyle::PM_HeaderGripMargin);
     const int headerMargin = m_headerWidget->style()->pixelMetric(QStyle::PM_HeaderMargin);
-    for (const QByteArray &visibleRole : qAsConst(m_visibleRoles)) {
+    for (const QByteArray &visibleRole : std::as_const(m_visibleRoles)) {
         const QString headerText = m_model->roleDescription(visibleRole);
         const qreal headerWidth = fontMetrics.horizontalAdvance(headerText) + gripMargin + headerMargin * 2;
         widths.insert(visibleRole, headerWidth);
@@ -2307,7 +2304,7 @@ QHash<QByteArray, qreal> KItemListView::preferredColumnWidths(const KItemRangeLi
         const int endIndex = startIndex + itemRange.count - 1;
 
         for (int i = startIndex; i <= endIndex; ++i) {
-            for (const QByteArray &visibleRole : qAsConst(m_visibleRoles)) {
+            for (const QByteArray &visibleRole : std::as_const(m_visibleRoles)) {
                 qreal maxWidth = widths.value(visibleRole, 0);
                 const qreal width = creator->preferredRoleColumnWidth(visibleRole, i, this);
                 maxWidth = qMax(width, maxWidth);
@@ -2348,7 +2345,7 @@ void KItemListView::applyColumnWidthsFromHeader()
 
 void KItemListView::updateWidgetColumnWidths(KItemListWidget *widget)
 {
-    for (const QByteArray &role : qAsConst(m_visibleRoles)) {
+    for (const QByteArray &role : std::as_const(m_visibleRoles)) {
         widget->setColumnWidth(role, m_headerWidget->columnWidth(role));
     }
     widget->setSidePadding(m_headerWidget->sidePadding());
@@ -2365,7 +2362,7 @@ void KItemListView::updatePreferredColumnWidths(const KItemRangeList &itemRanges
 
     if (itemCount == rangesItemCount) {
         const QHash<QByteArray, qreal> preferredWidths = preferredColumnWidths(itemRanges);
-        for (const QByteArray &role : qAsConst(m_visibleRoles)) {
+        for (const QByteArray &role : std::as_const(m_visibleRoles)) {
             m_headerWidget->setPreferredColumnWidth(role, preferredWidths.value(role));
         }
     } else {
@@ -2420,7 +2417,7 @@ void KItemListView::applyAutomaticColumnWidths()
     // size does not use the available view-size the size of the
     // first role will get stretched.
 
-    for (const QByteArray &role : qAsConst(m_visibleRoles)) {
+    for (const QByteArray &role : std::as_const(m_visibleRoles)) {
         const qreal preferredWidth = m_headerWidget->preferredColumnWidth(role);
         m_headerWidget->setColumnWidth(role, preferredWidth);
     }
@@ -2469,7 +2466,7 @@ void KItemListView::applyAutomaticColumnWidths()
 qreal KItemListView::columnWidthsSum() const
 {
     qreal widthsSum = 0;
-    for (const QByteArray &role : qAsConst(m_visibleRoles)) {
+    for (const QByteArray &role : std::as_const(m_visibleRoles)) {
         widthsSum += m_headerWidget->columnWidth(role);
     }
     return widthsSum;
index 38c883efec52da321e9d4fd52563304e84cc2d65..a8d80ab52baa039b63533f28b83ba62e35cc9610 100644 (file)
@@ -32,7 +32,7 @@ KItemListViewAccessible::KItemListViewAccessible(KItemListView *view_, KItemList
 
 KItemListViewAccessible::~KItemListViewAccessible()
 {
-    for (AccessibleIdWrapper idWrapper : qAsConst(m_cells)) {
+    for (AccessibleIdWrapper idWrapper : std::as_const(m_cells)) {
         if (idWrapper.isValid) {
             QAccessible::deleteAccessibleInterface(idWrapper.id);
         }
index b3a9909af3b04601c8a0e78701e721d1d0f099b7..c8c1ff076ccc5edf503ab7ebc5b846ea661e1d81 100644 (file)
@@ -195,14 +195,14 @@ KItemSet KItemSet::operator^(const KItemSet &other) const
     const QVector<int>::iterator end = rangeBoundaries.end();
     QVector<int>::iterator it = begin;
 
-    for (const KItemRange &range : qAsConst(m_itemRanges)) {
+    for (const KItemRange &range : std::as_const(m_itemRanges)) {
         *it++ = range.index;
         *it++ = range.index + range.count;
     }
 
     const QVector<int>::iterator middle = it;
 
-    for (const KItemRange &range : qAsConst(other.m_itemRanges)) {
+    for (const KItemRange &range : std::as_const(other.m_itemRanges)) {
         *it++ = range.index;
         *it++ = range.index + range.count;
     }
index b8ab6864df48f254d879df34250fd49bcfa595b9..d3562aca40b2c4a8d2fd082510231c23d5baee06 100644 (file)
@@ -368,7 +368,7 @@ inline KItemSet &KItemSet::operator=(const KItemSet &other)
 inline int KItemSet::count() const
 {
     int result = 0;
-    for (const KItemRange &range : qAsConst(m_itemRanges)) {
+    for (const KItemRange &range : std::as_const(m_itemRanges)) {
         result += range.count;
     }
     return result;
index 0088e4116b34e2ab732e95d588de393b3b001a52..e37013f95fe88562313c8c42e1bd7cd72c165b9d 100644 (file)
@@ -1291,7 +1291,7 @@ void KStandardItemListWidget::updateIconsLayoutTextCache()
 
     // Calculate the position for each additional information
     qreal y = nameTextInfo->pos.y() + nameHeight;
-    for (const QByteArray &role : qAsConst(m_sortedVisibleRoles)) {
+    for (const QByteArray &role : std::as_const(m_sortedVisibleRoles)) {
         if (role == "text") {
             continue;
         }
@@ -1357,7 +1357,7 @@ void KStandardItemListWidget::updateCompactLayoutTextCache()
     const qreal x = option.padding * 3 + iconSize();
     qreal y = qRound((widgetHeight - textLinesHeight) / 2);
     const qreal maxWidth = size().width() - x - option.padding;
-    for (const QByteArray &role : qAsConst(m_sortedVisibleRoles)) {
+    for (const QByteArray &role : std::as_const(m_sortedVisibleRoles)) {
         const QString text = escapeString(roleText(role, values));
         TextInfo *textInfo = m_textInfo.value(role);
         textInfo->staticText.setText(text);
@@ -1407,7 +1407,7 @@ void KStandardItemListWidget::updateDetailsLayoutTextCache()
     qreal x = firstColumnInc;
     const qreal y = qMax(qreal(option.padding), (widgetHeight - fontHeight) / 2);
 
-    for (const QByteArray &role : qAsConst(m_sortedVisibleRoles)) {
+    for (const QByteArray &role : std::as_const(m_sortedVisibleRoles)) {
         QString text = roleText(role, values);
 
         // Elide the text in case it does not fit into the available column-width
@@ -1555,13 +1555,18 @@ void KStandardItemListWidget::closeRoleEditor()
     m_roleEditor = nullptr;
 }
 
-QPixmap KStandardItemListWidget::pixmapForIcon(const QString &name, const QStringList &overlays, int size, QIcon::Mode mode)
+QPixmap KStandardItemListWidget::pixmapForIcon(const QString &name, const QStringList &overlays, int size, QIcon::Mode mode) const
 {
     static const QIcon fallbackIcon = QIcon::fromTheme(QStringLiteral("unknown"));
+    qreal dpr = qApp->devicePixelRatio();
+    if (scene() && !scene()->views().isEmpty()) {
+        dpr = scene()->views().constFirst()->devicePixelRatioF();
+    }
 
-    size *= qApp->devicePixelRatio();
+    size *= dpr;
 
-    const QString key = "KStandardItemListWidget:" % name % ":" % overlays.join(QLatin1Char(':')) % ":" % QString::number(size) % ":" % QString::number(mode);
+    const QString key = "KStandardItemListWidget:" % name % ":" % overlays.join(QLatin1Char(':')) % ":" % QString::number(size) % "@" % QString::number(dpr)
+        % ":" % QString::number(mode);
     QPixmap pixmap;
 
     if (!QPixmapCache::find(key, &pixmap)) {
@@ -1569,11 +1574,11 @@ QPixmap KStandardItemListWidget::pixmapForIcon(const QString &name, const QStrin
         if (icon.isNull()) {
             icon = QIcon(name);
         }
-        if (icon.isNull() || icon.pixmap(size / qApp->devicePixelRatio(), size / qApp->devicePixelRatio(), mode).isNull()) {
+        if (icon.isNull() || icon.pixmap(size / dpr, size / dpr, mode).isNull()) {
             icon = fallbackIcon;
         }
 
-        pixmap = icon.pixmap(size / qApp->devicePixelRatio(), size / qApp->devicePixelRatio(), mode);
+        pixmap = icon.pixmap(QSize(size / dpr, size / dpr), dpr, mode);
         if (pixmap.width() != size || pixmap.height() != size) {
             KPixmapModifier::scale(pixmap, QSize(size, size));
         }
@@ -1610,7 +1615,7 @@ QPixmap KStandardItemListWidget::pixmapForIcon(const QString &name, const QStrin
 
         QPixmapCache::insert(key, pixmap);
     }
-    pixmap.setDevicePixelRatio(qApp->devicePixelRatio());
+    pixmap.setDevicePixelRatio(dpr);
 
     return pixmap;
 }
index 52cde1423851b16bba9682a39715cff163f53aca..a09f0c7a83090ae384f8d36dcff20c37a0c2fd03 100644 (file)
@@ -221,7 +221,7 @@ private:
      */
     void closeRoleEditor();
 
-    static QPixmap pixmapForIcon(const QString &name, const QStringList &overlays, int size, QIcon::Mode mode);
+    QPixmap pixmapForIcon(const QString &name, const QStringList &overlays, int size, QIcon::Mode mode) const;
 
     /**
      * @return Preferred size of the rating-image based on the given
index 4cf36eb2da241bd07538f1ea105d7a6bbd928d45..d0632e2c56144c1e565cd6d675be480342d1f4d0 100644 (file)
@@ -112,7 +112,7 @@ QHash<QByteArray, QVariant> KBalooRolesProvider::roleValues(const Baloo::File &f
             });
             values.insert(role, propertyInfo.formatAsDisplayString(list));
         } else {
-            if (propertyInfo.valueType() == QVariant::DateTime) {
+            if (propertyInfo.valueType() == QMetaType::Type::QDateTime) {
                 // Let dolphin format later Dates
                 values.insert(role, (*rangeBegin).second);
             } else {
index 47f538447b503cb02c12259a741354a5e9a7ffef..dcf7247a945fc84abd9880b36b72bdc55c149311 100644 (file)
@@ -166,7 +166,7 @@ void KDirectoryContentsCounter::slotItemsRemoved()
     if (!m_watchedDirs.isEmpty()) {
         // Don't let KDirWatch watch for removed items
         if (allItemsRemoved) {
-            for (const QString &path : qAsConst(m_watchedDirs)) {
+            for (const QString &path : std::as_const(m_watchedDirs)) {
                 m_dirWatcher->removeDir(path);
             }
             m_watchedDirs.clear();
index 82e5dde97754535b6d9e5e2d7e33e7bca72f7dc4..02a4f939d13b2e26f0b3e43ed301799a6a57e739 100644 (file)
@@ -167,7 +167,7 @@ void KItemListHeaderWidget::paint(QPainter *painter, const QStyleOptionGraphicsI
 
     qreal x = -m_offset + m_sidePadding;
     int orderIndex = 0;
-    for (const QByteArray &role : qAsConst(m_columns)) {
+    for (const QByteArray &role : std::as_const(m_columns)) {
         const qreal roleWidth = m_columnWidths.value(role);
         const QRectF rect(x, 0, roleWidth, size().height());
         paintRole(painter, role, rect, orderIndex, widget);
@@ -507,7 +507,7 @@ int KItemListHeaderWidget::roleIndexAt(const QPointF &pos) const
     int index = -1;
 
     qreal x = -m_offset + m_sidePadding;
-    for (const QByteArray &role : qAsConst(m_columns)) {
+    for (const QByteArray &role : std::as_const(m_columns)) {
         ++index;
         x += m_columnWidths.value(role);
         if (pos.x() <= x) {
@@ -540,7 +540,7 @@ bool KItemListHeaderWidget::isAbovePaddingGrip(const QPointF &pos, PaddingGrip p
         return pos.x() >= (lx - grip) && pos.x() <= lx;
     case Trailing: {
         qreal rx = lx;
-        for (const QByteArray &role : qAsConst(m_columns)) {
+        for (const QByteArray &role : std::as_const(m_columns)) {
             rx += m_columnWidths.value(role);
         }
         return pos.x() >= (rx - grip) && pos.x() <= rx;
@@ -604,7 +604,7 @@ int KItemListHeaderWidget::targetOfMovingRole() const
 qreal KItemListHeaderWidget::roleXPosition(const QByteArray &role) const
 {
     qreal x = -m_offset + m_sidePadding;
-    for (const QByteArray &visibleRole : qAsConst(m_columns)) {
+    for (const QByteArray &visibleRole : std::as_const(m_columns)) {
         if (visibleRole == role) {
             return x;
         }
index 45e146a2e6f9989a363b1a88a2cabc0cd76a42e4..419d174e90ace364d9fc432534dbe8f64a43a69c 100644 (file)
@@ -13,7 +13,7 @@
 #include <KConfigGroup>
 #include <KFileItemListProperties>
 #include <KIO/CopyJob>
-#include <KIO/DeleteJob>
+#include <KIO/DeleteOrTrashJob>
 #include <KIO/Paste>
 #include <KIO/PasteJob>
 #include <KJobWidgets>
@@ -22,9 +22,6 @@
 #include <KSharedConfig>
 #include <KUrlMimeData>
 
-#include <KIO/DeleteOrTrashJob>
-#include <kio_version.h>
-
 #include <QApplication>
 #include <QClipboard>
 #include <QMenu>
index 7367f1d13f548d36c3edb537e6ac78c0ac838277..9d1e5b97195e7092974778dcb5df019e8784bc8e 100644 (file)
@@ -244,7 +244,7 @@ void InformationPanel::showItemInfo()
         // No item is hovered and no selection has been done: provide
         // an item for the currently shown directory.
         m_shownUrl = url();
-        m_folderStatJob = KIO::statDetails(m_shownUrl, KIO::StatJob::SourceSide, KIO::StatDefaultDetails | KIO::StatRecursiveSize, KIO::HideProgressInfo);
+        m_folderStatJob = KIO::stat(m_shownUrl, KIO::StatJob::SourceSide, KIO::StatDefaultDetails | KIO::StatRecursiveSize, KIO::HideProgressInfo);
         if (m_folderStatJob->uiDelegate()) {
             KJobWidgets::setWindow(m_folderStatJob, this);
         }
index d93457b2701f216ce884ed91e1d11e83af110e03..62f25b24bf3cdaf3e32c6f3986415e19afee71ed 100644 (file)
@@ -23,8 +23,8 @@
 
 #include <Baloo/FileMetaDataWidget>
 
-#include <Phonon/BackendCapabilities>
-#include <Phonon/MediaObject>
+#include <phonon/BackendCapabilities>
+#include <phonon/MediaObject>
 
 #include <QDialogButtonBox>
 #include <QGesture>
index 77d55da8bdc9122995370fdbdd210db1b66c4c99..3365998f4845249dc13d2e6c6ccad1eb3621a991 100644 (file)
@@ -7,10 +7,10 @@
 #include "phononwidget.h"
 
 #include <KLocalizedString>
-#include <Phonon/AudioOutput>
-#include <Phonon/MediaObject>
-#include <Phonon/SeekSlider>
-#include <Phonon/VideoWidget>
+#include <phonon/AudioOutput>
+#include <phonon/MediaObject>
+#include <phonon/SeekSlider>
+#include <phonon/VideoWidget>
 
 #include <QShowEvent>
 #include <QStyle>
index 4662e47af321c4cda1e4ba6ba0446731cbfe7cbf..a0a913b4fac746d47353848e4349be972893efb8 100644 (file)
@@ -7,7 +7,7 @@
 #ifndef PHONONWIDGET_H
 #define PHONONWIDGET_H
 
-#include <Phonon/Global>
+#include <phonon/Global>
 
 #include <QSize>
 #include <QUrl>
index e3d133ff0555b083c70ecad2b56c09d052b48b1a..8bdb18ba224681d1cece10e21f1dff5dd1004baa 100644 (file)
@@ -150,7 +150,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<KFilePlacesModel *>(model());
 
index 72886c2e9f1f00e66b51a2b65889919d27c810b1..0e79a475d4a9b8db4058bc1305f3a69b135e5564 100644 (file)
@@ -47,6 +47,11 @@ TerminalPanel::TerminalPanel(QWidget *parent)
 
 TerminalPanel::~TerminalPanel()
 {
+    if (m_konsolePart) {
+        // Avoid when QObject cleanup, which comes after our destructor, deletes the konsolePart
+        // and subsequently calls back into our slot when the destructor has already run.
+        disconnect(m_konsolePart, &KParts::ReadOnlyPart::destroyed, this, &TerminalPanel::terminalExited);
+    }
 }
 
 void TerminalPanel::goHome()
@@ -144,7 +149,7 @@ void TerminalPanel::showEvent(QShowEvent *event)
 
     if (!m_terminal) {
         m_clearTerminal = true;
-        KPluginFactory *factory = KPluginFactory::loadFactory(KPluginMetaData(QStringLiteral("konsolepart"))).plugin;
+        KPluginFactory *factory = KPluginFactory::loadFactory(KPluginMetaData(QStringLiteral("kf6/parts/konsolepart"))).plugin;
         m_konsolePart = factory ? (factory->create<KParts::ReadOnlyPart>(this)) : nullptr;
         if (m_konsolePart) {
             connect(m_konsolePart, &KParts::ReadOnlyPart::destroyed, this, &TerminalPanel::terminalExited);
index 31f8cb80043d95c1d55e0e18db7b57ab49649ff9..da36caa36d5bd6759ca5cfa097571db2b1dc3e51 100644 (file)
@@ -282,7 +282,7 @@ void DolphinFacetsWidget::updateTagsMenuItems(const QUrl &, const KFileItemList
 
     const bool onlyOneTag = allTags.count() == 1;
 
-    for (const QString &tagName : qAsConst(allTags)) {
+    for (const QString &tagName : std::as_const(allTags)) {
         QAction *action = tagsMenu->addAction(QIcon::fromTheme(QStringLiteral("tag")), tagName);
         action->setCheckable(true);
         action->setChecked(m_searchTags.contains(tagName));
index c81078095c1574e3023faf5a7c80bd41e196afc8..a1fada2adc8c4dde1a6e2d6b29163be2ab18c95f 100644 (file)
@@ -9,18 +9,14 @@
 #include "dolphin_contextmenusettings.h"
 #include "dolphin_versioncontrolsettings.h"
 #include "global.h"
-#include "settings/serviceitemdelegate.h"
 #include "settings/servicemodel.h"
 
 #include <KDesktopFile>
-#include <KDesktopFileActions>
 #include <KFileUtils>
 #include <KLocalizedString>
 #include <KMessageBox>
 #include <KPluginMetaData>
 #include <KService>
-#include <KServiceTypeTrader>
-#include <kio_version.h>
 #include <kiocore_export.h>
 #include <kservice_export.h>
 #include <kwidgetsaddons_version.h>
@@ -73,7 +69,6 @@ ContextMenuSettingsPage::ContextMenuSettingsPage(QWidget *parent, const KActionC
     m_listView = new QListView(this);
     QScroller::grabGesture(m_listView->viewport(), QScroller::TouchGesture);
 
-    auto *delegate = new ServiceItemDelegate(m_listView, m_listView);
     m_serviceModel = new ServiceModel(this);
     m_sortModel = new QSortFilterProxyModel(this);
     m_sortModel->setSourceModel(m_serviceModel);
@@ -82,7 +77,6 @@ ContextMenuSettingsPage::ContextMenuSettingsPage(QWidget *parent, const KActionC
     m_sortModel->setFilterRole(Qt::DisplayRole);
     m_sortModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
     m_listView->setModel(m_sortModel);
-    m_listView->setItemDelegate(delegate);
     m_listView->setVerticalScrollMode(QListView::ScrollPerPixel);
     connect(m_listView, &QListView::clicked, this, &ContextMenuSettingsPage::changed);
 
@@ -179,7 +173,7 @@ void ContextMenuSettingsPage::applySettings()
     for (int i = 0; i < m_serviceModel->rowCount(); ++i) {
         const QModelIndex index = m_serviceModel->index(i, 0);
         const QString service = m_serviceModel->data(index, ServiceModel::DesktopEntryNameRole).toString();
-        const bool checked = m_serviceModel->data(index, Qt::CheckStateRole).toBool();
+        const bool checked = m_serviceModel->data(index, Qt::CheckStateRole).value<Qt::CheckState>() == Qt::Checked;
 
         if (service.startsWith(VersionControlServicePrefix)) {
             if (checked) {
@@ -234,7 +228,7 @@ void ContextMenuSettingsPage::restoreDefaults()
 
         const bool checked =
             !service.startsWith(VersionControlServicePrefix) && service != QLatin1String(DeleteService) && service != QLatin1String(CopyToMoveToService);
-        m_serviceModel->setData(index, checked, Qt::CheckStateRole);
+        m_serviceModel->setData(index, checked ? Qt::Checked : Qt::Unchecked, Qt::CheckStateRole);
     }
 }
 
@@ -261,7 +255,7 @@ void ContextMenuSettingsPage::showEvent(QShowEvent *event)
             for (const QString &id : m_actionIds) {
                 const QAction *action = m_actions->action(id);
                 if (action) {
-                    addRow(action->icon().name(), action->text(), id, entryVisible(id));
+                    addRow(action->icon().name(), KLocalizedString::removeAcceleratorMarker(action->text()), id, entryVisible(id));
                 }
             }
         }
@@ -282,15 +276,8 @@ void ContextMenuSettingsPage::loadServices()
     const auto locations = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("kio/servicemenus"), QStandardPaths::LocateDirectory);
     QStringList files = KFileUtils::findAllUniqueFiles(locations);
 
-#if KIOWIDGETS_BUILD_DEPRECATED_SINCE(5, 90)
-    const KService::List services = KServiceTypeTrader::self()->query(QStringLiteral("KonqPopupMenu/Plugin"));
-    for (const KService::Ptr &service : services) {
-        files << QStandardPaths::locate(QStandardPaths::GenericDataLocation, "kservices5/" % service->entryPath());
-    }
-#endif
-
-    for (const auto &file : qAsConst(files)) {
-        const QList<KServiceAction> serviceActions = KDesktopFileActions::userDefinedServices(KService(file), true);
+    for (const auto &file : std::as_const(files)) {
+        const QList<KServiceAction> serviceActions = KService(file).actions();
 
         const KDesktopFile desktopFile(file);
         const QString subMenuName = desktopFile.desktopGroup().readEntry("X-KDE-Submenu");
@@ -307,20 +294,8 @@ void ContextMenuSettingsPage::loadServices()
         }
     }
 
-    // Load service plugins, this is deprecated in KIO 5.82
-#if KIOCORE_BUILD_DEPRECATED_SINCE(5, 82)
-    const KService::List pluginServices = KServiceTypeTrader::self()->query(QStringLiteral("KFileItemAction/Plugin"));
-    for (const KService::Ptr &service : pluginServices) {
-        const QString desktopEntryName = service->desktopEntryName();
-        if (!isInServicesList(desktopEntryName)) {
-            const bool checked = showGroup.readEntry(desktopEntryName, true);
-            addRow(service->icon(), service->name(), desktopEntryName, checked);
-        }
-    }
-#endif
-
     // 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("kf6/kfileitemaction"));
 
     for (const auto &jsonMetadata : jsonPlugins) {
         const QString desktopEntryName = jsonMetadata.pluginId();
@@ -370,7 +345,7 @@ void ContextMenuSettingsPage::addRow(const QString &icon, const QString &text, c
     m_serviceModel->setData(index, icon, Qt::DecorationRole);
     m_serviceModel->setData(index, text, Qt::DisplayRole);
     m_serviceModel->setData(index, value, ServiceModel::DesktopEntryNameRole);
-    m_serviceModel->setData(index, checked, Qt::CheckStateRole);
+    m_serviceModel->setData(index, checked ? Qt::Checked : Qt::Unchecked, Qt::CheckStateRole);
 }
 
 #include "moc_contextmenusettingspage.cpp"
index 74576ad207868b4f6573012665497754205e64a0..603e5c2e51970e9e456786e9c3feb3dddaf2fedf 100644 (file)
@@ -5,8 +5,8 @@ add_executable(servicemenuinstaller servicemenuinstaller.cpp)
 target_link_libraries(servicemenuinstaller PRIVATE
     Qt${QT_MAJOR_VERSION}::Core
     Qt${QT_MAJOR_VERSION}::Gui
-    KF5::I18n
-    KF5::CoreAddons
+    KF6::I18n
+    KF6::CoreAddons
 )
 
 if(HAVE_PACKAGEKIT)
index acee97cf1d4c341b76e605919dd13ecc6565b8a2..fa7369e06a1399f74b97d9ed28c6f404d90b3b19 100644 (file)
@@ -172,7 +172,7 @@ void runUncompress(const QString &inputPath, const QString &outputPath)
     const auto mime = QMimeDatabase().mimeTypeForFile(inputPath).name();
 
     UncompressCommand command{};
-    for (const auto &pair : qAsConst(mimeTypeToCommand)) {
+    for (const auto &pair : std::as_const(mimeTypeToCommand)) {
         if (pair.first.contains(mime)) {
             command = pair.second;
             break;
index d05d5a81414ec37a5f20444da313a6970b20bf36..8c41794e93b593d9b11a9ffeda3b6208c44c7dd3 100644 (file)
@@ -130,7 +130,7 @@ void DolphinSettingsDialog::enableApply()
 
 void DolphinSettingsDialog::applySettings()
 {
-    for (SettingsPageBase *page : qAsConst(m_pages)) {
+    for (SettingsPageBase *page : std::as_const(m_pages)) {
         page->applySettings();
     }
 
@@ -149,7 +149,7 @@ void DolphinSettingsDialog::applySettings()
 
 void DolphinSettingsDialog::restoreDefaults()
 {
-    for (SettingsPageBase *page : qAsConst(m_pages)) {
+    for (SettingsPageBase *page : std::as_const(m_pages)) {
         page->restoreDefaults();
     }
 }
diff --git a/src/settings/interface/configurepreviewplugindialog.cpp b/src/settings/interface/configurepreviewplugindialog.cpp
deleted file mode 100644 (file)
index 8846d82..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2011 Peter Penz <peter.penz19@gmail.com>
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-#include "configurepreviewplugindialog.h"
-
-#if KIOWIDGETS_BUILD_DEPRECATED_SINCE(5, 87)
-
-#include <KIO/DeleteJob>
-#include <KIO/JobUiDelegate>
-#include <KIO/ThumbCreator>
-#include <KJobWidgets>
-#include <KLocalizedString>
-#include <QPluginLoader>
-
-#include <QDialogButtonBox>
-#include <QPushButton>
-#include <QStandardPaths>
-#include <QUrl>
-#include <QVBoxLayout>
-
-ConfigurePreviewPluginDialog::ConfigurePreviewPluginDialog(const QString &pluginName, const QString &desktopEntryName, QWidget *parent)
-    : QDialog(parent)
-{
-    QSharedPointer<ThumbCreator> previewPlugin;
-    const QString pluginPath = QPluginLoader(desktopEntryName).fileName();
-    if (!pluginPath.isEmpty()) {
-        newCreator create = (newCreator)QLibrary::resolve(pluginPath, "new_creator");
-        if (create) {
-            previewPlugin.reset(dynamic_cast<ThumbCreator *>(create()));
-        }
-    }
-
-    setWindowTitle(i18nc("@title:window", "Configure Preview for %1", pluginName));
-    setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum);
-    setMinimumWidth(400);
-
-    auto layout = new QVBoxLayout(this);
-
-    if (previewPlugin) {
-        auto configurationWidget = previewPlugin->createConfigurationWidget();
-        configurationWidget->setParent(this);
-        layout->addWidget(configurationWidget);
-
-        layout->addStretch();
-
-        connect(this, &ConfigurePreviewPluginDialog::accepted, this, [=] {
-            // TODO: It would be great having a mechanism to tell PreviewJob that only previews
-            // for a specific MIME-type should be regenerated. As this is not available yet we
-            // delete the whole thumbnails directory.
-            previewPlugin->writeConfiguration(configurationWidget);
-
-            // https://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html#DIRECTORY
-            const QString thumbnailsPath = QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation) + QLatin1String("/thumbnails/");
-            KIO::del(QUrl::fromLocalFile(thumbnailsPath), KIO::HideProgressInfo);
-        });
-    }
-
-    auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
-    connect(buttonBox, &QDialogButtonBox::accepted, this, &ConfigurePreviewPluginDialog::accept);
-    connect(buttonBox, &QDialogButtonBox::rejected, this, &ConfigurePreviewPluginDialog::reject);
-    layout->addWidget(buttonBox);
-
-    auto okButton = buttonBox->button(QDialogButtonBox::Ok);
-    okButton->setShortcut(Qt::CTRL | Qt::Key_Return);
-    okButton->setDefault(true);
-}
-
-#include "moc_configurepreviewplugindialog.cpp"
-
-#endif // KIO_VERSION
diff --git a/src/settings/interface/configurepreviewplugindialog.h b/src/settings/interface/configurepreviewplugindialog.h
deleted file mode 100644 (file)
index 66504cc..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2011 Peter Penz <peter.penz19@gmail.com>
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-#ifndef CONFIGUREPREVIEWPLUGINDIALOG_H
-#define CONFIGUREPREVIEWPLUGINDIALOG_H
-
-#include <kiowidgets_export.h>
-
-#if KIOWIDGETS_BUILD_DEPRECATED_SINCE(5, 87)
-
-#include <QDialog>
-
-/**
- * @brief Dialog for configuring preview-plugins.
- */
-class ConfigurePreviewPluginDialog : public QDialog
-{
-    Q_OBJECT
-
-public:
-    /**
-     * @param pluginName       User visible name of the plugin
-     * @param desktopEntryName The name of the plugin that is noted in the desktopentry.
-     *                         Is used to instantiate the plugin to get the configuration
-     *                         widget.
-     * @param parent           Parent widget.
-     */
-    ConfigurePreviewPluginDialog(const QString &pluginName, const QString &desktopEntryName, QWidget *parent);
-    ~ConfigurePreviewPluginDialog() override = default;
-};
-#endif // KIOWIDGETS_BUILD_DEPRECATED_SINCE
-
-#endif
index d71ad2d96b01922c960ba400e22d1d787b235ba2..85a0e8e132d3886d1f6f35cc5142c0fb998ce8ba 100644 (file)
@@ -160,7 +160,7 @@ void FoldersTabsSettingsPage::applySettings()
     settings->setCloseActiveSplitView(m_closeActiveSplitView->isChecked());
     const QUrl url(QUrl::fromUserInput(m_homeUrl->text(), QString(), QUrl::AssumeLocalFile));
     if (url.isValid() && KProtocolManager::supportsListing(url)) {
-        KIO::StatJob *job = KIO::statDetails(url, KIO::StatJob::SourceSide, KIO::StatDetail::StatBasic, KIO::JobFlag::HideProgressInfo);
+        KIO::StatJob *job = KIO::stat(url, KIO::StatJob::SourceSide, KIO::StatDetail::StatBasic, KIO::JobFlag::HideProgressInfo);
         connect(job, &KJob::result, this, [this, settings, url](KJob *job) {
             if (job->error() == 0 && qobject_cast<KIO::StatJob *>(job)->statResult().isDir()) {
                 settings->setHomeUrl(url.toDisplayString(QUrl::PreferLocalFile));
index e941cf46786f973da208e0a9fca0c417953f863e..6a3fc8c905dd6636d6e684d3be18bfe7e843f891 100644 (file)
@@ -59,14 +59,14 @@ InterfaceSettingsPage::~InterfaceSettingsPage()
 
 void InterfaceSettingsPage::applySettings()
 {
-    for (SettingsPageBase *page : qAsConst(m_pages)) {
+    for (SettingsPageBase *page : std::as_const(m_pages)) {
         page->applySettings();
     }
 }
 
 void InterfaceSettingsPage::restoreDefaults()
 {
-    for (SettingsPageBase *page : qAsConst(m_pages)) {
+    for (SettingsPageBase *page : std::as_const(m_pages)) {
         page->restoreDefaults();
     }
 }
index ef98d0f8d368b82f304de7c3f02bb7ebd1846503..dd1ce942e076ee94898addf935e2ce2b94dad308 100644 (file)
@@ -6,9 +6,7 @@
 
 #include "previewssettingspage.h"
 
-#include "configurepreviewplugindialog.h"
 #include "dolphin_generalsettings.h"
-#include "settings/serviceitemdelegate.h"
 #include "settings/servicemodel.h"
 
 #include <KIO/PreviewJob>
@@ -45,12 +43,6 @@ PreviewsSettingsPage::PreviewsSettingsPage(QWidget *parent)
     m_listView = new QListView(this);
     QScroller::grabGesture(m_listView->viewport(), QScroller::TouchGesture);
 
-#if KIOWIDGETS_BUILD_DEPRECATED_SINCE(5, 87)
-    ServiceItemDelegate *delegate = new ServiceItemDelegate(m_listView, m_listView);
-    connect(delegate, &ServiceItemDelegate::requestServiceConfiguration, this, &PreviewsSettingsPage::configureService);
-    m_listView->setItemDelegate(delegate);
-#endif
-
     ServiceModel *serviceModel = new ServiceModel(this);
     QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(this);
     proxyModel->setSourceModel(serviceModel);
@@ -111,7 +103,7 @@ void PreviewsSettingsPage::applySettings()
         m_enabledPreviewPlugins.clear();
         for (int i = 0; i < rowCount; ++i) {
             const QModelIndex index = model->index(i, 0);
-            const bool checked = model->data(index, Qt::CheckStateRole).toBool();
+            const bool checked = model->data(index, Qt::CheckStateRole).value<Qt::CheckState>() == Qt::Checked;
             if (checked) {
                 const QString enabledPlugin = model->data(index, Qt::UserRole).toString();
                 m_enabledPreviewPlugins.append(enabledPlugin);
@@ -150,19 +142,6 @@ void PreviewsSettingsPage::showEvent(QShowEvent *event)
     SettingsPageBase::showEvent(event);
 }
 
-#if KIOWIDGETS_BUILD_DEPRECATED_SINCE(5, 87)
-void PreviewsSettingsPage::configureService(const QModelIndex &index)
-{
-    const QAbstractItemModel *model = index.model();
-    const QString pluginName = model->data(index).toString();
-    const QString desktopEntryName = model->data(index, ServiceModel::DesktopEntryNameRole).toString();
-
-    ConfigurePreviewPluginDialog *dialog = new ConfigurePreviewPluginDialog(pluginName, desktopEntryName, this);
-    dialog->setAttribute(Qt::WA_DeleteOnClose);
-    dialog->show();
-}
-#endif
-
 void PreviewsSettingsPage::loadPreviewPlugins()
 {
     QAbstractItemModel *model = m_listView->model();
@@ -173,14 +152,9 @@ void PreviewsSettingsPage::loadPreviewPlugins()
 
         model->insertRow(0);
         const QModelIndex index = model->index(0, 0);
-        model->setData(index, show, Qt::CheckStateRole);
+        model->setData(index, show ? Qt::Checked : Qt::Unchecked, Qt::CheckStateRole);
         model->setData(index, plugin.name(), Qt::DisplayRole);
         model->setData(index, plugin.pluginId(), ServiceModel::DesktopEntryNameRole);
-
-#if KIOWIDGETS_BUILD_DEPRECATED_SINCE(5, 87)
-        const bool configurable = plugin.value(QStringLiteral("Configurable"), false);
-        model->setData(index, configurable, ServiceModel::ConfigurableRole);
-#endif
     }
 
     model->sort(Qt::DisplayRole);
index 2c3e4dfeffd7ffd8dc9e711f72fc8d0db235c1b0..d6d22ae218d95dd2e63d025fc9878519b426443c 100644 (file)
@@ -40,9 +40,6 @@ protected:
     void showEvent(QShowEvent *event) override;
 
 private Q_SLOTS:
-#if KIOWIDGETS_BUILD_DEPRECATED_SINCE(5, 87)
-    void configureService(const QModelIndex &index);
-#endif
 
 private:
     void loadPreviewPlugins();
index 32241d1123a38f8fac9088247ab0f54418631858..b98eb86a1ca126cf4534f59a82edf7a19c19dc66 100644 (file)
 
 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(parent, data)
     , m_pages()
 {
     setButtons(KCModule::Default | KCModule::Help | KCModule::Apply);
 
-    QVBoxLayout *topLayout = new QVBoxLayout(this);
+    QVBoxLayout *topLayout = new QVBoxLayout(widget());
     topLayout->setContentsMargins(0, 0, 0, 0);
 
-    QTabWidget *tabWidget = new QTabWidget(this);
+    QTabWidget *tabWidget = new QTabWidget(widget());
 
     // initialize 'Folders & Tabs' tab
     FoldersTabsSettingsPage *foldersTabsPage = new FoldersTabsSettingsPage(tabWidget);
@@ -58,14 +58,14 @@ DolphinGeneralConfigModule::~DolphinGeneralConfigModule()
 
 void DolphinGeneralConfigModule::save()
 {
-    for (SettingsPageBase *page : qAsConst(m_pages)) {
+    for (SettingsPageBase *page : std::as_const(m_pages)) {
         page->applySettings();
     }
 }
 
 void DolphinGeneralConfigModule::defaults()
 {
-    for (SettingsPageBase *page : qAsConst(m_pages)) {
+    for (SettingsPageBase *page : std::as_const(m_pages)) {
         page->applySettings();
     }
 }
index 889317738796c1ce93922cfeb12c41b2320116d5..828332539e0750dc2b9aec47a022339774112991 100644 (file)
@@ -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
new file mode 100644 (file)
index 0000000..6f699f8
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * SPDX-FileCopyrightText: 2009 Peter Penz <peter.penz19@gmail.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "kcmdolphinnavigation.h"
+
+#include "settings/navigation/navigationsettingspage.h"
+#include <kconfigwidgets_version.h>
+
+#include <KPluginFactory>
+
+#include <QVBoxLayout>
+
+K_PLUGIN_CLASS_WITH_JSON(DolphinNavigationConfigModule, "kcmdolphinnavigation.json")
+
+DolphinNavigationConfigModule::DolphinNavigationConfigModule(QObject *parent)
+    : KCModule(parent)
+    , m_navigation(nullptr)
+{
+    setButtons(KCModule::Default | KCModule::Help | KCModule::Apply);
+
+    QVBoxLayout *topLayout = new QVBoxLayout(widget());
+    topLayout->setContentsMargins(0, 0, 0, 0);
+
+    m_navigation = new NavigationSettingsPage(widget());
+    connect(m_navigation, &NavigationSettingsPage::changed, this, &DolphinNavigationConfigModule::markAsChanged);
+    topLayout->addWidget(m_navigation, 0, {});
+}
+
+DolphinNavigationConfigModule::~DolphinNavigationConfigModule()
+{
+}
+
+void DolphinNavigationConfigModule::save()
+{
+    m_navigation->applySettings();
+}
+
+void DolphinNavigationConfigModule::defaults()
+{
+    m_navigation->restoreDefaults();
+}
+
+#include "kcmdolphinnavigation.moc"
+
+#include "moc_kcmdolphinnavigation.cpp"
diff --git a/src/settings/kcm/kcmdolphinnavigation.h b/src/settings/kcm/kcmdolphinnavigation.h
new file mode 100644 (file)
index 0000000..a254051
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * SPDX-FileCopyrightText: 2009 Peter Penz <peter.penz19@gmail.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#ifndef KCMDOLPHINNAVIGATION_H
+#define KCMDOLPHINNAVIGATION_H
+
+#include <KCModule>
+
+class NavigationSettingsPage;
+
+/**
+ * @brief Allow to configure the Dolphin navigation.
+ */
+class DolphinNavigationConfigModule : public KCModule
+{
+    Q_OBJECT
+
+public:
+    DolphinNavigationConfigModule(QObject *parent);
+    ~DolphinNavigationConfigModule() override;
+
+    void save() override;
+    void defaults() override;
+
+private:
+    NavigationSettingsPage *m_navigation;
+};
+
+#endif
index 962f0f11258a61b2d98b987e19fed3b5d33564b7..e4755a1c5e0d72a3f2166dd4f96e43b8498ed683 100644 (file)
@@ -8,6 +8,7 @@
 
 #include "settings/viewmodes/viewsettingstab.h"
 
+#include <KCModule>
 #include <KLocalizedString>
 #include <KPluginFactory>
 
 
 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(parent, data)
     , m_tabs()
 {
     setButtons(KCModule::Default | KCModule::Help | KCModule::Apply);
 
-    QVBoxLayout *topLayout = new QVBoxLayout(this);
+    QVBoxLayout *topLayout = new QVBoxLayout(widget());
     topLayout->setContentsMargins(0, 0, 0, 0);
 
-    QTabWidget *tabWidget = new QTabWidget(this);
+    QTabWidget *tabWidget = new QTabWidget(widget());
 
     // Initialize 'Icons' tab
     ViewSettingsTab *iconsTab = new ViewSettingsTab(ViewSettingsTab::IconsMode, tabWidget);
@@ -58,7 +59,7 @@ DolphinViewModesConfigModule::~DolphinViewModesConfigModule()
 
 void DolphinViewModesConfigModule::save()
 {
-    for (ViewSettingsTab *tab : qAsConst(m_tabs)) {
+    for (ViewSettingsTab *tab : std::as_const(m_tabs)) {
         tab->applySettings();
     }
     reparseConfiguration();
@@ -66,7 +67,7 @@ void DolphinViewModesConfigModule::save()
 
 void DolphinViewModesConfigModule::defaults()
 {
-    for (ViewSettingsTab *tab : qAsConst(m_tabs)) {
+    for (ViewSettingsTab *tab : std::as_const(m_tabs)) {
         tab->restoreDefaults();
     }
     reparseConfiguration();
index 33c0b77a520eb1902c08596635022befee047188..59cbca31414129ed3c06f3888cceb4aee1a7d9e3 100644 (file)
@@ -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/serviceitemdelegate.cpp b/src/settings/serviceitemdelegate.cpp
deleted file mode 100644 (file)
index ea3a5fe..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2011 Peter Penz <peter.penz19@gmail.com>
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-#include "serviceitemdelegate.h"
-
-#include "servicemodel.h"
-
-#include <QAbstractItemView>
-#include <QCheckBox>
-#include <QPainter>
-#include <QPushButton>
-
-ServiceItemDelegate::ServiceItemDelegate(QAbstractItemView *itemView, QObject *parent)
-    : KWidgetItemDelegate(itemView, parent)
-{
-}
-
-ServiceItemDelegate::~ServiceItemDelegate()
-{
-}
-
-QSize ServiceItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
-{
-    Q_UNUSED(index)
-
-    const QStyle *style = itemView()->style();
-    const int buttonHeight = style->pixelMetric(QStyle::PM_ButtonMargin) * 2 + style->pixelMetric(QStyle::PM_ButtonIconSize);
-    const int fontHeight = option.fontMetrics.height();
-    return QSize(100, qMax(buttonHeight, fontHeight));
-}
-
-void ServiceItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
-{
-    Q_UNUSED(index)
-    painter->save();
-
-    itemView()->style()->drawPrimitive(QStyle::PE_PanelItemViewItem, &option, painter);
-
-    if (option.state & QStyle::State_Selected) {
-        painter->setPen(option.palette.highlightedText().color());
-    }
-
-    painter->restore();
-}
-
-QList<QWidget *> ServiceItemDelegate::createItemWidgets(const QModelIndex &) const
-{
-    QCheckBox *checkBox = new QCheckBox();
-    QPalette palette = checkBox->palette();
-    palette.setColor(QPalette::WindowText, palette.color(QPalette::Text));
-    checkBox->setPalette(palette);
-    connect(checkBox, &QCheckBox::clicked, this, &ServiceItemDelegate::slotCheckBoxClicked);
-
-    QPushButton *configureButton = new QPushButton();
-    connect(configureButton, &QPushButton::clicked, this, &ServiceItemDelegate::slotConfigureButtonClicked);
-
-    return {checkBox, configureButton};
-}
-
-void ServiceItemDelegate::updateItemWidgets(const QList<QWidget *> widgets, const QStyleOptionViewItem &option, const QPersistentModelIndex &index) const
-{
-    QCheckBox *checkBox = static_cast<QCheckBox *>(widgets[0]);
-    QPushButton *configureButton = static_cast<QPushButton *>(widgets[1]);
-
-    const int itemHeight = sizeHint(option, index).height();
-
-    // Update the checkbox showing the service name and icon
-    const QAbstractItemModel *model = index.model();
-    checkBox->setText(model->data(index).toString());
-    const QString iconName = model->data(index, Qt::DecorationRole).toString();
-    if (!iconName.isEmpty()) {
-        checkBox->setIcon(QIcon::fromTheme(iconName));
-    }
-    checkBox->setChecked(model->data(index, Qt::CheckStateRole).toBool());
-
-    const bool configurable = model->data(index, ServiceModel::ConfigurableRole).toBool();
-
-    int checkBoxWidth = option.rect.width();
-    if (configurable) {
-        checkBoxWidth -= configureButton->sizeHint().width();
-    }
-    checkBox->resize(checkBoxWidth, checkBox->sizeHint().height());
-    checkBox->move(0, (itemHeight - checkBox->height()) / 2);
-
-    // Update the configuration button
-    if (configurable) {
-        configureButton->setEnabled(checkBox->isChecked());
-        configureButton->setIcon(QIcon::fromTheme(QStringLiteral("configure")));
-        configureButton->resize(configureButton->sizeHint());
-        configureButton->move(option.rect.right() - configureButton->width(), (itemHeight - configureButton->height()) / 2);
-    }
-    configureButton->setVisible(configurable);
-}
-
-void ServiceItemDelegate::slotCheckBoxClicked(bool checked)
-{
-    QAbstractItemModel *model = const_cast<QAbstractItemModel *>(focusedIndex().model());
-    model->setData(focusedIndex(), checked, Qt::CheckStateRole);
-}
-
-void ServiceItemDelegate::slotConfigureButtonClicked()
-{
-    Q_EMIT requestServiceConfiguration(focusedIndex());
-}
-
-#include "moc_serviceitemdelegate.cpp"
diff --git a/src/settings/serviceitemdelegate.h b/src/settings/serviceitemdelegate.h
deleted file mode 100644 (file)
index 74f7dfd..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2011 Peter Penz <peter.penz19@gmail.com>
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-#ifndef SERVICEITEMDELEGATE_H
-#define SERVICEITEMDELEGATE_H
-
-#include <KWidgetItemDelegate>
-
-/**
- * @brief Widget item delegate for a service that can be enabled or disabled.
- *
- * Additionally it is possible to configure a service.
- * @see ServiceModel
- */
-class ServiceItemDelegate : public KWidgetItemDelegate
-{
-    Q_OBJECT
-
-public:
-    explicit ServiceItemDelegate(QAbstractItemView *itemView, QObject *parent = nullptr);
-    ~ServiceItemDelegate() override;
-
-    QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override;
-
-    void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
-
-    QList<QWidget *> createItemWidgets(const QModelIndex &) const override;
-
-    void updateItemWidgets(const QList<QWidget *> widgets, const QStyleOptionViewItem &option, const QPersistentModelIndex &index) const override;
-
-Q_SIGNALS:
-    void requestServiceConfiguration(const QModelIndex &index);
-
-private Q_SLOTS:
-    void slotCheckBoxClicked(bool checked);
-    void slotConfigureButtonClicked();
-};
-
-#endif
index 07a804e339bb269c284399387332ce417eda5fe1..c2ebda7c16338e74bb2b6c8932cca8abe30c9e1d 100644 (file)
@@ -6,6 +6,8 @@
 
 #include "servicemodel.h"
 
+#include <QIcon>
+
 ServiceModel::ServiceModel(QObject *parent)
     : QAbstractListModel(parent)
     , m_items()
@@ -29,8 +31,7 @@ bool ServiceModel::insertRows(int row, int count, const QModelIndex &parent)
     beginInsertRows(parent, row, row + count - 1);
     for (int i = 0; i < count; ++i) {
         ServiceItem item;
-        item.checked = false;
-        item.configurable = false;
+        item.checked = Qt::Unchecked;
         m_items.insert(row, item);
     }
     endInsertRows();
@@ -47,10 +48,7 @@ bool ServiceModel::setData(const QModelIndex &index, const QVariant &value, int
 
     switch (role) {
     case Qt::CheckStateRole:
-        m_items[row].checked = value.toBool();
-        break;
-    case ConfigurableRole:
-        m_items[row].configurable = value.toBool();
+        m_items[row].checked = value.value<Qt::CheckState>();
         break;
     case Qt::DecorationRole:
         m_items[row].icon = value.toString();
@@ -74,12 +72,10 @@ QVariant ServiceModel::data(const QModelIndex &index, int role) const
     const int row = index.row();
     if (row < rowCount()) {
         switch (role) {
-        case ConfigurableRole:
-            return m_items[row].configurable;
         case Qt::CheckStateRole:
             return m_items[row].checked;
         case Qt::DecorationRole:
-            return m_items[row].icon;
+            return QIcon::fromTheme(m_items[row].icon);
         case Qt::DisplayRole:
             return m_items[row].text;
         case DesktopEntryNameRole:
@@ -105,4 +101,9 @@ void ServiceModel::clear()
     endRemoveRows();
 }
 
+Qt::ItemFlags ServiceModel::flags(const QModelIndex &index) const
+{
+    return QAbstractListModel::flags(index) | Qt::ItemIsUserCheckable;
+}
+
 #include "moc_servicemodel.cpp"
index 23c752e934ddd196b387892e5e4cc87875aa7566..0abe1fe46f339c060000ae696878b6cbc8d55d7b 100644 (file)
@@ -25,7 +25,7 @@ class ServiceModel : public QAbstractListModel
     Q_OBJECT
 
 public:
-    enum Role { DesktopEntryNameRole = Qt::UserRole, ConfigurableRole };
+    enum Role { DesktopEntryNameRole = Qt::UserRole };
 
     explicit ServiceModel(QObject *parent = nullptr);
     ~ServiceModel() override;
@@ -35,11 +35,11 @@ public:
     QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
     int rowCount(const QModelIndex &parent = QModelIndex()) const override;
     void clear();
+    Qt::ItemFlags flags(const QModelIndex &index) const override;
 
 private:
     struct ServiceItem {
-        bool checked;
-        bool configurable;
+        Qt::CheckState checked;
         QString icon;
         QString text;
         QString desktopEntryName;
index 1920cd904cec99a6a5b348346905ff3dff6e8362..38a3d086581053d84a92f26df1aef6b4ac886778 100644 (file)
@@ -6,7 +6,8 @@
 
 #include "trashsettingspage.h"
 
-#include <KCModuleProxy>
+#include <KCModuleLoader>
+#include <KCModule>
 #include <KPluginMetaData>
 
 #include <QFormLayout>
@@ -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,17 +32,17 @@ 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();
 }
 
 #include "moc_trashsettingspage.cpp"
index b0e48a018defb506974af7cba4cb124c811493dc..a5253774cf43ff6dfa2a83bc0c9924bae10ac594 100644 (file)
@@ -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
index 6c205acee8131d5b417790970c9125d05ac8f46d..7d87cb2fc6f2f176f19d94286e61839a664d9fdc 100644 (file)
@@ -7,8 +7,8 @@
 #include "userfeedbacksettingspage.h"
 #include "userfeedback/dolphinfeedbackprovider.h"
 
-#include <KUserFeedback/FeedbackConfigWidget>
-#include <KUserFeedback/Provider>
+#include <KUserFeedbackQt6/FeedbackConfigWidget>
+#include <KUserFeedbackQt6/Provider>
 
 #include <QVBoxLayout>
 
index 5e740640ddf8c0dcb7e81e455724a4518d77c12f..7fccfc24afde9c7c53665f53ae9195b875a56307 100644 (file)
@@ -65,14 +65,14 @@ ViewSettingsPage::~ViewSettingsPage()
 
 void ViewSettingsPage::applySettings()
 {
-    for (SettingsPageBase *tab : qAsConst(m_tabs)) {
+    for (SettingsPageBase *tab : std::as_const(m_tabs)) {
         tab->applySettings();
     }
 }
 
 void ViewSettingsPage::restoreDefaults()
 {
-    for (SettingsPageBase *tab : qAsConst(m_tabs)) {
+    for (SettingsPageBase *tab : std::as_const(m_tabs)) {
         if (tabWidget->currentWidget() == tab) {
             tab->restoreDefaults();
             return;
index 660484e60d0bc55562cd497ecfb02074895c455a..67d341b3d10b4ba83886bade5cb7c82da01535d0 100644 (file)
@@ -29,14 +29,16 @@ void MountPointObserver::update()
         delete this;
     } else {
         KIO::FileSystemFreeSpaceJob *job = KIO::fileSystemFreeSpace(m_url);
-        connect(job, &KIO::FileSystemFreeSpaceJob::result, this, &MountPointObserver::freeSpaceResult);
+        connect(job, &KJob::result, this, &MountPointObserver::freeSpaceResult);
     }
 }
 
-void MountPointObserver::freeSpaceResult(KIO::Job *job, KIO::filesize_t size, KIO::filesize_t available)
+void MountPointObserver::freeSpaceResult(KJob *job)
 {
     if (!job->error()) {
-        Q_EMIT spaceInfoChanged(size, available);
+        KIO::FileSystemFreeSpaceJob *freeSpaceJob = qobject_cast<KIO::FileSystemFreeSpaceJob *>(job);
+        Q_ASSERT(freeSpaceJob);
+        Q_EMIT spaceInfoChanged(freeSpaceJob->size(), freeSpaceJob->availableSize());
     } else {
         Q_EMIT spaceInfoChanged(0, 0);
     }
index d26a0e7dea68f560d9d336147c855b69f06e18b7..4d1362cdb8bc0a9bcffa444fe5fccf6a5859e839 100644 (file)
@@ -87,7 +87,7 @@ public Q_SLOTS:
     void update();
 
 private Q_SLOTS:
-    void freeSpaceResult(KIO::Job *job, KIO::filesize_t size, KIO::filesize_t available);
+    void freeSpaceResult(KJob *job);
 
 private:
     const QUrl m_url;
index 8e0c6f11909a688d5df44b25590be5ccce4cf811..6431ff3fa9190b6f4c2b3feca040c6fd791e5c57 100644 (file)
@@ -43,14 +43,14 @@ target_link_libraries(kfileitemmodelbenchmark dolphinprivate Qt${QT_MAJOR_VERSIO
 ecm_add_test(kitemlistkeyboardsearchmanagertest.cpp LINK_LIBRARIES dolphinprivate Qt${QT_MAJOR_VERSION}::Test)
 
 # DolphinSearchBox
-if (KF5Baloo_FOUND)
+if (KF6Baloo_FOUND)
     ecm_add_test(dolphinsearchboxtest.cpp
     TEST_NAME dolphinsearchboxtest
     LINK_LIBRARIES dolphinprivate dolphinstatic Qt${QT_MAJOR_VERSION}::Test)
 endif()
 
 # DolphinQuery
-if (KF5Baloo_FOUND)
+if (KF6Baloo_FOUND)
     ecm_add_test(dolphinquerytest.cpp
     TEST_NAME dolphinquerytest
     LINK_LIBRARIES dolphinprivate dolphinstatic Qt${QT_MAJOR_VERSION}::Test)
index 0daf4abd0c83c1f2d5d4221e97bc7463272ae2ab..4eeb9ff55f38ec35087b5ae432513a0d7b5dc076 100644 (file)
@@ -74,7 +74,7 @@ void KFileItemModelBenchmark::insertAndRemoveManyItems_data()
     QList<int> sizes;
     sizes << 100000;
 
-    for (int n : qAsConst(sizes)) {
+    for (int n : std::as_const(sizes)) {
         QStringList allStrings;
         for (int i = 0; i < n; ++i) {
             allStrings << QString::number(i);
index 753960a08d6f8b0e0b42b4decec0d5639eb3a27f..16189a0fc647199335723f7cc98d3d987782db5e 100644 (file)
@@ -14,7 +14,6 @@
 
 #include <KDirLister>
 #include <kio/job.h>
-#include <kio_version.h>
 
 #include "kitemviews/kfileitemmodel.h"
 #include "testdir.h"
index 9d345fdd96995465b91fda46ddef69688626eb87..f462947c6d667e45629073fb69fd545c3865ff4d 100644 (file)
@@ -295,9 +295,9 @@ void KItemListControllerTest::testKeyboardNavigation_data()
             break;
         }
 
-        for (int columnCount : qAsConst(columnCountList)) {
-            for (const KItemListController::SelectionBehavior &selectionBehavior : qAsConst(selectionBehaviorList)) {
-                for (bool groupingEnabled : qAsConst(groupingEnabledList)) {
+        for (int columnCount : std::as_const(columnCountList)) {
+            for (const KItemListController::SelectionBehavior &selectionBehavior : std::as_const(selectionBehaviorList)) {
+                for (bool groupingEnabled : std::as_const(groupingEnabledList)) {
                     QList<QPair<KeyPress, ViewState>> testList;
 
                     // First, key presses which should have the same effect
index e0c536c6791b254e100cb1ec48656bf5350e04ac..0005daceb2ed4262b5d45bef5c682a004724874d 100644 (file)
@@ -66,11 +66,11 @@ static QSet<int> KItemSet2QSet(const KItemSet &itemSet)
     // Check that the conversion was successful.
     Q_ASSERT(itemSet.count() == result.count());
 
-    for (int i : qAsConst(itemSet)) {
+    for (int i : std::as_const(itemSet)) {
         Q_ASSERT(result.contains(i));
     }
 
-    for (int i : qAsConst(result)) {
+    for (int i : std::as_const(result)) {
         Q_ASSERT(itemSet.contains(i));
     }
 
index 007f48a335ec4bf2aee2537902e5db772502c8f0..dd71135a52b166cd980d904d2cde73b6cd1df188 100644 (file)
@@ -9,12 +9,11 @@
 
 #include <KConfig>
 #include <KConfigGroup>
+#include <KIO/DeleteOrTrashJob>
 #include <KLocalizedString>
 #include <KNotification>
-#include <QList>
 
-#include <KIO/DeleteOrTrashJob>
-#include <kio_version.h>
+#include <QList>
 
 Trash::Trash()
     : m_trashDirLister(new KDirLister())
@@ -51,7 +50,6 @@ static void notifyEmptied()
                          i18n("Trash Emptied"),
                          i18n("The Trash was emptied."),
                          QStringLiteral("user-trash"),
-                         nullptr,
                          KNotification::DefaultEvent);
 }
 
index 19526dc4d2429aa5ae959ed7b6046b72186e5960..f233fad462a37f491ea3312c6363269198320ca2 100644 (file)
@@ -8,13 +8,13 @@
 #include "placesdatasource.h"
 #include "settingsdatasource.h"
 
-#include <KUserFeedback/ApplicationVersionSource>
-#include <KUserFeedback/LocaleInfoSource>
-#include <KUserFeedback/PlatformInfoSource>
-#include <KUserFeedback/QtVersionSource>
-#include <KUserFeedback/ScreenInfoSource>
-#include <KUserFeedback/StartCountSource>
-#include <KUserFeedback/UsageTimeSource>
+#include <KUserFeedbackQt6/ApplicationVersionSource>
+#include <KUserFeedbackQt6/LocaleInfoSource>
+#include <KUserFeedbackQt6/PlatformInfoSource>
+#include <KUserFeedbackQt6/QtVersionSource>
+#include <KUserFeedbackQt6/ScreenInfoSource>
+#include <KUserFeedbackQt6/StartCountSource>
+#include <KUserFeedbackQt6/UsageTimeSource>
 
 DolphinFeedbackProvider *DolphinFeedbackProvider::instance()
 {
index 8be2f81b6fa1c4d2f1643617057401ad2871c699..3b85c7eb35c660cbc58f3db3bde86f1971c16417 100644 (file)
@@ -7,7 +7,7 @@
 #ifndef DOLPHINFEEDBACKPROVIDER_H
 #define DOLPHINFEEDBACKPROVIDER_H
 
-#include <KUserFeedback/Provider>
+#include <KUserFeedbackQt6/Provider>
 
 class DolphinFeedbackProvider : public KUserFeedback::Provider
 {
index cdbd5d7570aef0e52d9525f04e2b063e809e6f55..554194af75578996578da8d7f6fe817d450c87d9 100644 (file)
@@ -8,7 +8,7 @@
 
 #include <KLocalizedString>
 #include <KMountPoint>
-#include <KUserFeedback/Provider>
+#include <KUserFeedbackQt6/Provider>
 #include <Solid/Device>
 #include <Solid/NetworkShare>
 #include <Solid/StorageAccess>
index d4666af25f102d04e3e2ce620591a46439856d49..ad4c1725d6d32c3716c1d1d0fb7ff4d3773e6801 100644 (file)
@@ -7,7 +7,7 @@
 #ifndef PLACESDATASOURCE_H
 #define PLACESDATASOURCE_H
 
-#include <KUserFeedback/AbstractDataSource>
+#include <KUserFeedbackQt6/AbstractDataSource>
 
 class DolphinMainWindow;
 
index c517793adbd083d41af0674cc1c71cb7ea5bd385..d14fc0dbd94e1a79ec06f7f8889940caf8764eb4 100644 (file)
@@ -9,7 +9,7 @@
 #include "dolphinmainwindow.h"
 
 #include <KLocalizedString>
-#include <KUserFeedback/Provider>
+#include <KUserFeedbackQt6/Provider>
 
 #include <QApplication>
 #include <QVariant>
index 9804c78a790ea8e26a36eaa4a5d9e4d05c498736..cc843dec81c5a361010bfbf076d64d5e90ceef86 100644 (file)
@@ -7,7 +7,7 @@
 #ifndef SETTINGSDATASOURCE_H
 #define SETTINGSDATASOURCE_H
 
-#include <KUserFeedback/AbstractDataSource>
+#include <KUserFeedbackQt6/AbstractDataSource>
 
 class DolphinMainWindow;
 
index 2881915ac1cf0624a9e51d5aa73dc9b6edc34795..32dd6bd29086929844623ddd0969389695292f90 100644 (file)
@@ -87,7 +87,7 @@ void DolphinRemoteEncoding::fillMenu()
     QMenu *menu = m_menu->menu();
     menu->clear();
 
-    menu->addAction(i18n("Default"), this, SLOT(slotDefault()), 0)->setCheckable(true);
+    menu->addAction(i18n("Default"), this, &DolphinRemoteEncoding::slotDefault)->setCheckable(true);
     for (int i = 0; i < m_encodingDescriptions.size(); i++) {
         QAction *action = new QAction(m_encodingDescriptions.at(i), this);
         action->setCheckable(true);
@@ -96,7 +96,7 @@ void DolphinRemoteEncoding::fillMenu()
     }
     menu->addSeparator();
 
-    menu->addAction(i18n("Reload"), this, SLOT(slotReload()), 0);
+    menu->addAction(i18n("Reload"), this, &DolphinRemoteEncoding::slotReload);
     m_idDefault = m_encodingDescriptions.size() + 2;
 
     connect(menu, &QMenu::triggered, this, &DolphinRemoteEncoding::slotItemSelected);
index 0a1d70bf11e334fc3d644861f4209c5546f95fc1..0bb73e6234c24ae35e021694771cf8c81e64861a 100644 (file)
@@ -35,7 +35,7 @@
 #include <KFileItemListProperties>
 #include <KFormat>
 #include <KIO/CopyJob>
-#include <KIO/DeleteJob>
+#include <KIO/DeleteOrTrashJob>
 #include <KIO/DropJob>
 #include <KIO/JobUiDelegate>
 #include <KIO/Paste>
@@ -49,9 +49,6 @@
 
 #include <kwidgetsaddons_version.h>
 
-#include <KIO/DeleteOrTrashJob>
-#include <kio_version.h>
-
 #include <QAbstractItemView>
 #include <QActionGroup>
 #include <QApplication>
@@ -628,7 +625,7 @@ void DolphinView::requestStatusBarText()
             return;
         }
 
-        m_statJobForStatusBarText = KIO::statDetails(m_model->rootItem().url(), KIO::StatJob::SourceSide, KIO::StatRecursiveSize, KIO::HideProgressInfo);
+        m_statJobForStatusBarText = KIO::stat(m_model->rootItem().url(), KIO::StatJob::SourceSide, KIO::StatRecursiveSize, KIO::HideProgressInfo);
         connect(m_statJobForStatusBarText, &KJob::result, this, &DolphinView::slotStatJobResult);
         m_statJobForStatusBarText->start();
     }
index f73c613e0a57dc774fd62665ce4755788ffa9205..98cbbdf80092c2612638800a3b0c1eb6c52ea365 100644 (file)
@@ -216,7 +216,7 @@ void DolphinViewActionHandler::createActions(SelectionMode::ActionTextHelper *ac
     viewModeActions->addAction(compactAction);
     viewModeActions->addAction(detailsAction);
     viewModeActions->setToolBarMode(KSelectAction::MenuMode);
-    connect(viewModeActions, &KSelectAction::triggered, this, &DolphinViewActionHandler::slotViewModeActionTriggered);
+    connect(viewModeActions, &KSelectAction::actionTriggered, this, &DolphinViewActionHandler::slotViewModeActionTriggered);
 
     QAction *zoomInAction = KStandardAction::zoomIn(this, &DolphinViewActionHandler::zoomIn, m_actionCollection);
     zoomInAction->setWhatsThis(i18nc("@info:whatsthis zoom in", "This increases the icon size."));
@@ -715,7 +715,7 @@ void DolphinViewActionHandler::slotSortTriggered(QAction *action)
     // actions and the sub-menu-actions. If an action gets checked, it must
     // be assured that all other actions get unchecked, except the ascending/
     // descending actions
-    for (QAction *groupAction : qAsConst(m_sortByActions)) {
+    for (QAction *groupAction : std::as_const(m_sortByActions)) {
         KActionMenu *actionMenu = qobject_cast<KActionMenu *>(groupAction);
         if (actionMenu) {
             const auto actions = actionMenu->menu()->actions();
index e3bd293901c8f3551d7a530ff68699bf49d8256f..64f8843d29f22ae5ebdfceda48a854f61a3c4493 100644 (file)
@@ -105,7 +105,7 @@ QList<QAction *> VersionControlObserver::actions(const KFileItemList &items) con
         return m_plugin->versionControlActions(items);
     } else {
         QList<QAction *> actions;
-        for (const QPointer<KVersionControlPlugin> &plugin : qAsConst(m_plugins)) {
+        for (const QPointer<KVersionControlPlugin> &plugin : std::as_const(m_plugins)) {
             actions << plugin->outOfVersionControlActions(items);
         }
         return actions;
@@ -283,7 +283,7 @@ void VersionControlObserver::initPlugins()
             }
         }
 
-        for (auto &plugin : qAsConst(m_plugins)) {
+        for (auto &plugin : std::as_const(m_plugins)) {
             connect(plugin, &KVersionControlPlugin::itemVersionsChanged, this, &VersionControlObserver::silentDirectoryVerification);
             connect(plugin, &KVersionControlPlugin::infoMessage, this, &VersionControlObserver::infoMessage);
             connect(plugin, &KVersionControlPlugin::errorMessage, this, &VersionControlObserver::errorMessage);
@@ -299,7 +299,7 @@ KVersionControlPlugin *VersionControlObserver::searchPlugin(const QUrl &director
     initPlugins();
 
     // Verify whether the current directory is under a version system
-    for (const QPointer<KVersionControlPlugin> &plugin : qAsConst(m_plugins)) {
+    for (const QPointer<KVersionControlPlugin> &plugin : std::as_const(m_plugins)) {
         if (!plugin) {
             continue;
         }