┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dolphincontextmenu.cpp22
-rw-r--r--src/dolphincontextmenu.h3
-rw-r--r--src/dolphinmainwindow.cpp9
-rw-r--r--src/dolphinmainwindow.h7
-rw-r--r--src/dolphinview.cpp33
-rw-r--r--src/dolphinview.h13
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
@@ -110,6 +110,13 @@ public slots:
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.
*/
int getId() const;
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
@@ -359,6 +359,13 @@ public slots:
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.
* If the view properties should be remembered for each directory
@@ -612,6 +619,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,
* this method has been introduced for convenience.