summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2017-01-03 19:01:41 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2017-01-03 19:01:41 +0100
commita02c721c4d8ba3c342fcb317f5c779a076571fa4 (patch)
tree2bb206f9cdc6c82f1379301d10df08f6cfab23fa
parenteef9b8725637f448f9f10ba9851f49c9df4bfe6f (diff)
downloadkube-a02c721c4d8ba3c342fcb317f5c779a076571fa4.tar.gz
kube-a02c721c4d8ba3c342fcb317f5c779a076571fa4.zip
Intercept link clicks and try to open an external browser.
-rw-r--r--applications/mail/main.cpp23
-rw-r--r--components/package/contents/ui/WebView.qml11
2 files changed, 33 insertions, 1 deletions
diff --git a/applications/mail/main.cpp b/applications/mail/main.cpp
index cb5350a2..9f3003d0 100644
--- a/applications/mail/main.cpp
+++ b/applications/mail/main.cpp
@@ -6,6 +6,7 @@
6#include <QQuickImageProvider> 6#include <QQuickImageProvider>
7#include <QIcon> 7#include <QIcon>
8#include <QtWebEngine> 8#include <QtWebEngine>
9#include <QDesktopServices>
9 10
10#include <QDebug> 11#include <QDebug>
11 12
@@ -32,10 +33,30 @@ public:
32 } 33 }
33}; 34};
34 35
36class WebUrlRequestInterceptor : public QWebEngineUrlRequestInterceptor
37{
38 Q_OBJECT
39public:
40 WebUrlRequestInterceptor(QObject *p = Q_NULLPTR) : QWebEngineUrlRequestInterceptor{}
41 {}
42
43 void interceptRequest(QWebEngineUrlRequestInfo &info)
44 {
45 qWarning() << info.requestMethod() << info.requestUrl();
46 QDesktopServices::openUrl(info.requestUrl());
47 info.block(true);
48 //TODO handle mailto to open a composer
49 }
50};
51
35int main(int argc, char *argv[]) 52int main(int argc, char *argv[])
36{ 53{
37 QApplication app(argc, argv); 54 QApplication app(argc, argv);
55
38 QtWebEngine::initialize(); 56 QtWebEngine::initialize();
57 WebUrlRequestInterceptor *wuri = new WebUrlRequestInterceptor();
58 QQuickWebEngineProfile::defaultProfile()->setRequestInterceptor(wuri);
59
39 auto package = KPackage::PackageLoader::self()->loadPackage("KPackage/GenericQML", "org.kube.components.mail"); 60 auto package = KPackage::PackageLoader::self()->loadPackage("KPackage/GenericQML", "org.kube.components.mail");
40 Q_ASSERT(package.isValid()); 61 Q_ASSERT(package.isValid());
41 QQmlApplicationEngine engine; 62 QQmlApplicationEngine engine;
@@ -43,3 +64,5 @@ int main(int argc, char *argv[])
43 engine.load(QUrl::fromLocalFile(package.filePath("mainscript"))); 64 engine.load(QUrl::fromLocalFile(package.filePath("mainscript")));
44 return app.exec(); 65 return app.exec();
45} 66}
67
68#include "main.moc"
diff --git a/components/package/contents/ui/WebView.qml b/components/package/contents/ui/WebView.qml
index bb6a8df7..a71b42af 100644
--- a/components/package/contents/ui/WebView.qml
+++ b/components/package/contents/ui/WebView.qml
@@ -31,11 +31,20 @@ Item {
31 console.warn("Error is ", loadRequest.errorString); 31 console.warn("Error is ", loadRequest.errorString);
32 console.warn("Status is ", loadRequest.status); 32 console.warn("Status is ", loadRequest.status);
33 } 33 }
34 Component.onCompleted: loadHtml(content, "file:///") 34 Component.onCompleted: {
35 loadHtml(content, "file:///")
36 }
35 onContentsSizeChanged: { 37 onContentsSizeChanged: {
36 root.contentWidth = contentsSize.width 38 root.contentWidth = contentsSize.width
37 root.contentHeight = contentsSize.height 39 root.contentHeight = contentsSize.height
38 } 40 }
41 activeFocusOnPress: false
42 settings {
43 autoLoadImages: true
44 javascriptCanOpenWindows: false
45 javascriptEnabled: true
46 localStorageEnabled: false
47 }
39 } 48 }
40 onContentChanged: { 49 onContentChanged: {
41 htmlView.loadHtml(content, "file:///"); 50 htmlView.loadHtml(content, "file:///");