diff options
author | Eike Ziller <eike.ziller@digia.com> | 2014-06-17 15:37:40 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@digia.com> | 2014-06-18 12:09:12 +0200 |
commit | be68fe7f4a73c0ca51258fd3ae8d907da6ffc55a (patch) | |
tree | c9f73e13db1a6ca7bd073885da992db1427ac65c /src/plugins/help/localhelpmanager.cpp | |
parent | 46cdd910242f1ba155c66096d2ba11f7a61ec53d (diff) |
Help: Unify help content loading and error message.
Task-number: QTCREATORBUG-12352
Change-Id: If74453e75cc8eaf27c114d0976099388be778fa6
Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com>
Diffstat (limited to 'src/plugins/help/localhelpmanager.cpp')
-rw-r--r-- | src/plugins/help/localhelpmanager.cpp | 83 |
1 files changed, 80 insertions, 3 deletions
diff --git a/src/plugins/help/localhelpmanager.cpp b/src/plugins/help/localhelpmanager.cpp index 94bcfe79070..d99cdce10a3 100644 --- a/src/plugins/help/localhelpmanager.cpp +++ b/src/plugins/help/localhelpmanager.cpp @@ -31,6 +31,7 @@ #include "bookmarkmanager.h" #include "helpconstants.h" +#include "helpviewer.h" #include <app/app_version.h> #include <coreplugin/helpmanager.h> @@ -55,6 +56,7 @@ LocalHelpManager::LocalHelpManager(QObject *parent) , m_needsCollectionFile(true) { m_instance = this; + qRegisterMetaType<Help::Internal::LocalHelpManager::HelpData>("Help::Internal::LocalHelpManager::HelpData"); } LocalHelpManager::~LocalHelpManager() @@ -143,10 +145,85 @@ bool LocalHelpManager::isValidUrl(const QString &link) || scheme == QLatin1String("https")); } -QByteArray LocalHelpManager::helpData(const QUrl &url) +QByteArray LocalHelpManager::loadErrorMessage(const QUrl &url, const QString &errorString) { + const char g_htmlPage[] = + "<html>" + "<head>" + "<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">" + "<title>%1</title>" + "<style>" + "body {padding: 3em 0em; background: #eeeeee;}" + "hr {color: lightgray; width: 100%;}" + "img {float: left; opacity: .8;}" + "#box {background: white; border: 1px solid lightgray; width: 600px; padding: 60px; margin: auto;}" + "h1 {font-size: 130%; font-weight: bold; border-bottom: 1px solid lightgray; margin-left: 48px;}" + "h2 {font-size: 100%; font-weight: normal; border-bottom: 1px solid lightgray; margin-left: 48px;}" + "p {font-size: 90%; margin-left: 48px;}" + "</style>" + "</head>" + "<body>" + "<div id=\"box\">" + "<img " + "src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACA" + "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\"" + "width=\"32\" height=\"32\"/>" + "<h1>%2</h1>" + "<h2>%3</h2>" + "%4" + "</div>" + "</body>" + "</html>"; + + // some of the values we will replace %1...6 inside the former html + const QString g_percent1 = QCoreApplication::translate("Help", "Error loading page"); + // percent2 will be the error details + // percent3 will be the url of the page we got the error from + const QString g_percent4 = QCoreApplication::translate("Help", "<p>Check that you have the corresponding " + "documentation set installed.</p>"); + + return QString::fromLatin1(g_htmlPage).arg(g_percent1, errorString, + QCoreApplication::translate("Help", "Error loading: %1").arg(url.toString()), + g_percent4).toUtf8(); +} + +LocalHelpManager::HelpData LocalHelpManager::helpData(const QUrl &url) +{ + HelpData data; const QHelpEngineCore &engine = helpEngine(); - return engine.findFile(url).isValid() ? engine.fileData(url) - : tr("Could not load \"%1\".").arg(url.toString()).toUtf8(); + data.resolvedUrl = engine.findFile(url); + if (data.resolvedUrl.isValid()) { + data.data = engine.fileData(data.resolvedUrl); + data.mimeType = HelpViewer::mimeFromUrl(data.resolvedUrl); + if (data.mimeType.isEmpty()) + data.mimeType = QLatin1String("application/octet-stream"); + } else { + data.data = loadErrorMessage(url, QCoreApplication::translate( + "Help", "The page could not be found")); + data.mimeType = QLatin1String("text/html"); + } + return data; } |