aboutsummaryrefslogtreecommitdiff
path: root/qml/Message.qml
blob: 0723546c2153938c50fa21d245ed71ef121e751e (plain) (blame)
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
import QtQml.Models 2.1
import org.kde.kirigami 2.12 as Kirigami

import DeltaChat 1.0

RowLayout {
    id: messageObject

    property DcMessage message
    readonly property DcContact from: context.getContact(message.fromId)

    width: ListView.view.width
    layoutDirection: message.fromId == 1 ? Qt.RightToLeft : Qt.LeftToRight

    Rectangle {
        Layout.preferredWidth: messageContents.width
        Layout.preferredHeight: messageContents.height

        Component {
            id: imageMessageView

            ColumnLayout {
                Image {
                    source: "file:" + messageObject.message.file
                    sourceSize.width: messageObject.message.width
                    sourceSize.height: messageObject.message.height
                    fillMode: Image.PreserveAspectFit
                    Layout.maximumWidth: messageObject.width
                }
                Label {
                    font.bold: true
                    color: messageObject.message.fromId > 0 ? messageObject.from.color : "black"
                    text: messageObject.message.fromId > 0 ? messageObject.from.displayName : ""
                    textFormat: Text.PlainText
                }
            }
        }

        Component {
            id: textMessageView

            Label {
                font.bold: true
                color: messageObject.message.fromId > 0 ? messageObject.from.color : "black"
                text: messageObject.message.fromId > 0 ? messageObject.from.displayName : ""
                textFormat: Text.PlainText
            }
        }

        color: Kirigami.Theme.backgroundColor
        radius: 5

        ColumnLayout {
            id: messageContents

            anchors.centerIn: parent

            Loader {
                sourceComponent: messageObject.message.viewtype == 20 ? imageMessageView : textMessageView
            }
            TextEdit {
                Layout.maximumWidth: messageObject.width > 30 ? messageObject.width - 30 : messageObject.width
                text: (messageObject.message.quotedText ? "> " + messageObject.message.quotedText + "\n\n" : "") + messageObject.message.text
                textFormat: Text.PlainText
                selectByMouse: true
                readOnly: true
                color: "black"
                wrapMode: Text.Wrap
                font.pixelSize: 14
            }
            Label {
                Layout.fillWidth: true
                text: messageObject.message.state == 26 ? "✓"
                    : messageObject.message.state == 28 ? "✓✓"
                    : messageObject.message.state == 24 ? "✗"
                    : "";
            }
        }
    }
}