]> cloud.milkyroute.net Git - dolphin.git/commitdiff
consider the protocol and directory capabilities for file actions like Rename, Delete...
authorPeter Penz <peter.penz19@gmail.com>
Fri, 18 Apr 2008 20:21:21 +0000 (20:21 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Fri, 18 Apr 2008 20:21:21 +0000 (20:21 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=798674

src/dolphinmainwindow.cpp
src/dolphinui.rc
src/fileitemcapabilities.h

index b165e1cb30d038892a03f6eeffaf4dd73d0b35aa..01edc78c9108fdee21b23a8f983f3f7808e014dd 100644 (file)
@@ -32,6 +32,7 @@
 #include "dolphinsettingsdialog.h"
 #include "dolphinstatusbar.h"
 #include "dolphinviewcontainer.h"
+#include "fileitemcapabilities.h"
 #include "infosidebarpage.h"
 #include "metadatawidget.h"
 #include "mainwindowadaptor.h"
@@ -457,10 +458,6 @@ void DolphinMainWindow::paste()
 void DolphinMainWindow::updatePasteAction()
 {
     QAction* pasteAction = actionCollection()->action(KStandardAction::name(KStandardAction::Paste));
-    if (pasteAction == 0) {
-        return;
-    }
-
     QPair<bool, QString> pasteInfo = m_activeViewContainer->view()->pasteInfo();
     pasteAction->setEnabled(pasteInfo.first);
     pasteAction->setText(pasteInfo.second);
@@ -1108,26 +1105,11 @@ void DolphinMainWindow::updateEditActions()
     } else {
         stateChanged("has_selection");
 
-        QAction* renameAction = actionCollection()->action("rename");
-        if (renameAction != 0) {
-            renameAction->setEnabled(true);
-        }
-
-        bool enableMoveToTrash = true;
-
-        KFileItemList::const_iterator it = list.begin();
-        const KFileItemList::const_iterator end = list.end();
-        while (it != end) {
-            const KUrl& url = (*it).url();
-            // only enable the 'Move to Trash' action for local files
-            if (!url.isLocalFile()) {
-                enableMoveToTrash = false;
-            }
-            ++it;
-        }
-
-        QAction* moveToTrashAction = actionCollection()->action("move_to_trash");
-        moveToTrashAction->setEnabled(enableMoveToTrash);
+        FileItemCapabilities capabilities(list);
+        actionCollection()->action("rename")->setEnabled(capabilities.supportsWriting());
+        const bool enableMoveToTrash = capabilities.isLocal() && capabilities.supportsWriting();
+        actionCollection()->action("move_to_trash")->setEnabled(enableMoveToTrash);
+        actionCollection()->action("delete")->setEnabled(capabilities.supportsWriting());
     }
     updatePasteAction();
 }
index efee42a0f76b0b0437eb78ad8c617c22b85d0343..603cfc580ba13b5dfac85f89abcec950f070571a 100644 (file)
@@ -95,6 +95,7 @@
   <enable>
    <Action name="edit_cut" />
    <Action name="edit_copy" />
+   <Action name="rename" />
    <Action name="move_to_trash" />
    <Action name="delete" />
    <Action name="properties" />
index 15d8383e9a9a54b5869df3308ed4b1888175f059..5ed6d1902469528e2e6d54f0d1757acd8c72cf88 100644 (file)
@@ -37,6 +37,7 @@ public:
     bool supportsDeleting() const;
     bool supportsWriting() const;
     bool supportsMoving() const;
+    bool isLocal() const;
 
 private:
     bool m_supportsReading : 1;
@@ -66,4 +67,9 @@ inline bool FileItemCapabilities::supportsMoving() const
     return m_supportsMoving;
 }
 
+inline bool FileItemCapabilities::isLocal() const
+{
+    return m_isLocal;
+}
+
 #endif