// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "ActionableMessageSubsystem.h" #include "Widgets/SCompoundWidget.h" #include "Widgets/Views/STableViewBase.h" #include "Widgets/Views/STableRow.h" #include "Widgets/Views/SListView.h" class ACTIONABLEMESSAGE_API SActionableMessageEntry : public SCompoundWidget { public: SLATE_BEGIN_ARGS(SActionableMessageEntry) {} SLATE_ARGUMENT(TSharedPtr, ActionableMessage) SLATE_END_ARGS() void Construct(const FArguments& InArgs); void SetActionableMessage(TSharedPtr InActionableMessage); private: TSharedPtr ActionableMessage; FOnClicked OnClicked; }; class ACTIONABLEMESSAGE_API SActionableMessageViewportWidget : public SCompoundWidget { public: SLATE_BEGIN_ARGS(SActionableMessageViewportWidget) {} SLATE_END_ARGS() void Construct(const FArguments& InArgs); EVisibility GetVisibility(); TSharedRef OnGenerateRow(TSharedPtr InActionableMessage, const TSharedRef& OwnerTable); private: bool IsExpanded() const { return bExpanded || bForceExpand; } private: TSharedPtr>> ActionableMessageList; TSharedPtr TextBlock; TArray> ActionableMessages; uint32 CachedStateID = 0; TWeakObjectPtr CachedDataSourceID; bool bExpanded = false; bool bForceExpand = false; };