mirror of
https://github.com/status-im/status-desktop.git
synced 2025-01-10 06:16:32 +00:00
868c675f6e
This replaces the self-built components for the user list with StatusQ's list item component and also addresses some of the quirks that existed in the UI related to that original component. The user list is now responsive and properly aligned. **This depends on StatusQ v0.18.0**
105 lines
3.7 KiB
QML
105 lines
3.7 KiB
QML
import QtQuick 2.13
|
|
import QtQuick.Controls 2.13
|
|
import shared 1.0
|
|
import shared.panels 1.0
|
|
|
|
import utils 1.0
|
|
|
|
import StatusQ.Components 0.1
|
|
import StatusQ.Core.Theme 0.1
|
|
import StatusQ.Core 0.1
|
|
|
|
StatusListItem {
|
|
id: root
|
|
anchors.right: parent.right
|
|
anchors.rightMargin: 8
|
|
anchors.left: parent.left
|
|
anchors.leftMargin: 8
|
|
implicitHeight: 44
|
|
leftPadding: 8
|
|
rightPadding: 8
|
|
|
|
property var contactsList
|
|
property int statusType: -1
|
|
property string name: ""
|
|
property string publicKey: ""
|
|
property string profilePubKey: ""
|
|
property string identicon: ""
|
|
property bool isCurrentUser: (publicKey === profilePubKey)
|
|
property string profileImage: appMain.getProfileImage(publicKey) || ""
|
|
property bool highlighted: false
|
|
property string lastSeen: ""
|
|
property bool isOnline: false
|
|
property var currentTime
|
|
property var messageContextMenu
|
|
|
|
|
|
title: isCurrentUser ? qsTr("You") : Emoji.parse(Utils.removeStatusEns(Utils.filterXSS(root.name)))
|
|
image.source: profileImage || identicon
|
|
image.isIdenticon: !profileImage
|
|
image.width: 24
|
|
image.height: 24
|
|
statusListItemIcon.anchors.topMargin: 10
|
|
statusListItemTitle.elide: Text.ElideRight
|
|
statusListItemTitle.wrapMode: Text.NoWrap
|
|
color: sensor.containsMouse ?
|
|
Theme.palette.statusChatListItem.hoverBackgroundColor :
|
|
Theme.palette.baseColor4
|
|
|
|
sensor.onClicked: {
|
|
if (mouse.button === Qt.LeftButton) {
|
|
//TODO remove dynamic scoping
|
|
openProfilePopup(root.name, root.publicKey, (root.profileImage || root.identicon), "", appMain.getUserNickname(root.publicKey));
|
|
}
|
|
else if (mouse.button === Qt.RightButton && !!messageContextMenu) {
|
|
// Set parent, X & Y positions for the messageContextMenu
|
|
messageContextMenu.parent = root
|
|
messageContextMenu.setXPosition = function() { return 0}
|
|
messageContextMenu.setYPosition = function() { return root.height}
|
|
messageContextMenu.isProfile = true;
|
|
messageContextMenu.show(root.name, root.publicKey, (root.profileImage || root.identicon), "", appMain.getUserNickname(root.publicKey))
|
|
}
|
|
}
|
|
|
|
Connections {
|
|
enabled: !!root.contactsList
|
|
target: root.contactsList
|
|
onContactChanged: {
|
|
if (pubkey === root.publicKey) {
|
|
root.profileImage = !!appMain.getProfileImage(root.publicKey) ?
|
|
appMain.getProfileImage(root.publicKey) : ""
|
|
}
|
|
}
|
|
}
|
|
|
|
StatusBadge {
|
|
id: statusBadge
|
|
width: 15
|
|
height: 15
|
|
anchors.left: parent.left
|
|
anchors.leftMargin: 22
|
|
anchors.bottom: parent.bottom
|
|
anchors.bottomMargin: 6
|
|
visible: root.isOnline && !((root.statusType === -1) && (lastSeenMinutesAgo > 7))
|
|
border.width: 3
|
|
border.color: root.sensor.containsMouse ? Theme.palette.baseColor2 : Theme.palette.baseColor4
|
|
property real lastSeenMinutesAgo: ((currentTime/1000 - parseInt(lastSeen)) / 60);
|
|
color: {
|
|
if (visible) {
|
|
if (statusType === Constants.statusType_DoNotDisturb) {
|
|
return Style.current.red;
|
|
} else if (isCurrentUser || (lastSeenMinutesAgo < 5.5)) {
|
|
return Style.current.green;
|
|
} else if (((statusType !== -1) && (lastSeenMinutesAgo > 5.5)) ||
|
|
((statusType === -1) && (lastSeenMinutesAgo < 7))) {
|
|
return Style.current.orange;
|
|
} else if ((statusType === -1) && (lastSeenMinutesAgo > 7)) {
|
|
return "transparent";
|
|
}
|
|
} else {
|
|
return "transparent";
|
|
}
|
|
}
|
|
}
|
|
}
|