]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Merge branch 'master' into kf6
authorNicolas Fella <nicolas.fella@gmx.de>
Wed, 5 Jul 2023 20:44:40 +0000 (22:44 +0200)
committerNicolas Fella <nicolas.fella@gmx.de>
Wed, 5 Jul 2023 20:44:40 +0000 (22:44 +0200)
30 files changed:
1  2 
src/dolphincontextmenu.cpp
src/dolphinmainwindow.cpp
src/dolphinnavigatorswidgetaction.cpp
src/dolphinnewfilemenu.cpp
src/dolphinpart.cpp
src/dolphinpart_ext.cpp
src/dolphintabbar.cpp
src/dolphintabwidget.cpp
src/dolphinviewcontainer.cpp
src/kitemviews/kfileitemmodel.cpp
src/kitemviews/kfileitemmodelrolesupdater.cpp
src/panels/folders/treeviewcontextmenu.cpp
src/panels/information/informationpanel.cpp
src/panels/information/informationpanelcontent.cpp
src/panels/information/phononwidget.cpp
src/panels/places/placespanel.cpp
src/settings/contextmenu/contextmenusettingspage.cpp
src/settings/general/previewssettingspage.cpp
src/settings/kcm/kcmdolphingeneral.cpp
src/settings/kcm/kcmdolphinnavigation.cpp
src/settings/kcm/kcmdolphinviewmodes.cpp
src/settings/serviceitemdelegate.cpp
src/settings/startup/startupsettingspage.cpp
src/settings/trash/trashsettingspage.cpp
src/settings/userfeedback/userfeedbacksettingspage.cpp
src/trash/dolphintrash.cpp
src/userfeedback/dolphinfeedbackprovider.cpp
src/views/dolphinremoteencoding.cpp
src/views/dolphinview.cpp
src/views/dolphinviewactionhandler.cpp

index 62990cab2b77cea1f4151a0854c38b5b147a6b78,445d3928644109dc46b60ecbf466a6761662cee2..e1c7b7ad2f83d3bfb31c11c4b608f0f18e248b12
@@@ -29,6 -29,7 +29,6 @@@
  #include <KLocalizedString>
  #include <KNewFileMenu>
  #include <KStandardAction>
 -#include <kio_version.h>
  
  #include <QApplication>
  #include <QClipboard>
@@@ -168,9 -169,13 +168,9 @@@ void DolphinContextMenu::addDirectoryIt
      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();
 -#if KIO_VERSION >= QT_VERSION_CHECK(5, 97, 0)
      newFileMenu->setWorkingDirectory(m_fileInfo.url());
 -#else
 -    newFileMenu->setPopupFiles(QList<QUrl>() << m_fileInfo.url());
 -#endif
      newFileMenu->setEnabled(selectedItemsProps.supportsWriting());
      connect(newFileMenu, &DolphinNewFileMenu::fileCreated, newFileMenu, &DolphinNewFileMenu::deleteLater);
      connect(newFileMenu, &DolphinNewFileMenu::directoryCreated, newFileMenu, &DolphinNewFileMenu::deleteLater);
@@@ -276,7 -281,11 +276,7 @@@ void DolphinContextMenu::addViewportCon
      // Set up and insert 'Create New' menu
      KNewFileMenu *newFileMenu = m_mainWindow->newFileMenu();
      newFileMenu->checkUpToDate();
 -#if KIO_VERSION >= QT_VERSION_CHECK(5, 97, 0)
      newFileMenu->setWorkingDirectory(m_baseUrl);
 -#else
 -    newFileMenu->setPopupFiles(QList<QUrl>() << m_baseUrl);
 -#endif
      addMenu(newFileMenu->menu());
  
      // Show "open with" menu items even if the dir is empty, because there are legitimate
@@@ -447,3 -456,5 +447,5 @@@ void DolphinContextMenu::addAdditionalA
          addSeparator();
      }
  }
+ #include "moc_dolphincontextmenu.cpp"
index 480e91727b64bac8813c0e77c4602cab796400ea,2baaa1198c9789cad1d2cd8dda2687266ac3834c..dbf0067d8b17c71b478a18237bce3d3dd3313db1
  #include <KDualAction>
  #include <KFileItemListProperties>
  #include <KIO/CommandLauncherJob>
 -#include <kio_version.h>
 -#if KIO_VERSION >= QT_VERSION_CHECK(5, 98, 0)
  #include <KIO/JobUiDelegateFactory>
 -#else
 -#include <KIO/JobUiDelegate>
 -#endif
  #include <KIO/OpenFileManagerWindowJob>
  #include <KIO/OpenUrlJob>
  #include <KJobWidgets>
@@@ -54,6 -59,7 +54,6 @@@
  #include <KShell>
  #include <KShortcutsDialog>
  #include <KStandardAction>
 -#include <KStartupInfo>
  #include <KSycoca>
  #include <KTerminalLauncherJob>
  #include <KToggleAction>
@@@ -64,6 -70,7 +64,6 @@@
  #include <KWindowSystem>
  #include <KXMLGUIFactory>
  
 -#include <kio_version.h>
  #include <kwidgetsaddons_version.h>
  
  #include <QApplication>
  
  #include <algorithm>
  
 +#if HAVE_X11
 +#include <KStartupInfo>
 +#endif
 +
  namespace
  {
  // Used for GeneralSettings::version() to determine whether
@@@ -162,9 -165,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);
  
@@@ -283,10 -283,8 +283,10 @@@ void DolphinMainWindow::activateWindow(
  
      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());
