X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/1be2704214a9685fe85fdf65f30e4921eba0f2c9..5bee1889e1682f1e7ffe55e49beaf4544eaf7157:/src/dolphincontextmenu.cpp diff --git a/src/dolphincontextmenu.cpp b/src/dolphincontextmenu.cpp index bedb4cb80..d4cf196b7 100644 --- a/src/dolphincontextmenu.cpp +++ b/src/dolphincontextmenu.cpp @@ -34,7 +34,6 @@ #include #include #include -#include #include #include #include @@ -69,7 +68,7 @@ DolphinContextMenu::DolphinContextMenu(DolphinMainWindow* parent, m_baseUrl(baseUrl), m_baseFileItem(0), m_selectedItems(), - m_selectedItemsProperties(0), + m_selectedItemsProperties(nullptr), m_context(NoContext), m_copyToMenu(parent), m_customActions(), @@ -85,7 +84,7 @@ DolphinContextMenu::DolphinContextMenu(DolphinMainWindow* parent, DolphinContextMenu::~DolphinContextMenu() { delete m_selectedItemsProperties; - m_selectedItemsProperties = 0; + m_selectedItemsProperties = nullptr; } void DolphinContextMenu::setCustomActions(const QList& actions) @@ -125,7 +124,7 @@ DolphinContextMenu::Command DolphinContextMenu::open() void DolphinContextMenu::keyPressEvent(QKeyEvent *ev) { if (m_removeAction && ev->key() == Qt::Key_Shift) { - m_removeAction->update(); + m_removeAction->update(DolphinRemoveAction::ShiftState::Pressed); } QMenu::keyPressEvent(ev); } @@ -133,7 +132,7 @@ void DolphinContextMenu::keyPressEvent(QKeyEvent *ev) void DolphinContextMenu::keyReleaseEvent(QKeyEvent *ev) { if (m_removeAction && ev->key() == Qt::Key_Shift) { - m_removeAction->update(); + m_removeAction->update(DolphinRemoveAction::ShiftState::Released); } QMenu::keyReleaseEvent(ev); } @@ -173,7 +172,7 @@ void DolphinContextMenu::openTrashItemContextMenu() QAction* restoreAction = new QAction(i18nc("@action:inmenu", "Restore"), m_mainWindow); addAction(restoreAction); - QAction* deleteAction = m_mainWindow->actionCollection()->action(QStringLiteral("delete")); + QAction* deleteAction = m_mainWindow->actionCollection()->action(KStandardAction::name(KStandardAction::DeleteFile)); addAction(deleteAction); QAction* propertiesAction = m_mainWindow->actionCollection()->action(QStringLiteral("properties")); @@ -196,10 +195,10 @@ void DolphinContextMenu::openItemContextMenu() { Q_ASSERT(!m_fileInfo.isNull()); - QAction* openParentAction = 0; - QAction* openParentInNewWindowAction = 0; - QAction* openParentInNewTabAction = 0; - QAction* addToPlacesAction = 0; + QAction* openParentAction = nullptr; + QAction* openParentInNewWindowAction = nullptr; + QAction* openParentInNewTabAction = nullptr; + QAction* addToPlacesAction = nullptr; const KFileItemListProperties& selectedItemsProps = selectedItemsProperties(); if (m_selectedItems.count() == 1) { @@ -284,7 +283,7 @@ void DolphinContextMenu::openItemContextMenu() fileItemActions.setItemListProperties(selectedItemsProps); addServiceActions(fileItemActions); - addFileItemPluginActions(fileItemActions); + fileItemActions.addPluginActionsTo(this); addVersionControlPluginActions(); @@ -356,7 +355,7 @@ void DolphinContextMenu::openViewportContextMenu() fileItemActions.setItemListProperties(baseUrlProperties); addServiceActions(fileItemActions); - addFileItemPluginActions(fileItemActions); + fileItemActions.addPluginActionsTo(this); addVersionControlPluginActions(); @@ -370,11 +369,16 @@ void DolphinContextMenu::openViewportContextMenu() QAction* action = exec(m_pos); if (addToPlacesAction && (action == addToPlacesAction)) { const DolphinViewContainer* container = m_mainWindow->activeViewContainer(); - if (container->url().isValid()) { + const QUrl url = container->url(); + if (url.isValid()) { PlacesItemModel model; - PlacesItem* item = model.createPlacesItem(container->placesText(), - container->url(), - KIO::iconNameForUrl(container->url())); + QString icon; + if (container->isSearchModeEnabled()) { + icon = QStringLiteral("folder-saved-search-symbolic"); + } else { + icon = KIO::iconNameForUrl(url); + } + PlacesItem* item = model.createPlacesItem(container->placesText(), url, icon); model.appendItemToGroup(item); model.saveBookmarks(); } @@ -393,8 +397,7 @@ void DolphinContextMenu::insertDefaultItemActions(const KFileItemListProperties& addSeparator(); // Insert 'Rename' - QAction* renameAction = collection->action(QStringLiteral("rename")); - addAction(renameAction); + addAction(collection->action(KStandardAction::name(KStandardAction::RenameFile))); // Insert 'Move to Trash' and/or 'Delete' if (properties.supportsDeleting()) { @@ -406,10 +409,10 @@ void DolphinContextMenu::insertDefaultItemActions(const KFileItemListProperties& if (showDeleteAction && showMoveToTrashAction) { delete m_removeAction; m_removeAction = 0; - addAction(m_mainWindow->actionCollection()->action(QStringLiteral("move_to_trash"))); - addAction(m_mainWindow->actionCollection()->action(QStringLiteral("delete"))); + addAction(m_mainWindow->actionCollection()->action(KStandardAction::name(KStandardAction::MoveToTrash))); + addAction(m_mainWindow->actionCollection()->action(KStandardAction::name(KStandardAction::DeleteFile))); } else if (showDeleteAction && !showMoveToTrashAction) { - addAction(m_mainWindow->actionCollection()->action(QStringLiteral("delete"))); + addAction(m_mainWindow->actionCollection()->action(KStandardAction::name(KStandardAction::DeleteFile))); } else { if (!m_removeAction) { m_removeAction = new DolphinRemoveAction(this, m_mainWindow->actionCollection()); @@ -485,80 +488,6 @@ void DolphinContextMenu::addServiceActions(KFileItemActions& fileItemActions) fileItemActions.addServiceActionsTo(this); } -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()); - } 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")); - const KConfig config(QStringLiteral("kservicemenurc"), KConfig::NoGlobals); - const KConfigGroup showGroup = config.group("Show"); - - QSet addedPlugins; - foreach (const KService::Ptr& service, pluginServices) { - if (!showGroup.readEntry(service->desktopEntryName(), true)) { - // The plugin has been disabled - continue; - } - - KAbstractFileItemActionPlugin* abstractPlugin = service->createInstance(); - if (abstractPlugin) { - abstractPlugin->setParent(this); - addActions(abstractPlugin->actions(props, m_mainWindow)); - addedPlugins << service->desktopEntryName(); - } - } - - 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) { - // 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(); - if (abstractPlugin) { - abstractPlugin->setParent(this); - addActions(abstractPlugin->actions(props, m_mainWindow)); - addedPlugins << jsonMetadata.pluginId(); - } - } -#endif -} - void DolphinContextMenu::addVersionControlPluginActions() { const DolphinView* view = m_mainWindow->activeViewContainer()->view();