diff --git a/imports/NeoChat/Component/ChatTextInput.qml b/imports/NeoChat/Component/ChatTextInput.qml index be576447c..37f5b1b46 100644 --- a/imports/NeoChat/Component/ChatTextInput.qml +++ b/imports/NeoChat/Component/ChatTextInput.qml @@ -46,6 +46,7 @@ ToolBar { textArea: inputField emojiModel: EmojiModel { id: emojiModel } + onChoosen: textArea.insert(textArea.cursorPosition, emoji) } RowLayout { diff --git a/imports/NeoChat/Component/Emoji/EmojiPicker.qml b/imports/NeoChat/Component/Emoji/EmojiPicker.qml index 5c16fc1b0..d9bd97683 100644 --- a/imports/NeoChat/Component/Emoji/EmojiPicker.qml +++ b/imports/NeoChat/Component/Emoji/EmojiPicker.qml @@ -17,6 +17,8 @@ ColumnLayout { property var textArea property var emojiModel + signal choosen(string emoji) + spacing: 0 ListView { @@ -122,7 +124,7 @@ ColumnLayout { } onClicked: { - textArea.insert(textArea.cursorPosition, modelData.unicode) + choosen(modelData.unicode) emojiModel.emojiUsed(modelData) } } diff --git a/imports/NeoChat/Component/Timeline/MessageDelegate.qml b/imports/NeoChat/Component/Timeline/MessageDelegate.qml index 6688cc290..b90fe654b 100644 --- a/imports/NeoChat/Component/Timeline/MessageDelegate.qml +++ b/imports/NeoChat/Component/Timeline/MessageDelegate.qml @@ -120,11 +120,15 @@ RowLayout { anchors.right: controlContainer.right spacing: 0 QQC2.Button { - QQC2.ToolTip.text: i18n("React") + " (not implemented yet)" + QQC2.ToolTip.text: i18n("React") QQC2.ToolTip.visible: hovered visible: controlContainer.hovered icon.name: "preferences-desktop-emoticons" - // TODO onClicked + onClicked: emojiDialog.open(); + EmojiDialog { + id: emojiDialog + onReact: currentRoom.toggleReaction(eventId, emoji) + } } QQC2.Button { QQC2.ToolTip.text: i18n("Reply") diff --git a/imports/NeoChat/Dialog/EmojiDialog.qml b/imports/NeoChat/Dialog/EmojiDialog.qml new file mode 100644 index 000000000..ad77e6d67 --- /dev/null +++ b/imports/NeoChat/Dialog/EmojiDialog.qml @@ -0,0 +1,30 @@ +/** + * SPDX-FileCopyrightText: 2020 Carl Schwan + * + * SPDX-License-Identifier: LGPL-2.1-or-later + */ +import QtQuick 2.14 +import QtQuick.Controls 2.14 as QQC2 +import org.kde.kirigami 2.13 as Kirigami + +import org.kde.neochat 1.0 +import NeoChat.Component.Emoji 1.0 + +QQC2.Popup { + id: root + + signal react(string emoji) + + modal: true + focus: true + closePolicy: QQC2.Popup.CloseOnEscape | QQC2.Popup.CloseOnPressOutsideParent + margins: 0 + padding: Kirigami.Units.smallSpacing + implicitWidth: Kirigami.Units.gridUnit * 15 + implicitHeight: Kirigami.Units.gridUnit * 20 + + contentItem: EmojiPicker { + onChoosen: react(emoji); + emojiModel: EmojiModel {} + } +} diff --git a/imports/NeoChat/Dialog/qmldir b/imports/NeoChat/Dialog/qmldir index 766a8f656..f6d467ce6 100644 --- a/imports/NeoChat/Dialog/qmldir +++ b/imports/NeoChat/Dialog/qmldir @@ -8,3 +8,4 @@ OpenFileDialog 1.0 OpenFileDialog.qml OpenFolderDialog 1.0 OpenFolderDialog.qml ImageClipboardDialog 1.0 ImageClipboardDialog.qml StartChatDialog 1.0 StartChatDialog.qml +EmojiDialog 1.0 EmojiDialog.qml diff --git a/res.qrc b/res.qrc index 0eff6aeff..384b3b6aa 100644 --- a/res.qrc +++ b/res.qrc @@ -47,15 +47,16 @@ imports/NeoChat/Dialog/qmldir imports/NeoChat/Dialog/RoomSettingsDialog.qml imports/NeoChat/Dialog/UserDetailDialog.qml - imports/NeoChat/Menu/Timeline/MessageSourceSheet.qml imports/NeoChat/Dialog/CreateRoomDialog.qml imports/NeoChat/Dialog/StartChatDialog.qml + imports/NeoChat/Dialog/EmojiDialog.qml imports/NeoChat/Dialog/OpenFileDialog.qml imports/NeoChat/Dialog/OpenFolderDialog.qml imports/NeoChat/Menu/qmldir imports/NeoChat/Menu/Timeline/qmldir imports/NeoChat/Menu/Timeline/MessageDelegateContextMenu.qml imports/NeoChat/Menu/Timeline/FileDelegateContextMenu.qml + imports/NeoChat/Menu/Timeline/MessageSourceSheet.qml imports/NeoChat/Menu/RoomListContextMenu.qml