#include <KLocalizedString>
#include <KNewFileMenu>
#include <KPluginMetaData>
-#include <KService>
#include <KStandardAction>
#include <KToolBar>
DolphinContextMenu::DolphinContextMenu(DolphinMainWindow* parent,
const QPoint& pos,
const KFileItem& fileInfo,
- const QUrl& baseUrl) :
+ const QUrl& baseUrl,
+ KFileItemActions *fileItemActions) :
QMenu(parent),
m_pos(pos),
m_mainWindow(parent),
m_copyToMenu(parent),
m_customActions(),
m_command(None),
- m_removeAction(nullptr)
+ m_removeAction(nullptr),
+ m_fileItemActions(fileItemActions)
{
// The context menu either accesses the URLs of the selected items
// or the items itself. To increase the performance both lists are cached.
}
}
-void DolphinContextMenu::addDirectoryItemContextMenu(KFileItemActions &fileItemActions)
+void DolphinContextMenu::addDirectoryItemContextMenu()
{
// insert 'Open in new window' and 'Open in new tab' entries
const KFileItemListProperties& selectedItemsProps = selectedItemsProperties();
}
// Insert 'Open With' entries
- addOpenWithActions(fileItemActions);
+ addOpenWithActions();
// set up 'Create New' menu
DolphinNewFileMenu* newFileMenu = new DolphinNewFileMenu(m_mainWindow->actionCollection(), m_mainWindow);
QAction* openParentInNewTabAction = nullptr;
const KFileItemListProperties& selectedItemsProps = selectedItemsProperties();
- KFileItemActions fileItemActions;
- fileItemActions.setParentWidget(m_mainWindow);
- fileItemActions.setItemListProperties(selectedItemsProps);
+
+ m_fileItemActions->setItemListProperties(selectedItemsProps);
if (m_selectedItems.count() == 1) {
// single files
if (m_fileInfo.isDir()) {
- addDirectoryItemContextMenu(fileItemActions);
+ addDirectoryItemContextMenu();
} else if (m_context & TimelineContext || m_context & SearchContext) {
- addOpenWithActions(fileItemActions);
+ addOpenWithActions();
openParentAction = new QAction(QIcon::fromTheme(QStringLiteral("document-open-folder")),
i18nc("@action:inmenu",
addSeparator();
} else {
// Insert 'Open With" entries
- addOpenWithActions(fileItemActions);
+ addOpenWithActions();
}
if (m_fileInfo.isLink()) {
addAction(m_mainWindow->actionCollection()->action(QStringLiteral("show_target")));
addAction(m_mainWindow->actionCollection()->action(QStringLiteral("open_in_new_tabs")));
}
// Insert 'Open With" entries
- addOpenWithActions(fileItemActions);
+ addOpenWithActions();
}
insertDefaultItemActions(selectedItemsProps);
- addAdditionalActions(fileItemActions, selectedItemsProps);
+ addAdditionalActions(selectedItemsProps);
// insert 'Copy To' and 'Move To' sub menus
if (ContextMenuSettings::showCopyMoveMenu()) {
const DolphinView* view = m_mainWindow->activeViewContainer()->view();
const KFileItemListProperties baseUrlProperties(KFileItemList() << baseFileItem());
- KFileItemActions fileItemActions;
- fileItemActions.setParentWidget(m_mainWindow);
- fileItemActions.setItemListProperties(baseUrlProperties);
+ m_fileItemActions->setItemListProperties(baseUrlProperties);
// Set up and insert 'Create New' menu
KNewFileMenu* newFileMenu = m_mainWindow->newFileMenu();
// Show "open with" menu items even if the dir is empty, because there are legitimate
// use cases for this, such as opening an empty dir in Kate or VSCode or something
- addOpenWithActions(fileItemActions);
+ addOpenWithActions();
QAction* pasteAction = createPasteAction();
if (pasteAction) {
addSeparator();
}
- addAdditionalActions(fileItemActions, baseUrlProperties);
+ addAdditionalActions(baseUrlProperties);
addCustomActions();
addSeparator();
return *m_baseFileItem;
}
-void DolphinContextMenu::addOpenWithActions(KFileItemActions& fileItemActions)
+void DolphinContextMenu::addOpenWithActions()
{
// insert 'Open With...' action or sub menu
- fileItemActions.addOpenWithActionsTo(this, QStringLiteral("DesktopEntryName != '%1'").arg(qApp->desktopFileName()));
+ m_fileItemActions->addOpenWithActionsTo(this, QStringLiteral("DesktopEntryName != '%1'").arg(qApp->desktopFileName()));
}
void DolphinContextMenu::addCustomActions()
addActions(m_customActions);
}
-void DolphinContextMenu::addAdditionalActions(KFileItemActions &fileItemActions, const KFileItemListProperties &props)
+void DolphinContextMenu::addAdditionalActions(const KFileItemListProperties &props)
{
addSeparator();
if (props.isDirectory() && props.isLocal() && ContextMenuSettings::showOpenTerminal()) {
additionalActions << m_mainWindow->actionCollection()->action(QStringLiteral("open_terminal"));
}
- fileItemActions.addActionsTo(this, KFileItemActions::MenuActionSource::All, additionalActions);
+ m_fileItemActions->addActionsTo(this, KFileItemActions::MenuActionSource::All, additionalActions);
const DolphinView* view = m_mainWindow->activeViewContainer()->view();
const QList<QAction*> versionControlActions = view->versionControlActions(m_selectedItems);