#include "dolphinsettings.h"
#include "dolphinview.h"
#include "dolphinviewcontainer.h"
+#include "dolphin_generalsettings.h"
+#include "fileitemcapabilities.h"
#include <kactioncollection.h>
#include <kfileplacesmodel.h>
const KFileItem& fileInfo,
const KUrl& baseUrl) :
m_mainWindow(parent),
+ m_capabilities(0),
m_fileInfo(fileInfo),
m_baseUrl(baseUrl),
m_context(NoContext)
DolphinContextMenu::~DolphinContextMenu()
{
+ delete m_capabilities;
+ m_capabilities = 0;
}
void DolphinContextMenu::open()
}
}
-
void DolphinContextMenu::openTrashContextMenu()
{
Q_ASSERT(m_context & TrashContext);
QAction *action = popup->exec(QCursor::pos());
if (action == emptyTrashAction) {
- const QString text(i18nc("@info", "Do you really want to empty the Trash? All items will get deleted."));
+ const QString text(i18nc("@info", "Do you really want to empty the Trash? All items will be deleted."));
const bool del = KMessageBox::warningContinueCancel(m_mainWindow,
text,
QString(),
} else if (action == addToPlacesAction) {
const KUrl& url = m_mainWindow->activeViewContainer()->url();
if (url.isValid()) {
- DolphinSettings::instance().placesModel()->addPlace(i18n("Trash"), url);
+ DolphinSettings::instance().placesModel()->addPlace(i18nc("@label", "Trash"), url);
}
}
// Insert 'Actions' sub menu
KonqMenuActions menuActions;
menuActions.setItems(m_selectedItems);
- if (menuActions.addActionsTo(popup))
+ if (menuActions.addActionsTo(popup)) {
+ popup->addSeparator();
+ }
+
+ // Insert 'Copy To' and 'Move To' sub menus
+ if (DolphinSettings::instance().generalSettings()->showCopyMoveMenu()) {
+ m_copyToMenu.setItems(m_selectedItems);
+ m_copyToMenu.setReadOnly(!capabilities().supportsMoving());
+ m_copyToMenu.addActionsTo(popup);
popup->addSeparator();
+ }
// insert 'Properties...' entry
QAction* propertiesAction = m_mainWindow->actionCollection()->action("properties");
popup->addMenu(newMenu->menu());
popup->addSeparator();
- QAction* pasteAction = m_mainWindow->actionCollection()->action(KStandardAction::name(KStandardAction::Paste));
+ QAction* pasteAction = createPasteAction();
popup->addAction(pasteAction);
// setup 'View Mode' menu
// insert 'Cut', 'Copy' and 'Paste'
QAction* cutAction = collection->action(KStandardAction::name(KStandardAction::Cut));
QAction* copyAction = collection->action(KStandardAction::name(KStandardAction::Copy));
- QAction* pasteAction = collection->action(KStandardAction::name(KStandardAction::Paste));
+ QAction* pasteAction = createPasteAction();
popup->addAction(cutAction);
popup->addAction(copyAction);
return name;
}
+QAction* DolphinContextMenu::createPasteAction()
+{
+ QAction* action = 0;
+ if ((m_selectedItems.count() == 1) && m_fileInfo.isDir()) {
+ action = new QAction(KIcon("edit-paste"), i18nc("@action:inmenu", "Paste Into Folder"), this);
+ const QMimeData* mimeData = QApplication::clipboard()->mimeData();
+ const KUrl::List pasteData = KUrl::List::fromMimeData(mimeData);
+ action->setEnabled(!pasteData.isEmpty() && capabilities().supportsWriting());
+ connect(action, SIGNAL(triggered()), m_mainWindow, SLOT(pasteIntoFolder()));
+ } else {
+ action = m_mainWindow->actionCollection()->action(KStandardAction::name(KStandardAction::Paste));
+ }
+
+ return action;
+}
+
+FileItemCapabilities& DolphinContextMenu::capabilities()
+{
+ if (m_capabilities == 0) {
+ m_capabilities = new FileItemCapabilities(m_selectedItems);
+ }
+ return *m_capabilities;
+}
+
#include "dolphincontextmenu.moc"