- const DolphinView* view = m_mainWindow->activeViewContainer()->view();
- const QList<QAction*> versionControlActions = view->versionControlActions(m_selectedItems);
- if (!versionControlActions.isEmpty()) {
- foreach (QAction* action, versionControlActions) {
- m_popup->addAction(action);
+ KFileItemListProperties props;
+ if (m_selectedItems.isEmpty()) {
+ props.setItems(KFileItemList() << baseFileItem());
+ } else {
+ props = selectedItemsProperties();
+ }
+
+ QString commonMimeType = props.mimeType();
+ if (commonMimeType.isEmpty()) {
+ commonMimeType = QStringLiteral("application/octet-stream");
+ }
+
+ const KService::List pluginServices = KMimeTypeTrader::self()->query(commonMimeType, QStringLiteral("KFileItemAction/Plugin"), QStringLiteral("exist Library"));
+ if (pluginServices.isEmpty()) {
+ return;
+ }
+
+ const KConfig config(QStringLiteral("kservicemenurc"), KConfig::NoGlobals);
+ const KConfigGroup showGroup = config.group("Show");
+
+ foreach (const KService::Ptr& service, pluginServices) {
+ if (!showGroup.readEntry(service->desktopEntryName(), true)) {
+ // The plugin has been disabled
+ continue;
+ }
+
+ KAbstractFileItemActionPlugin* abstractPlugin = service->createInstance<KAbstractFileItemActionPlugin>();
+ if (abstractPlugin) {
+ abstractPlugin->setParent(this);
+ addActions(abstractPlugin->actions(props, m_mainWindow));