Skip to content
Snippets Groups Projects
TimelineRow.qml 3.28 KiB
Newer Older
  • Learn to ignore specific revisions
  • import "./delegates"
    import "./emoji"
    
    import QtQuick 2.12
    
    import QtQuick.Controls 2.3
    
    import QtQuick.Layouts 1.2
    import QtQuick.Window 2.2
    
        anchors.left: parent.left
        anchors.right: parent.right
        height: row.height
    
    
            color: (Settings.messageHoverHighlight && hoverHandler.hovered) ? colors.alternateBase : "transparent"
    
        HoverHandler {
    
    Nicolas Werner's avatar
    Nicolas Werner committed
    
    
            acceptedDevices: PointerDevice.GenericPointer
        }
    
        TapHandler {
            acceptedButtons: Qt.RightButton
            onSingleTapped: messageContextMenu.show(model.id, model.type, model.isEncrypted, model.isEditable, row, mapToItem(timelineRoot, eventPoint.position.x, eventPoint.position.y))
        }
    
        TapHandler {
            onLongPressed: messageContextMenu.show(model.id, model.type, model.isEncrypted, model.isEditable, row, mapToItem(timelineRoot, point.position.x, point.position.y))
    
            onDoubleTapped: chat.model.reply = model.id
    
        }
    
        RowLayout {
            id: row
    
            anchors.leftMargin: avatarSize + 16
            anchors.left: parent.left
            anchors.right: parent.right
    
            Column {
                Layout.fillWidth: true
                Layout.alignment: Qt.AlignTop
                spacing: 4
    
                // fancy reply, if this is a reply
                Reply {
                    visible: model.replyTo
                    modelData: chat.model.getDump(model.replyTo, model.id)
    
                    userColor: TimelineManager.userColor(modelData.userId, colors.base)
    
                }
    
                // actual message content
                MessageDelegate {
                    id: contentItem
    
                    width: parent.width
                    modelData: model
                }
    
                Reactions {
                    id: reactionRow
    
                    reactions: model.reactions
                    eventId: model.id
                }
    
            }
    
            StatusIndicator {
                Layout.alignment: Qt.AlignRight | Qt.AlignTop
                Layout.preferredHeight: 16
                width: 16
            }
    
            EncryptionIndicator {
                visible: model.isRoomEncrypted
                encrypted: model.isEncrypted
                Layout.alignment: Qt.AlignRight | Qt.AlignTop
                Layout.preferredHeight: 16
    
                Layout.preferredWidth: 16
    
            Image {
                visible: model.isEdited
    
    Nicolas Werner's avatar
    Nicolas Werner committed
                Layout.alignment: Qt.AlignRight | Qt.AlignTop
                Layout.preferredHeight: 16
    
                Layout.preferredWidth: 16
                height: 16
    
    Nicolas Werner's avatar
    Nicolas Werner committed
                width: 16
    
                sourceSize.width: 16
                sourceSize.height: 16
                source: "image://colorimage/:/icons/icons/ui/edit.png?" + colors.buttonText
                ToolTip.visible: editHovered.hovered
                ToolTip.text: qsTr("Edited")
    
                HoverHandler {
                    id: editHovered
    
    
            }
    
            Label {
                Layout.alignment: Qt.AlignRight | Qt.AlignTop
                text: model.timestamp.toLocaleTimeString("HH:mm")
                width: Math.max(implicitWidth, text.length * fontMetrics.maximumCharacterWidth)
                color: inactiveColors.text
    
                ToolTip.visible: ma.hovered
    
                ToolTip.text: Qt.formatDateTime(model.timestamp, Qt.DefaultLocaleLongDate)
    
    
                HoverHandler {