32 #ifndef pqHelpWindowWebKit_h 33 #define pqHelpWindowWebKit_h 44 #include <QNetworkAccessManager> 45 #include <QNetworkProxy> 47 #include <QWebEngineProfile> 48 #include <QWebEngineUrlRequestJob> 49 #include <QWebEngineUrlSchemeHandler> 50 #include <QWebEngineView> 55 class pqUrlSchemeHandler :
public QWebEngineUrlSchemeHandler
57 typedef QWebEngineUrlSchemeHandler Superclass;
60 pqUrlSchemeHandler(QHelpEngineCore* engine)
64 ~pqUrlSchemeHandler() {}
66 void requestStarted(QWebEngineUrlRequestJob* request)
override 68 QMap<QString, QString> extension_type_map;
69 extension_type_map[
"jpg"] =
"image/jpeg";
70 extension_type_map[
"jpeg"] =
"image/jpeg";
71 extension_type_map[
"png"] =
"image/png";
72 extension_type_map[
"gif"] =
"image/gif";
73 extension_type_map[
"tiff"] =
"image/tiff";
74 extension_type_map[
"htm"] =
"text/html";
75 extension_type_map[
"html"] =
"text/html";
76 extension_type_map[
"css"] =
"text/css";
77 extension_type_map[
"xml"] =
"text/xml";
79 QUrl
url = request->requestUrl();
80 QString extension = QFileInfo(url.path()).suffix().toLower();
81 QString content_type = extension_type_map.value(extension,
"text/plain");
83 QByteArray array = this->Engine->fileData(url);
84 QBuffer* buffer =
new QBuffer;
85 buffer->setData(array);
86 buffer->open(QIODevice::ReadOnly);
87 connect(buffer, &QIODevice::aboutToClose, buffer, &QObject::deleteLater);
88 request->reply(content_type.toLocal8Bit(), buffer);
92 QHelpEngineCore* Engine;
98 class pqWebView :
public QWebEngineView
100 typedef QWebEngineView Superclass;
103 pqWebView(QWidget* parentObject)
104 : Superclass(parentObject)
109 static pqWebView* newInstance(QHelpEngine* engine, QWidget* parentObject)
111 pqWebView* instance =
new pqWebView(parentObject);
112 QWebEngineProfile*
profile = QWebEngineProfile::defaultProfile();
113 profile->installUrlSchemeHandler(
"qthelp",
new pqUrlSchemeHandler(engine));
118 Q_DISABLE_COPY(pqWebView)