]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincontextmenu.cpp
Fixed following issue for the information sidebar:
[dolphin.git] / src / dolphincontextmenu.cpp
index e17987fdd0c399d9d4774bb8cb0dca2976fe6583..81194e42b0dd20ea548aa2ed1049a12d0a977d93 100644 (file)
@@ -24,6 +24,8 @@
 #include "dolphinsettings.h"
 #include "dolphinview.h"
 #include "dolphinviewcontainer.h"
+#include "dolphin_generalsettings.h"
+#include "fileitemcapabilities.h"
 
 #include <kactioncollection.h>
 #include <kfileplacesmodel.h>
@@ -53,6 +55,7 @@ DolphinContextMenu::DolphinContextMenu(DolphinMainWindow* parent,
                                        const KFileItem& fileInfo,
                                        const KUrl& baseUrl) :
     m_mainWindow(parent),
+    m_capabilities(0),
     m_fileInfo(fileInfo),
     m_baseUrl(baseUrl),
     m_context(NoContext)
@@ -66,6 +69,8 @@ DolphinContextMenu::DolphinContextMenu(DolphinMainWindow* parent,
 
 DolphinContextMenu::~DolphinContextMenu()
 {
+    delete m_capabilities;
+    m_capabilities = 0;
 }
 
 void DolphinContextMenu::open()
@@ -95,25 +100,6 @@ void DolphinContextMenu::open()
     }
 }
 
-void DolphinContextMenu::pasteIntoFolder()
-{
-    // TODO: this method should go into DolphinView (see DolphinContextMenu::createPasteAction())
-    Q_ASSERT(m_selectedItems.count() == 1);
-    Q_ASSERT(m_fileInfo.isDir());
-
-    QClipboard* clipboard = QApplication::clipboard();
-    const QMimeData* mimeData = clipboard->mimeData();
-
-    const KUrl::List source = KUrl::List::fromMimeData(mimeData);
-    const KUrl& dest = m_fileInfo.url();
-    if (KonqMimeData::decodeIsCutSelection(mimeData)) {
-        KonqOperations::copy(m_mainWindow, KonqOperations::MOVE, source, dest);
-        clipboard->clear();
-    } else {
-        KonqOperations::copy(m_mainWindow, KonqOperations::COPY, source, dest);
-    }
-}
-
 void DolphinContextMenu::openTrashContextMenu()
 {
     Q_ASSERT(m_context & TrashContext);
@@ -135,7 +121,7 @@ void DolphinContextMenu::openTrashContextMenu()
 
     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(),
@@ -204,8 +190,17 @@ void DolphinContextMenu::openItemContextMenu()
     // 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");
@@ -435,14 +430,13 @@ QString DolphinContextMenu::placesName(const KUrl& url) const
 
 QAction* DolphinContextMenu::createPasteAction()
 {
-    // TODO: move this method as QAction* action pasteAction() into DolphinMainWindow
     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());
-        connect(action, SIGNAL(triggered()), this, SLOT(pasteIntoFolder()));
+        action->setEnabled(!pasteData.isEmpty() && capabilities().supportsWriting());
+        connect(action, SIGNAL(triggered()), m_mainWindow, SLOT(pasteIntoFolder()));
     } else {
         action = m_mainWindow->actionCollection()->action(KStandardAction::name(KStandardAction::Paste));
     }
@@ -450,4 +444,12 @@ QAction* DolphinContextMenu::createPasteAction()
     return action;
 }
 
+FileItemCapabilities& DolphinContextMenu::capabilities()
+{
+    if (m_capabilities == 0) {
+        m_capabilities = new FileItemCapabilities(m_selectedItems);
+    }
+    return *m_capabilities;
+}
+
 #include "dolphincontextmenu.moc"