#include "dolphinplacesmodelsingleton.h"
#include "dolphinremoveaction.h"
#include "dolphinviewcontainer.h"
-#include "panels/places/placesitem.h"
-#include "panels/places/placesitemmodel.h"
#include "trash/dolphintrash.h"
#include "views/dolphinview.h"
#include "views/viewmodecontroller.h"
#include <KActionCollection>
-#include <KFileItemActions>
#include <KFileItemListProperties>
#include <KHamburgerMenu>
#include <KIO/EmptyTrashJob>
#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.
const DolphinView* view = m_mainWindow->activeViewContainer()->view();
m_selectedItems = view->selectedItems();
- installEventFilter(this);
+ QApplication::instance()->installEventFilter(this);
static_cast<KHamburgerMenu *>(m_mainWindow->actionCollection()->
action(QStringLiteral("hamburger_menu")))->addToMenu(this);
}
}
-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);
const DolphinView* view = m_mainWindow->activeViewContainer()->view();
- newFileMenu->setViewShowsHiddenFiles(view->hiddenFilesShown());
newFileMenu->checkUpToDate();
newFileMenu->setPopupFiles(QList<QUrl>() << m_fileInfo.url());
newFileMenu->setEnabled(selectedItemsProps.supportsWriting());
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();
- newFileMenu->setViewShowsHiddenFiles(view->hiddenFilesShown());
newFileMenu->checkUpToDate();
newFileMenu->setPopupFiles(QList<QUrl>() << m_baseUrl);
addMenu(newFileMenu->menu());
// 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->insertOpenWithActionsTo(nullptr, this, QStringList{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);