Files
2025-05-18 13:04:45 +08:00

91 lines
2.7 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreTypes.h"
// TraceServices
#include "TraceServices/Model/CookProfilerProvider.h"
// TraceInsights
#include "Insights/CookProfiler/ViewModels/PackageTable.h"
#include "Insights/Table/Widgets/SSessionTableTreeView.h"
class FMenuBuilder;
namespace UE::Insights::CookProfiler
{
////////////////////////////////////////////////////////////////////////////////////////////////////
class SPackageTableTreeView : public SSessionTableTreeView
{
public:
/** Default constructor. */
SPackageTableTreeView();
/** Virtual destructor. */
virtual ~SPackageTableTreeView();
SLATE_BEGIN_ARGS(SPackageTableTreeView) {}
SLATE_END_ARGS()
/**
* Construct this widget
* @param InArgs - The declaration data for this widget
*/
void Construct(const FArguments& InArgs, TSharedPtr<FPackageTable> InTablePtr);
virtual TSharedPtr<SWidget> ConstructToolbar() override;
TSharedPtr<FPackageTable> GetPackageTable() { return StaticCastSharedPtr<FPackageTable>(GetTable()); }
const TSharedPtr<FPackageTable> GetPackageTable() const { return StaticCastSharedPtr<FPackageTable>(GetTable()); }
virtual void Reset();
/**
* Ticks this widget. Override in derived classes, but always call the parent implementation.
*
* @param AllottedGeometry The space allotted for this widget
* @param InCurrentTime Current absolute real time
* @param InDeltaTime Real time passed since last tick
*/
virtual void Tick(const FGeometry& AllottedGeometry, const double InCurrentTime, const float InDeltaTime) override;
/**
* Rebuilds the tree (if necessary).
* @param bResync - If true, it forces a resync even if the list did not changed since last sync.
*/
virtual void RebuildTree(bool bResync);
////////////////////////////////////////////////////////////////////////////////////////////////////
// IAsyncOperationStatusProvider implementation
virtual bool IsRunning() const override;
virtual double GetAllOperationsDuration() override;
virtual FText GetCurrentOperationName() const override;
////////////////////////////////////////////////////////////////////////////////////////////////////
virtual void TreeView_OnMouseButtonDoubleClick(FTableTreeNodePtr TreeNode) override;
protected:
virtual void InternalCreateGroupings() override;
virtual void ExtendMenu(FMenuBuilder& MenuBuilder) override;
virtual void UpdateBannerText() override;
private:
void AddCommmands();
virtual void InitAvailableViewPresets() override;
private:
bool bDataLoaded = false;
};
////////////////////////////////////////////////////////////////////////////////////////////////////
} // namespace UE::Insights::CookProfiler