#include <KIO/EmptyTrashJob>
#include <KIO/JobUiDelegate>
#include <KIO/Paste>
+#include <kio_version.h>
#include <KJobWidgets>
#include <KMimeTypeTrader>
#include <KNewFileMenu>
#include <QKeyEvent>
#include <QMenuBar>
#include <QMenu>
+#include <QMimeDatabase>
#include <panels/places/placesitem.h>
#include <panels/places/placesitemmodel.h>
fileItemActions.setItemListProperties(selectedItemsProps);
addServiceActions(fileItemActions);
- addFileItemPluginActions();
+ addFileItemPluginActions(fileItemActions);
addVersionControlPluginActions();
if (selectedUrl.isValid()) {
PlacesItemModel model;
const QString text = selectedUrl.fileName();
- PlacesItem* item = model.createPlacesItem(text, selectedUrl);
+ PlacesItem* item = model.createPlacesItem(text, selectedUrl, KIO::iconNameForUrl(selectedUrl));
model.appendItemToGroup(item);
model.saveBookmarks();
}
fileItemActions.setItemListProperties(baseUrlProperties);
addServiceActions(fileItemActions);
- addFileItemPluginActions();
+ addFileItemPluginActions(fileItemActions);
addVersionControlPluginActions();
if (container->url().isValid()) {
PlacesItemModel model;
PlacesItem* item = model.createPlacesItem(container->placesText(),
- container->url());
+ container->url(),
+ KIO::iconNameForUrl(container->url()));
model.appendItemToGroup(item);
model.saveBookmarks();
}
fileItemActions.addServiceActionsTo(this);
}
-void DolphinContextMenu::addFileItemPluginActions()
+void DolphinContextMenu::addFileItemPluginActions(KFileItemActions& fileItemActions)
{
+#if KIO_VERSION >= QT_VERSION_CHECK(5, 27, 0)
+ fileItemActions.addPluginActionsTo(this);
+#else
+ Q_UNUSED(fileItemActions);
KFileItemListProperties props;
if (m_selectedItems.isEmpty()) {
props.setItems(KFileItemList() << baseFileItem());
}
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");
}
}
- const auto jsonPlugins = KPluginLoader::findPlugins(QString(), [](const KPluginMetaData& metaData) {
- return metaData.serviceTypes().contains(QStringLiteral("KFileItemAction/Plugin"));
+ const auto jsonPlugins = KPluginLoader::findPlugins(QStringLiteral("kf5/kfileitemaction"), [=](const KPluginMetaData& metaData) {
+ if (!metaData.serviceTypes().contains(QStringLiteral("KFileItemAction/Plugin"))) {
+ return false;
+ }
+
+ auto mimeType = QMimeDatabase().mimeTypeForName(commonMimeType);
+ foreach (const auto& supportedMimeType, metaData.mimeTypes()) {
+ if (mimeType.inherits(supportedMimeType)) {
+ return true;
+ }
+ }
+
+ return false;
});
foreach (const auto& jsonMetadata, jsonPlugins) {
if (abstractPlugin) {
abstractPlugin->setParent(this);
addActions(abstractPlugin->actions(props, m_mainWindow));
+ addedPlugins << jsonMetadata.pluginId();
}
}
+#endif
}
void DolphinContextMenu::addVersionControlPluginActions()