+ if (abstractPlugin) {
+ abstractPlugin->setParent(this);
+ addActions(abstractPlugin->actions(props, m_mainWindow));
+ addedPlugins << service->desktopEntryName();
+ }
+ }
+
+ const auto jsonPlugins = KPluginLoader::findPlugins(QString(), [](const KPluginMetaData& metaData) {
+ return metaData.serviceTypes().contains(QStringLiteral("KFileItemAction/Plugin"));
+ });
+
+ foreach (const auto& jsonMetadata, jsonPlugins) {
+ // The plugin has been disabled
+ if (!showGroup.readEntry(jsonMetadata.pluginId(), true)) {
+ continue;
+ }
+
+ // The plugin also has a .desktop file and has already been added.
+ if (addedPlugins.contains(jsonMetadata.pluginId())) {
+ continue;
+ }
+
+ KPluginFactory *factory = KPluginLoader(jsonMetadata.fileName()).factory();
+ KAbstractFileItemActionPlugin* abstractPlugin = factory->create<KAbstractFileItemActionPlugin>();