X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/08a4edad3ee4ab4b997e5a7567b0ea685cad078d..ce8d4e5bcd125f45dfebf11ec53234b733de61ff:/src/settings/contextmenu/contextmenusettingspage.cpp diff --git a/src/settings/contextmenu/contextmenusettingspage.cpp b/src/settings/contextmenu/contextmenusettingspage.cpp index 34934bb87..cfbfefe52 100644 --- a/src/settings/contextmenu/contextmenusettingspage.cpp +++ b/src/settings/contextmenu/contextmenusettingspage.cpp @@ -11,6 +11,7 @@ #include "dolphin_contextmenusettings.h" #include "settings/serviceitemdelegate.h" #include "settings/servicemodel.h" +#include "global.h" #include #include @@ -30,6 +31,7 @@ #include #include #include +#include namespace { @@ -37,6 +39,8 @@ namespace const char VersionControlServicePrefix[] = "_version_control_"; const char DeleteService[] = "_delete"; const char CopyToMoveToService[] ="_copy_to_move_to"; + + bool laterSelected = false; } ContextMenuSettingsPage::ContextMenuSettingsPage(QWidget* parent, @@ -192,11 +196,21 @@ void ContextMenuSettingsPage::applySettings() VersionControlSettings::setEnabledPlugins(enabledPlugins); VersionControlSettings::self()->save(); - KMessageBox::information(window(), - i18nc("@info", "Dolphin must be restarted to apply the " - "updated version control systems settings."), - QString(), // default title - QStringLiteral("ShowVcsRestartInformation")); + if (!laterSelected) { + KMessageBox::ButtonCode promptRestart = KMessageBox::questionYesNo(window(), + i18nc("@info", "Dolphin must be restarted to apply the " + "updated version control system settings."), + i18nc("@info", "Restart now?"), + KGuiItem(QApplication::translate("KStandardGuiItem", "&Restart"), QStringLiteral("dialog-restart")), + KGuiItem(QApplication::translate("KStandardGuiItem", "&Later"), QStringLiteral("dialog-later")) + ); + if (promptRestart == KMessageBox::ButtonCode::Yes) { + Dolphin::openNewWindow(); + qApp->quit(); + } else { + laterSelected = true; + } + } } } @@ -235,11 +249,13 @@ void ContextMenuSettingsPage::showEvent(QShowEvent* event) CopyToMoveToService, ContextMenuSettings::showCopyMoveMenu()); - // Add other built-in actions - for (const QString& id : m_actionIds) { - const QAction* action = m_actions->action(id); - if (action) { - addRow(action->icon().name(), action->text(), id, entryVisible(id)); + if (m_actions){ + // Add other built-in actions + for (const QString& id : m_actionIds) { + const QAction* action = m_actions->action(id); + if (action) { + addRow(action->icon().name(), action->text(), id, entryVisible(id)); + } } } @@ -259,7 +275,7 @@ void ContextMenuSettingsPage::loadServices() 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 QList serviceActions = KDesktopFileActions::userDefinedServices(file, true); + const QList serviceActions = KDesktopFileActions::userDefinedServices(KService(file), true); const KDesktopFile desktopFile(file); const QString subMenuName = desktopFile.desktopGroup().readEntry("X-KDE-Submenu"); @@ -291,7 +307,7 @@ void ContextMenuSettingsPage::loadServices() #endif // Load JSON-based plugins that implement the KFileItemActionPlugin interface - const auto jsonPlugins = KPluginLoader::findPlugins(QStringLiteral("kf5/kfileitemaction")); + const auto jsonPlugins = KPluginMetaData::findPlugins(QStringLiteral("kf5/kfileitemaction")); for (const auto &jsonMetadata : jsonPlugins) { const QString desktopEntryName = jsonMetadata.pluginId(); @@ -312,7 +328,7 @@ void ContextMenuSettingsPage::loadVersionControlSystems() // Create a checkbox for each available version control plugin QSet loadedPlugins; - const QVector plugins = KPluginLoader::findPlugins(QStringLiteral("dolphin/vcs")); + const QVector plugins = KPluginMetaData::findPlugins(QStringLiteral("dolphin/vcs")); for (const auto &plugin : plugins) { const QString pluginName = plugin.name(); addRow(QStringLiteral("code-class"),