X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/32bd8efc7f08a30622deaa3a80b7b26ceaea9f29..eb68fae15cdbf15e894d1a9d555c88d306261cc2:/src/dolphinmainwindow.cpp diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 48e67733d..c5067fe0e 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -41,44 +41,45 @@ #include "views/draganddrophelper.h" #include "views/viewproperties.h" #include "views/dolphinnewfilemenuobserver.h" - #include "dolphin_generalsettings.h" #include #include #include #include -#include +#include +#include #include -#include -#include -#include #include +#include +#include #include -#include -#include -#include #include -#include -#include +#include +#include #include #include #include #include -#include +#include #include #include +#include #include -#include #include -#include -#include -#include -#include #include -#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include namespace { // Used for GeneralSettings::version() to determine whether @@ -411,6 +412,7 @@ void DolphinMainWindow::closeEvent(QCloseEvent* event) case QDialogButtonBox::No: // Close only the current tab m_tabWidget->closeTab(); + Q_FALLTHROUGH(); default: event->ignore(); return; @@ -1213,6 +1215,24 @@ void DolphinMainWindow::setupActions() actionCollection()->setDefaultShortcuts(activatePrevTab, prevTabKeys); // for context menu + QAction* showOriginal = actionCollection()->addAction(QStringLiteral("show_original")); + showOriginal->setText(i18nc("@action:inmenu", "Show Original")); + showOriginal->setIcon(QIcon::fromTheme(QStringLiteral("document-open-folder"))); + showOriginal->setEnabled(false); + connect(showOriginal, &QAction::triggered, [this]() { + const auto link = m_activeViewContainer->view()->selectedItems().at(0); + const auto linkLocationDir = QFileInfo(link.localPath()).absoluteDir(); + auto linkDestination = link.linkDest(); + if (QFileInfo(linkDestination).isRelative()) + linkDestination = linkLocationDir.filePath(linkDestination); + if (QFileInfo(linkDestination).exists()) { + KIO::highlightInFileManager({QUrl::fromLocalFile(linkDestination).adjusted(QUrl::StripTrailingSlash)}); + } else { + m_activeViewContainer->showMessage( + i18n("Could not access \"%1\".").arg(linkDestination), DolphinViewContainer::Warning); + } + }); + QAction* openInNewTab = actionCollection()->addAction(QStringLiteral("open_in_new_tab")); openInNewTab->setText(i18nc("@action:inmenu", "Open in New Tab")); openInNewTab->setIcon(QIcon::fromTheme(QStringLiteral("tab-new"))); @@ -1373,11 +1393,12 @@ void DolphinMainWindow::updateEditActions() stateChanged(QStringLiteral("has_selection")); KActionCollection* col = actionCollection(); - QAction* renameAction = col->action(KStandardAction::name(KStandardAction::RenameFile)); - QAction* moveToTrashAction = col->action(KStandardAction::name(KStandardAction::MoveToTrash)); - QAction* deleteAction = col->action(KStandardAction::name(KStandardAction::DeleteFile)); - QAction* cutAction = col->action(KStandardAction::name(KStandardAction::Cut)); + QAction* renameAction = col->action(KStandardAction::name(KStandardAction::RenameFile)); + QAction* moveToTrashAction = col->action(KStandardAction::name(KStandardAction::MoveToTrash)); + QAction* deleteAction = col->action(KStandardAction::name(KStandardAction::DeleteFile)); + QAction* cutAction = col->action(KStandardAction::name(KStandardAction::Cut)); QAction* deleteWithTrashShortcut = col->action(QStringLiteral("delete_shortcut")); // see DolphinViewActionHandler + QAction* showOriginal = col->action(QStringLiteral("show_original")); KFileItemListProperties capabilities(list); const bool enableMoveToTrash = capabilities.isLocal() && capabilities.supportsMoving(); @@ -1387,6 +1408,7 @@ void DolphinMainWindow::updateEditActions() deleteAction->setEnabled(capabilities.supportsDeleting()); deleteWithTrashShortcut->setEnabled(capabilities.supportsDeleting() && !enableMoveToTrash); cutAction->setEnabled(capabilities.supportsMoving()); + showOriginal->setEnabled(list.length() == 1 && list.at(0).isLink()); } }