// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "Insights/Table/ViewModels/TableCellValue.h" namespace Insights { class FBaseTreeNode; class FTableColumn; //////////////////////////////////////////////////////////////////////////////////////////////////// class ITableCellValueFormatter { public: virtual FText FormatValue(const TOptional& InValue) const = 0; virtual FText FormatValueForTooltip(const TOptional& InValue) const = 0; virtual FText FormatValue(const FTableColumn& Column, const FBaseTreeNode& Node) const = 0; virtual FText FormatValueForTooltip(const FTableColumn& Column, const FBaseTreeNode& Node) const = 0; }; //////////////////////////////////////////////////////////////////////////////////////////////////// class FTableCellValueFormatter: public ITableCellValueFormatter { public: FTableCellValueFormatter() {} virtual ~FTableCellValueFormatter() {} virtual FText FormatValue(const TOptional& InValue) const override { return FText::GetEmpty(); } virtual FText FormatValueForTooltip(const TOptional& InValue) const override { return FormatValue(InValue); } virtual FText FormatValue(const FTableColumn& Column, const FBaseTreeNode& Node) const override; // { return FormatValue(Column.GetValue(Node)); } virtual FText FormatValueForTooltip(const FTableColumn& Column, const FBaseTreeNode& Node) const override { return FormatValue(Column, Node); } }; //////////////////////////////////////////////////////////////////////////////////////////////////// class FTextValueFormatter: public FTableCellValueFormatter { public: virtual FText FormatValue(const TOptional& InValue) const override { if (InValue.IsSet()) { return InValue.GetValue().GetText(); } return FText::GetEmpty(); } }; //////////////////////////////////////////////////////////////////////////////////////////////////// class FAsTextValueFormatter: public FTableCellValueFormatter { public: virtual FText FormatValue(const TOptional& InValue) const override { if (InValue.IsSet()) { return InValue.GetValue().AsText(); } return FText::GetEmpty(); } }; //////////////////////////////////////////////////////////////////////////////////////////////////// class FBoolValueFormatterAsTrueFalse: public FTableCellValueFormatter { public: virtual FText FormatValue(const TOptional& InValue) const override; }; //////////////////////////////////////////////////////////////////////////////////////////////////// class FBoolValueFormatterAsOnOff: public FTableCellValueFormatter { public: virtual FText FormatValue(const TOptional& InValue) const override; }; //////////////////////////////////////////////////////////////////////////////////////////////////// class FInt64ValueFormatterAsNumber: public FTableCellValueFormatter { public: virtual FText FormatValue(const TOptional& InValue) const override { return InValue.IsSet() ? FText::AsNumber(InValue.GetValue().Int64) : FText::GetEmpty(); } }; //////////////////////////////////////////////////////////////////////////////////////////////////// class FInt64ValueFormatterAsMemory: public FTableCellValueFormatter { public: virtual FText FormatValue(const TOptional& InValue) const override; virtual FText FormatValueForTooltip(const TOptional& InValue) const override; }; //////////////////////////////////////////////////////////////////////////////////////////////////// class FFloatValueFormatterAsNumber: public FTableCellValueFormatter { public: virtual FText FormatValue(const TOptional& InValue) const override; }; //////////////////////////////////////////////////////////////////////////////////////////////////// class FFloatValueFormatterAsTimeAuto: public FTableCellValueFormatter { public: virtual FText FormatValue(const TOptional& InValue) const override; virtual FText FormatValueForTooltip(const TOptional& InValue) const override; }; //////////////////////////////////////////////////////////////////////////////////////////////////// class FDoubleValueFormatterAsNumber: public FTableCellValueFormatter { public: virtual FText FormatValue(const TOptional& InValue) const override; }; //////////////////////////////////////////////////////////////////////////////////////////////////// class FDoubleValueFormatterAsTimeAuto: public FTableCellValueFormatter { public: virtual FText FormatValue(const TOptional& InValue) const override; virtual FText FormatValueForTooltip(const TOptional& InValue) const override; }; //////////////////////////////////////////////////////////////////////////////////////////////////// class FDoubleValueFormatterAsTimeMs: public FTableCellValueFormatter { public: virtual FText FormatValue(const TOptional& InValue) const override; virtual FText FormatValueForTooltip(const TOptional& InValue) const override; }; //////////////////////////////////////////////////////////////////////////////////////////////////// class FCStringValueFormatterAsText: public FTableCellValueFormatter { public: virtual FText FormatValue(const TOptional& InValue) const override; }; //////////////////////////////////////////////////////////////////////////////////////////////////// } // namespace Insights