X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/a8ac157bdcf2438c16c0782028c2e7a310b0a833..d2f8c4f0641ec4218ee5c7d32b2e3b5319a27f32:/src/settings/contextmenu/contextmenusettingspage.cpp diff --git a/src/settings/contextmenu/contextmenusettingspage.cpp b/src/settings/contextmenu/contextmenusettingspage.cpp index cfbfefe52..acf80d195 100644 --- a/src/settings/contextmenu/contextmenusettingspage.cpp +++ b/src/settings/contextmenu/contextmenusettingspage.cpp @@ -14,15 +14,24 @@ #include "global.h" #include +#include +#include #include #include -#include #include #include #include -#include - #include +#include +#include + +#include +#include +#if KNEWSTUFF_VERSION >= QT_VERSION_CHECK(5, 91, 0) +#include +#else +#include +#endif #include #include @@ -83,25 +92,27 @@ ContextMenuSettingsPage::ContextMenuSettingsPage(QWidget* parent, m_listView->setVerticalScrollMode(QListView::ScrollPerPixel); connect(m_listView, &QListView::clicked, this, &ContextMenuSettingsPage::changed); + topLayout->addWidget(label); + topLayout->addWidget(m_searchLineEdit); + topLayout->addWidget(m_listView); + #ifndef Q_OS_WIN - auto *downloadButton = new KNS3::Button(i18nc("@action:button", "Download New Services..."), - QStringLiteral("servicemenu.knsrc"), - this); - connect(downloadButton, &KNS3::Button::dialogFinished, this, [this](const KNS3::Entry::List &changedEntries) { +#if KNEWSTUFF_VERSION >= QT_VERSION_CHECK(5, 91, 0) + using NewStuffButton = KNSWidgets::Button; +#else + using NewStuffButton = KNS3::Button; +#endif // KNEWSTUFF_VERSION + 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(); loadServices(); } }); - -#endif - - topLayout->addWidget(label); - topLayout->addWidget(m_searchLineEdit); - topLayout->addWidget(m_listView); -#ifndef Q_OS_WIN topLayout->addWidget(downloadButton); -#endif +#endif // Q_OS_WIN m_enabledVcsPlugins = VersionControlSettings::enabledPlugins(); std::sort(m_enabledVcsPlugins.begin(), m_enabledVcsPlugins.end()); @@ -126,7 +137,7 @@ bool ContextMenuSettingsPage::entryVisible(const QString& id) return ContextMenuSettings::showCopyLocation(); } else if (id == "duplicate") { return ContextMenuSettings::showDuplicateHere(); - } else if (id == "open_terminal") { + } else if (id == "open_terminal_here") { return ContextMenuSettings::showOpenTerminal(); } return false; @@ -148,7 +159,7 @@ void ContextMenuSettingsPage::setEntryVisible(const QString& id, bool visible) ContextMenuSettings::setShowCopyLocation(visible); } else if (id == "duplicate") { ContextMenuSettings::setShowDuplicateHere(visible); - } else if (id == "open_terminal") { + } else if (id == "open_terminal_here") { ContextMenuSettings::setShowOpenTerminal(visible); } } @@ -272,9 +283,17 @@ void ContextMenuSettingsPage::loadServices() const KConfigGroup showGroup = config.group("Show"); // Load generic services - const KService::List entries = KServiceTypeTrader::self()->query(QStringLiteral("KonqPopupMenu/Plugin")); - for (const KService::Ptr &service : entries) { - const QString file = QStandardPaths::locate(QStandardPaths::GenericDataLocation, "kservices5/" % service->entryPath()); + 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 serviceActions = KDesktopFileActions::userDefinedServices(KService(file), true); const KDesktopFile desktopFile(file); @@ -295,7 +314,7 @@ void ContextMenuSettingsPage::loadServices() } // Load service plugins, this is deprecated in KIO 5.82 -#if KIO_VERSION < QT_VERSION_CHECK(6, 0, 0) +#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(); @@ -338,18 +357,6 @@ void ContextMenuSettingsPage::loadVersionControlSystems() loadedPlugins += pluginName; } - const KService::List pluginServices = KServiceTypeTrader::self()->query(QStringLiteral("FileViewVersionControlPlugin")); - for (const auto &plugin : pluginServices) { - const QString pluginName = plugin->name(); - if (loadedPlugins.contains(pluginName)) { - continue; - } - addRow(QStringLiteral("code-class"), - pluginName, - VersionControlServicePrefix + pluginName, - enabledPlugins.contains(pluginName)); - } - m_sortModel->sort(Qt::DisplayRole); }