Hide context menu plugins unless enabled by default or by the user

REVIEW: 110685
This commit is contained in:
Frank Reininghaus 2013-05-29 07:48:11 +02:00
parent 844738fb91
commit ae415dcebd
2 changed files with 20 additions and 6 deletions

View file

@ -469,20 +469,25 @@ void DolphinContextMenu::addFileItemPluginActions()
const KConfigGroup showGroup = config.group("Show");
foreach (const KSharedPtr<KService>& service, pluginServices) {
if (!showGroup.readEntry(service->desktopEntryName(), true)) {
// The plugin has been disabled
continue;
}
// Old API (kdelibs-4.6.0 only)
KFileItemActionPlugin* plugin = service->createInstance<KFileItemActionPlugin>();
if (plugin) {
if (!showGroup.readEntry(service->desktopEntryName(), true)) {
// The plugin has been disabled
continue;
}
plugin->setParent(this);
addActions(plugin->actions(props, m_mainWindow));
}
// New API (kdelibs >= 4.6.1)
KAbstractFileItemActionPlugin* abstractPlugin = service->createInstance<KAbstractFileItemActionPlugin>();
if (abstractPlugin) {
if (!showGroup.readEntry(service->desktopEntryName(), abstractPlugin->enabledByDefault())) {
// The plugin has been disabled
continue;
}
abstractPlugin->setParent(this);
addActions(abstractPlugin->actions(props, m_mainWindow));
}

View file

@ -22,6 +22,7 @@
#include "dolphin_generalsettings.h"
#include "dolphin_versioncontrolsettings.h"
#include <kabstractfileitemactionplugin.h>
#include <KConfig>
#include <KConfigGroup>
#include <KDesktopFile>
@ -223,7 +224,15 @@ void ServicesSettingsPage::loadServices()
foreach (const KSharedPtr<KService>& service, pluginServices) {
const QString desktopEntryName = service->desktopEntryName();
if (!isInServicesList(desktopEntryName)) {
const bool checked = showGroup.readEntry(desktopEntryName, true);
bool checked;
KAbstractFileItemActionPlugin* abstractPlugin = service->createInstance<KAbstractFileItemActionPlugin>();
if (abstractPlugin) {
checked = showGroup.readEntry(desktopEntryName, abstractPlugin->enabledByDefault());
} else {
checked = showGroup.readEntry(desktopEntryName, true);
}
addRow(service->icon(), service->name(), desktopEntryName, checked);
}
}