]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincontextmenu.cpp
Dolphin: port from KonqOperations::doDrop to the new KIO::DropJob
[dolphin.git] / src / dolphincontextmenu.cpp
index b01346985e12ccfc72b0b572f26d4d0c7f3555eb..fccd6059ffb032440db6d6f09d902a5dc62ac5b2 100644 (file)
 #include "dolphinremoveaction.h"
 
 #include <KActionCollection>
-#include <kfileitemactionplugin.h>
-#include <kabstractfileitemactionplugin.h>
+#include <KAbstractFileItemActionPlugin>
 #include <KFileItemActions>
 #include <KFileItemListProperties>
 #include <KIO/RestoreJob>
 #include <KIO/EmptyTrashJob>
 #include <KIO/JobUiDelegate>
+#include <KIO/Paste>
 #include <KJobWidgets>
-#include <QMenu>
 #include <KMimeTypeTrader>
 #include <KNewFileMenu>
-#include <konq_operations.h>
 #include <KService>
 #include <KLocalizedString>
 #include <KStandardAction>
 #include <KToolBar>
 
+#include <QApplication>
+#include <QClipboard>
+#include <QKeyEvent>
 #include <QMenuBar>
+#include <QMenu>
+
 #include <panels/places/placesitem.h>
 #include <panels/places/placesitemmodel.h>
 
@@ -439,9 +442,11 @@ QAction* DolphinContextMenu::createPasteAction()
     QAction* action = 0;
     const bool isDir = !m_fileInfo.isNull() && m_fileInfo.isDir();
     if (isDir && (m_selectedItems.count() == 1)) {
-        const QPair<bool, QString> pasteInfo = KonqOperations::pasteInfo(m_fileInfo.url());
-        action = new QAction(QIcon::fromTheme("edit-paste"), i18nc("@action:inmenu", "Paste Into Folder"), this);
-        action->setEnabled(pasteInfo.first);
+        const QMimeData *mimeData = QApplication::clipboard()->mimeData();
+        bool canPaste;
+        const QString text = KIO::pasteActionText(mimeData, &canPaste, m_fileInfo);
+        action = new QAction(QIcon::fromTheme("edit-paste"), text, this);
+        action->setEnabled(canPaste);
         connect(action, &QAction::triggered, m_mainWindow, &DolphinMainWindow::pasteIntoFolder);
     } else {
         action = m_mainWindow->actionCollection()->action(KStandardAction::name(KStandardAction::Paste));
@@ -461,7 +466,7 @@ KFileItemListProperties& DolphinContextMenu::selectedItemsProperties() const
 KFileItem DolphinContextMenu::baseFileItem()
 {
     if (!m_baseFileItem) {
-        m_baseFileItem = new KFileItem(KFileItem::Unknown, KFileItem::Unknown, m_baseUrl);
+        m_baseFileItem = new KFileItem(m_baseUrl);
     }
     return *m_baseFileItem;
 }
@@ -505,13 +510,6 @@ void DolphinContextMenu::addFileItemPluginActions()
             continue;
         }
 
-        // Old API (kdelibs-4.6.0 only)
-        KFileItemActionPlugin* plugin = service->createInstance<KFileItemActionPlugin>();
-        if (plugin) {
-            plugin->setParent(this);
-            addActions(plugin->actions(props, m_mainWindow));
-        }
-        // New API (kdelibs >= 4.6.1)
         KAbstractFileItemActionPlugin* abstractPlugin = service->createInstance<KAbstractFileItemActionPlugin>();
         if (abstractPlugin) {
             abstractPlugin->setParent(this);