@@@ -511,7 -509,7 +511,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);
@@@ -678,12 -676,20 +678,12 @@@ void DolphinMainWindow::readProperties(
  void DolphinMainWindow::updateNewMenu()
  {
      m_newFileMenu->checkUpToDate();
 -#if KIO_VERSION >= QT_VERSION_CHECK(5, 97, 0)
      m_newFileMenu->setWorkingDirectory(activeViewContainer()->url());
 -#else
 -    m_newFileMenu->setPopupFiles(QList<QUrl>() << activeViewContainer()->url());
 -#endif
  }
  
  void DolphinMainWindow::createDirectory()
  {
 -#if KIO_VERSION >= QT_VERSION_CHECK(5, 97, 0)
      m_newFileMenu->setWorkingDirectory(activeViewContainer()->url());
 -#else
 -    m_newFileMenu->setPopupFiles(QList<QUrl>() << activeViewContainer()->url());
 -#endif
      m_newFileMenu->createDirectory();
  }
  
@@@ -1258,7 -1264,11 +1258,7 @@@ void DolphinMainWindow::handleUrl(cons
          activeViewContainer()->setUrl(url);
      } else {
          m_lastHandleUrlOpenJob = new KIO::OpenUrlJob(url);
 -#if KIO_VERSION >= QT_VERSION_CHECK(5, 98, 0)
          m_lastHandleUrlOpenJob->setUiDelegate(KIO::createDefaultJobUiDelegate(KJobUiDelegate::AutoHandlingEnabled, this));
 -#else
 -        m_lastHandleUrlOpenJob->setUiDelegate(new KIO::JobUiDelegate(KJobUiDelegate::AutoHandlingEnabled, this));
 -#endif
          m_lastHandleUrlOpenJob->setShowOpenOrExecuteDialog(true);
  
          connect(m_lastHandleUrlOpenJob, &KIO::OpenUrlJob::mimeTypeFound, this, [this, url](const QString &mimetype) {
@@@ -1532,8 -1542,7 +1532,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")));
      connect(moveToOtherViewAction, &QAction::triggered, this, &DolphinMainWindow::moveToInactiveSplitView);
  
      QAction *showFilterBar = actionCollection()->addAction(QStringLiteral("show_filter_bar"));
-     showFilterBar->setText(i18nc("@action:inmenu Tools", "Filter..."));
+     showFilterBar->setText(i18nc("@action:inmenu Tools", "Filter"));
      showFilterBar->setToolTip(i18nc("@info:tooltip", "Show Filter Bar"));
      showFilterBar->setWhatsThis(xi18nc("@info:whatsthis",
                                         "This opens the "
      connect(toggleFilter, &QAction::triggered, this, &DolphinMainWindow::toggleFilterBar);
  
      QAction *searchAction = KStandardAction::find(this, &DolphinMainWindow::find, actionCollection());
-     searchAction->setText(i18n("Search..."));
+     searchAction->setText(i18n("Search"));
      searchAction->setToolTip(i18nc("@info:tooltip", "Search for files and folders"));
      searchAction->setWhatsThis(xi18nc("@info:whatsthis find",
                                        "<para>This helps you "
@@@ -2689,3 -2698,5 +2689,5 @@@ bool DolphinMainWindow::isItemVisibleIn
  {
      return m_tabWidget->isItemVisibleInAnyView(QUrl::fromUserInput(urlOfItem));
  }
+ #include "moc_dolphinmainwindow.cpp"
index a68118395111f0984b2daa1f177a7aba0ff89e18,cadfbe9412ce4542c6d5de47effad8122a2605b2..7dc44f59db8904c115659070de4057256d3039fa
@@@ -42,7 -42,7 +42,7 @@@ DolphinNavigatorsWidgetAction::DolphinN
  
  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 +298,7 @@@ DolphinNavigatorsWidgetAction::ViewGeom
  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.
@@@ -357,3 -357,5 +357,5 @@@ DolphinNavigatorsWidgetAction::ViewGeom
      }
      return geometries;
  }
+ #include "moc_dolphinnavigatorswidgetaction.cpp"
index d499ae42c14c1c59e10d68a123c91c7287b6acbe,ec2f19d6e8818685b699aad76763b8c7d4ca313d..a64cf3def966207181535a555bcd60a65059382f
@@@ -8,14 -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);
  }
  
@@@ -32,3 -30,5 +32,5 @@@ void DolphinNewFileMenu::slotResult(KJo
          KNewFileMenu::slotResult(job);
      }
  }
+ #include "moc_dolphinnewfilemenu.cpp"
diff --combined src/dolphinpart.cpp
index 46b5e7e948dd607858e2118510585043171d56ff,f8da1c353dc02869fc379b99483474b56c47f70b..a3856de6a6a03eb79a4ce578ea121e9950315582
@@@ -33,6 -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 +85,7 @@@
      });
      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,21 -141,21 +141,21 @@@ 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);
  
      QAction *editMimeTypeAction = actionCollection()->addAction(QStringLiteral("editMimeType"));
-     editMimeTypeAction->setText(i18nc("@action:inmenu Edit", "&Edit File Type..."));
+     editMimeTypeAction->setText(i18nc("@action:inmenu Edit", "&Edit File Type"));
      connect(editMimeTypeAction, &QAction::triggered, this, &DolphinPart::slotEditMimeType);
  
      QAction *selectItemsMatching = actionCollection()->addAction(QStringLiteral("select_items_matching"));
-     selectItemsMatching->setText(i18nc("@action:inmenu Edit", "Select Items Matching..."));
+     selectItemsMatching->setText(i18nc("@action:inmenu Edit", "Select Items Matching"));
      actionCollection()->setDefaultShortcut(selectItemsMatching, Qt::CTRL | Qt::Key_S);
      connect(selectItemsMatching, &QAction::triggered, this, &DolphinPart::slotSelectItemsMatchingPattern);
  
      QAction *unselectItemsMatching = actionCollection()->addAction(QStringLiteral("unselect_items_matching"));
-     unselectItemsMatching->setText(i18nc("@action:inmenu Edit", "Unselect Items Matching..."));
+     unselectItemsMatching->setText(i18nc("@action:inmenu Edit", "Unselect Items Matching"));
      connect(unselectItemsMatching, &QAction::triggered, this, &DolphinPart::slotUnselectItemsMatchingPattern);
  
      KStandardAction::selectAll(m_view, &DolphinView::selectAll, actionCollection());
  
      // Tools menu
      m_findFileAction = KStandardAction::find(this, &DolphinPart::slotFindFile, actionCollection());
