aboutsummaryrefslogtreecommitdiff
path: root/qml/ChatlistItem.qml
blob: 284f9d2f36d305167ced3d547404c4d9d779f5ef (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
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
import QtQml.Models 2.1
import org.kde.kirigami 2.13 as Kirigami

import DeltaChat 1.0

Kirigami.AbstractListItem {
    id: root

    property DcContext context
    property int chatId
    property string chatName
    property string avatarSource
    property string username
    property int freshMsgCnt
    property bool isContactRequest
    property bool isPinned

    RowLayout {
        Kirigami.Avatar {
            source: root.avatarSource
            name: root.chatName
            color: root.context.getChat(root.chatId).getColor()
            MouseArea {
                anchors.fill: parent
                acceptedButtons: Qt.RightButton
                onClicked: {
                    if (mouse.button === Qt.RightButton)
                        contextMenu.popup()
                }

                Menu {
                    id: contextMenu

                    Action {
                        icon.name: "pin"
                        text: "Pin chat"
                        onTriggered: root.context.setChatVisibility(root.chatId, 2)
                    }
                    Action {
                        text: "Unpin chat"
                        onTriggered: root.context.setChatVisibility(root.chatId, 0)
                    }
                    Action {
                        text: "Archive chat"
                        onTriggered: root.context.setChatVisibility(root.chatId, 1)
                    }
                    Action {
                        text: "Unarchive chat"
                        onTriggered: root.context.setChatVisibility(root.chatId, 0)
                    }
                    Action {
                        icon.name: "delete"
                        text: "Delete chat"
                        onTriggered: root.context.deleteChat(root.chatId)
                    }
                }
            }
        }

        ColumnLayout {
            Layout.fillWidth: true

            Label {
                text: root.context.getChat(root.chatId).getName()
                font.weight: Font.Bold
                Layout.fillWidth: true
            }
            Label {
                text: root.username
                font: Kirigami.Theme.smallFont
                Layout.fillWidth: true
            }
        }

        Label {
            text: root.isContactRequest ? "NEW" : root.freshMsgCnt
            visible: root.freshMsgCnt > 0 || root.isContactRequest

            // Align label in the center of a badge.
            verticalAlignment: Text.AlignVCenter
            horizontalAlignment: Text.AlignHCenter

            // Make sure badge is not too narrow.
            Layout.minimumWidth: height

            background: Rectangle {
            color: Kirigami.Theme.alternateBackgroundColor
            radius: 0.25 * height
            }
        }

        // "Pinned" badge
        Rectangle {
            visible: root.isPinned
            color: Kirigami.Theme.alternateBackgroundColor
            width: Kirigami.Units.gridUnit
            height: Kirigami.Units.gridUnit
            radius: 0.25 * height
                Kirigami.Icon {
                source: "pin"
                height: Kirigami.Units.gridUnit
                width: Kirigami.Units.gridUnit
            }
        }
    }
}