diff --git a/src/plugins/help/helpmanager.cpp b/src/plugins/help/helpmanager.cpp index 300d313e0cd9df542ccacc0ca61a5f83ce022c3c..bc5bef0a465de13cfe28cbf445b3ef8610349027 100644 --- a/src/plugins/help/helpmanager.cpp +++ b/src/plugins/help/helpmanager.cpp @@ -102,7 +102,7 @@ bool HelpManager::guiEngineNeedsUpdate() const void HelpManager::handleHelpRequest(const QString &url) { - emit helpRequested(url); + emit helpRequested(QUrl(url)); } void HelpManager::verifyDocumenation() diff --git a/src/plugins/help/helpmanager.h b/src/plugins/help/helpmanager.h index aca4100700b21328dc279a40a7e45566e6d7dd07..39f2c939ea1042435b0afaba44d12dbaf33a629c 100644 --- a/src/plugins/help/helpmanager.h +++ b/src/plugins/help/helpmanager.h @@ -39,6 +39,7 @@ QT_FORWARD_DECLARE_CLASS(QHelpEngine) QT_FORWARD_DECLARE_CLASS(QHelpEngineCore) QT_FORWARD_DECLARE_CLASS(QString) QT_FORWARD_DECLARE_CLASS(QStringList) +QT_FORWARD_DECLARE_CLASS(QUrl) class BookmarkManager; @@ -69,7 +70,7 @@ public: static BookmarkManager& bookmarkManager(); signals: - void helpRequested(const QString &Url); + void helpRequested(const QUrl &url); private: static bool m_guiNeedsSetup; diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp index 721ff6785d1b794941bbc878c7dbd9b10762fa1d..48cdbce6e94e52e3be08604d5da5b783556dd761 100644 --- a/src/plugins/help/helpplugin.cpp +++ b/src/plugins/help/helpplugin.cpp @@ -145,8 +145,8 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error) SLOT(updateFilterPage())); connect(m_generalSettingsPage, SIGNAL(fontChanged()), this, SLOT(fontChanged())); - connect(m_helpManager, SIGNAL(helpRequested(QString)), this, - SLOT(handleHelpRequest(QString))); + connect(m_helpManager, SIGNAL(helpRequested(QUrl)), this, + SLOT(handleHelpRequest(QUrl))); connect(m_filterSettingsPage, SIGNAL(filtersChanged()), this, SLOT(setupHelpEngineIfNeeded())); connect(m_docSettingsPage, SIGNAL(documentationChanged()), this, @@ -825,13 +825,12 @@ void HelpPlugin::addBookmark() manager->showBookmarkDialog(m_centralWidget, viewer->title(), url); } -void HelpPlugin::handleHelpRequest(const QString &address) +void HelpPlugin::handleHelpRequest(const QUrl &url) { - if (HelpViewer::launchWithExternalApp(address)) + if (HelpViewer::launchWithExternalApp(url)) return; - if (m_helpManager->helpEngineCore().findFile(address).isValid()) { - const QUrl url(address); + if (m_helpManager->helpEngineCore().findFile(url).isValid()) { if (url.queryItemValue(QLatin1String("view")) == QLatin1String("split")) { if (HelpViewer* viewer = viewerForContextMode()) viewer->setSource(url); @@ -840,16 +839,20 @@ void HelpPlugin::handleHelpRequest(const QString &address) m_centralWidget->setSource(url); } } else { - // local help not installed, resort to external web help - QString urlPrefix; - 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/"); + QString address = url.toString(); + if (address.startsWith(HelpViewer::NsNokia) + || address.startsWith(HelpViewer::NsTrolltech)) { + // local help not installed, resort to external web help + QString urlPrefix = QLatin1String("http://doc.trolltech.com/"); + if (url.authority() == QLatin1String("com.nokia.qtcreator")) { + urlPrefix.append(QString::fromLatin1("qtcreator-%1.%2") + .arg(IDE_VERSION_MAJOR).arg(IDE_VERSION_MINOR)); + } else { + urlPrefix.append(QLatin1String("latest")); + } + address = urlPrefix + address.mid(address.lastIndexOf(QLatin1Char('/'))); } - QDesktopServices::openUrl(QUrl(urlPrefix + address.mid(address - .lastIndexOf(QLatin1Char('/')) + 1))); + QDesktopServices::openUrl(address); } } diff --git a/src/plugins/help/helpplugin.h b/src/plugins/help/helpplugin.h index 11e6bf1eba88fe9e0e69005fb5939bcb534bc830..c5a56f40f00beed650800a597f58023abdddbc74 100644 --- a/src/plugins/help/helpplugin.h +++ b/src/plugins/help/helpplugin.h @@ -73,9 +73,6 @@ public: void extensionsInitialized(); void shutdown(); -public slots: - void handleHelpRequest(const QString &url); - private slots: void modeChanged(Core::IMode *mode); @@ -101,6 +98,8 @@ private slots: void updateCloseButton(); void setupHelpEngineIfNeeded(); + void handleHelpRequest(const QUrl &url); + private: void setupUi(); void resetFilter();