From 9a622c16d969a39571b610304db759f941b5d4f3 Mon Sep 17 00:00:00 2001 From: Dawit Alemayehu Date: Tue, 17 Jul 2012 22:47:10 -0400 Subject: [PATCH] Show the "Find File" and "Open Terminal" actions in the Tools for file URLs only. BUG: 279283 FIXED-IN: 4.9.0 REVIEW: 105607 --- dolphin/src/dolphinpart.cpp | 28 ++++++++++++++++++---------- dolphin/src/dolphinpart.h | 2 ++ 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/dolphin/src/dolphinpart.cpp b/dolphin/src/dolphinpart.cpp index b3b7cd044e..d1626e55d5 100644 --- a/dolphin/src/dolphinpart.cpp +++ b/dolphin/src/dolphinpart.cpp @@ -56,6 +56,7 @@ K_EXPORT_PLUGIN(DolphinPartFactory("dolphinpart", "dolphin")) DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QVariantList& args) : KParts::ReadOnlyPart(parent) + ,m_openTerminalAction(0) { Q_UNUSED(args) setComponentData(DolphinPartFactory::componentData(), false); @@ -190,18 +191,18 @@ void DolphinPart::createActions() goActionGroup); // Tools menu - KAction* findFile = actionCollection()->addAction("find_file"); - findFile->setText(i18nc("@action:inmenu Tools", "Find File...")); - findFile->setShortcut(Qt::CTRL | Qt::Key_F); - findFile->setIcon(KIcon("edit-find")); - connect(findFile, SIGNAL(triggered()), this, SLOT(slotFindFile())); + m_findFileAction = actionCollection()->addAction("find_file"); + m_findFileAction->setText(i18nc("@action:inmenu Tools", "Find File...")); + m_findFileAction->setShortcut(Qt::CTRL | Qt::Key_F); + m_findFileAction->setIcon(KIcon("edit-find")); + connect(m_findFileAction, SIGNAL(triggered()), this, SLOT(slotFindFile())); if (KAuthorized::authorizeKAction("shell_access")) { - KAction* action = actionCollection()->addAction("open_terminal"); - action->setIcon(KIcon("utilities-terminal")); - action->setText(i18nc("@action:inmenu Tools", "Open &Terminal")); - connect(action, SIGNAL(triggered()), SLOT(slotOpenTerminal())); - action->setShortcut(Qt::Key_F4); + m_openTerminalAction = actionCollection()->addAction("open_terminal"); + m_openTerminalAction->setIcon(KIcon("utilities-terminal")); + m_openTerminalAction->setText(i18nc("@action:inmenu Tools", "Open &Terminal")); + connect(m_openTerminalAction, SIGNAL(triggered()), SLOT(slotOpenTerminal())); + m_openTerminalAction->setShortcut(Qt::Key_F4); } } @@ -296,6 +297,13 @@ bool DolphinPart::openUrl(const KUrl& url) emit aboutToOpenURL(); if (reload) m_view->reload(); + // Disable "Find File" and "Open Terminal" actions for non-file URLs, + // e.g. ftp, smb, etc. #279283 + const bool isLocalUrl = url.isLocalFile(); + m_findFileAction->setEnabled(isLocalUrl); + if (m_openTerminalAction) { + m_openTerminalAction->setEnabled(isLocalUrl); + } return true; } diff --git a/dolphin/src/dolphinpart.h b/dolphin/src/dolphinpart.h index 0a8ce07bd6..e5693b3637 100644 --- a/dolphin/src/dolphinpart.h +++ b/dolphin/src/dolphinpart.h @@ -238,6 +238,8 @@ private: DolphinRemoteEncoding* m_remoteEncoding; DolphinPartBrowserExtension* m_extension; KNewFileMenu* m_newFileMenu; + KAction* m_findFileAction; + KAction* m_openTerminalAction; QString m_nameFilter; Q_DISABLE_COPY(DolphinPart) };