m_baseUrl(baseUrl),
m_baseFileItem(0),
m_selectedItems(),
- m_selectedItemsProperties(0),
+ m_selectedItemsProperties(nullptr),
m_context(NoContext),
m_copyToMenu(parent),
m_customActions(),
DolphinContextMenu::~DolphinContextMenu()
{
delete m_selectedItemsProperties;
- m_selectedItemsProperties = 0;
+ m_selectedItemsProperties = nullptr;
}
void DolphinContextMenu::setCustomActions(const QList<QAction*>& actions)
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);
}
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);
}
if (uiDelegate.askDeleteConfirmation(QList<QUrl>(), KIO::JobUiDelegate::EmptyTrash, KIO::JobUiDelegate::DefaultConfirmation)) {
KIO::Job* job = KIO::emptyTrash();
KJobWidgets::setWindow(job, m_mainWindow);
- job->ui()->setAutoErrorHandlingEnabled(true);
+ job->uiDelegate()->setAutoErrorHandlingEnabled(true);
}
}
}
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"));
{
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) {
fileItemActions.setItemListProperties(selectedItemsProps);
addServiceActions(fileItemActions);
- addFileItemPluginActions();
+ fileItemActions.addPluginActionsTo(this);
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();
+ fileItemActions.addPluginActionsTo(this);
addVersionControlPluginActions();
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());
+ 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();
}
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()) {
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());
fileItemActions.addServiceActionsTo(this);
}
-void DolphinContextMenu::addFileItemPluginActions()
-{
- 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<QString> addedPlugins;
- 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));
- 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<KAbstractFileItemActionPlugin>();
- if (abstractPlugin) {
- abstractPlugin->setParent(this);
- addActions(abstractPlugin->actions(props, m_mainWindow));
- addedPlugins << jsonMetadata.pluginId();
- }
- }
-}
-
void DolphinContextMenu::addVersionControlPluginActions()
{
const DolphinView* view = m_mainWindow->activeViewContainer()->view();