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