]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/panels/folders/treeviewcontextmenu.cpp
Move Safely Remove down in places context menu
[dolphin.git] / src / panels / folders / treeviewcontextmenu.cpp
index 51fc229c1906f7c5a7f64ee599c2047a75a0425f..df9b9d62e5aba15270814b27907a83b1ce71dd4a 100644 (file)
 
 #include "treeviewcontextmenu.h"
 
-#include <KFileItem>
+#include "folderspanel.h"
+#include "global.h"
+
+#include <KConfigGroup>
+#include <KFileItemListProperties>
 #include <KIO/CopyJob>
 #include <KIO/DeleteJob>
+#include <KIO/FileUndoManager>
 #include <KIO/JobUiDelegate>
-#include <QMenu>
-#include <QIcon>
+#include <KIO/Paste>
+#include <KIO/PasteJob>
 #include <KJobWidgets>
-#include <KSharedConfig>
-#include <KConfigGroup>
-#include <KUrlMimeData>
-#include <KFileItemListProperties>
 #include <KLocalizedString>
-#include <KIO/PasteJob>
-#include <KIO/Paste>
-#include <KIO/FileUndoManager>
 #include <KPropertiesDialog>
-
-#include "folderspanel.h"
+#include <KSharedConfig>
+#include <KUrlMimeData>
 
 #include <QApplication>
 #include <QClipboard>
+#include <QMenu>
 #include <QMimeData>
 #include <QPointer>
 
@@ -56,7 +55,7 @@ TreeViewContextMenu::~TreeViewContextMenu()
 {
 }
 
-void TreeViewContextMenu::open()
+void TreeViewContextMenu::open(const QPoint& pos)
 {
     QMenu* popup = new QMenu(m_parent);
 
@@ -124,6 +123,18 @@ void TreeViewContextMenu::open()
     popup->addAction(showHiddenFilesAction);
     connect(showHiddenFilesAction, &QAction::toggled, this, &TreeViewContextMenu::setShowHiddenFiles);
 
+    if (!m_fileItem.isNull()) {
+        // insert 'Limit to Home Directory'
+        const QUrl url = m_fileItem.url();
+        const bool enableLimitToHomeDirectory = url.isLocalFile();
+        QAction* limitFoldersPanelToHomeAction = new QAction(i18nc("@action:inmenu", "Limit to Home Directory"), this);
+        limitFoldersPanelToHomeAction->setCheckable(true);
+        limitFoldersPanelToHomeAction->setEnabled(enableLimitToHomeDirectory);
+        limitFoldersPanelToHomeAction->setChecked(m_parent->limitFoldersPanelToHome());
+        popup->addAction(limitFoldersPanelToHomeAction);
+        connect(limitFoldersPanelToHomeAction, &QAction::toggled, this, &TreeViewContextMenu::setLimitFoldersPanelToHome);
+    }
+
     // insert 'Automatic Scrolling'
     QAction* autoScrollingAction = new QAction(i18nc("@action:inmenu", "Automatic Scrolling"), this);
     autoScrollingAction->setCheckable(true);
@@ -150,7 +161,7 @@ void TreeViewContextMenu::open()
     }
 
     QPointer<QMenu> popupPtr = popup;
-    popup->exec(QCursor::pos());
+    popup->exec(pos);
     if (popupPtr.data()) {
         popupPtr.data()->deleteLater();
     }
@@ -229,6 +240,11 @@ void TreeViewContextMenu::setShowHiddenFiles(bool show)
     m_parent->setShowHiddenFiles(show);
 }
 
+void TreeViewContextMenu::setLimitFoldersPanelToHome(bool enable)
+{
+    m_parent->setLimitFoldersPanelToHome(enable);
+}
+
 void TreeViewContextMenu::setAutoScrolling(bool enable)
 {
     m_parent->setAutoScrolling(enable);