Files
UnrealEngine/Engine/Source/Editor/StorageServerWidgets/Internal/SBuildActivity.h
2025-05-18 13:04:45 +08:00

78 lines
2.6 KiB
C++

// 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<UE::Zen::FZenServiceInstance>, ZenServiceInstance);
SLATE_ATTRIBUTE(TSharedPtr<UE::Zen::Build::FBuildServiceInstance>, BuildServiceInstance);
SLATE_END_ARGS()
struct FBuildActivity : public TSharedFromThis<FBuildActivity, ESPMode::ThreadSafe>
{
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<SBuildActivity::FBuildActivity, ESPMode::ThreadSafe> NewActivity = MakeShared<FBuildActivity>();
NewActivity->Name = Name;
NewActivity->Platform = Platform;
NewActivity->Transfer = Transfer;
BuildActivities.Add(NewActivity);
}
private:
TSharedRef<ITableRow> GenerateBuildActivityRow(TSharedPtr<FBuildActivity> InItem, const TSharedRef<STableViewBase>& InOwningTable);
TSharedRef<SWidget> GetGridPanel();
TArray<TSharedPtr<SBuildActivity::FBuildActivity, ESPMode::ThreadSafe>> BuildActivities;
SVerticalBox::FSlot* GridSlot = nullptr;
TAttribute<TSharedPtr<UE::Zen::FZenServiceInstance>> ZenServiceInstance;
TAttribute<TSharedPtr<UE::Zen::Build::FBuildServiceInstance>> BuildServiceInstance;
};
typedef TSharedPtr<SBuildActivity::FBuildActivity, ESPMode::ThreadSafe> FBuildActivityPtr;
class SBuildActivityTableRow : public SMultiColumnTableRow<FBuildActivityPtr>
{
public:
SLATE_BEGIN_ARGS(SBuildActivityTableRow) { }
SLATE_END_ARGS()
void Construct(const FArguments& InArgs,
const TSharedRef<STableViewBase>& InOwnerTableView,
const FBuildActivityPtr InBuildActivity,
TSharedPtr<UE::Zen::Build::FBuildServiceInstance> InBuildServiceInstance);
virtual TSharedRef<SWidget> GenerateWidgetForColumn(const FName& ColumnName) override;
const FSlateBrush* GetBorder() const;
FReply OnBrowseClicked();
private:
FBuildActivityPtr BuildActivity;
TSharedPtr<UE::Zen::Build::FBuildServiceInstance> BuildServiceInstance;
};