From 71fcc209432cbaea4ee530e7f3baf637ee29ff88 Mon Sep 17 00:00:00 2001 From: Tobias Fella Date: Fri, 9 Apr 2021 22:25:43 +0200 Subject: [PATCH] Refactor the hoverActions --- .../Component/Timeline/TimelineContainer.qml | 18 ++------------ imports/NeoChat/Page/RoomPage.qml | 24 ++++++++++++------- 2 files changed, 17 insertions(+), 25 deletions(-) diff --git a/imports/NeoChat/Component/Timeline/TimelineContainer.qml b/imports/NeoChat/Component/Timeline/TimelineContainer.qml index e3340b4f1..02d702f67 100644 --- a/imports/NeoChat/Component/Timeline/TimelineContainer.qml +++ b/imports/NeoChat/Component/Timeline/TimelineContainer.qml @@ -34,8 +34,6 @@ QQC2.ItemDelegate { topPadding: 0 bottomPadding: 0 - property alias hoveredBubble: controlContainer.hovered - //height: mainColumn.childrenRect.height + (readMarker ? Kirigami.Units.smallSpacing : 0) //height: mainColumn.implicitHeight + (readMarker ? Kirigami.Units.smallSpacing : 0) @@ -53,21 +51,9 @@ QQC2.ItemDelegate { function updateHoverComponent() { hoverComponent.x = column.mapToItem(page, hoverComponentX, hoverComponentY).x; hoverComponent.y = column.mapToItem(page, hoverComponentX, hoverComponentY).y; - hoverComponent.hovered = Qt.binding(() => controlContainer.hovered); - hoverComponent.showEdit = author.id === Controller.activeConnection.localUserId && (model.eventType === "emote" || model.eventType === "message"); + hoverComponent.bubble = controlContainer hoverComponent.updateFunction = updateHoverComponent; - - hoverComponent.editClicked = () => { - if (hoverComponent.showEdit) { - ChatBoxHelper.edit(message, formattedBody, eventId) - } - }; - hoverComponent.replyClicked = () => { - ChatBoxHelper.replyToMessage(eventId, message, author); - }; - hoverComponent.reacted = emoji => { - currentRoom.toggleReaction(eventId, emoji); - }; + hoverComponent.event = model } contentItem: ColumnLayout { diff --git a/imports/NeoChat/Page/RoomPage.qml b/imports/NeoChat/Page/RoomPage.qml index dc7c389d2..043b7bc35 100644 --- a/imports/NeoChat/Page/RoomPage.qml +++ b/imports/NeoChat/Page/RoomPage.qml @@ -136,17 +136,15 @@ Kirigami.ScrollablePage { } Item { id: hoverActions - property bool showEdit - property bool hovered: false + property var event + property bool showEdit: event && (event.author.id === Controller.activeConnection.localUserId && (event.eventType === "emote" || event.eventType === "message")) + property var bubble + property var hovered: bubble && bubble.hovered visible: (hovered || hoverHandler.hovered) && !Kirigami.Settings.isMobile property var updateFunction - property var editClicked - property var replyClicked - property var reacted - property alias childWidth: hoverActionsRow.width property alias childHeight: hoverActionsRow.height @@ -166,7 +164,9 @@ Kirigami.ScrollablePage { onClicked: emojiDialog.open(); EmojiDialog { id: emojiDialog - onReact: hoverActions.reacted(emoji) + onReact: { + page.currentRoom.toggleReaction(hoverActions.event.eventId, emoji); + } } } QQC2.Button { @@ -174,13 +174,19 @@ Kirigami.ScrollablePage { QQC2.ToolTip.visible: hovered visible: hoverActions.showEdit icon.name: "document-edit" - onClicked: hoverActions.editClicked() + onClicked: { + if (hoverActions.showEdit) { + ChatBoxHelper.edit(hoverActions.event.message, hoverActions.event.formattedBody, hoverActions.event.eventId) + } + } } QQC2.Button { QQC2.ToolTip.text: i18n("Reply") QQC2.ToolTip.visible: hovered icon.name: "mail-replied-symbolic" - onClicked: hoverActions.replyClicked() + onClicked: { + ChatBoxHelper.replyToMessage(hoverActions.event.eventId, hoverActions.event.message, hoverActions.event.author); + } } } }