-     m_findFileAction->setText(i18nc("@action:inmenu Tools", "Find File..."));
+     m_findFileAction->setText(i18nc("@action:inmenu Tools", "Find File"));
  
  #ifndef Q_OS_WIN
      if (KAuthorized::authorize(QStringLiteral("shell_access"))) {
@@@ -362,8 -362,8 +362,8 @@@ void DolphinPart::createNewWindow(cons
  
  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);
  
  
      KFileItemListProperties capabilities(items);
  
 -    KParts::BrowserExtension::ActionGroupMap actionGroups;
 +    KParts::NavigationExtension::ActionGroupMap actionGroups;
      QList<QAction *> editActions;
      editActions += m_view->versionControlActions(m_view->selectedItems());
  
                  m_removeAction->update();
              }
          } else {
 -            popupFlags |= KParts::BrowserExtension::NoDeletion;
 +            popupFlags |= KParts::NavigationExtension::NoDeletion;
          }
  
          if (supportsMoving) {
          // 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);
@@@ -548,7 -548,11 +548,7 @@@ void DolphinPart::updateNewMenu(
      // As requested by KNewFileMenu :
      m_newFileMenu->checkUpToDate();
      // And set the files that the menu apply on :
 -#if KIO_VERSION >= QT_VERSION_CHECK(5, 97, 0)
      m_newFileMenu->setWorkingDirectory(url());
 -#else
 -    m_newFileMenu->setPopupFiles(QList<QUrl>() << url());
 -#endif
  }
  
  void DolphinPart::updateStatusBar()
@@@ -563,7 -567,11 +563,7 @@@ void DolphinPart::updateProgress(int pe
  
  void DolphinPart::createDirectory()
  {
 -#if KIO_VERSION >= QT_VERSION_CHECK(5, 97, 0)
      m_newFileMenu->setWorkingDirectory(url());
 -#else
 -    m_newFileMenu->setPopupFiles(QList<QUrl>() << url());
 -#endif
      m_newFileMenu->createDirectory();
  }
  
@@@ -596,3 -604,4 +596,4 @@@ bool DolphinPart::eventFilter(QObject *
  }
  
  #include "dolphinpart.moc"
+ #include "moc_dolphinpart.cpp"
diff --combined src/dolphinpart_ext.cpp
index 1aa16eeaa4e8fbf48509515105d9cd0c125baee9,0bb016ea9d72039d35e75ef675e4d9a3516e841c..5d48454858ce857a7d2e6ad5d36d37a93b37fc73
  #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);
  }
  
@@@ -166,3 -166,5 +166,5 @@@ void DolphinPartListingNotificationExte
  {
      Q_EMIT listingEvent(KParts::ListingNotificationExtension::ItemsDeleted, items);
  }
+ #include "moc_dolphinpart_ext.cpp"
diff --combined src/dolphintabbar.cpp
index ac9f1f734a097d75552d403f7e50bd87db3b31aa,a7799a669c3e3e84765db6996512543d3a79bbb1..c70089223da4a6b62525c46e6f0c1f7673ee742f
@@@ -32,7 -32,7 +32,7 @@@ DolphinTabBar::DolphinTabBar(QWidget *p
  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 +52,7 @@@ void DolphinTabBar::dragLeaveEvent(QDra
  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 +67,7 @@@ void DolphinTabBar::dropEvent(QDropEven
      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);
@@@ -172,3 -172,5 +172,5 @@@ void DolphinTabBar::updateAutoActivatio
          }
      }
  }
+ #include "moc_dolphintabbar.cpp"
diff --combined src/dolphintabwidget.cpp
index 2ceb3c7c61146876e53bea2913cb939c50c90a75,03f09ca86810378cad5cc52abb395fab54f1eb11..ff2f246aeda85846127d77fef7dccaef08efc6d3
@@@ -392,7 -392,7 +392,7 @@@ void DolphinTabWidget::tabDropEvent(in
          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);
@@@ -595,3 -595,5 +595,5 @@@ const std::optional<const DolphinTabWid
  
      return std::nullopt;
  }
+ #include "moc_dolphintabwidget.cpp"
index 12108b7294940594be81b6d60a349f40bfd47918,03e49985c1dfeb1b9dca6ee7bd7c38f419e39b8f..1199da6c50e587afc6540ea5e8d8d2e41a60a1e3
  #endif
  #include <KFileItemActions>
  #include <KFilePlacesModel>
 -#include <kio_version.h>
 -#if KIO_VERSION >= QT_VERSION_CHECK(5, 98, 0)
  #include <KIO/JobUiDelegateFactory>
 -#else
 -#include <KIO/JobUiDelegate>
 -#endif
  #include <KIO/OpenUrlJob>
  #include <KLocalizedString>
  #include <KMessageWidget>
  #include <KProtocolManager>
  #include <KShell>
  
+ #include <QApplication>
  #include <QDesktopServices>
  #include <QDropEvent>
  #include <QGridLayout>
@@@ -338,6 -344,9 +339,9 @@@ void DolphinViewContainer::setSelection
          }
          Q_CHECK_PTR(m_selectionModeTopBar); // there is no point in disabling selectionMode when it wasn't even enabled once.
          Q_CHECK_PTR(m_selectionModeBottomBar);
+         if (m_selectionModeTopBar->isAncestorOf(QApplication::focusWidget()) || m_selectionModeBottomBar->isAncestorOf(QApplication::focusWidget())) {
+             m_view->setFocus();
+         }
          m_selectionModeTopBar->setVisible(false, WithAnimation);
          m_selectionModeBottomBar->setVisible(false, WithAnimation);
          Q_EMIT selectionModeChanged(false);
@@@ -625,7 -634,7 +629,7 @@@ void DolphinViewContainer::updateStatus
  void DolphinViewContainer::updateDirectoryLoadingProgress(int percent)
  {
      if (m_statusBar->progressText().isEmpty()) {
-         m_statusBar->setProgressText(i18nc("@info:progress", "Loading folder..."));
+         m_statusBar->setProgressText(i18nc("@info:progress", "Loading folder"));
      }
      m_statusBar->setProgress(percent);
  }
  void DolphinViewContainer::updateDirectorySortingProgress(int percent)
  {
      if (m_statusBar->progressText().isEmpty()) {
-         m_statusBar->setProgressText(i18nc("@info:progress", "Sorting..."));
+         m_statusBar->setProgressText(i18nc("@info:progress", "Sorting"));
      }
      m_statusBar->setProgress(percent);
  }
