]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Add "Show Target" into symlink context menu and file menu
authorRoman Inflianskas <infroma@gmail.com>
Sun, 18 Mar 2018 10:55:24 +0000 (13:55 +0300)
committerRoman Inflianskas <infroma@gmail.com>
Sun, 18 Mar 2018 12:08:36 +0000 (15:08 +0300)
Summary:
Add "Show Target" into symlink context menu and file menu

FEATURE: 215069

Reviewers: ngraham, elvisangelaccio

Reviewed By: ngraham, elvisangelaccio

Subscribers: rkflx, ngraham, elvisangelaccio, markg, #dolphin

Differential Revision: https://phabricator.kde.org/D10990

src/dolphincontextmenu.cpp
src/dolphinmainwindow.cpp
src/dolphinmainwindow.h
src/dolphinui.rc

index b3ecc74b9ffd1c37948d537f36138144c6182b3d..fbd62ad252c4a01d3dfc14482e9856ff6b1efa35 100644 (file)
@@ -194,7 +194,7 @@ void DolphinContextMenu::openItemContextMenu()
 
     if (m_selectedItems.count() == 1) {
         if (m_fileInfo.isLink()) {
-            addAction(m_mainWindow->actionCollection()->action(QStringLiteral("show_original")));
+            addAction(m_mainWindow->actionCollection()->action(QStringLiteral("show_target")));
             addSeparator();
         } else if (m_fileInfo.isDir()) {
             // setup 'Create New' menu
index c5067fe0ed8e51e89aa273d428d47575cab1ed43..b09d7deef2304331536298e6aefbadb8be0d187d 100644 (file)
@@ -357,6 +357,22 @@ void DolphinMainWindow::openInNewWindow()
     }
 }
 
+void DolphinMainWindow::showTarget()
+{
+    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::exists(linkDestination)) {
+        KIO::highlightInFileManager({QUrl::fromLocalFile(linkDestination).adjusted(QUrl::StripTrailingSlash)});
+    } else {
+        m_activeViewContainer->showMessage(xi18nc("@info", "Could not access <filename>%1</filename>.", linkDestination),
+                                           DolphinViewContainer::Warning);
+    }
+}
+
 void DolphinMainWindow::showEvent(QShowEvent* event)
 {
     KXmlGuiWindow::showEvent(event);
@@ -1215,23 +1231,11 @@ 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* showTarget = actionCollection()->addAction(QStringLiteral("show_target"));
+    showTarget->setText(i18nc("@action:inmenu", "Show Target"));
+    showTarget->setIcon(QIcon::fromTheme(QStringLiteral("document-open-folder")));
+    showTarget->setEnabled(false);
+    connect(showTarget, &QAction::triggered, this, &DolphinMainWindow::showTarget);
 
     QAction* openInNewTab = actionCollection()->addAction(QStringLiteral("open_in_new_tab"));
     openInNewTab->setText(i18nc("@action:inmenu", "Open in New Tab"));
@@ -1398,7 +1402,7 @@ void DolphinMainWindow::updateEditActions()
         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"));
+        QAction* showTarget              = col->action(QStringLiteral("show_target"));
 
         KFileItemListProperties capabilities(list);
         const bool enableMoveToTrash = capabilities.isLocal() && capabilities.supportsMoving();
@@ -1408,7 +1412,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());
+        showTarget->setEnabled(list.length() == 1 && list.at(0).isLink());
     }
 }
 
index 25233096ab2a967bcbd70aadf84350af389907bf..637f41f2108e2d143abc2beeadb6cd9b6ff0c624 100644 (file)
@@ -339,6 +339,11 @@ private slots:
      */
     void openInNewWindow();
 
+    /**
+     * Show the target of the selected symlink
+     */
+    void showTarget();
+
     /**
      * Indicates in the statusbar that the execution of the command \a command
      * has been finished.
index 873bca7c7a9ab2a985ecdd09f0ecf776a6c75e7b..566f50fc846fcd874e4ae459f629c05fc717e1b7 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
-<kpartgui name="dolphin" version="18">
+<kpartgui name="dolphin" version="19">
     <MenuBar>
         <Menu name="file">
             <Action name="new_menu" />
@@ -12,7 +12,7 @@
             <Action name="movetotrash" />
             <Action name="deletefile" />
             <Separator/>
-            <Action name="show_original" />
+            <Action name="show_target" />
             <Separator/>
             <Action name="properties" />
         </Menu>