From 4e7bbbdaaf4b3630b2808df1da8df75a3c884c58 Mon Sep 17 00:00:00 2001
From: kh1 <qt-info@nokia.com>
Date: Wed, 10 Mar 2010 18:24:13 +0100
Subject: [PATCH] Fix broken behavior for welcome page links if no docs are
 installed.

In case of split mode we did not check if the actual requested doc
exists and thus did fail to open the browser if it could not be found.

Reviewed-by: Daniel Molkentin
---
 src/plugins/help/helpmanager.cpp              |  7 +---
 src/plugins/help/helpmanager.h                |  5 +--
 src/plugins/help/helpplugin.cpp               | 42 ++++++++-----------
 src/plugins/help/helpplugin.h                 |  5 +--
 .../gettingstartedwelcomepagewidget.cpp       |  4 +-
 5 files changed, 23 insertions(+), 40 deletions(-)

diff --git a/src/plugins/help/helpmanager.cpp b/src/plugins/help/helpmanager.cpp
index 7c75e829217..68edd0306e1 100644
--- a/src/plugins/help/helpmanager.cpp
+++ b/src/plugins/help/helpmanager.cpp
@@ -41,16 +41,11 @@ HelpManager::HelpManager(HelpPlugin* plugin)
 {
 }
 
-void HelpManager::openHelpPage(const QString& url)
+void HelpManager::handleHelpRequest(const QString &url)
 {
     m_plugin->handleHelpRequest(url);
 }
 
-void HelpManager::openContextHelpPage(const QString& url)
-{
-    m_plugin->openContextHelpPage(url);
-}
-
 void HelpManager::registerDocumentation(const QStringList &fileNames)
 {
     if (m_plugin) {
diff --git a/src/plugins/help/helpmanager.h b/src/plugins/help/helpmanager.h
index a7d4cfc8d9c..66371468c5d 100644
--- a/src/plugins/help/helpmanager.h
+++ b/src/plugins/help/helpmanager.h
@@ -47,12 +47,11 @@ class HELP_EXPORT HelpManager : public QObject
 public:
     HelpManager(Internal::HelpPlugin*);
 
-    void openHelpPage(const QString& url);
-    void openContextHelpPage(const QString &url);
+    void handleHelpRequest(const QString &url);
     void registerDocumentation(const QStringList &fileNames);
 
 signals:
-    void helpPluginUpdateDocumentation();
+    void registerDocumentation();
 
 private:
     Internal::HelpPlugin *m_plugin;
diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp
index 15b81c1a942..762ae385bae 100644
--- a/src/plugins/help/helpplugin.cpp
+++ b/src/plugins/help/helpplugin.cpp
@@ -998,43 +998,35 @@ void HelpPlugin::addNewBookmark(const QString &title, const QString &url)
     m_bookmarkManager->showBookmarkDialog(m_centralWidget, title, url);
 }
 
-void HelpPlugin::handleHelpRequest(const QUrl& url)
+void HelpPlugin::handleHelpRequest(const QString &address)
 {
-    if (url.queryItemValue(QLatin1String("view")) == QLatin1String("split"))
-        openContextHelpPage(url.toString());
-    else
-        openHelpPage(url.toString());
-}
+    if (m_helpEngine->findFile(address).isValid()) {
+        const QUrl url(address);
+        if (url.queryItemValue(QLatin1String("view")) == QLatin1String("split")) {
+            using namespace Core::Constants;
 
-void HelpPlugin::openHelpPage(const QString& url)
-{
-    if (m_helpEngine->findFile(url).isValid()) {
-        activateHelpMode();
-        m_centralWidget->setSource(url);
+            Core::ModeManager *modeManager = Core::ICore::instance()->modeManager();
+            if (modeManager->currentMode() == modeManager->mode(MODE_WELCOME))
+                modeManager->activateMode(MODE_EDIT);
+
+            if (HelpViewer* viewer = viewerForContextMode())
+                viewer->setSource(url);
+        } else {
+            activateHelpMode();
+            m_centralWidget->setSource(url);
+        }
     } else {
         // local help not installed, resort to external web help
         QString urlPrefix;
-        if (url.startsWith(QLatin1String("qthelp://com.nokia.qtcreator"))) {
+        if (address.startsWith(QLatin1String("qthelp://com.nokia.qtcreator"))) {
             urlPrefix = QString::fromLatin1("http://doc.trolltech.com/qtcreator"
                 "-%1.%2/").arg(IDE_VERSION_MAJOR).arg(IDE_VERSION_MINOR);
         } else {
             urlPrefix = QLatin1String("http://doc.trolltech.com/latest/");
         }
-        QDesktopServices::openUrl(QUrl(urlPrefix + url.mid(url
+        QDesktopServices::openUrl(QUrl(urlPrefix + address.mid(address
             .lastIndexOf(QLatin1Char('/')) + 1)));
     }
 }
 
-void HelpPlugin::openContextHelpPage(const QString &url)
-{
-    using namespace Core::Constants;
-
-    Core::ModeManager *modeManager = Core::ICore::instance()->modeManager();
-    if (modeManager->currentMode() == modeManager->mode(MODE_WELCOME))
-        modeManager->activateMode(MODE_EDIT);
-
-    if (HelpViewer* viewer = viewerForContextMode())
-        viewer->setSource(QUrl(url));
-}
-
 Q_EXPORT_PLUGIN(HelpPlugin)
diff --git a/src/plugins/help/helpplugin.h b/src/plugins/help/helpplugin.h
index ac84679461d..335cf185d98 100644
--- a/src/plugins/help/helpplugin.h
+++ b/src/plugins/help/helpplugin.h
@@ -91,16 +91,13 @@ public:
     void setIndexFilter(const QString &filter);
     QString indexFilter() const;
 
-    void openHelpPage(const QString& url);
-    void openContextHelpPage(const QString &url);
-
     QHelpEngine* helpEngine() const;
 
     void setFilesToRegister(const QStringList &files);
 
 public slots:
     void pluginUpdateDocumentation();
-    void handleHelpRequest(const QUrl &url);
+    void handleHelpRequest(const QString &url);
 
 private slots:
     void modeChanged(Core::IMode *mode);
diff --git a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp
index 2419032a2cf..98233b6ca81 100644
--- a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp
+++ b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp
@@ -265,14 +265,14 @@ void GettingStartedWelcomePageWidget::slotOpenHelpPage(const QString& url)
     Help::HelpManager *helpManager
         = ExtensionSystem::PluginManager::instance()->getObject<Help::HelpManager>();
     Q_ASSERT(helpManager);
-    helpManager->openHelpPage(url);
+    helpManager->handleHelpRequest(url);
 }
 void GettingStartedWelcomePageWidget::slotOpenContextHelpPage(const QString& url)
 {
     Help::HelpManager *helpManager
         = ExtensionSystem::PluginManager::instance()->getObject<Help::HelpManager>();
     Q_ASSERT(helpManager);
-    helpManager->openContextHelpPage(url);
+    helpManager->handleHelpRequest(url);
 }
 
 void GettingStartedWelcomePageWidget::slotNextTip()
-- 
GitLab