summaryrefslogtreecommitdiffstats
path: root/components/package/contents/ui/MessagePartTree.qml
blob: d44a1e5e02d163476476b4ff1f9360923bdc01ee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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.isHidden
                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
        }
    }
}