From 21f7851f044cd8b6e38c821ce12d7e1b291cae27 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Fri, 29 Apr 2016 16:58:09 +0200 Subject: Push missing files --- components/package/contents/ui/ContentView.qml | 77 ++++++++++++++++++++++ components/package/contents/ui/MessagePartTree.qml | 66 +++++++++++++++++++ 2 files changed, 143 insertions(+) create mode 100644 components/package/contents/ui/ContentView.qml create mode 100644 components/package/contents/ui/MessagePartTree.qml (limited to 'components/package/contents') diff --git a/components/package/contents/ui/ContentView.qml b/components/package/contents/ui/ContentView.qml new file mode 100644 index 00000000..d4ddabce --- /dev/null +++ b/components/package/contents/ui/ContentView.qml @@ -0,0 +1,77 @@ +import QtQuick 2.4 +import QtQuick.Controls 1.3 +import QtWebKit 3.0 + +Item { + id: root + property int nestingLevel; + property bool isHtml; + property string content; + property string contentType; + height: contentRect.height + Rectangle { + id: contentRect + + //Only for development + // border.width: 1 + // border.color: "black" + // radius: 5 + // anchors.leftMargin: nestingLevel * 5 + + height: contentLoader.height + width: root.width + + Loader { + id: contentLoader + anchors.top: contentRect.top + anchors.left: contentRect.left + width: contentRect.width + sourceComponent: isHtml ? htmlComponent : textComponent + height: isHtml ? item.flickableItem.contentHeight : text.height + onStatusChanged: { + if (isHtml) { + item.flickableItem.loadHtml(root.content, "file:///"); + } + } + } + + Component { + id: textComponent + Text { + id: text + text: content + } + } + Component { + id: htmlComponent + //We need the scrollview so the WebView can fully expand so we have access to the contentHeight + //Otherwise it would just scale the content. + ScrollView { + horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff + verticalScrollBarPolicy: Qt.ScrollBarAlwaysOff + WebView { + id: htmlView + onNavigationRequested: { + // detect URL scheme prefix, most likely an external link + var schemaRE = /^\w+:/; + if (schemaRE.test(request.url)) { + request.action = WebView.AcceptRequest; + } else { + request.action = WebView.IgnoreRequest; + // delegate request.url here + } + } + onLoadingChanged: { + console.warn("Error is ", loadRequest.errorString); + console.warn("Status is ", loadRequest.status); + } + } + } + } + } + onContentChanged: { + if (isHtml) { + contentLoader.item.flickableItem.loadHtml(content, "file:///"); + } + } +} diff --git a/components/package/contents/ui/MessagePartTree.qml b/components/package/contents/ui/MessagePartTree.qml new file mode 100644 index 00000000..9a08b356 --- /dev/null +++ b/components/package/contents/ui/MessagePartTree.qml @@ -0,0 +1,66 @@ +import QtQuick 2.4 +import QtQuick.Controls 1.3 + +Item { + id: root + property alias rootIndex: visualModel.rootIndex + property int nestingLevel: 0 + property int desiredHeight: messagePartRect.height + Rectangle { + id: messagePartRect + height: partListView.contentHeight + width: root.width + VisualDataModel { + id: visualModel + model: messageParser.partTree + delegate: Rectangle { + id: delegateRect + // visible: !model.isAttachment + width: childrenRect.width + height: childrenRect.height + // color: Qt.rgba(Math.random(),Math.random(),Math.random(),1) + ContentView { + id: contentView + anchors.top: delegateRect.top + anchors.left: delegateRect.left + width: messagePartRect.width + content: model.text + isHtml: model.isHtml + visible: model.hasContent + onVisibleChanged: { + //Resize to 0 if it is not visible so the partLoader has the right offset + if (!visible) { + height = 0 + } + } + contentType: model.type + } + Loader { + id: partLoader + anchors.top: contentView.bottom + anchors.left: contentView.left + width: messagePartRect.width + visible: model.hasModelChildren + active: model.hasModelChildren + height: item ? item.desiredHeight : 0 + } + Component.onCompleted: { + if (model.hasModelChildren) { + partLoader.source = "MessagePartTree.qml" + partLoader.item.rootIndex = visualModel.modelIndex(index) + partLoader.item.nestingLevel = root.nestingLevel + 1 + } + } + } + } + + ListView { + id: partListView + model: visualModel + anchors.left: parent.left + anchors.top: parent.top + anchors.right: parent.right + height: parent.height + } + } +} -- cgit v1.2.3