@@@ -644,7 -653,7 +648,7 @@@ void DolphinViewContainer::slotDirector
          // Search KIO-slaves usually don't provide any progress information. Give
          // a hint to the user that a searching is done:
          updateStatusBar();
-         m_statusBar->setProgressText(i18nc("@info", "Searching..."));
+         m_statusBar->setProgressText(i18nc("@info", "Searching"));
          m_statusBar->setProgress(-1);
      } else {
          // Trigger an undetermined progress indication. The progress
@@@ -720,7 -729,11 +724,7 @@@ void DolphinViewContainer::slotItemActi
      }
  
      KIO::OpenUrlJob *job = new KIO::OpenUrlJob(item.targetUrl(), item.mimetype());
 -#if KIO_VERSION >= QT_VERSION_CHECK(5, 98, 0)
      job->setUiDelegate(KIO::createDefaultJobUiDelegate(KJobUiDelegate::AutoHandlingEnabled, this));
 -#else
 -    job->setUiDelegate(new KIO::JobUiDelegate(KJobUiDelegate::AutoHandlingEnabled, this));
 -#endif
      job->setShowOpenOrExecuteDialog(true);
      connect(job, &KIO::OpenUrlJob::finished, this, &DolphinViewContainer::slotOpenUrlFinished);
      job->start();
@@@ -946,3 -959,5 +950,5 @@@ QString DolphinViewContainer::getNeares
  
      return dir.exists() ? dir.path() : QString{};
  }
+ #include "moc_dolphinviewcontainer.cpp"
index 28e0876b9ed4d5c21a024b1d6f7fbf053a589bb1,bbe725dfd308cb66f3024980df121eb781771eeb..b71a4325b86bf951331bf449df5fb34604931cf1
@@@ -17,6 -17,7 +17,6 @@@
  #include <KIO/Job>
  #include <KLocalizedString>
  #include <KUrlMimeData>
 -#include <kio_version.h>
  
  #include <QElapsedTimer>
  #include <QIcon>
@@@ -262,7 -263,11 +262,7 @@@ void KFileItemModel::setShowTrashMime(b
  
  void KFileItemModel::setShowHiddenFiles(bool show)
  {
 -#if KIO_VERSION < QT_VERSION_CHECK(5, 100, 0)
 -    m_dirLister->setShowingDotFiles(show);
 -#else
      m_dirLister->setShowHiddenFiles(show);
 -#endif
      setShowTrashMime(show);
      m_dirLister->emitChanges();
      if (show) {
  
  bool KFileItemModel::showHiddenFiles() const
  {
 -#if KIO_VERSION < QT_VERSION_CHECK(5, 100, 0)
 -    return m_dirLister->showingDotFiles();
 -#else
      return m_dirLister->showHiddenFiles();
 -#endif
  }
  
  void KFileItemModel::setShowDirectoriesOnly(bool enabled)
@@@ -615,7 -624,9 +615,7 @@@ bool KFileItemModel::setExpanded(int in
  
          m_expandedDirs.remove(targetUrl);
          m_dirLister->stop(url);
 -#if KIO_VERSION >= QT_VERSION_CHECK(5, 92, 0)
          m_dirLister->forgetDirs(url);
 -#endif
  
          const int parentLevel = expandedParentsCount(index);
          const int itemCount = m_itemData.count();
                  const QUrl url = itemData->item.url();
                  m_expandedDirs.remove(targetUrl);
                  m_dirLister->stop(url); // TODO: try to unit-test this, see https://bugs.kde.org/show_bug.cgi?id=332102#c11
 -#if KIO_VERSION >= QT_VERSION_CHECK(5, 92, 0)
                  m_dirLister->forgetDirs(url);
 -#endif
                  expandedChildren.append(targetUrl);
              }
              ++childIndex;
@@@ -2593,7 -2606,7 +2593,7 @@@ QList<QPair<int, QVariant>> KFileItemMo
          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;
          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;
          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) {
@@@ -2850,3 -2863,5 +2850,5 @@@ void KFileItemModel::slotListerError(KI
          Q_EMIT errorMessage(!errorString.isEmpty() ? errorString : i18nc("@info:status", "Unknown error."));
      }
  }
+ #include "moc_kfileitemmodel.cpp"
index 09dd2eba1f9a84fd1837e34ee5866bc2608f3825,bd4bd7e519b8f99d80259d9e785a965912f14ea8..6c660e9526a34fd019d3ed7e92a1fc3260d6808d
@@@ -119,7 -119,7 +119,7 @@@ KFileItemModelRolesUpdater::KFileItemMo
      m_directoryContentsCounter = new KDirectoryContentsCounter(m_model, this);
      connect(m_directoryContentsCounter, &KDirectoryContentsCounter::result, this, &KFileItemModelRolesUpdater::slotDirectoryContentsCountReceived);
  
 -    const QString pluginNamespace = QStringLiteral("kf" QT_STRINGIFY(QT_VERSION_MAJOR)) + QStringLiteral("/overlayicon");
 +    const QString pluginNamespace = QStringLiteral("kf" QT_STRINGIFY(QT_MAJOR_VERSION)) + QStringLiteral("/overlayicon");
      const auto plugins = KPluginMetaData::findPlugins(pluginNamespace, {}, KPluginMetaData::AllowEmptyMetaData);
      for (const KPluginMetaData &data : plugins) {
          auto instance = QPluginLoader(data.fileName()).instance();
@@@ -1495,3 -1495,5 +1495,5 @@@ void KFileItemModelRolesUpdater::trimHo
          }
      }
  }
