// 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" #define UE_API ACTIONABLEMESSAGE_API class SActionableMessageEntry : public SCompoundWidget { public: SLATE_BEGIN_ARGS(SActionableMessageEntry) {} SLATE_ARGUMENT(TSharedPtr, ActionableMessage) SLATE_END_ARGS() UE_API void Construct(const FArguments& InArgs); UE_API void SetActionableMessage(TSharedPtr InActionableMessage); private: TSharedPtr ActionableMessage; FOnClicked OnClicked; }; class SActionableMessageViewportWidget : public SCompoundWidget { public: SLATE_BEGIN_ARGS(SActionableMessageViewportWidget) {} SLATE_END_ARGS() UE_API void Construct(const FArguments& InArgs); UE_API EVisibility GetVisibility(); UE_API 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; }; #undef UE_API