diff --git a/resources/qml/TimelineRow.qml b/resources/qml/TimelineRow.qml index 07831c59cfc4af94dd7ecfadfa56908a57b13fe8..f2e3e12b563245c2e9434eb86872efc9e8c73ed0 100644 --- a/resources/qml/TimelineRow.qml +++ b/resources/qml/TimelineRow.qml @@ -87,6 +87,8 @@ MouseArea { ToolTip.visible: hovered ToolTip.text: qsTr("React") emojiPicker: emojiPopup + room_id: model.roomId + event_id: model.id // onClicked: chat.model.reactAction(model.id) } ImageButton { diff --git a/resources/qml/TimelineView.qml b/resources/qml/TimelineView.qml index 721fd2b84992d633ec501aa9263d913cf1230500..3da2f09cd40c380fc323dcc1639eb19375652294 100644 --- a/resources/qml/TimelineView.qml +++ b/resources/qml/TimelineView.qml @@ -46,6 +46,9 @@ Page { category: Emoji.Category.People sourceModel: EmojiModel {} } + Component.onCompleted: { + emojiPopup.picked.connect(timelineManager.queueReactionMessage) + } } Menu { diff --git a/resources/qml/emoji/EmojiButton.qml b/resources/qml/emoji/EmojiButton.qml index 0940adfe7e97dde662f6dfedf416961c09b904a4..ce856db4643aa0232a5eaa5f079f57e9b9c6d1c1 100644 --- a/resources/qml/emoji/EmojiButton.qml +++ b/resources/qml/emoji/EmojiButton.qml @@ -8,9 +8,11 @@ import "../" ImageButton { property var colors: currentActivePalette property var emojiPicker + property string room_id + property string event_id image: ":/icons/icons/ui/smile.png" id: emojiButton - onClicked: emojiPicker.visible ? emojiPicker.close() : emojiPicker.show(emojiButton) + onClicked: emojiPicker.visible ? emojiPicker.close() : emojiPicker.show(emojiButton, room_id, event_id) } \ No newline at end of file diff --git a/resources/qml/emoji/EmojiPicker.qml b/resources/qml/emoji/EmojiPicker.qml index 3a0eb36544b600ea04a676bf5e582b5e57608e3a..8618e63fa243555d241c89f10834f069eed4e1a9 100644 --- a/resources/qml/emoji/EmojiPicker.qml +++ b/resources/qml/emoji/EmojiPicker.qml @@ -10,12 +10,19 @@ import "../" Popup { - function show(showAt) { + function show(showAt, room_id, event_id) { + console.debug("Showing emojiPicker for " + event_id + "in room " + room_id) parent = showAt x = Math.round((showAt.width - width) / 2) y = showAt.height + emojiPopup.room_id = room_id + emojiPopup.event_id = event_id open() } + signal picked(string room_id, string event_id, string key) + + property string room_id + property string event_id property var colors property alias model: gridView.model property var textArea @@ -80,7 +87,7 @@ Popup { ToolTip.text: model.shortName ToolTip.visible: hovered - // give the emoji a little oomf + // give the emoji a little oomf DropShadow { width: parent.width; height: parent.height; @@ -92,7 +99,10 @@ Popup { source: parent.contentItem } // TODO: emit a signal and maybe add favorites at some point? - //onClicked: textArea.insert(textArea.cursorPosition, modelData.unicode) + onClicked: { + console.debug("Picked " + model.unicode + "in response to " + emojiPopup.event_id + " in room " + emojiPopup.room_id) + emojiPopup.picked(emojiPopup.room_id, emojiPopup.event_id, model.unicode) + } } // Search field