Skip to content
Snippets Groups Projects
TimelineRow.qml 3.13 KiB
Newer Older
  • Learn to ignore specific revisions
  • Nicolas Werner's avatar
    Nicolas Werner committed
    import QtQuick 2.6
    
    import QtQuick.Controls 2.3
    
    Nicolas Werner's avatar
    Nicolas Werner committed
    import QtQuick.Layouts 1.2
    import QtQuick.Window 2.2
    
    
    import "./delegates"
    
    Nicolas Werner's avatar
    Nicolas Werner committed
    	anchors.left: parent.left
    	anchors.right: parent.right
    
    	height: row.height
    	propagateComposedEvents: true
    
    	hoverEnabled: true
    
    	acceptedButtons: Qt.LeftButton | Qt.RightButton
    	onClicked: {
    		if (mouse.button === Qt.RightButton)
    
    		messageContextMenu.show(model.id, model.type, model.isEncrypted, row)
    
    	}
    	onPressAndHold: {
    		if (mouse.source === Qt.MouseEventNotSynthesized)
    
    		messageContextMenu.show(model.id, model.type, model.isEncrypted, row)
    
    		color: (settings.messageHoverHighlight && parent.containsMouse) ? colors.base : "transparent"
    
    		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.window)
    			}
    
    			// actual message content
    			MessageDelegate {
    				id: contentItem
    
    
    			Reactions {
    
    				id: reactionRow
    
    				reactions: model.reactions
    
    				roomId: model.roomId
    				eventId: model.id
    
    		StatusIndicator {
    			state: model.state
    			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
    			width: 16
    		}
    
    			visible: settings.buttonsInTimeline
    
    			Layout.alignment: Qt.AlignRight | Qt.AlignTop
    			Layout.preferredHeight: 16
    			width: 16
    			id: reactButton
    			hoverEnabled: true
    			ToolTip.visible: hovered
    			ToolTip.text: qsTr("React")
    
    			emojiPicker: emojiPopup
    
    			event_id: model.id
    
    			Layout.alignment: Qt.AlignRight | Qt.AlignTop
    			Layout.preferredHeight: 16
    			width: 16
    			id: replyButton
    			hoverEnabled: true
    
    			image: ":/icons/icons/ui/mail-reply.png"
    
    			ToolTip.visible: hovered
    			ToolTip.text: qsTr("Reply")
    
    			onClicked: chat.model.replyAction(model.id)
    		}
    		ImageButton {
    
    			Layout.alignment: Qt.AlignRight | Qt.AlignTop
    			Layout.preferredHeight: 16
    			width: 16
    			id: optionsButton
    
    Nicolas Werner's avatar
    Nicolas Werner committed
    			hoverEnabled: true
    
    
    			image: ":/icons/icons/ui/vertical-ellipsis.png"
    
    			ToolTip.visible: hovered
    			ToolTip.text: qsTr("Options")
    
    
    			onClicked: messageContextMenu.show(model.id, model.type, model.isEncrypted, optionsButton)
    
    			Layout.alignment: Qt.AlignRight | Qt.AlignTop
    			text: model.timestamp.toLocaleTimeString("HH:mm")
    			color: inactiveColors.text
    
    			MouseArea{
    				id: ma
    				anchors.fill: parent
    				hoverEnabled: true
    
    			}
    
    			ToolTip.visible: ma.containsMouse
    			ToolTip.text: Qt.formatDateTime(model.timestamp, Qt.DefaultLocaleLongDate)
    		}