From dd582091bc72ddf61a66d2bc3a3e0ce47f2296b5 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 1 May 2017 22:42:49 +0200 Subject: Mailviewer --- .../mailviewer/contents/ui/EncryptionPart.qml | 14 ++-- components/mailviewer/contents/ui/HtmlContent.qml | 2 +- .../mailviewer/contents/ui/MailDataModel.qml | 86 ++++++++++++++++------ components/mailviewer/contents/ui/MailPart.qml | 5 +- components/mailviewer/contents/ui/MailViewer.qml | 5 +- .../mailviewer/contents/ui/SignaturePart.qml | 11 +-- components/mailviewer/contents/ui/TextContent.qml | 11 ++- 7 files changed, 89 insertions(+), 45 deletions(-) (limited to 'components/mailviewer') diff --git a/components/mailviewer/contents/ui/EncryptionPart.qml b/components/mailviewer/contents/ui/EncryptionPart.qml index 058c9af7..e72c30f9 100644 --- a/components/mailviewer/contents/ui/EncryptionPart.qml +++ b/components/mailviewer/contents/ui/EncryptionPart.qml @@ -21,14 +21,16 @@ import QtQuick 2.4 Item { id: encryption property alias rootIndex: visualModel.rootIndex - property bool debug: true + property alias model: visualModel.model + property alias debug: visualModel.debug + property variant securityLevel + property variant errorType + property string errorString height: partListView.height width: parent.width MailDataModel { id: visualModel - debug: encryption.debug - model: messageParser.newTree } Column { @@ -45,8 +47,8 @@ Item { text: model.type } Text { - visible: model.errorType || encryption.debug - text: model.errorType + ": " + model.errorString + visible: errorType || encryption.debug + text: errorType + ": " + errorString } BorderImage { width: parent.width @@ -55,7 +57,7 @@ Item { horizontalTileMode: BorderImage.Round verticalTileMode: BorderImage.Round - source: /* "securityborders"+ */ model.securityLevel +".png" + source: /* "securityborders"+ */ securityLevel +".png" ListView { model: visualModel anchors { diff --git a/components/mailviewer/contents/ui/HtmlContent.qml b/components/mailviewer/contents/ui/HtmlContent.qml index f3bfb4c9..1946bb2e 100644 --- a/components/mailviewer/contents/ui/HtmlContent.qml +++ b/components/mailviewer/contents/ui/HtmlContent.qml @@ -23,7 +23,7 @@ import QtWebEngine 1.3 Item { id: root - property string content: model.content + property string content //We have to give it a minimum size so the html content starts to expand property int contentHeight: 10; diff --git a/components/mailviewer/contents/ui/MailDataModel.qml b/components/mailviewer/contents/ui/MailDataModel.qml index e0e65c49..8a42630a 100644 --- a/components/mailviewer/contents/ui/MailDataModel.qml +++ b/components/mailviewer/contents/ui/MailDataModel.qml @@ -22,6 +22,27 @@ import QtQml.Models 2.2 DelegateModel { id: mailDataModel property bool debug: true + function getPartType(type, hasModelChildren, forcePlain) { + switch (type) { + case "PlainTextContent": + case "Content": + return "plain"; + case "HtmlContent": + if (forcePlain) { + return "plain"; + } + return "html"; + case "Signature": + return "signature"; + case "Encryption": + return "encryption"; + } + if (hasModelChildren) { + return "envelope"; + } + return ""; + } + delegate: Item { id: partColumn width: parent.width @@ -36,30 +57,47 @@ DelegateModel { width: parent.width } Component.onCompleted: { - switch (model.type) { - case "PlainTextContent": - case "Content": - partLoader.source = "TextContent.qml" - partLoader.item.debug = mailDataModel.debug - return; - case "HtmlContent": - partLoader.source = "HtmlContent.qml" - return; - case "Signature": - partLoader.source = "SignaturePart.qml" - partLoader.item.rootIndex = mailDataModel.modelIndex(index) - partLoader.item.debug = mailDataModel.debug - return; - case "Encryption": - partLoader.source = "EncryptionPart.qml" - partLoader.item.rootIndex = mailDataModel.modelIndex(index) - partLoader.item.debug = mailDataModel.debug - return; - } - if (model.hasModelChildren) { - partLoader.source = "MailPart.qml" - partLoader.item.rootIndex = mailDataModel.modelIndex(index) - partLoader.item.debug = mailDataModel.debug + var isHtml = false + var forcePlain = false + var partType = getPartType(model.type, model.hasModelChildren, forcePlain); + + switch (partType) { + case "plain": + partLoader.setSource("TextContent.qml", + {"isHtml": isHtml, + "content": model.content, + "embedded": model.embeded, + "type": model.type, + "debug": debug}) + break + case "html": + partLoader.setSource("HtmlContent.qml", + {"content": model.content, + "debug": debug}) + break; + case "signature": + partLoader.setSource("SignaturePart.qml", + {"rootIndex": mailDataModel.modelIndex(index), + "securityLevel": model.securityLevel, + "type": model.type, + "debug": debug}) + break; + case "encryption": + partLoader.setSource("EncryptionPart.qml", + {"rootIndex": mailDataModel.modelIndex(index), + "securityLevel": model.securityLevel, + "type": model.type, + "model": mailDataModel.model, + "errorType": model.errorType, + "errorString": model.errorString, + "debug": debug}) + break; + case "envelope": + partLoader.setSource("MailPart.qml", + {"rootIndex": mailDataModel.modelIndex(index), + "model": mailDataModel.model, + "debug": debug}) + break; } } } diff --git a/components/mailviewer/contents/ui/MailPart.qml b/components/mailviewer/contents/ui/MailPart.qml index 30bf1ee0..bf534e85 100644 --- a/components/mailviewer/contents/ui/MailPart.qml +++ b/components/mailviewer/contents/ui/MailPart.qml @@ -21,14 +21,13 @@ import QtQuick 2.4 Item { id: root property alias rootIndex: visualModel.rootIndex - property bool debug: true + property alias model: visualModel.model + property alias debug: visualModel.debug height: partListView.height + 10 width: parent.width MailDataModel { id: visualModel - debug: root.debug - model: messageParser.newTree } ListView { diff --git a/components/mailviewer/contents/ui/MailViewer.qml b/components/mailviewer/contents/ui/MailViewer.qml index 0f7efca2..23307009 100644 --- a/components/mailviewer/contents/ui/MailViewer.qml +++ b/components/mailviewer/contents/ui/MailViewer.qml @@ -21,13 +21,12 @@ import QtQuick 2.4 Item { id: root property alias rootIndex: visualModel.rootIndex - property bool debug: false + property alias model: visualModel.model + property alias debug: visualModel.debug height: partListView.height MailDataModel { id: visualModel - debug: root.debug - model: messageParser.newTree } ListView { diff --git a/components/mailviewer/contents/ui/SignaturePart.qml b/components/mailviewer/contents/ui/SignaturePart.qml index 0a2fe525..5e88f963 100644 --- a/components/mailviewer/contents/ui/SignaturePart.qml +++ b/components/mailviewer/contents/ui/SignaturePart.qml @@ -21,14 +21,15 @@ import QtQuick 2.4 Item { id: signature property alias rootIndex: visualModel.rootIndex - property bool debug: true + property alias model: visualModel.model + property alias debug: visualModel.debug + property variant securityLevel + property string type height: partListView.height width: parent.width MailDataModel { id: visualModel - debug: signature.debug - model: messageParser.newTree } Column { id: partListView @@ -41,7 +42,7 @@ Item { Text { width: parent.width visible: signature.debug - text: model.type + text: type } BorderImage { width: parent.width @@ -49,7 +50,7 @@ Item { border { left: 5; top: 5; right: 6; bottom: 6 } horizontalTileMode: BorderImage.Round verticalTileMode: BorderImage.Round - source: /* "securityborders"+ */ model.securityLevel +".png" + source: /* "securityborders"+ */ securityLevel +".png" ListView { model: visualModel anchors { diff --git a/components/mailviewer/contents/ui/TextContent.qml b/components/mailviewer/contents/ui/TextContent.qml index ec0dc487..63573d81 100644 --- a/components/mailviewer/contents/ui/TextContent.qml +++ b/components/mailviewer/contents/ui/TextContent.qml @@ -23,7 +23,11 @@ import org.kube.framework 1.0 as Kube Item { id: textItem + property string content property bool debug: true + property bool embedded: true + property bool isHtml: true + property string type width: partColumn.width height: textColumn.height @@ -45,17 +49,18 @@ Item { readOnly: true selectByMouse: true - text: model.content + text: content wrapMode: Text.WordWrap + textFormat: textItem.isHtml ? Text.RichText : Text.PlainText - color: model.embeded ? Kube.Colors.diabledTextColor : Kube.Colors.textColor + color: embedded ? Kube.Colors.diabledTextColor : Kube.Colors.textColor } //BEGIN debug Text { width: parent.width visible: textItem.debug - text: model.type + text: type } //END debug } -- cgit v1.2.3