+ #include "moc_kfileitemmodelrolesupdater.cpp"
index cff8bd029e1d35c55cb73bdcf394bb0a76a0fe9b,e063ca85eabce99b981d8a26856ec0eca92673a2..419d174e90ace364d9fc432534dbe8f64a43a69c
@@@ -13,7 -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>
  #include <KSharedConfig>
  #include <KUrlMimeData>
  
 -#include <kio_version.h>
 -#if KIO_VERSION >= QT_VERSION_CHECK(5, 100, 0)
 -#include <KIO/DeleteOrTrashJob>
 -#else
 -#include <KIO/FileUndoManager>
 -#include <KIO/JobUiDelegate>
 -#endif
 -
  #include <QApplication>
  #include <QClipboard>
  #include <QMenu>
@@@ -67,7 -75,7 +67,7 @@@ void TreeViewContextMenu::open(const QP
          popup->addSeparator();
  
          // insert 'Rename'
-         QAction *renameAction = new QAction(i18nc("@action:inmenu", "Rename..."), this);
+         QAction *renameAction = new QAction(i18nc("@action:inmenu", "Rename"), this);
          renameAction->setEnabled(capabilities.supportsMoving());
          renameAction->setIcon(QIcon::fromTheme(QStringLiteral("edit-rename")));
          connect(renameAction, &QAction::triggered, this, &TreeViewContextMenu::rename);
@@@ -189,16 -197,39 +189,16 @@@ void TreeViewContextMenu::rename(
  
  void TreeViewContextMenu::moveToTrash()
  {
 -#if KIO_VERSION >= QT_VERSION_CHECK(5, 100, 0)
      using Iface = KIO::AskUserActionInterface;
      auto *deleteJob = new KIO::DeleteOrTrashJob(QList{m_fileItem.url()}, Iface::Trash, Iface::DefaultConfirmation, m_parent);
      deleteJob->start();
 -#else
 -    const QList<QUrl> list{m_fileItem.url()};
 -    KIO::JobUiDelegate uiDelegate;
 -    uiDelegate.setWindow(m_parent);
 -    if (uiDelegate.askDeleteConfirmation(list, KIO::JobUiDelegate::Trash, KIO::JobUiDelegate::DefaultConfirmation)) {
 -        KIO::Job *job = KIO::trash(list);
 -        KIO::FileUndoManager::self()->recordJob(KIO::FileUndoManager::Trash, list, QUrl(QStringLiteral("trash:/")), job);
 -        KJobWidgets::setWindow(job, m_parent);
 -        job->uiDelegate()->setAutoErrorHandlingEnabled(true);
 -    }
 -#endif
  }
  
  void TreeViewContextMenu::deleteItem()
  {
 -#if KIO_VERSION >= QT_VERSION_CHECK(5, 100, 0)
      using Iface = KIO::AskUserActionInterface;
      auto *deleteJob = new KIO::DeleteOrTrashJob(QList{m_fileItem.url()}, Iface::Delete, Iface::DefaultConfirmation, m_parent);
      deleteJob->start();
 -#else
 -    const QList<QUrl> list{m_fileItem.url()};
 -    KIO::JobUiDelegate uiDelegate;
 -    uiDelegate.setWindow(m_parent);
 -    if (uiDelegate.askDeleteConfirmation(list, KIO::JobUiDelegate::Delete, KIO::JobUiDelegate::DefaultConfirmation)) {
 -        KIO::Job *job = KIO::del(list);
 -        KJobWidgets::setWindow(job, m_parent);
 -        job->uiDelegate()->setAutoErrorHandlingEnabled(true);
 -    }
 -#endif
  }
  
  void TreeViewContextMenu::showProperties()
@@@ -222,3 -253,5 +222,5 @@@ void TreeViewContextMenu::setAutoScroll
  {
      m_parent->setAutoScrolling(enable);
  }
+ #include "moc_treeviewcontextmenu.cpp"
index 5bd9cb2961c520f33ef75368878a6b962876b24e,7367f1d13f548d36c3edb537e6ac78c0ac838277..9d1e5b97195e7092974778dcb5df019e8784bc8e
@@@ -165,7 -165,7 +165,7 @@@ void InformationPanel::showContextMenu(
      showHoveredAction->setCheckable(true);
      showHoveredAction->setChecked(InformationPanelSettings::showHovered());
  
-     QAction *configureAction = popup.addAction(i18nc("@action:inmenu", "Configure..."));
+     QAction *configureAction = popup.addAction(i18nc("@action:inmenu", "Configure"));
      configureAction->setIcon(QIcon::fromTheme(QStringLiteral("configure")));
      if (m_inConfigurationMode) {
          configureAction->setEnabled(false);
@@@ -244,7 -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);
          }
@@@ -419,3 -419,5 +419,5 @@@ void InformationPanel::init(
  
      m_initialized = true;
  }
+ #include "moc_informationpanel.cpp"
index d731d4de79ce2233f3a9c64d6ba82876934f5b09,d93457b2701f216ce884ed91e1d11e83af110e03..62f25b24bf3cdaf3e32c6f3986415e19afee71ed
@@@ -23,8 -23,8 +23,8 @@@
  
  #include <Baloo/FileMetaDataWidget>
  
 -#include <Phonon/BackendCapabilities>
 -#include <Phonon/MediaObject>
 +#include <phonon/BackendCapabilities>
 +#include <phonon/MediaObject>
  
  #include <QDialogButtonBox>
  #include <QGesture>
@@@ -489,3 -489,5 +489,5 @@@ void InformationPanelContent::adjustWid
          m_phononWidget->setVideoSize(QSize(maxWidth, maxWidth));
      }
  }
+ #include "moc_informationpanelcontent.cpp"
index 683eaafdb1d4c457e21f6b96e8154f5b705e0551,77d55da8bdc9122995370fdbdd210db1b66c4c99..3365998f4845249dc13d2e6c6ccad1eb3621a991
@@@ -7,10 -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>
@@@ -261,4 -261,5 +261,5 @@@ void PhononWidget::applyVideoSize(
      }
  }
  
+ #include "moc_phononwidget.cpp"
  #include "phononwidget.moc"
