]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/treeviewcontextmenu.cpp
SVN_SILENT made messages (.desktop file)
[dolphin.git] / src / treeviewcontextmenu.cpp
index f15ac0c6e1d51da4192fe4f1d604fc059dd91056..20840060eec89e5ad135628e66d5539a031d1308 100644 (file)
 #include <kio/deletejob.h>
 #include <kmenu.h>
 #include <konqmimedata.h>
+#include <konq_fileitemcapabilities.h>
 #include <konq_operations.h>
 #include <klocale.h>
 #include <kpropertiesdialog.h>
 
-#include "renamedialog.h"
 #include "treeviewsidebarpage.h"
 
 #include <QtGui/QApplication>
@@ -54,18 +54,21 @@ void TreeViewContextMenu::open()
     KMenu* popup = new KMenu(m_parent);
 
     if (!m_fileInfo.isNull()) {
+        KonqFileItemCapabilities capabilities(KFileItemList() << m_fileInfo);
+
         // insert 'Cut', 'Copy' and 'Paste'
-        QAction* cutAction   = new QAction(KIcon("edit-cut"), i18nc("@action:inmenu", "Cut"), this);
+        QAction* cutAction = new QAction(KIcon("edit-cut"), i18nc("@action:inmenu", "Cut"), this);
+        cutAction->setEnabled(capabilities.supportsMoving());
         connect(cutAction, SIGNAL(triggered()), this, SLOT(cut()));
 
-        QAction* copyAction  = new QAction(KIcon("edit-copy"), i18nc("@action:inmenu", "Copy"), this);
+        QAction* copyAction = new QAction(KIcon("edit-copy"), i18nc("@action:inmenu", "Copy"), this);
         connect(copyAction, SIGNAL(triggered()), this, SLOT(copy()));
 
         QAction* pasteAction = new QAction(KIcon("edit-paste"), i18nc("@action:inmenu", "Paste"), this);
         const QMimeData* mimeData = QApplication::clipboard()->mimeData();
         const KUrl::List pasteData = KUrl::List::fromMimeData(mimeData);
-        pasteAction->setEnabled(!pasteData.isEmpty());
         connect(pasteAction, SIGNAL(triggered()), this, SLOT(paste()));
+        pasteAction->setEnabled(!pasteData.isEmpty() && capabilities.supportsWriting());
 
         popup->addAction(cutAction);
         popup->addAction(copyAction);
@@ -74,16 +77,21 @@ void TreeViewContextMenu::open()
 
         // insert 'Rename'
         QAction* renameAction = new QAction(i18nc("@action:inmenu", "Rename..."), this);
+        renameAction->setEnabled(capabilities.supportsMoving());
         connect(renameAction, SIGNAL(triggered()), this, SLOT(rename()));
         popup->addAction(renameAction);
 
         // insert 'Move to Trash' and (optionally) 'Delete'
-        KConfigGroup kdeConfig(KGlobal::config(), "KDE");
-        bool showDeleteCommand = kdeConfig.readEntry("ShowDeleteCommand", false);
+        KSharedConfig::Ptr globalConfig = KSharedConfig::openConfig("kdeglobals", KConfig::IncludeGlobals);
+        KConfigGroup configGroup(globalConfig, "KDE");
+        bool showDeleteCommand = configGroup.readEntry("ShowDeleteCommand", false);
+        
         const KUrl& url = m_fileInfo.url();
         if (url.isLocalFile()) {
             QAction* moveToTrashAction = new QAction(KIcon("user-trash"),
                                                     i18nc("@action:inmenu", "Move To Trash"), this);
+            const bool enableMoveToTrash = capabilities.isLocal() && capabilities.supportsMoving();
+            moveToTrashAction->setEnabled(enableMoveToTrash);
             connect(moveToTrashAction, SIGNAL(triggered()), this, SLOT(moveToTrash()));
             popup->addAction(moveToTrashAction);
         } else {
@@ -92,6 +100,7 @@ void TreeViewContextMenu::open()
 
         if (showDeleteCommand) {
             QAction* deleteAction = new QAction(KIcon("edit-delete"), i18nc("@action:inmenu", "Delete"), this);
+            deleteAction->setEnabled(capabilities.supportsDeleting());
             connect(deleteAction, SIGNAL(triggered()), this, SLOT(deleteItem()));
             popup->addAction(deleteAction);
         }
@@ -152,17 +161,7 @@ void TreeViewContextMenu::paste()
 
 void TreeViewContextMenu::rename()
 {
-    KFileItemList item;
-    item.append(m_fileInfo);
-    RenameDialog dialog(m_parent, item);
-    if (dialog.exec() == QDialog::Accepted) {
-        const QString& newName = dialog.newName();
-        if (!newName.isEmpty()) {
-            KUrl newUrl = m_fileInfo.url();
-            newUrl.setFileName(newName);
-            KonqOperations::rename(m_parent, m_fileInfo.url(), newUrl);
-        }
-    }
+    m_parent->rename(m_fileInfo);
 }
 
 void TreeViewContextMenu::moveToTrash()