You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#rb none #preflight skip #ROBOMERGE-AUTHOR: lonnie.li #ROBOMERGE-SOURCE: CL 20469531 via CL 20469537 via CL 20469544 #ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v954-20466795) [CL 20471838 by lonnie li in ue5-main branch]
80 lines
2.4 KiB
C++
80 lines
2.4 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "TimecodeDetailsCustomization.h"
|
|
#include "Misc/Timecode.h"
|
|
#include "IDetailPropertyRow.h"
|
|
#include "IDetailChildrenBuilder.h"
|
|
#include "DetailLayoutBuilder.h"
|
|
#include "Widgets/Text/STextBlock.h"
|
|
#include "Widgets/Input/SEditableTextBox.h"
|
|
#include "PropertyCustomizationHelpers.h"
|
|
|
|
#define LOCTEXT_NAMESPACE "Timecode"
|
|
|
|
void FTimecodeDetailsCustomization::CustomizeChildren(TSharedRef<IPropertyHandle> PropertyHandle, IDetailChildrenBuilder& ChildBuilder, IPropertyTypeCustomizationUtils& CustomizationUtils)
|
|
{
|
|
TimecodeProperty = PropertyHandle;
|
|
|
|
ChildBuilder.AddCustomRow(LOCTEXT("TimecodeLabel", "Timecode"))
|
|
.NameContent()
|
|
[
|
|
SNew(STextBlock)
|
|
.Text(PropertyHandle->GetPropertyDisplayName())
|
|
.ToolTipText(LOCTEXT("TimecodeLabelTooltip", "Timecode"))
|
|
.Font(CustomizationUtils.GetRegularFont())
|
|
]
|
|
.ValueContent()
|
|
[
|
|
SNew(SEditableTextBox)
|
|
.Text(this, &FTimecodeDetailsCustomization::OnGetTimecodeText)
|
|
.OnTextCommitted(this, &FTimecodeDetailsCustomization::OnTimecodeTextCommitted)
|
|
.SelectAllTextWhenFocused(true)
|
|
.RevertTextOnEscape(true)
|
|
.Font(IDetailLayoutBuilder::GetDetailFont())
|
|
.IsReadOnly(!PropertyHandle->IsEditable())
|
|
];
|
|
}
|
|
|
|
FText FTimecodeDetailsCustomization::OnGetTimecodeText() const
|
|
{
|
|
TArray<void*> RawData;
|
|
TimecodeProperty->AccessRawData(RawData);
|
|
|
|
if (RawData.Num())
|
|
{
|
|
FString CurrentValue = ((FTimecode*)RawData[0])->ToString();
|
|
return FText::FromString(CurrentValue);
|
|
}
|
|
|
|
return FText::GetEmpty();
|
|
}
|
|
|
|
void FTimecodeDetailsCustomization::OnTimecodeTextCommitted(const FText& InText, ETextCommit::Type CommitInfo)
|
|
{
|
|
TArray<void*> RawData;
|
|
TimecodeProperty->AccessRawData(RawData);
|
|
|
|
if (RawData.Num())
|
|
{
|
|
TArray<FString> Splits;
|
|
InText.ToString().ParseIntoArray(Splits, TEXT(":"));
|
|
|
|
if (Splits.Num() == 4)
|
|
{
|
|
TimecodeProperty->NotifyPreChange();
|
|
((FTimecode*)RawData[0])->Hours = FCString::Atoi(*Splits[0]);
|
|
((FTimecode*)RawData[0])->Minutes = FCString::Atoi(*Splits[1]);
|
|
((FTimecode*)RawData[0])->Seconds = FCString::Atoi(*Splits[2]);
|
|
((FTimecode*)RawData[0])->Frames = FCString::Atoi(*Splits[3]);
|
|
TimecodeProperty->NotifyPostChange(EPropertyChangeType::ValueSet);
|
|
TimecodeProperty->NotifyFinishedChangingProperties();
|
|
}
|
|
else
|
|
{
|
|
UE_LOG(LogTemp, Error, TEXT("Unexpected timecode format. Expected 4 values, got %d"), Splits.Num());
|
|
}
|
|
}
|
|
}
|
|
|
|
#undef LOCTEXT_NAMESPACE
|