index 2d508ba65f8198c7d263af1174d573609646cddf,3c3f7bb87a449d8df1e3e736f52b90cdc8c2f2d8..8b245f0e72a2c16ab5caa8fa6e75fa2b1de90af4
@@@ -141,7 -141,7 +141,7 @@@ static bool isInternalDrag(const QMimeD
  
  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());
  
@@@ -275,3 -275,5 +275,5 @@@ void PlacesPanel::connectDeviceSignals(
  
      connect(storageAccess, &Solid::StorageAccess::teardownRequested, this, &PlacesPanel::slotTearDownRequestedExternally);
  }
+ #include "moc_placespanel.cpp"
index 0dcc1d12b3ccb8559d5d06f3376699ee7b10cefc,03e55ba3272b7649fb3cb86d077447123e181ef4..01d3960907bd02d278361444217308a01746e1cd
@@@ -20,6 -20,8 +20,6 @@@
  #include <KMessageBox>
  #include <KPluginMetaData>
  #include <KService>
 -#include <KServiceTypeTrader>
 -#include <kio_version.h>
  #include <kiocore_export.h>
  #include <kservice_export.h>
  #include <kwidgetsaddons_version.h>
@@@ -64,7 -66,7 +64,7 @@@ ContextMenuSettingsPage::ContextMenuSet
                                 this);
      label->setWordWrap(true);
      m_searchLineEdit = new QLineEdit(this);
-     m_searchLineEdit->setPlaceholderText(i18nc("@label:textbox", "Search..."));
+     m_searchLineEdit->setPlaceholderText(i18nc("@label:textbox", "Search"));
      connect(m_searchLineEdit, &QLineEdit::textChanged, this, [this](const QString &filter) {
          m_sortModel->setFilterFixedString(filter);
      });
@@@ -91,7 -93,7 +91,7 @@@
  
  #ifndef Q_OS_WIN
      using NewStuffButton = KNSWidgets::Button;
-     auto *downloadButton = new NewStuffButton(i18nc("@action:button", "Download New Services..."), QStringLiteral("servicemenu.knsrc"), this);
+     auto *downloadButton = new NewStuffButton(i18nc("@action:button", "Download New Services"), QStringLiteral("servicemenu.knsrc"), this);
      connect(downloadButton, &NewStuffButton::dialogFinished, this, [this](const auto &changedEntries) {
          if (!changedEntries.isEmpty()) {
              m_serviceModel->clear();
@@@ -288,6 -290,13 +288,6 @@@ void ContextMenuSettingsPage::loadServi
      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);
  
          }
      }
  
 -    // 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("kf" QT_STRINGIFY(QT_MAJOR_VERSION)) + QStringLiteral("/kfileitemaction"));
  
      for (const auto &jsonMetadata : jsonPlugins) {
          const QString desktopEntryName = jsonMetadata.pluginId();
@@@ -359,3 -380,5 +359,5 @@@ void ContextMenuSettingsPage::addRow(co
      m_serviceModel->setData(index, value, ServiceModel::DesktopEntryNameRole);
      m_serviceModel->setData(index, checked, Qt::CheckStateRole);
  }
+ #include "moc_contextmenusettingspage.cpp"
index fa715237a499a5729d2174a104cdb1eef9533360,ef98d0f8d368b82f304de7c3f02bb7ebd1846503..7c63e94ba079a610dc6e6b54f9cbf86dc691214e
@@@ -6,6 -6,7 +6,6 @@@
  
  #include "previewssettingspage.h"
  
 -#include "configurepreviewplugindialog.h"
  #include "dolphin_generalsettings.h"
  #include "settings/serviceitemdelegate.h"
  #include "settings/servicemodel.h"
@@@ -44,6 -45,12 +44,6 @@@ PreviewsSettingsPage::PreviewsSettingsP
      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);
@@@ -143,6 -150,19 +143,6 @@@ void PreviewsSettingsPage::showEvent(QS
      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();
          model->setData(index, show, 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);
@@@ -176,3 -201,5 +176,5 @@@ void PreviewsSettingsPage::loadSettings
      const int maxRemoteMByteSize = maxRemoteByteSize / (1024 * 1024);
      m_remoteFileSizeBox->setValue(maxRemoteMByteSize);
  }
+ #include "moc_previewssettingspage.cpp"
index 4e99a0e14706f2f08d5674ad36b22488ead37fcb,c002da9262035ac3036ee7d22c46cdcebf4982da..efb9d40dba6c99472855b5d40e99aebefaa19ec4
  
  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 'Behavior' tab
      BehaviorSettingsPage *behaviorPage = new BehaviorSettingsPage(QUrl::fromLocalFile(QDir::homePath()), tabWidget);
@@@ -70,3 -70,5 +70,5 @@@ void DolphinGeneralConfigModule::defaul
  }
  
  #include "kcmdolphingeneral.moc"
+ #include "moc_kcmdolphingeneral.cpp"
index c77e198ff616b66878f434664baa557be2ca602a,dd4756d8b115d5f000e55399e87879093bbcb9dc..6f699f82d57fdbb323a6cf392e6644754bd3089b
  
  K_PLUGIN_CLASS_WITH_JSON(DolphinNavigationConfigModule, "kcmdolphinnavigation.json")
  
 -DolphinNavigationConfigModule::DolphinNavigationConfigModule(QWidget *parent, const QVariantList &args)
 -    : KCModule(parent, args)
 +DolphinNavigationConfigModule::DolphinNavigationConfigModule(QObject *parent)
 +    : KCModule(parent)
      , m_navigation(nullptr)
  {
      setButtons(KCModule::Default | KCModule::Help | KCModule::Apply);
  
 -    QVBoxLayout *topLayout = new QVBoxLayout(this);
 +    QVBoxLayout *topLayout = new QVBoxLayout(widget());
      topLayout->setContentsMargins(0, 0, 0, 0);
  
 -    m_navigation = new NavigationSettingsPage(this);
 +    m_navigation = new NavigationSettingsPage(widget());
      connect(m_navigation, &NavigationSettingsPage::changed, this, &DolphinNavigationConfigModule::markAsChanged);
      topLayout->addWidget(m_navigation, 0, {});
  }
