]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincontextmenu.cpp
Use KonqFileItemCapabilities in KonqPopupMenuInformation instead of the too-basic...
[dolphin.git] / src / dolphincontextmenu.cpp
index 41673e182d291cbfa88aac0ebe740f1c9cb94ce2..a9a5ffefe34af5b8be6a56532185ac7b1a706843 100644 (file)
 #include <kmimetypetrader.h>
 #include <knewmenu.h>
 #include <konqmimedata.h>
+#include <konq_fileitemcapabilities.h>
 #include <konq_operations.h>
 #include <konq_menuactions.h>
+#include <konq_popupmenuinformation.h>
 #include <klocale.h>
 #include <kpropertiesdialog.h>
 #include <krun.h>
@@ -54,6 +56,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)
@@ -67,6 +70,8 @@ DolphinContextMenu::DolphinContextMenu(DolphinMainWindow* parent,
 
 DolphinContextMenu::~DolphinContextMenu()
 {
+    delete m_capabilities;
+    m_capabilities = 0;
 }
 
 void DolphinContextMenu::open()
@@ -180,12 +185,17 @@ void DolphinContextMenu::openItemContextMenu()
     }
 
     // Insert 'Open With...' sub menu
+    // TODO: port to menuActions.addOpenWithActionsTo(popup);
     QVector<KService::Ptr> openWithVector;
     const QList<QAction*> openWithActions = insertOpenWithItems(popup, openWithVector);
 
+    KonqPopupMenuInformation popupInfo;
+    popupInfo.setItems(m_selectedItems);
+    popupInfo.setParentWidget(m_mainWindow);
+
     // Insert 'Actions' sub menu
     KonqMenuActions menuActions;
-    menuActions.setItems(m_selectedItems);
+    menuActions.setPopupMenuInfo(popupInfo);
     if (menuActions.addActionsTo(popup)) {
         popup->addSeparator();
     }
@@ -193,6 +203,7 @@ void DolphinContextMenu::openItemContextMenu()
     // Insert 'Copy To' and 'Move To' sub menus
     if (DolphinSettings::instance().generalSettings()->showCopyMoveMenu()) {
         m_copyToMenu.setItems(m_selectedItems);
+        m_copyToMenu.setReadOnly(!capabilities().supportsWriting());
         m_copyToMenu.addActionsTo(popup);
         popup->addSeparator();
     }
@@ -430,7 +441,7 @@ QAction* DolphinContextMenu::createPasteAction()
         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());
+        action->setEnabled(!pasteData.isEmpty() && capabilities().supportsWriting());
         connect(action, SIGNAL(triggered()), m_mainWindow, SLOT(pasteIntoFolder()));
     } else {
         action = m_mainWindow->actionCollection()->action(KStandardAction::name(KStandardAction::Paste));
@@ -439,4 +450,12 @@ QAction* DolphinContextMenu::createPasteAction()
     return action;
 }
 
+KonqFileItemCapabilities& DolphinContextMenu::capabilities()
+{
+    if (m_capabilities == 0) {
+        m_capabilities = new KonqFileItemCapabilities(m_selectedItems);
+    }
+    return *m_capabilities;
+}
+
 #include "dolphincontextmenu.moc"