X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/4c3dbbb628b5eac8530d5c49db4bf98da0444986..e8bc9f1072bfc43d7605315c8df69f37bfc71cc3:/src/dolphinmainwindow.cpp diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 8f68724ac..c38cc5ea3 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -53,7 +53,6 @@ #include #include #include -#include #include #include #include @@ -89,9 +88,9 @@ DolphinMainWindow::DolphinMainWindow(int id) : new MainWindowAdaptor(this); QDBusConnection::sessionBus().registerObject(QString("/dolphin/MainWindow%1").arg(m_id), this); - KonqUndoManager::incRef(); + KonqFileUndoManager::incRef(); - KonqUndoManager* undoManager = KonqUndoManager::self(); + KonqFileUndoManager* undoManager = KonqFileUndoManager::self(); undoManager->setUiInterface(new UndoUiInterface(this)); connect(undoManager, SIGNAL(undoAvailable(bool)), @@ -104,7 +103,7 @@ DolphinMainWindow::DolphinMainWindow(int id) : DolphinMainWindow::~DolphinMainWindow() { - KonqUndoManager::decRef(); + KonqFileUndoManager::decRef(); DolphinApplication::app()->removeMainWindow(this); } @@ -123,11 +122,10 @@ void DolphinMainWindow::toggleViews() m_viewContainer[SecondaryView] = container; } -void DolphinMainWindow::rename(const KUrl& oldUrl, const KUrl& newUrl) +void DolphinMainWindow::slotDoingOperation(KonqFileUndoManager::CommandType commandType) { clearStatusBar(); - KonqOperations::rename(this, oldUrl, newUrl); - m_undoCommandTypes.append(KonqUndoManager::RENAME); + m_undoCommandTypes.append(commandType); } void DolphinMainWindow::refreshViews() @@ -484,7 +482,7 @@ void DolphinMainWindow::updateNewMenu() void DolphinMainWindow::rename() { clearStatusBar(); - m_activeViewContainer->renameSelectedItems(); + m_activeViewContainer->view()->renameSelectedItems(); } void DolphinMainWindow::moveToTrash() @@ -492,7 +490,7 @@ void DolphinMainWindow::moveToTrash() clearStatusBar(); const KUrl::List selectedUrls = m_activeViewContainer->view()->selectedUrls(); KonqOperations::del(this, KonqOperations::TRASH, selectedUrls); - m_undoCommandTypes.append(KonqUndoManager::TRASH); + m_undoCommandTypes.append(KonqFileUndoManager::TRASH); } void DolphinMainWindow::deleteItems() @@ -561,31 +559,31 @@ void DolphinMainWindow::slotUndoAvailable(bool available) } if (available && (m_undoCommandTypes.count() > 0)) { - const KonqUndoManager::CommandType command = m_undoCommandTypes.takeFirst(); + const KonqFileUndoManager::CommandType command = m_undoCommandTypes.takeFirst(); DolphinStatusBar* statusBar = m_activeViewContainer->statusBar(); switch (command) { - case KonqUndoManager::COPY: + case KonqFileUndoManager::COPY: statusBar->setMessage(i18nc("@info:status", "Copy operation completed."), DolphinStatusBar::OperationCompleted); break; - case KonqUndoManager::MOVE: + case KonqFileUndoManager::MOVE: statusBar->setMessage(i18nc("@info:status", "Move operation completed."), DolphinStatusBar::OperationCompleted); break; - case KonqUndoManager::LINK: + case KonqFileUndoManager::LINK: statusBar->setMessage(i18nc("@info:status", "Link operation completed."), DolphinStatusBar::OperationCompleted); break; - case KonqUndoManager::TRASH: + case KonqFileUndoManager::TRASH: statusBar->setMessage(i18nc("@info:status", "Move to trash operation completed."), DolphinStatusBar::OperationCompleted); break; - case KonqUndoManager::RENAME: + case KonqFileUndoManager::RENAME: statusBar->setMessage(i18nc("@info:status", "Renaming operation completed."), DolphinStatusBar::OperationCompleted); break; - case KonqUndoManager::MKDIR: + case KonqFileUndoManager::MKDIR: statusBar->setMessage(i18nc("@info:status", "Created folder."), DolphinStatusBar::OperationCompleted); break; @@ -608,60 +606,22 @@ void DolphinMainWindow::slotUndoTextChanged(const QString& text) void DolphinMainWindow::undo() { clearStatusBar(); - KonqUndoManager::self()->undo(); + KonqFileUndoManager::self()->undo(); } void DolphinMainWindow::cut() { - QMimeData* mimeData = new QMimeData(); - const KUrl::List kdeUrls = m_activeViewContainer->view()->selectedUrls(); - const KUrl::List mostLocalUrls; - KonqMimeData::populateMimeData(mimeData, kdeUrls, mostLocalUrls, true); - QApplication::clipboard()->setMimeData(mimeData); + m_activeViewContainer->view()->cutSelectedItems(); } void DolphinMainWindow::copy() { - QMimeData* mimeData = new QMimeData(); - const KUrl::List kdeUrls = m_activeViewContainer->view()->selectedUrls(); - const KUrl::List mostLocalUrls; - KonqMimeData::populateMimeData(mimeData, kdeUrls, mostLocalUrls, false); - - QApplication::clipboard()->setMimeData(mimeData); + m_activeViewContainer->view()->copySelectedItems(); } void DolphinMainWindow::paste() { - QClipboard* clipboard = QApplication::clipboard(); - const QMimeData* mimeData = clipboard->mimeData(); - - clearStatusBar(); - - const KUrl::List sourceUrls = KUrl::List::fromMimeData(mimeData); - - // per default the pasting is done into the current Url of the view - KUrl destUrl(m_activeViewContainer->url()); - - // check whether the pasting should be done into a selected directory - KUrl::List selectedUrls = m_activeViewContainer->view()->selectedUrls(); - if (selectedUrls.count() == 1) { - const KFileItem fileItem(S_IFDIR, - KFileItem::Unknown, - selectedUrls.first(), - true); - if (fileItem.isDir()) { - // only one item is selected which is a directory, hence paste - // into this directory - destUrl = selectedUrls.first(); - } - } - - if (KonqMimeData::decodeIsCutSelection(mimeData)) { - moveUrls(sourceUrls, destUrl); - clipboard->clear(); - } else { - copyUrls(sourceUrls, destUrl); - } + m_activeViewContainer->view()->paste(); } void DolphinMainWindow::updatePasteAction() @@ -671,39 +631,9 @@ void DolphinMainWindow::updatePasteAction() return; } - QString text(i18nc("@action:inmenu", "Paste")); - QClipboard* clipboard = QApplication::clipboard(); - const QMimeData* mimeData = clipboard->mimeData(); - - KUrl::List urls = KUrl::List::fromMimeData(mimeData); - if (!urls.isEmpty()) { - pasteAction->setEnabled(true); - - pasteAction->setText(i18ncp("@action:inmenu", "Paste One File", "Paste %1 Files", urls.count())); - } else { - pasteAction->setEnabled(false); - pasteAction->setText(i18nc("@action:inmenu", "Paste")); - } - - if (pasteAction->isEnabled()) { - KUrl::List urls = m_activeViewContainer->view()->selectedUrls(); - const uint count = urls.count(); - if (count > 1) { - // pasting should not be allowed when more than one file - // is selected - pasteAction->setEnabled(false); - } else if (count == 1) { - // Only one file is selected. Pasting is only allowed if this - // file is a directory. - // TODO: this doesn't work with remote protocols; instead we need a - // m_activeViewContainer->selectedFileItems() to get the real KFileItems - const KFileItem fileItem(S_IFDIR, - KFileItem::Unknown, - urls.first(), - true); - pasteAction->setEnabled(fileItem.isDir()); - } - } + QPair pasteInfo = m_activeViewContainer->view()->pasteInfo(); + pasteAction->setEnabled(pasteInfo.first); + pasteAction->setText(pasteInfo.second); } void DolphinMainWindow::selectAll() @@ -1460,7 +1390,7 @@ void DolphinMainWindow::updateEditActions() QAction* renameAction = actionCollection()->action("rename"); if (renameAction != 0) { - renameAction->setEnabled(list.count() >= 1); + renameAction->setEnabled(true); } bool enableMoveToTrash = true; @@ -1536,19 +1466,19 @@ void DolphinMainWindow::updateGoActions() void DolphinMainWindow::copyUrls(const KUrl::List& source, const KUrl& dest) { KonqOperations::copy(this, KonqOperations::COPY, source, dest); - m_undoCommandTypes.append(KonqUndoManager::COPY); + m_undoCommandTypes.append(KonqFileUndoManager::COPY); } void DolphinMainWindow::moveUrls(const KUrl::List& source, const KUrl& dest) { KonqOperations::copy(this, KonqOperations::MOVE, source, dest); - m_undoCommandTypes.append(KonqUndoManager::MOVE); + m_undoCommandTypes.append(KonqFileUndoManager::MOVE); } void DolphinMainWindow::linkUrls(const KUrl::List& source, const KUrl& dest) { KonqOperations::copy(this, KonqOperations::LINK, source, dest); - m_undoCommandTypes.append(KonqUndoManager::LINK); + m_undoCommandTypes.append(KonqFileUndoManager::LINK); } void DolphinMainWindow::clearStatusBar() @@ -1583,6 +1513,8 @@ void DolphinMainWindow::connectViewSignals(int viewIndex) this, SLOT(slotRequestItemInfo(KFileItem))); connect(view, SIGNAL(activated()), this, SLOT(toggleActiveView())); + connect(view, SIGNAL(doingOperation(KonqFileUndoManager::CommandType)), + this, SLOT(slotDoingOperation(KonqFileUndoManager::CommandType))); const KUrlNavigator* navigator = container->urlNavigator(); connect(navigator, SIGNAL(urlChanged(const KUrl&)), @@ -1631,7 +1563,7 @@ void DolphinMainWindow::toggleAdditionalInfo(const char* actionName, } DolphinMainWindow::UndoUiInterface::UndoUiInterface(DolphinMainWindow* mainWin) : - KonqUndoManager::UiInterface(mainWin), + KonqFileUndoManager::UiInterface(mainWin), m_mainWin(mainWin) { Q_ASSERT(m_mainWin != 0);