Files
UnrealEngine/Engine/Source/Developer/TraceInsights/Private/Insights/Table/ViewModels/TableCommands.cpp
2025-05-18 13:04:45 +08:00

59 lines
1.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "Insights/Table/ViewModels/TableCommands.h"
#include "HAL/PlatformApplicationMisc.h"
#include "InsightsCore/Table/ViewModels/Table.h"
#include "InsightsCore/Table/ViewModels/TableCellValueSorter.h"
namespace UE::Insights::Private
{
void CopyToClipboardImpl(TSharedRef<FTable> Table, TArray<Insights::FBaseTreeNodePtr> SelectedNodes, TSharedPtr<Insights::ITableCellValueSorter> Sorter, ESortMode ColumnSortMode)
{
if (SelectedNodes.Num() == 0)
{
return;
}
FString ClipboardText;
if (Sorter.IsValid())
{
Sorter->Sort(SelectedNodes, ColumnSortMode);
}
Table->GetVisibleColumnsData(SelectedNodes, NAME_None, TEXT('\t'), true, ClipboardText);
if (ClipboardText.Len() > 0)
{
FPlatformApplicationMisc::ClipboardCopy(*ClipboardText);
}
}
void CopyNameToClipboardImpl(TSharedRef<FTable> Table, TArray<Insights::FBaseTreeNodePtr> SelectedNodes, TSharedPtr<ITableCellValueSorter> Sorter, ESortMode ColumnSortMode)
{
if (SelectedNodes.Num() == 0)
{
return;
}
if (Sorter.IsValid())
{
Sorter->Sort(SelectedNodes, ColumnSortMode);
}
FString ClipboardText = FString::JoinBy(
SelectedNodes,
TEXT("\n"),
[](const Insights::FBaseTreeNodePtr& TimerNode)
{
return TimerNode->GetName().ToString();
});
if (ClipboardText.Len() > 0)
{
FPlatformApplicationMisc::ClipboardCopy(*ClipboardText);
}
}
} // namespace UE::Insights::Private