status-desktop/ui/app/AppLayouts/Chat/ChatColumn/MessageComponents/ChatButtons.qml

126 lines
3.7 KiB
QML
Raw Normal View History

import QtQuick 2.13
import QtGraphicalEffects 1.13
import "../../../../../shared"
import "../../../../../shared/status"
import "../../../../../imports"
Rectangle {
property bool parentIsHovered: false
signal hoverChanged(bool hovered)
property int containerMargin: 2
property int contentType: 2
id: buttonsContainer
visible: !activityCenterMessage &&
(buttonsContainer.parentIsHovered || isMessageActive)
&& contentType !== Constants.transactionType
width: buttonRow.width + buttonsContainer.containerMargin * 2
height: 36
radius: Style.current.radius
color: Style.current.modalBackground
z: 52
layer.enabled: true
layer.effect: DropShadow {
width: buttonsContainer.width
height: buttonsContainer.height
x: buttonsContainer.x
y: buttonsContainer.y + 10
visible: buttonsContainer.visible
source: buttonsContainer
horizontalOffset: 0
verticalOffset: 2
radius: 10
samples: 15
color: "#22000000"
}
MouseArea {
anchors.fill: buttonsContainer
acceptedButtons: Qt.NoButton
hoverEnabled: true
onEntered: {
buttonsContainer.hoverChanged(true)
}
onExited: {
buttonsContainer.hoverChanged(false)
}
}
Row {
id: buttonRow
spacing: buttonsContainer.containerMargin
anchors.left: parent.left
anchors.leftMargin: buttonsContainer.containerMargin
anchors.verticalCenter: buttonsContainer.verticalCenter
height: parent.height - 2 * buttonsContainer.containerMargin
StatusIconButton {
id: emojiBtn
icon.name: "emoji"
width: 32
height: 32
onClicked: {
setMessageActive(messageId, true)
clickMessage(false, false, false, null, true)
2021-05-25 19:38:18 +00:00
if (!forceHoverHandler) {
messageContextMenu.x = buttonsContainer.x + buttonsContainer.width - messageContextMenu.width
2021-05-25 19:38:18 +00:00
// The Math.max is to make sure that the menu is rendered
messageContextMenu.y -= Math.max(messageContextMenu.emojiContainer.height, 56) + Style.current.padding
}
}
onHoveredChanged: {
buttonsContainer.hoverChanged(this.hovered)
}
StatusToolTip {
visible: emojiBtn.hovered
2021-02-18 16:36:05 +00:00
//% "Add reaction"
text: qsTrId("add-reaction")
}
}
StatusIconButton {
id: replyBtn
icon.name: "reply"
width: 32
height: 32
onClicked: {
SelectedMessage.set(messageId, fromAuthor);
showReplyArea()
}
onHoveredChanged: {
buttonsContainer.hoverChanged(this.hovered)
}
StatusToolTip {
visible: replyBtn.hovered
2021-02-18 16:36:05 +00:00
//% "Reply"
text: qsTrId("message-reply")
}
}
StatusIconButton {
id: otherBtn
icon.name: "dots-icon"
width: 32
height: 32
onClicked: {
if (typeof isMessageActive !== "undefined") {
2021-05-25 19:38:18 +00:00
setMessageActive(messageId, true)
}
clickMessage(false, isSticker, false, null, false, true)
}
onHoveredChanged: {
buttonsContainer.hoverChanged(this.hovered)
}
StatusToolTip {
visible: otherBtn.hovered
text: qsTr("More")
}
}
}
}