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