import QtQuick 2.13 import Qt.labs.platform 1.1 import QtQuick.Controls 2.13 import QtQuick.Window 2.13 import QtQuick.Layouts 1.13 import QtQml.Models 2.13 import QtGraphicalEffects 1.13 import QtQuick.Dialogs 1.3 import shared 1.0 import shared.panels 1.0 import shared.status 1.0 import utils 1.0 import "../../controls" import StatusQ.Core 0.1 import StatusQ.Core.Theme 0.1 Item { id: root anchors.fill: parent property var userList property var currentTime property var contactsList property string profilePubKey property var messageContextMenu property var community property string currentUserName: "" property bool currentUserOnline: true StatusBaseText { id: titleText anchors.top: parent.top anchors.topMargin: Style.current.padding anchors.left: parent.left anchors.leftMargin: Style.current.padding opacity: (root.width > 58) ? 1.0 : 0.0 visible: (opacity > 0.1) font.pixelSize: Style.current.primaryTextFontSize font.weight: Font.Medium color: Theme.palette.directColor1 //% "Members" text: qsTrId("members-label") } ListView { id: userListView clip: true ScrollBar.vertical: ScrollBar { policy: ScrollBar.AsNeeded } anchors { top: titleText.bottom topMargin: Style.current.padding left: parent.left right: parent.right bottom: parent.bottom bottomMargin: Style.current.bigPadding } boundsBehavior: Flickable.StopAtBounds model: userListDelegate section.property: "online" section.delegate: (root.width > 58) ? sectionDelegateComponent : null Component { id: sectionDelegateComponent Item { width: parent.width height: 24 StatusBaseText { anchors.fill: parent anchors.leftMargin: Style.current.padding verticalAlignment: Text.AlignVCenter font.pixelSize: Style.current.additionalTextSize color: Theme.palette.baseColor1 text: section === 'true' ? qsTr("Online") : qsTr("Offline") } } } } DelegateModelGeneralized { id: userListDelegate lessThan: [ function(left, right) { return left.sortKey.localeCompare(right.sortKey) < 0 } ] model: community.members delegate: UserDelegate { name: model.userName publicKey: model.pubKey profilePubKey: root.profilePubKey identicon: model.identicon contactsList: root.contactsList lastSeen: model.lastSeen statusType: model.statusType currentTime: root.currentTime isOnline: (model.userName === root.currentUserName) ? root.currentUserOnline : model.online messageContextMenu: root.messageContextMenu } } }