1import QtQuick 2.0
2import QtQuick.Controls 1.0
3import im.ricochet 1.0
4
5Rectangle {
6    id: delegate
7    color: highlighted ? "#c4e7ff" : "white"
8    width: parent.width
9    height: nameLabel.height + 8
10
11    property bool highlighted: ListView.isCurrentItem
12    onHighlightedChanged: {
13        if (renameMode)
14            renameMode = false
15    }
16
17    PresenceIcon {
18        id: presenceIcon
19        anchors {
20            left: parent.left
21            leftMargin: 20
22            verticalCenter: nameLabel.verticalCenter
23        }
24        status: model.status
25    }
26
27    Label {
28        id: nameLabel
29        anchors {
30            left: presenceIcon.right
31            leftMargin: 6
32            right: unreadBadge.left
33            rightMargin: 8
34            verticalCenter: parent.verticalCenter
35        }
36        text: model.name
37        textFormat: Text.PlainText
38        elide: Text.ElideRight
39        font.pointSize: styleHelper.pointSize
40        color: "black"
41        opacity: model.status === ContactUser.Online ? 1 : 0.8
42    }
43
44    UnreadCountBadge {
45        id: unreadBadge
46        anchors {
47            verticalCenter: parent.verticalCenter
48            right: parent.right
49            rightMargin: 8
50        }
51
52        value: model.contact.conversation.unreadCount
53    }
54
55    ContactActions {
56        id: contextMenu
57        contact: model.contact
58
59        onRenameTriggered: renameMode = true
60    }
61
62    MouseArea {
63        anchors.fill: parent
64        acceptedButtons: Qt.LeftButton | Qt.RightButton
65
66        onPressed: {
67            if (!delegate.ListView.isCurrentItem)
68                contactListView.currentIndex = model.index
69        }
70
71        onClicked: {
72            if (mouse.button === Qt.RightButton) {
73                contextMenu.openContextMenu()
74            }
75        }
76
77        onDoubleClicked: {
78            if (mouse.button === Qt.LeftButton) {
79                contactListView.contactActivated(model.contact, contextMenu)
80            }
81        }
82    }
83
84    property bool renameMode
85    property Item renameItem
86    onRenameModeChanged: {
87        if (renameMode && renameItem === null) {
88            renameItem = renameComponent.createObject(delegate)
89            renameItem.forceActiveFocus()
90            renameItem.selectAll()
91        } else if (!renameMode && renameItem !== null) {
92            renameItem.visible = false
93            renameItem.destroy()
94            renameItem = null
95        }
96    }
97
98    Component {
99        id: renameComponent
100
101        TextField {
102            id: nameField
103            anchors {
104                left: nameLabel.left
105                right: nameLabel.right
106                verticalCenter: nameLabel.verticalCenter
107            }
108            text: model.contact.nickname
109            onAccepted: {
110                model.contact.nickname = text
111                delegate.renameMode = false
112            }
113        }
114    }
115}
116
117