X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/f11c699fa203dd2cde0e85c63a6d186e3fa6a3de..e8bc9f1072bfc43d7605315c8df69f37bfc71cc3:/src/dolphinmainwindow.cpp diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index f4f45ad70..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() @@ -178,7 +176,7 @@ void DolphinMainWindow::dropUrls(const KUrl::List& urls, QString seq = QKeySequence(Qt::ShiftModifier).toString(); seq.chop(1); // chop superfluous '+' - QAction* moveAction = popup.addAction(KIcon("goto-page"), + QAction* moveAction = popup.addAction(KIcon("go-jump"), i18nc("@action:inmenu", "&Move Here\t%1", seq)); @@ -190,7 +188,7 @@ void DolphinMainWindow::dropUrls(const KUrl::List& urls, seq = QKeySequence(Qt::ControlModifier + Qt::ShiftModifier).toString(); seq.chop(1); - QAction* linkAction = popup.addAction(KIcon("www"), + QAction* linkAction = popup.addAction(KIcon("insert-link"), i18nc("@action:inmenu", "&Link Here\t%1", seq)); @@ -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() @@ -917,7 +847,9 @@ void DolphinMainWindow::toggleEditLocation() void DolphinMainWindow::editLocation() { - m_activeViewContainer->urlNavigator()->setUrlEditable(true); + KUrlNavigator* navigator = m_activeViewContainer->urlNavigator(); + navigator->setUrlEditable(true); + navigator->setFocus(); } void DolphinMainWindow::adjustViewProperties() @@ -1109,30 +1041,30 @@ void DolphinMainWindow::setupActions() connect(menu, SIGNAL(aboutToShow()), this, SLOT(updateNewMenu())); - QAction* newWindow = actionCollection()->addAction("new_window"); + KAction* newWindow = actionCollection()->addAction("new_window"); newWindow->setIcon(KIcon("window-new")); newWindow->setText(i18nc("@action:inmenu File", "New &Window")); newWindow->setShortcut(Qt::CTRL | Qt::Key_N); connect(newWindow, SIGNAL(triggered()), this, SLOT(openNewMainWindow())); - QAction* rename = actionCollection()->addAction("rename"); + KAction* rename = actionCollection()->addAction("rename"); rename->setText(i18nc("@action:inmenu File", "Rename...")); rename->setShortcut(Qt::Key_F2); connect(rename, SIGNAL(triggered()), this, SLOT(rename())); - QAction* moveToTrash = actionCollection()->addAction("move_to_trash"); + KAction* moveToTrash = actionCollection()->addAction("move_to_trash"); moveToTrash->setText(i18nc("@action:inmenu File", "Move to Trash")); moveToTrash->setIcon(KIcon("user-trash")); moveToTrash->setShortcut(QKeySequence::Delete); connect(moveToTrash, SIGNAL(triggered()), this, SLOT(moveToTrash())); - QAction* deleteAction = actionCollection()->addAction("delete"); + KAction* deleteAction = actionCollection()->addAction("delete"); deleteAction->setText(i18nc("@action:inmenu File", "Delete")); deleteAction->setShortcut(Qt::SHIFT | Qt::Key_Delete); deleteAction->setIcon(KIcon("edit-delete")); connect(deleteAction, SIGNAL(triggered()), this, SLOT(deleteItems())); - QAction* properties = actionCollection()->addAction("properties"); + KAction* properties = actionCollection()->addAction("properties"); properties->setText(i18nc("@action:inmenu File", "Properties")); properties->setShortcut(Qt::ALT | Qt::Key_Return); connect(properties, SIGNAL(triggered()), this, SLOT(properties())); @@ -1144,16 +1076,21 @@ void DolphinMainWindow::setupActions() SLOT(undo()), actionCollection()); - KStandardAction::cut(this, SLOT(cut()), actionCollection()); + //Need to remove shift+del from cut action, else the shortcut for deletejob + //doesn't work + KAction* cut = KStandardAction::cut(this, SLOT(cut()), actionCollection()); + KShortcut cutShortcut = cut->shortcut(); + cutShortcut.remove(Qt::SHIFT + Qt::Key_Delete, KShortcut::KeepEmpty); + cut->setShortcut(cutShortcut); KStandardAction::copy(this, SLOT(copy()), actionCollection()); KStandardAction::paste(this, SLOT(paste()), actionCollection()); - QAction* selectAll = actionCollection()->addAction("select_all"); + KAction* selectAll = actionCollection()->addAction("select_all"); selectAll->setText(i18nc("@action:inmenu Edit", "Select All")); selectAll->setShortcut(Qt::CTRL + Qt::Key_A); connect(selectAll, SIGNAL(triggered()), this, SLOT(selectAll())); - QAction* invertSelection = actionCollection()->addAction("invert_selection"); + KAction* invertSelection = actionCollection()->addAction("invert_selection"); invertSelection->setText(i18nc("@action:inmenu Edit", "Invert Selection")); invertSelection->setShortcut(Qt::CTRL | Qt::SHIFT | Qt::Key_A); connect(invertSelection, SIGNAL(triggered()), this, SLOT(invertSelection())); @@ -1279,18 +1216,18 @@ void DolphinMainWindow::setupActions() showHiddenFiles->setShortcut(Qt::ALT | Qt::Key_Period); connect(showHiddenFiles, SIGNAL(triggered()), this, SLOT(toggleShowHiddenFiles())); - QAction* split = actionCollection()->addAction("split_view"); + KAction* split = actionCollection()->addAction("split_view"); split->setShortcut(Qt::Key_F10); updateSplitAction(); connect(split, SIGNAL(triggered()), this, SLOT(toggleSplitView())); - QAction* reload = actionCollection()->addAction("reload"); + KAction* reload = actionCollection()->addAction("reload"); reload->setText(i18nc("@action:inmenu View", "Reload")); reload->setShortcut(Qt::Key_F5); reload->setIcon(KIcon("view-refresh")); connect(reload, SIGNAL(triggered()), this, SLOT(reloadView())); - QAction* stop = actionCollection()->addAction("stop"); + KAction* stop = actionCollection()->addAction("stop"); stop->setText(i18nc("@action:inmenu View", "Stop")); stop->setIcon(KIcon("process-stop")); connect(stop, SIGNAL(triggered()), this, SLOT(stopLoading())); @@ -1303,12 +1240,12 @@ void DolphinMainWindow::setupActions() showFullLocation->setShortcut(Qt::CTRL | Qt::Key_L); connect(showFullLocation, SIGNAL(triggered()), this, SLOT(toggleEditLocation())); - QAction* editLocation = actionCollection()->addAction("edit_location"); + KAction* editLocation = actionCollection()->addAction("edit_location"); editLocation->setText(i18nc("@action:inmenu Navigation Bar", "Edit Location")); editLocation->setShortcut(Qt::Key_F6); connect(editLocation, SIGNAL(triggered()), this, SLOT(editLocation())); - QAction* adjustViewProps = actionCollection()->addAction("view_properties"); + KAction* adjustViewProps = actionCollection()->addAction("view_properties"); adjustViewProps->setText(i18nc("@action:inmenu View", "Adjust View Properties...")); connect(adjustViewProps, SIGNAL(triggered()), this, SLOT(adjustViewProperties())); @@ -1326,7 +1263,7 @@ void DolphinMainWindow::setupActions() QAction* findFile = actionCollection()->addAction("find_file"); findFile->setText(i18nc("@action:inmenu Tools", "Find File...")); findFile->setShortcut(Qt::CTRL | Qt::Key_F); - findFile->setIcon(KIcon("file-find")); + findFile->setIcon(KIcon("edit-find")); connect(findFile, SIGNAL(triggered()), this, SLOT(findFile())); KToggleAction* showFilterBar = actionCollection()->add("show_filter_bar"); @@ -1334,7 +1271,7 @@ void DolphinMainWindow::setupActions() showFilterBar->setShortcut(Qt::CTRL | Qt::Key_I); connect(showFilterBar, SIGNAL(triggered()), this, SLOT(toggleFilterBarVisibility())); - QAction* compareFiles = actionCollection()->addAction("compare_files"); + KAction* compareFiles = actionCollection()->addAction("compare_files"); compareFiles->setText(i18nc("@action:inmenu Tools", "Compare Files")); compareFiles->setIcon(KIcon("kompare")); compareFiles->setEnabled(false); @@ -1453,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; @@ -1529,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() @@ -1576,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&)), @@ -1624,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);