diff --git a/src/plugins/help/help.pro b/src/plugins/help/help.pro index 552818098d2..18d38698fe7 100644 --- a/src/plugins/help/help.pro +++ b/src/plugins/help/help.pro @@ -36,7 +36,8 @@ HEADERS += \ remotehelpfilter.h \ searchwidget.h \ xbelsupport.h \ - externalhelpwindow.h + externalhelpwindow.h \ + searchtaskhandler.h SOURCES += \ centralwidget.cpp \ @@ -58,7 +59,8 @@ SOURCES += \ remotehelpfilter.cpp \ searchwidget.cpp \ xbelsupport.cpp \ - externalhelpwindow.cpp + externalhelpwindow.cpp \ + searchtaskhandler.cpp FORMS += docsettingspage.ui \ filtersettingspage.ui \ diff --git a/src/plugins/help/help.qbs b/src/plugins/help/help.qbs index 5786458f95c..a8214723200 100644 --- a/src/plugins/help/help.qbs +++ b/src/plugins/help/help.qbs @@ -23,6 +23,7 @@ QtcPlugin { Depends { name: "Utils" } Depends { name: "Core" } + Depends { name: "ProjectExplorer" } Depends { name: "app_version_header" } @@ -59,6 +60,7 @@ QtcPlugin { "openpagesswitcher.cpp", "openpagesswitcher.h", "openpageswidget.cpp", "openpageswidget.h", "remotehelpfilter.cpp", "remotehelpfilter.h", "remotehelpfilter.ui", + "searchtaskhandler.cpp", "searchtaskhandler.h", "searchwidget.cpp", "searchwidget.h", "xbelsupport.cpp", "xbelsupport.h", ] diff --git a/src/plugins/help/help_dependencies.pri b/src/plugins/help/help_dependencies.pri index 78b2513fbdb..2094a72dd37 100644 --- a/src/plugins/help/help_dependencies.pri +++ b/src/plugins/help/help_dependencies.pri @@ -4,4 +4,5 @@ QTC_LIB_DEPENDS += \ extensionsystem \ utils QTC_PLUGIN_DEPENDS += \ - coreplugin + coreplugin \ + projectexplorer diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp index 7001cfe1598..ef86fe8305a 100644 --- a/src/plugins/help/helpplugin.cpp +++ b/src/plugins/help/helpplugin.cpp @@ -44,6 +44,7 @@ #include "openpagesmodel.h" #include "remotehelpfilter.h" #include "searchwidget.h" +#include "searchtaskhandler.h" #include #include @@ -173,6 +174,7 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error) addAutoReleasedObject(m_docSettingsPage = new DocSettingsPage()); addAutoReleasedObject(m_filterSettingsPage = new FilterSettingsPage()); addAutoReleasedObject(m_generalSettingsPage = new GeneralSettingsPage()); + addAutoReleasedObject(m_searchTaskHandler = new SearchTaskHandler); connect(m_generalSettingsPage, SIGNAL(fontChanged()), this, SLOT(fontChanged())); @@ -182,6 +184,8 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error) SLOT(updateCloseButton())); connect(HelpManager::instance(), SIGNAL(helpRequested(QUrl)), this, SLOT(handleHelpRequest(QUrl))); + connect(m_searchTaskHandler, SIGNAL(search(QUrl)), this, + SLOT(switchToHelpMode(QUrl))); connect(m_filterSettingsPage, SIGNAL(filtersChanged()), this, SLOT(setupHelpEngineIfNeeded())); diff --git a/src/plugins/help/helpplugin.h b/src/plugins/help/helpplugin.h index 55bf18c7390..76c5e4844f7 100644 --- a/src/plugins/help/helpplugin.h +++ b/src/plugins/help/helpplugin.h @@ -63,6 +63,7 @@ class HelpViewer; class LocalHelpManager; class OpenPagesManager; class SearchWidget; +class SearchTaskHandler; class HelpPlugin : public ExtensionSystem::IPlugin { @@ -153,6 +154,7 @@ private: DocSettingsPage *m_docSettingsPage; FilterSettingsPage *m_filterSettingsPage; GeneralSettingsPage *m_generalSettingsPage; + SearchTaskHandler *m_searchTaskHandler; QComboBox *m_filterComboBox; Core::SideBar *m_sideBar; diff --git a/src/plugins/help/searchtaskhandler.cpp b/src/plugins/help/searchtaskhandler.cpp new file mode 100644 index 00000000000..69d7abf4ff1 --- /dev/null +++ b/src/plugins/help/searchtaskhandler.cpp @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Orgad Shaneh . +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#include "searchtaskhandler.h" + +#include + +#include +#include +#include + +using namespace Help::Internal; + +bool SearchTaskHandler::canHandle(const ProjectExplorer::Task &task) const +{ + return !task.description.isEmpty() + && !task.description.startsWith(QLatin1Char('\n')); +} + +void SearchTaskHandler::handle(const ProjectExplorer::Task &task) +{ + const int eol = task.description.indexOf(QLatin1Char('\n')); + const QUrl url(QLatin1String("https://www.google.com/search?q=") + task.description.left(eol)); + emit search(url); +} + +QAction *SearchTaskHandler::createAction(QObject *parent) const +{ + return new QAction(tr("Get Help Online"), parent); +} diff --git a/src/plugins/help/searchtaskhandler.h b/src/plugins/help/searchtaskhandler.h new file mode 100644 index 00000000000..dbc2b653b74 --- /dev/null +++ b/src/plugins/help/searchtaskhandler.h @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Orgad Shaneh . +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#ifndef HELP_SEARCHTASKHANDLER_H +#define HELP_SEARCHTASKHANDLER_H + +#include + +namespace Help { +namespace Internal { + +class SearchTaskHandler : public ProjectExplorer::ITaskHandler +{ + Q_OBJECT + +public: + SearchTaskHandler() {} + + bool canHandle(const ProjectExplorer::Task &task) const; + void handle(const ProjectExplorer::Task &task); + QAction *createAction(QObject *parent) const; + +signals: + void search(const QUrl &url); +}; + +} // namespace Internal +} // namespace Help + +#endif // HELP_SEARCHTASKHANDLER_H