]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Move the pasteIntoFolder() method from the contextmenu into DolphinView. This allows...
authorPeter Penz <peter.penz19@gmail.com>
Sat, 29 Mar 2008 14:54:56 +0000 (14:54 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Sat, 29 Mar 2008 14:54:56 +0000 (14:54 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=791436

src/dolphincontextmenu.cpp
src/dolphincontextmenu.h
src/dolphinmainwindow.cpp
src/dolphinmainwindow.h
src/dolphinview.cpp
src/dolphinview.h

index e17987fdd0c399d9d4774bb8cb0dca2976fe6583..dd88fb74bcabf1d290bd271a4db800f61787cee1 100644 (file)
@@ -95,25 +95,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);
@@ -435,14 +416,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()));
+        connect(action, SIGNAL(triggered()), m_mainWindow, SLOT(pasteIntoFolder()));
     } else {
         action = m_mainWindow->actionCollection()->action(KStandardAction::name(KStandardAction::Paste));
     }
index 0b4d2bf5395e73a8cc5f4f2ca636a8c3dcfa0caf..f7234f8e0b9fc9196843337d29fc6ba95b693103 100644 (file)
@@ -69,9 +69,6 @@ public:
     /** Opens the context menu model. */
     void open();
 
-private slots:
-    void pasteIntoFolder();
-
 private:
     void openTrashContextMenu();
     void openTrashItemContextMenu();
index 2db562ad135a735792f096fa4821f8141f4060fa..126591b6c9e486616b5d2eeb87a491a6add4873f 100644 (file)
@@ -87,7 +87,9 @@ DolphinMainWindow::DolphinMainWindow(int id) :
     m_showMenuBar(0),
     m_splitter(0),
     m_activeViewContainer(0),
-    m_id(id)
+    m_id(id),
+    m_viewContainer(),
+    m_actionHandler(0)
 {
     setObjectName("Dolphin#");
     m_viewContainer[PrimaryView] = 0;
@@ -162,6 +164,11 @@ void DolphinMainWindow::dropUrls(const KUrl::List& urls,
     dropController.dropUrls(urls, destination);
 }
 
+void DolphinMainWindow::pasteIntoFolder()
+{
+    m_activeViewContainer->view()->pasteIntoFolder();
+}
+
 void DolphinMainWindow::changeUrl(const KUrl& url)
 {
     DolphinViewContainer* view = activeViewContainer();
index 6d75d54e0ad5e052b5671c5e18a4e76390f952aa..2fbb742fd704a6f896738e2cba4c8ec7834d9ae5 100644 (file)
@@ -109,6 +109,13 @@ public slots:
     void dropUrls(const KUrl::List& urls,
                   const KUrl& destination);
 
+    /**
+     * Pastes the clipboard data into the currently selected folder
+     * of the active view. If not exactly one folder is selected,
+     * no pasting is done at all.
+     */
+    void pasteIntoFolder();
+
     /**
      * Returns the main window ID used through DBus.
      */
index fdb4880bb7f3c6c4c600f7e03eba6bc34adec99e..e1f1cf53ccde1791c7eb1deed99e73317cb1c598 100644 (file)
@@ -607,17 +607,14 @@ void DolphinView::copySelectedItems()
 
 void DolphinView::paste()
 {
-    QClipboard* clipboard = QApplication::clipboard();
-    const QMimeData* mimeData = clipboard->mimeData();
+    pasteToUrl(url());
+}
 
-    const KUrl::List sourceUrls = KUrl::List::fromMimeData(mimeData);
-    if (KonqMimeData::decodeIsCutSelection(mimeData)) {
-        KonqOperations::copy(this, KonqOperations::MOVE, sourceUrls, url());
-        emit doingOperation(KonqFileUndoManager::MOVE);
-        clipboard->clear();
-    } else {
-        KonqOperations::copy(this, KonqOperations::COPY, sourceUrls, url());
-        emit doingOperation(KonqFileUndoManager::COPY);
+void DolphinView::pasteIntoFolder()
+{
+    const KFileItemList items = selectedItems();
+    if ((items.count() == 1) && items.first().isDir()) {
+        pasteToUrl(items.first().url());
     }
 }
 
@@ -1138,4 +1135,20 @@ bool DolphinView::isCutItem(const KFileItem& item) const
     return false;
 }
 
+void DolphinView::pasteToUrl(const KUrl& url)
+{
+    QClipboard* clipboard = QApplication::clipboard();
+    const QMimeData* mimeData = clipboard->mimeData();
+
+    const KUrl::List sourceUrls = KUrl::List::fromMimeData(mimeData);
+    if (KonqMimeData::decodeIsCutSelection(mimeData)) {
+        KonqOperations::copy(this, KonqOperations::MOVE, sourceUrls, url);
+        emit doingOperation(KonqFileUndoManager::MOVE);
+        clipboard->clear();
+    } else {
+        KonqOperations::copy(this, KonqOperations::COPY, sourceUrls, url);
+        emit doingOperation(KonqFileUndoManager::COPY);
+    }
+}
+
 #include "dolphinview.moc"
index 4f296476133d02c6bb49de884a4791723d681197..c058338a8c6c9cba699742226915281e3c0c1fd4 100644 (file)
@@ -358,6 +358,13 @@ public slots:
     /** Pastes the clipboard data to this view. */
     void paste();
 
+    /**
+     * Pastes the clipboard data into the currently selected
+     * folder. If the current selection is not exactly one folder, no
+     * paste operation is done.
+     */
+    void pasteIntoFolder();
+
     /**
      * Turns on the file preview for the all files of the current directory,
      * if \a show is true.
@@ -611,6 +618,12 @@ private:
      */
     bool isCutItem(const KFileItem& item) const;
 
+    /**
+     * Helper method for DolphinView::paste() and DolphinView::pasteIntoFolder().
+     * Pastes the clipboard data into the URL \a url.
+     */
+    void pasteToUrl(const KUrl& url);
+
     /**
      * Returns true, if the ColumnView is activated. As the column view
      * requires some special handling for iterating through directories,