blob: 91706768b5da5718a4c29af93964d4c07af4c7f7 (
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
import QtQml.Models 2.1
import QtQuick.Dialogs 1.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
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.LeftButton | Qt.RightButton
onClicked: {
if (mouse.button === Qt.RightButton)
contextMenu.popup()
}
onPressAndHold: {
if (mouse.source === Qt.MouseEventNotSynthesized)
contextMenu.popup()
}
MessageDialog {
id: messageDialog
title: "Message info"
text: context.getMessageInfo(messageObject.message.id)
onAccepted: { }
}
Menu {
id: contextMenu
Action {
text: "Info"
onTriggered: messageDialog.open()
}
}
}
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 : ""
textFormat: Text.PlainText
selectByMouse: true
readOnly: true
color: "grey"
wrapMode: Text.Wrap
font.pixelSize: 12
}
TextEdit {
Layout.maximumWidth: messageObject.width > 30 ? messageObject.width - 30 : messageObject.width
text: 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 ? "✗"
: "";
}
}
}
}
|