// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "SMassDebuggerViewBase.h" #include "Widgets/Views/SListView.h" #include "Widgets/Views/STableViewBase.h" #include "Widgets/Views/STableRow.h" #include "Templates/SharedPointer.h" struct FMassDebuggerModel; struct FMassDebuggerFragmentData; class SHeaderRow; class STableViewBase; class UMassProcessor; class UScriptStruct; struct FMassArchetypeHandle; namespace UE::MassDebugger::FragmentsView { using FFragmentsTableRowPtr = TSharedPtr; class SFragmentsTableRow : public SMultiColumnTableRow { using Super = SMultiColumnTableRow; public: SLATE_BEGIN_ARGS(SFragmentsTableRow) {} SLATE_END_ARGS() void Construct(const FArguments& InArgs, const TSharedRef& InOwnerTableView, FFragmentsTableRowPtr InFragmentDataPtr); virtual TSharedRef GenerateWidgetForColumn(const FName& InColumnName) override; private: FFragmentsTableRowPtr FragmentDataPtr; }; class SFragmentsView : public SMassDebuggerViewBase { public: SLATE_BEGIN_ARGS(SFragmentsView) {} SLATE_END_ARGS() void Construct(const FArguments& InArgs, TSharedRef InDebuggerModel); virtual void OnRefresh() override; virtual void OnProcessorsSelected(TConstArrayView> SelectedProcessors, ESelectInfo::Type SelectInfo) override {} virtual void OnArchetypesSelected(TConstArrayView> SelectedArchetypes, ESelectInfo::Type SelectInfo) override {} protected: TSharedRef OnGenerateFragmentRow(FFragmentsTableRowPtr InItem, const TSharedRef& OwnerTable); void RefreshFragmentList(); EColumnSortMode::Type GetColumnSortMode(FName ColumnId) const; void OnColumnSortModeChanged(const EColumnSortPriority::Type SortPriority, const FName& ColumnId, const EColumnSortMode::Type InSortMode); private: TSharedPtr> FragmentsList; TArray FragmentListItemsSource; FName SortByColumnId; bool bSortAscending = true; }; } // UE::MassDebugger::FragmentsView