From c33b01efb2aed904af9ffaef27fb3b0b4bdda37b Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Sat, 29 Mar 2008 14:54:56 +0000 Subject: [PATCH] Move the pasteIntoFolder() method from the contextmenu into DolphinView. This allows to show the information inside the statusbar, that the paste operation has been completed (also some code duplication can be prevented by the way). svn path=/trunk/KDE/kdebase/apps/; revision=791436 --- src/dolphincontextmenu.cpp | 22 +--------------------- src/dolphincontextmenu.h | 3 --- src/dolphinmainwindow.cpp | 9 ++++++++- src/dolphinmainwindow.h | 7 +++++++ src/dolphinview.cpp | 33 +++++++++++++++++++++++---------- src/dolphinview.h | 13 +++++++++++++ 6 files changed, 52 insertions(+), 35 deletions(-) diff --git a/src/dolphincontextmenu.cpp b/src/dolphincontextmenu.cpp index e17987fdd..dd88fb74b 100644 --- a/src/dolphincontextmenu.cpp +++ b/src/dolphincontextmenu.cpp @@ -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)); } diff --git a/src/dolphincontextmenu.h b/src/dolphincontextmenu.h index 0b4d2bf53..f7234f8e0 100644 --- a/src/dolphincontextmenu.h +++ b/src/dolphincontextmenu.h @@ -69,9 +69,6 @@ public: /** Opens the context menu model. */ void open(); -private slots: - void pasteIntoFolder(); - private: void openTrashContextMenu(); void openTrashItemContextMenu(); diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 2db562ad1..126591b6c 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -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(); diff --git a/src/dolphinmainwindow.h b/src/dolphinmainwindow.h index 6d75d54e0..2fbb742fd 100644 --- a/src/dolphinmainwindow.h +++ b/src/dolphinmainwindow.h @@ -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. */ diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp index fdb4880bb..e1f1cf53c 100644 --- a/src/dolphinview.cpp +++ b/src/dolphinview.cpp @@ -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" diff --git a/src/dolphinview.h b/src/dolphinview.h index 4f2964761..c058338a8 100644 --- a/src/dolphinview.h +++ b/src/dolphinview.h @@ -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, -- 2.47.3