Warning, /plasma-mobile/raven/src/contents/ui/mailpartview/HtmlPart.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-FileCopyrightText: 2016 Michael Bohlender <michael.bohlender@kdemail.net>
0002 // SPDX-License-Identifier: GPL-2.0-or-later
0003
0004
0005 import QtQuick 2.7
0006 import QtQuick.Controls 2.15 as QQC2
0007 import QtWebEngine 1.4
0008 import QtQuick.Window 2.0
0009
0010 import org.kde.raven 1.0
0011 import org.kde.kirigami 2.19 as Kirigami
0012
0013 Item {
0014 id: root
0015 objectName: "htmlPart"
0016 property string content
0017 //We have to give it a minimum size so the html content starts to expand
0018 property int minimumSize: 10
0019 property int contentHeight: minimumSize
0020 property int contentWidth: minimumSize
0021 property string searchString
0022 property bool autoLoadImages: false
0023
0024 onSearchStringChanged: {
0025 htmlView.findText(searchString)
0026 }
0027 onContentChanged: {
0028 htmlView.loadHtml(content, "file:///");
0029 }
0030
0031 QQC2.ScrollView {
0032 anchors.fill: parent
0033 Flickable {
0034 id: flickable
0035
0036 clip: true
0037 boundsBehavior: Flickable.StopAtBounds
0038
0039 WebEngineView {
0040 id: htmlView
0041 objectName: "htmlView"
0042 anchors.fill: parent
0043
0044 Component.onCompleted: loadHtml(content, "file:///")
0045 onLoadingChanged: {
0046 if (loadRequest.status == WebEngineView.LoadFailedStatus) {
0047 console.warn("Failed to load html content.")
0048 console.warn("Error is ", loadRequest.errorString)
0049 }
0050 root.contentWidth = Math.max(contentsSize.width, flickable.minimumSize)
0051
0052 if (loadRequest.status == WebEngineView.LoadSucceededStatus) {
0053 runJavaScript("[document.body.scrollHeight, document.body.scrollWidth, document.documentElement.scrollHeight]", function(result) {
0054 root.contentHeight = Math.min(Math.max(result[0], result[2]), 4000);
0055 root.contentWidth = Math.min(Math.max(result[1], flickable.width), 2000)
0056 });
0057 }
0058 }
0059 onLinkHovered: {
0060 console.debug("Link hovered ", hoveredUrl)
0061 }
0062 onNavigationRequested: {
0063 console.debug("Nav request ", request.navigationType, request.url)
0064 if (request.navigationType == WebEngineNavigationRequest.LinkClickedNavigation) {
0065 Qt.openUrlExternally(request.url)
0066 request.action = WebEngineNavigationRequest.IgnoreRequest
0067 }
0068 }
0069 onNewViewRequested: {
0070 console.debug("New view request ", request, request.requestedUrl)
0071 //We ignore requests for new views and open a browser instead
0072 Qt.openUrlExternally(request.requestedUrl)
0073 }
0074 settings {
0075 webGLEnabled: false
0076 touchIconsEnabled: false
0077 spatialNavigationEnabled: false
0078 screenCaptureEnabled: false
0079 pluginsEnabled: false
0080 localStorageEnabled: false
0081 localContentCanAccessRemoteUrls: false
0082 localContentCanAccessFileUrls: false
0083 linksIncludedInFocusChain: false
0084 javascriptEnabled: true
0085 javascriptCanOpenWindows: false
0086 javascriptCanAccessClipboard: false
0087 hyperlinkAuditingEnabled: false
0088 fullScreenSupportEnabled: false
0089 errorPageEnabled: false
0090 //defaultTextEncoding: ???
0091 autoLoadImages: root.autoLoadImages
0092 autoLoadIconsForPage: false
0093 accelerated2dCanvasEnabled: false
0094 //The webview should not steal focus
0095 focusOnNavigationEnabled: false
0096 }
0097 profile {
0098 offTheRecord: true
0099 httpCacheType: WebEngineProfile.NoCache
0100 persistentCookiesPolicy: WebEngineProfile.NoPersistentCookies
0101 }
0102 onContextMenuRequested: function(request) {
0103 request.accepted = true
0104 }
0105 }
0106 }
0107 }
0108 }