Stream Chat Unreal SDK
Loading...
Searching...
No Matches
BottomReactionWidget.h
1// Copyright 2022 Stream.IO, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Components/Border.h"
6#include "Components/Button.h"
7#include "Components/MenuAnchor.h"
8#include "Components/TextBlock.h"
9#include "CoreMinimal.h"
10#include "Message/MessageSide.h"
11#include "Reaction/ReactionGroup.h"
12#include "ReactionIconWidget.h"
13#include "ReactionsTooltipWidget.h"
14#include "StreamWidget.h"
15
16#include "BottomReactionWidget.generated.h"
17
22UCLASS()
23class STREAMCHATUI_API UBottomReactionWidget final : public UStreamWidget
24{
25 GENERATED_BODY()
26
27public:
29 UFUNCTION(BlueprintCallable, Category = "Stream Chat")
30 void Setup(const FReactionGroup& InReactionGroup);
31
32 DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FBottomReactionClicked, const FReactionGroup&, Reaction);
33 UPROPERTY(BlueprintAssignable)
34 FBottomReactionClicked OnBottomReactionClicked;
35
36 DECLARE_MULTICAST_DELEGATE_OneParam(FBottomReactionClickedNative, const FReactionGroup&);
37 FBottomReactionClickedNative OnBottomReactionClickedNative;
38
39protected:
40 UPROPERTY(meta = (BindWidget))
41 UReactionIconWidget* ReactionIcon;
42
43 UPROPERTY(meta = (BindWidget))
44 UTextBlock* ReactionCountTextBlock;
45
46 UPROPERTY(meta = (BindWidget))
47 UBorder* Border;
48
49 UPROPERTY(meta = (BindWidget))
50 UButton* Button;
51
52 UPROPERTY(meta = (BindWidget))
53 UMenuAnchor* Anchor;
54
55 UPROPERTY(EditDefaultsOnly, NoClear, Category = Defaults)
56 TSubclassOf<UReactionsTooltipWidget> ReactionsTooltipWidgetClass = UReactionsTooltipWidget::StaticClass();
57
58 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Setup)
59 FReactionGroup ReactionGroup;
60
61private:
62 virtual void OnSetup() override;
63 virtual void NativePreConstruct() override;
64 virtual void NativeConstruct() override;
65 virtual void NativeDestruct() override;
66
67 virtual void NativeOnMouseEnter(const FGeometry& InGeometry, const FPointerEvent& InMouseEvent) override;
68 virtual void NativeOnMouseLeave(const FPointerEvent& InMouseEvent) override;
69
70 EMessageSide GetSide() const;
71
72 void CancelTooltip();
73
74 UFUNCTION()
75 void OnButtonClicked();
76
77 UFUNCTION()
78 UUserWidget* CreateTooltip();
79
80 FTimerHandle HoverTimerHandle;
81};
A numbered reaction shown below a message (similar to Slack)
Definition: BottomReactionWidget.h:24
An abstraction to group reactions by their type.
Definition: ReactionGroup.h:17