From 5ab44f1897108e93790723ee81f38acb002c9a62 Mon Sep 17 00:00:00 2001 From: Alexey Andreyev Date: Mon, 8 Feb 2021 21:01:25 +0300 Subject: [PATCH] Fancy effects: add fancy effects support for chatTextInput --- imports/NeoChat/Component/ChatTextInput.qml | 23 ++++++++++++++++++ imports/NeoChat/Page/RoomPage.qml | 27 +++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/imports/NeoChat/Component/ChatTextInput.qml b/imports/NeoChat/Component/ChatTextInput.qml index 2111af7c6..0650accb4 100644 --- a/imports/NeoChat/Component/ChatTextInput.qml +++ b/imports/NeoChat/Component/ChatTextInput.qml @@ -38,6 +38,8 @@ ToolBar { property bool hasImageAttachment: hasAttachment && attachmentMimetype.valid && FileType.supportedImageFormats.includes(attachmentMimetype.preferredSuffix) + signal fancyEffectsReasonFound(string fancyEffect) + position: ToolBar.Footer function addText(text) { @@ -474,7 +476,28 @@ ToolBar { // This use an hack to define: https://doc.qt.io/qt-5/qml-var.html#property-value-initialization-semantics property var userAutocompleted: ({}) + function checkForFancyEffectsReason() { + var inputFieldText = inputField.text.trim() + console.log(inputFieldText) + if (inputFieldText.includes('\u{2744}')) { + root.fancyEffectsReasonFound("snowflake") + } + if (inputFieldText.includes('\u{1F386}')) { + root.fancyEffectsReasonFound("fireworks") + } + if (inputFieldText.includes('\u{1F387}')) { + root.fancyEffectsReasonFound("fireworks") + } + if (inputFieldText.includes('\u{1F389}')) { + root.fancyEffectsReasonFound("confetti") + } + if (inputFieldText.includes('\u{1F38A}')) { + root.fancyEffectsReasonFound("confetti") + } + } + function postMessage() { + checkForFancyEffectsReason() roomManager.actionsHandler.postMessage(inputField.text.trim(), attachmentPath, replyEventID, editEventId, inputField.userAutocompleted); clearAttachment(); diff --git a/imports/NeoChat/Page/RoomPage.qml b/imports/NeoChat/Page/RoomPage.qml index 985d23147..4ae340f29 100644 --- a/imports/NeoChat/Page/RoomPage.qml +++ b/imports/NeoChat/Page/RoomPage.qml @@ -601,6 +601,33 @@ Kirigami.ScrollablePage { Layout.fillWidth: true Layout.fillHeight: true enabled: Config.showFancyEffects + + function processFancyEffectsReason(fancyEffect) { + console.log("onFancyEffectsReasonFound", fancyEffect) + if (fancyEffect === "snowflake") { + fancyEffectsContainer.showSnowEffect() + } + if (fancyEffect === "fireworks") { + fancyEffectsContainer.showFireworksEffect() + } + if (fancyEffect === "confetti") { + fancyEffectsContainer.showConfettiEffect() + } + } + + Connections { + target: messageEventModel + onFancyEffectsReasonFound: { + fancyEffectsContainer.processFancyEffectsReason(fancyEffect) + } + } + + Connections { + target: chatTextInput + onFancyEffectsReasonFound: { + fancyEffectsContainer.processFancyEffectsReason(fancyEffect) + } + } } Kirigami.Theme.colorSet: Kirigami.Theme.View