From 7d4bbf49340425aea51acf74554fb70ac4411ff8 Mon Sep 17 00:00:00 2001 From: kh1 Date: Mon, 14 Jun 2010 14:31:34 +0200 Subject: [PATCH] Allow http request to be opened in the help plugin. Reviewed-by: ck --- src/plugins/help/helpplugin.cpp | 22 +++++++++++----------- src/plugins/help/helpviewer.cpp | 2 -- src/plugins/help/helpviewer_qtb.cpp | 7 +++++++ src/plugins/help/helpviewer_qwv.cpp | 8 ++++++-- 4 files changed, 24 insertions(+), 15 deletions(-) diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp index ec515753e89..a6746dbbd02 100644 --- a/src/plugins/help/helpplugin.cpp +++ b/src/plugins/help/helpplugin.cpp @@ -818,16 +818,8 @@ void HelpPlugin::handleHelpRequest(const QUrl &url) if (HelpViewer::launchWithExternalApp(url)) return; - if (Core::HelpManager::instance()->findFile(url).isValid()) { - if (url.queryItemValue(QLatin1String("view")) == QLatin1String("split")) { - if (HelpViewer* viewer = viewerForContextMode()) - viewer->setSource(url); - } else { - activateHelpMode(); - m_centralWidget->setSource(url); - } - } else { - QString address = url.toString(); + QString address = url.toString(); + if (!Core::HelpManager::instance()->findFile(url).isValid()) { if (address.startsWith(HelpViewer::NsNokia) || address.startsWith(HelpViewer::NsTrolltech)) { // local help not installed, resort to external web help @@ -839,7 +831,15 @@ void HelpPlugin::handleHelpRequest(const QUrl &url) } address = urlPrefix + address.mid(address.lastIndexOf(QLatin1Char('/'))); } - QDesktopServices::openUrl(address); + } + + const QUrl newUrl(address); + if (newUrl.queryItemValue(QLatin1String("view")) == QLatin1String("split")) { + if (HelpViewer* viewer = viewerForContextMode()) + viewer->setSource(newUrl); + } else { + activateHelpMode(); + m_centralWidget->setSource(newUrl); } } diff --git a/src/plugins/help/helpviewer.cpp b/src/plugins/help/helpviewer.cpp index d351a982265..aadeda402d2 100644 --- a/src/plugins/help/helpviewer.cpp +++ b/src/plugins/help/helpviewer.cpp @@ -147,8 +147,6 @@ bool HelpViewer::launchWithExternalApp(const QUrl &url) actualTmpFile.close(); return QDesktopServices::openUrl(QUrl(actualTmpFile.fileName())); } - } else if (url.scheme() == QLatin1String("http")) { - return QDesktopServices::openUrl(url); } return false; } diff --git a/src/plugins/help/helpviewer_qtb.cpp b/src/plugins/help/helpviewer_qtb.cpp index b2e607104c2..de9974fbd2e 100644 --- a/src/plugins/help/helpviewer_qtb.cpp +++ b/src/plugins/help/helpviewer_qtb.cpp @@ -144,6 +144,13 @@ QUrl HelpViewer::source() const void HelpViewer::setSource(const QUrl &url) { + const QString &scheme = url.scheme(); + if (scheme != QLatin1String("qthelp") && scheme != QLatin1String("about")) { + QTextBrowser::setSource(resolvedUrl); + emit loadFinished(true); + return; + } + const QString &string = url.toString(); if (url.isValid() && string != QLatin1String("help")) { if (launchWithExternalApp(url)) diff --git a/src/plugins/help/helpviewer_qwv.cpp b/src/plugins/help/helpviewer_qwv.cpp index 461eefafd91..8c8872edd5f 100644 --- a/src/plugins/help/helpviewer_qwv.cpp +++ b/src/plugins/help/helpviewer_qwv.cpp @@ -121,9 +121,13 @@ HelpNetworkAccessManager::HelpNetworkAccessManager(QObject *parent) { } -QNetworkReply *HelpNetworkAccessManager::createRequest(Operation /*op*/, - const QNetworkRequest &request, QIODevice* /*outgoingData*/) +QNetworkReply *HelpNetworkAccessManager::createRequest(Operation op, + const QNetworkRequest &request, QIODevice* outgoingData) { + const QString &scheme = request.url().scheme(); + if (scheme != QLatin1String("qthelp") && scheme != QLatin1String("about")) + return QNetworkAccessManager::createRequest(op, request, outgoingData); + QString url = request.url().toString(); const QHelpEngineCore &engine = LocalHelpManager::helpEngine(); // TODO: For some reason the url to load is already wrong (passed from webkit)