Stream Chat Unreal SDK
Loading...
Searching...
No Matches
MessageComposerWidget.h
1// Copyright 2022 Stream.IO, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Blueprint/UserWidget.h"
6#include "Channel/ChatChannel.h"
7#include "Common/IconButton.h"
8#include "Components/Border.h"
9#include "Components/Button.h"
10#include "Components/Image.h"
11#include "Components/TextBlock.h"
12#include "CoreMinimal.h"
13#include "MessageInputWidget.h"
14#include "Types/SlateEnums.h"
15
16#include "MessageComposerWidget.generated.h"
17
21UCLASS()
22class STREAMCHATUI_API UMessageComposerWidget final : public UUserWidget
23{
24 GENERATED_BODY()
25
26public:
27 virtual void NativeOnInitialized() override;
28 virtual void NativeConstruct() override;
29 virtual void NativeDestruct() override;
30
32 DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnSendMessage, const FString&, MessageText);
33 UPROPERTY(BlueprintAssignable)
34 FOnSendMessage OnSendMessage;
35
36 UFUNCTION(BlueprintCallable, Category = "Stream Chat")
37 void EditMessage(const FMessage& Message);
38
39protected:
40 UPROPERTY(meta = (BindWidget))
41 UMessageInputWidget* MessageInput;
42
43 UPROPERTY(meta = (BindWidget))
44 UIconButton* SendMessageButton;
45
46 UPROPERTY(meta = (BindWidget))
47 UButton* CancelEditingButton;
48
49 UPROPERTY(meta = (BindWidget))
50 UPanelWidget* CancelEditingHeaderPanel;
51
52 UPROPERTY(meta = (BindWidget))
53 UTextBlock* EditMessageTextBlock;
54
55 UPROPERTY(meta = (BindWidget))
56 UBorder* BackgroundBorder;
57
58 UPROPERTY(meta = (BindWidget))
59 UImage* TopBorderImage;
60
61 UPROPERTY(EditAnywhere, Category = "Icon")
62 UTexture2D* IconTextureSend;
63
64 UPROPERTY(EditAnywhere, Category = "Icon")
65 UTexture2D* IconTextureConfirm;
66
67 UPROPERTY(EditAnywhere, Category = "Icon")
68 FMargin IconPaddingSend;
69
70 UPROPERTY(EditAnywhere, Category = "Icon")
71 FMargin IconPaddingConfirm;
72
73private:
74 UFUNCTION()
75 void OnInputTextChanged(const FText& Text);
76 UFUNCTION()
77 void OnInputTextCommit(const FText& Text, ETextCommit::Type CommitMethod);
78 UFUNCTION()
79 void OnCancelEditingButtonClicked();
80 UFUNCTION()
81 void OnSendButtonClicked();
82
83 void SendMessage();
84 void StopEditMessage();
85 void Keystroke();
86 void StopTyping();
87
88 void UpdateSendButtonAppearance(bool bEnabled);
89
90 enum class ESendButtonIconAppearance
91 {
92 Send,
93 Confirm
94 };
95 void UpdateEditMessageAppearance(ESendButtonIconAppearance Appearance);
96
97 TOptional<FMessage> EditedMessage;
98};
A button with an icon which can be disabled and themed.
Definition: IconButton.h:19
@ Text
Text of the message.
@ Type
Type of the message.
Represents a Stream Chat message.
Definition: Message.h:66