consider the protocol and directory capabilities for file actions like Rename, Delete and Move To Trash

svn path=/trunk/KDE/kdebase/apps/; revision=798674
This commit is contained in:
Peter Penz 2008-04-18 20:21:21 +00:00
parent 7d0080868b
commit 6ba12bacc7
3 changed files with 13 additions and 24 deletions

View file

@ -32,6 +32,7 @@
#include "dolphinsettingsdialog.h" #include "dolphinsettingsdialog.h"
#include "dolphinstatusbar.h" #include "dolphinstatusbar.h"
#include "dolphinviewcontainer.h" #include "dolphinviewcontainer.h"
#include "fileitemcapabilities.h"
#include "infosidebarpage.h" #include "infosidebarpage.h"
#include "metadatawidget.h" #include "metadatawidget.h"
#include "mainwindowadaptor.h" #include "mainwindowadaptor.h"
@ -457,10 +458,6 @@ void DolphinMainWindow::paste()
void DolphinMainWindow::updatePasteAction() void DolphinMainWindow::updatePasteAction()
{ {
QAction* pasteAction = actionCollection()->action(KStandardAction::name(KStandardAction::Paste)); QAction* pasteAction = actionCollection()->action(KStandardAction::name(KStandardAction::Paste));
if (pasteAction == 0) {
return;
}
QPair<bool, QString> pasteInfo = m_activeViewContainer->view()->pasteInfo(); QPair<bool, QString> pasteInfo = m_activeViewContainer->view()->pasteInfo();
pasteAction->setEnabled(pasteInfo.first); pasteAction->setEnabled(pasteInfo.first);
pasteAction->setText(pasteInfo.second); pasteAction->setText(pasteInfo.second);
@ -1108,26 +1105,11 @@ void DolphinMainWindow::updateEditActions()
} else { } else {
stateChanged("has_selection"); stateChanged("has_selection");
QAction* renameAction = actionCollection()->action("rename"); FileItemCapabilities capabilities(list);
if (renameAction != 0) { actionCollection()->action("rename")->setEnabled(capabilities.supportsWriting());
renameAction->setEnabled(true); const bool enableMoveToTrash = capabilities.isLocal() && capabilities.supportsWriting();
} actionCollection()->action("move_to_trash")->setEnabled(enableMoveToTrash);
actionCollection()->action("delete")->setEnabled(capabilities.supportsWriting());
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);
} }
updatePasteAction(); updatePasteAction();
} }

View file

@ -95,6 +95,7 @@
<enable> <enable>
<Action name="edit_cut" /> <Action name="edit_cut" />
<Action name="edit_copy" /> <Action name="edit_copy" />
<Action name="rename" />
<Action name="move_to_trash" /> <Action name="move_to_trash" />
<Action name="delete" /> <Action name="delete" />
<Action name="properties" /> <Action name="properties" />

View file

@ -37,6 +37,7 @@ public:
bool supportsDeleting() const; bool supportsDeleting() const;
bool supportsWriting() const; bool supportsWriting() const;
bool supportsMoving() const; bool supportsMoving() const;
bool isLocal() const;
private: private:
bool m_supportsReading : 1; bool m_supportsReading : 1;
@ -66,4 +67,9 @@ inline bool FileItemCapabilities::supportsMoving() const
return m_supportsMoving; return m_supportsMoving;
} }
inline bool FileItemCapabilities::isLocal() const
{
return m_isLocal;
}
#endif #endif