@@@ -44,3 -44,5 +44,5 @@@ void DolphinNavigationConfigModule::def
  }
  
  #include "kcmdolphinnavigation.moc"
+ #include "moc_kcmdolphinnavigation.cpp"
index 7fcc35ac5a726372297c5ea359ad354f038b915f,867faf69ed931d15d1de3611ca19fdad59b34644..41d12aa2c2dbc09523829cf564a88d2e184cc07b
@@@ -8,7 -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);
@@@ -86,3 -85,5 +86,5 @@@ void DolphinViewModesConfigModule::view
  }
  
  #include "kcmdolphinviewmodes.moc"
+ #include "moc_kcmdolphinviewmodes.cpp"
index d95ca7918d597a934d83a81dc36fcf8e7ef6bfac,ea3a5fe52f37c225517adc4665a89989aab3f1cc..97fafc631aef7bbfd598254306ca198759c83c7b
@@@ -60,7 -60,7 +60,7 @@@ QList<QWidget *> ServiceItemDelegate::c
      return {checkBox, configureButton};
  }
  
 -void ServiceItemDelegate::updateItemWidgets(const QList<QWidget *> widgets, const QStyleOptionViewItem &option, const QPersistentModelIndex &index) const
 +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]);
@@@ -105,3 -105,5 +105,5 @@@ void ServiceItemDelegate::slotConfigure
  {
      Q_EMIT requestServiceConfiguration(focusedIndex());
  }
+ #include "moc_serviceitemdelegate.cpp"
index 62905021e084a1ba158bc5bc914e315acabbdbf4,dc15ee39a01b97df34a2306f65fba992b465a5e3..f92ead17956ab1b4056c77dc604ee4a167483ee2
@@@ -135,7 -135,7 +135,7 @@@ void StartupSettingsPage::applySettings
  
      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));
@@@ -229,3 -229,5 +229,5 @@@ void StartupSettingsPage::showSetDefaul
  {
      KMessageBox::error(this, i18nc("@info", "The location for the home folder is invalid or does not exist, it will not be applied."));
  }
+ #include "moc_startupsettingspage.cpp"
index d21b4833e86918986b5d947dbcb1d704924af0f2,1920cd904cec99a6a5b348346905ff3dff6e8362..38a3d086581053d84a92f26df1aef6b4ac886778
@@@ -6,8 -6,7 +6,8 @@@
  
  #include "trashsettingspage.h"
  
 -#include <KCModuleProxy>
 +#include <KCModuleLoader>
 +#include <KCModule>
  #include <KPluginMetaData>
  
  #include <QFormLayout>
@@@ -17,13 -16,12 +17,13 @@@ TrashSettingsPage::TrashSettingsPage(QW
  {
      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()
  
  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 ea8335474100029aee12838db3b1008ea0b8bc3a,6c205acee8131d5b417790970c9125d05ac8f46d..7d87cb2fc6f2f176f19d94286e61839a664d9fdc
@@@ -7,8 -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>
  
@@@ -43,3 -43,5 +43,5 @@@ void UserFeedbackSettingsPage::restoreD
      feedbackProvider->setTelemetryMode(KUserFeedback::Provider::NoTelemetry);
      feedbackProvider->setSurveyInterval(-1);
  }
+ #include "moc_userfeedbacksettingspage.cpp"
index ea13100c659fa2be808336a881b4e8938b666d4a,b37a7430ddfc724c8851ef3338c1f80ff1255dd0..bbc9c579f40ad80a040a42d865c055005065f592
@@@ -9,11 -9,17 +9,11 @@@
  
  #include <KConfig>
  #include <KConfigGroup>
 +#include <KIO/DeleteOrTrashJob>
  #include <KLocalizedString>
  #include <KNotification>
 -#include <QList>
  
 -#include <kio_version.h>
 -#if KIO_VERSION >= QT_VERSION_CHECK(5, 100, 0)
 -#include <KIO/DeleteOrTrashJob>
 -#else
 -#include <KIO/JobUiDelegate>
 -#include <KJobWidgets>
 -#endif
 +#include <QList>
  
  Trash::Trash()
      : m_trashDirLister(new KDirLister())
@@@ -56,10 -62,22 +56,10 @@@ static void notifyEmptied(
  
  void Trash::empty(QWidget *window)
  {
 -#if KIO_VERSION >= QT_VERSION_CHECK(5, 100, 0)
      using Iface = KIO::AskUserActionInterface;
      auto *emptyJob = new KIO::DeleteOrTrashJob(QList<QUrl>{}, Iface::EmptyTrash, Iface::DefaultConfirmation, window);
      QObject::connect(emptyJob, &KIO::Job::result, notifyEmptied);
      emptyJob->start();
 -#else
 -    KIO::JobUiDelegate uiDelegate;
 -    uiDelegate.setWindow(window);
 -    bool confirmed = uiDelegate.askDeleteConfirmation(QList<QUrl>(), KIO::JobUiDelegate::EmptyTrash, KIO::JobUiDelegate::DefaultConfirmation);
 -    if (confirmed) {
 -        KIO::Job *job = KIO::emptyTrash();
 -        KJobWidgets::setWindow(job, window);
 -        job->uiDelegate()->setAutoErrorHandlingEnabled(true);
 -        QObject::connect(job, &KIO::Job::result, notifyEmptied);
 -    }
 -#endif
  }
  
  bool Trash::isEmpty()
@@@ -67,3 -85,5 +67,5 @@@
      KConfig trashConfig(QStringLiteral("trashrc"), KConfig::SimpleConfig);
      return (trashConfig.group("Status").readEntry("Empty", true));
  }
+ #include "moc_dolphintrash.cpp"
index abe6e41a1d63135ebb2562559d20718401735410,19526dc4d2429aa5ae959ed7b6046b72186e5960..f233fad462a37f491ea3312c6363269198320ca2
@@@ -8,13 -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()
  {
@@@ -39,3 -39,5 +39,5 @@@ DolphinFeedbackProvider::DolphinFeedbac
      addDataSource(new PlacesDataSource);
      addDataSource(new SettingsDataSource);
  }
+ #include "moc_dolphinfeedbackprovider.cpp"
index 35b50f07cc6431c3a32ff8786b20271d64104268,2881915ac1cf0624a9e51d5aa73dc9b6edc34795..32dd6bd29086929844623ddd0969389695292f90
@@@ -87,7 -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 +96,7 @@@
      }
      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);
