// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Experimental/BuildServerInterface.h" #include "Experimental/ZenServerInterface.h" #include "Templates/SharedPointer.h" #include "Widgets/DeclarativeSyntaxSupport.h" #include "Widgets/SBoxPanel.h" #include "Widgets/SCompoundWidget.h" #include "Widgets/SWidget.h" #include "Widgets/Views/ITableRow.h" #include "Widgets/Views/SListView.h" #include "Widgets/Views/STableRow.h" #include "Widgets/Views/STableViewBase.h" class STORAGESERVERWIDGETS_API SBuildActivity : public SCompoundWidget { SLATE_BEGIN_ARGS(SBuildActivity) : _ZenServiceInstance(nullptr) , _BuildServiceInstance(nullptr) { } SLATE_ATTRIBUTE(TSharedPtr, ZenServiceInstance); SLATE_ATTRIBUTE(TSharedPtr, BuildServiceInstance); SLATE_END_ARGS() struct FBuildActivity : public TSharedFromThis { FString Name; FString Platform; UE::Zen::Build::FBuildServiceInstance::FBuildTransfer Transfer; }; void Construct(const FArguments& InArgs); void AddBuildTransfer(UE::Zen::Build::FBuildServiceInstance::FBuildTransfer Transfer, FStringView Name, FStringView Platform) { TSharedPtr NewActivity = MakeShared(); NewActivity->Name = Name; NewActivity->Platform = Platform; NewActivity->Transfer = Transfer; BuildActivities.Add(NewActivity); } private: TSharedRef GenerateBuildActivityRow(TSharedPtr InItem, const TSharedRef& InOwningTable); TSharedRef GetGridPanel(); TArray> BuildActivities; SVerticalBox::FSlot* GridSlot = nullptr; TAttribute> ZenServiceInstance; TAttribute> BuildServiceInstance; }; typedef TSharedPtr FBuildActivityPtr; class SBuildActivityTableRow : public SMultiColumnTableRow { public: SLATE_BEGIN_ARGS(SBuildActivityTableRow) { } SLATE_END_ARGS() void Construct(const FArguments& InArgs, const TSharedRef& InOwnerTableView, const FBuildActivityPtr InBuildActivity, TSharedPtr InBuildServiceInstance); virtual TSharedRef GenerateWidgetForColumn(const FName& ColumnName) override; const FSlateBrush* GetBorder() const; FReply OnBrowseClicked(); private: FBuildActivityPtr BuildActivity; TSharedPtr BuildServiceInstance; };