EM_Task/TraceInsights/Private/Insights/Table/ViewModels/TableCellValueFormatter.h

162 lines
5.6 KiB
C
Raw Permalink Normal View History

2026-02-13 16:18:33 +08:00
// 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<FTableCellValue>& InValue) const = 0;
virtual FText FormatValueForTooltip(const TOptional<FTableCellValue>& 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<FTableCellValue>& InValue) const override { return FText::GetEmpty(); }
virtual FText FormatValueForTooltip(const TOptional<FTableCellValue>& 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<FTableCellValue>& InValue) const override
{
if (InValue.IsSet())
{
return InValue.GetValue().GetText();
}
return FText::GetEmpty();
}
};
////////////////////////////////////////////////////////////////////////////////////////////////////
class FAsTextValueFormatter: public FTableCellValueFormatter
{
public:
virtual FText FormatValue(const TOptional<FTableCellValue>& InValue) const override
{
if (InValue.IsSet())
{
return InValue.GetValue().AsText();
}
return FText::GetEmpty();
}
};
////////////////////////////////////////////////////////////////////////////////////////////////////
class FBoolValueFormatterAsTrueFalse: public FTableCellValueFormatter
{
public:
virtual FText FormatValue(const TOptional<FTableCellValue>& InValue) const override;
};
////////////////////////////////////////////////////////////////////////////////////////////////////
class FBoolValueFormatterAsOnOff: public FTableCellValueFormatter
{
public:
virtual FText FormatValue(const TOptional<FTableCellValue>& InValue) const override;
};
////////////////////////////////////////////////////////////////////////////////////////////////////
class FInt64ValueFormatterAsNumber: public FTableCellValueFormatter
{
public:
virtual FText FormatValue(const TOptional<FTableCellValue>& InValue) const override
{
return InValue.IsSet() ? FText::AsNumber(InValue.GetValue().Int64) : FText::GetEmpty();
}
};
////////////////////////////////////////////////////////////////////////////////////////////////////
class FInt64ValueFormatterAsMemory: public FTableCellValueFormatter
{
public:
virtual FText FormatValue(const TOptional<FTableCellValue>& InValue) const override;
virtual FText FormatValueForTooltip(const TOptional<FTableCellValue>& InValue) const override;
};
////////////////////////////////////////////////////////////////////////////////////////////////////
class FFloatValueFormatterAsNumber: public FTableCellValueFormatter
{
public:
virtual FText FormatValue(const TOptional<FTableCellValue>& InValue) const override;
};
////////////////////////////////////////////////////////////////////////////////////////////////////
class FFloatValueFormatterAsTimeAuto: public FTableCellValueFormatter
{
public:
virtual FText FormatValue(const TOptional<FTableCellValue>& InValue) const override;
virtual FText FormatValueForTooltip(const TOptional<FTableCellValue>& InValue) const override;
};
////////////////////////////////////////////////////////////////////////////////////////////////////
class FDoubleValueFormatterAsNumber: public FTableCellValueFormatter
{
public:
virtual FText FormatValue(const TOptional<FTableCellValue>& InValue) const override;
};
////////////////////////////////////////////////////////////////////////////////////////////////////
class FDoubleValueFormatterAsTimeAuto: public FTableCellValueFormatter
{
public:
virtual FText FormatValue(const TOptional<FTableCellValue>& InValue) const override;
virtual FText FormatValueForTooltip(const TOptional<FTableCellValue>& InValue) const override;
};
////////////////////////////////////////////////////////////////////////////////////////////////////
class FDoubleValueFormatterAsTimeMs: public FTableCellValueFormatter
{
public:
virtual FText FormatValue(const TOptional<FTableCellValue>& InValue) const override;
virtual FText FormatValueForTooltip(const TOptional<FTableCellValue>& InValue) const override;
};
////////////////////////////////////////////////////////////////////////////////////////////////////
class FCStringValueFormatterAsText: public FTableCellValueFormatter
{
public:
virtual FText FormatValue(const TOptional<FTableCellValue>& InValue) const override;
};
////////////////////////////////////////////////////////////////////////////////////////////////////
} // namespace Insights