@@@ -215,3 -215,5 +215,5 @@@ void DolphinRemoteEncoding::updateView(
      m_actionHandler->currentView()->setUrl(m_currentURL);
      m_actionHandler->currentView()->reload();
  }
+ #include "moc_dolphinremoteencoding.cpp"
index a557fa8d11532a7d2865bbf4ee8c50396c500efc,9666ca2ab38b1c6478da786dc04c63c1ff5be6fc..ebbf324b007d7e813aed9b2f861f81cf2faec5af
@@@ -35,7 -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>
  
  #include <kwidgetsaddons_version.h>
  
 -#include <kio_version.h>
 -#if KIO_VERSION >= QT_VERSION_CHECK(5, 100, 0)
 -#include <KIO/DeleteOrTrashJob>
 -#endif
 -
  #include <QAbstractItemView>
  #include <QActionGroup>
  #include <QApplication>
@@@ -618,7 -623,7 +618,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();
      }
@@@ -752,22 -757,43 +752,22 @@@ void DolphinView::trashSelectedItems(
  {
      const QList<QUrl> list = simplifiedSelectedUrls();
  
 -#if KIO_VERSION >= QT_VERSION_CHECK(5, 100, 0)
      using Iface = KIO::AskUserActionInterface;
      auto *trashJob = new KIO::DeleteOrTrashJob(list, Iface::Trash, Iface::DefaultConfirmation, this);
      connect(trashJob, &KJob::result, this, &DolphinView::slotTrashFileFinished);
      m_selectNextItem = true;
      trashJob->start();
 -#else
 -    KIO::JobUiDelegate uiDelegate;
 -    uiDelegate.setWindow(window());
 -    if (uiDelegate.askDeleteConfirmation(list, KIO::JobUiDelegate::Trash, KIO::JobUiDelegate::DefaultConfirmation)) {
 -        KIO::Job *job = KIO::trash(list);
 -        KIO::FileUndoManager::self()->recordJob(KIO::FileUndoManager::Trash, list, QUrl(QStringLiteral("trash:/")), job);
 -        KJobWidgets::setWindow(job, this);
 -        connect(job, &KIO::Job::result, this, &DolphinView::slotTrashFileFinished);
 -    }
 -#endif
  }
  
  void DolphinView::deleteSelectedItems()
  {
      const QList<QUrl> list = simplifiedSelectedUrls();
  
 -#if KIO_VERSION >= QT_VERSION_CHECK(5, 100, 0)
      using Iface = KIO::AskUserActionInterface;
      auto *trashJob = new KIO::DeleteOrTrashJob(list, Iface::Delete, Iface::DefaultConfirmation, this);
      connect(trashJob, &KJob::result, this, &DolphinView::slotTrashFileFinished);
      m_selectNextItem = true;
      trashJob->start();
 -#else
 -    KIO::JobUiDelegate uiDelegate;
 -    uiDelegate.setWindow(window());
 -    if (uiDelegate.askDeleteConfirmation(list, KIO::JobUiDelegate::Delete, KIO::JobUiDelegate::DefaultConfirmation)) {
 -        KIO::Job *job = KIO::del(list);
 -        KJobWidgets::setWindow(job, this);
 -        connect(job, &KIO::Job::result, this, &DolphinView::slotDeleteFileFinished);
 -    }
 -#endif
  }
  
  void DolphinView::cutSelectedItemsToClipboard()
@@@ -2317,7 -2343,7 +2317,7 @@@ void DolphinView::slotSwipeUp(
  
  void DolphinView::showLoadingPlaceholder()
  {
-     m_placeholderLabel->setText(i18n("Loading..."));
+     m_placeholderLabel->setText(i18n("Loading"));
      m_placeholderLabel->setVisible(true);
  }
  
@@@ -2392,3 -2418,5 +2392,5 @@@ bool DolphinView::tryShowNameToolTip(QH
      }
      return false;
  }
+ #include "moc_dolphinview.cpp"
index d30464626e6a084cd84fc6898546ac5a3afb2981,7117e9e1b811d930efd5ade9b49318de5a2520bf..4408a9e4785a72e14643971b1c0ab448a462a94c
@@@ -77,7 -77,7 +77,7 @@@ void DolphinViewActionHandler::createAc
      // This action doesn't appear in the GUI, it's for the shortcut only.
      // KNewFileMenu takes care of the GUI stuff.
      QAction *newDirAction = m_actionCollection->addAction(QStringLiteral("create_dir"));
-     newDirAction->setText(i18nc("@action", "Create Folder..."));
+     newDirAction->setText(i18nc("@action", "Create Folder"));
      m_actionCollection->setDefaultShortcuts(newDirAction, KStandardShortcut::createFolder());
      newDirAction->setIcon(QIcon::fromTheme(QStringLiteral("folder-new")));
      newDirAction->setEnabled(false); // Will be enabled in slotWriteStateChanged(bool) if the current URL is writable
      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."));
      connect(showHiddenFiles, &KToggleAction::triggered, this, &DolphinViewActionHandler::toggleShowHiddenFiles);
  
      QAction *adjustViewProps = m_actionCollection->addAction(QStringLiteral("view_properties"));
-     adjustViewProps->setText(i18nc("@action:inmenu View", "Adjust View Display Style..."));
+     adjustViewProps->setText(i18nc("@action:inmenu View", "Adjust View Display Style"));
      adjustViewProps->setIcon(QIcon::fromTheme(QStringLiteral("view-choose")));
      adjustViewProps->setWhatsThis(i18nc("@info:whatsthis",
                                          "This opens a window "
@@@ -820,3 -820,5 +820,5 @@@ void DolphinViewActionHandler::slotSele
          }
      }
  }
+ #include "moc_dolphinviewactionhandler.cpp"