You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#jira UE-117887 #rb Vincent.Gauthier #preflight 6148f759315f54000134958f [CL 17576768 by daren cheng in ue5-main branch]
170 lines
4.1 KiB
C++
170 lines
4.1 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "Components/ProgressBar.h"
|
|
#include "Slate/SlateBrushAsset.h"
|
|
#include "Styling/UMGCoreStyle.h"
|
|
|
|
#define LOCTEXT_NAMESPACE "UMG"
|
|
|
|
/////////////////////////////////////////////////////
|
|
// UProgressBar
|
|
|
|
static FProgressBarStyle* DefaultProgressBarStyle = nullptr;
|
|
|
|
#if WITH_EDITOR
|
|
static FProgressBarStyle* EditorProgressBarStyle = nullptr;
|
|
#endif
|
|
|
|
UProgressBar::UProgressBar(const FObjectInitializer& ObjectInitializer)
|
|
: Super(ObjectInitializer)
|
|
{
|
|
if (DefaultProgressBarStyle == nullptr)
|
|
{
|
|
DefaultProgressBarStyle = new FProgressBarStyle(FUMGCoreStyle::Get().GetWidgetStyle<FProgressBarStyle>("ProgressBar"));
|
|
|
|
// Unlink UMG default colors.
|
|
DefaultProgressBarStyle->UnlinkColors();
|
|
}
|
|
|
|
WidgetStyle = *DefaultProgressBarStyle;
|
|
|
|
#if WITH_EDITOR
|
|
if (EditorProgressBarStyle == nullptr)
|
|
{
|
|
EditorProgressBarStyle = new FProgressBarStyle(FCoreStyle::Get().GetWidgetStyle<FProgressBarStyle>("ProgressBar"));
|
|
|
|
// Unlink UMG Editor colors from the editor settings colors.
|
|
EditorProgressBarStyle->UnlinkColors();
|
|
}
|
|
|
|
if (IsEditorWidget())
|
|
{
|
|
WidgetStyle = *EditorProgressBarStyle;
|
|
|
|
// The CDO isn't an editor widget and thus won't use the editor style, call post edit change to mark difference from CDO
|
|
PostEditChange();
|
|
}
|
|
#endif // WITH_EDITOR
|
|
|
|
WidgetStyle.FillImage.TintColor = FLinearColor::White;
|
|
|
|
BarFillType = EProgressBarFillType::LeftToRight;
|
|
BarFillStyle = EProgressBarFillStyle::Mask;
|
|
bIsMarquee = false;
|
|
Percent = 0;
|
|
FillColorAndOpacity = FLinearColor::White;
|
|
BorderPadding = FVector2D(0, 0);
|
|
}
|
|
|
|
void UProgressBar::ReleaseSlateResources(bool bReleaseChildren)
|
|
{
|
|
Super::ReleaseSlateResources(bReleaseChildren);
|
|
|
|
MyProgressBar.Reset();
|
|
}
|
|
|
|
TSharedRef<SWidget> UProgressBar::RebuildWidget()
|
|
{
|
|
MyProgressBar = SNew(SProgressBar);
|
|
|
|
return MyProgressBar.ToSharedRef();
|
|
}
|
|
|
|
void UProgressBar::SynchronizeProperties()
|
|
{
|
|
Super::SynchronizeProperties();
|
|
|
|
TAttribute< TOptional<float> > PercentBinding = OPTIONAL_BINDING_CONVERT(float, Percent, TOptional<float>, ConvertFloatToOptionalFloat);
|
|
TAttribute<FSlateColor> FillColorAndOpacityBinding = PROPERTY_BINDING(FSlateColor, FillColorAndOpacity);
|
|
|
|
MyProgressBar->SetStyle(&WidgetStyle);
|
|
|
|
MyProgressBar->SetBarFillType(BarFillType);
|
|
MyProgressBar->SetBarFillStyle(BarFillStyle);
|
|
MyProgressBar->SetPercent(bIsMarquee ? TOptional<float>() : PercentBinding);
|
|
MyProgressBar->SetFillColorAndOpacity(FillColorAndOpacityBinding);
|
|
MyProgressBar->SetBorderPadding(BorderPadding);
|
|
}
|
|
|
|
void UProgressBar::SetIsMarquee(bool InbIsMarquee)
|
|
{
|
|
bIsMarquee = InbIsMarquee;
|
|
if (MyProgressBar.IsValid())
|
|
{
|
|
MyProgressBar->SetPercent(bIsMarquee ? TOptional<float>() : Percent);
|
|
}
|
|
}
|
|
|
|
void UProgressBar::SetFillColorAndOpacity(FLinearColor Color)
|
|
{
|
|
FillColorAndOpacity = Color;
|
|
if (MyProgressBar.IsValid())
|
|
{
|
|
MyProgressBar->SetFillColorAndOpacity(FillColorAndOpacity);
|
|
}
|
|
}
|
|
|
|
void UProgressBar::SetPercent(float InPercent)
|
|
{
|
|
Percent = InPercent;
|
|
if (MyProgressBar.IsValid())
|
|
{
|
|
MyProgressBar->SetPercent(InPercent);
|
|
}
|
|
}
|
|
|
|
void UProgressBar::PostLoad()
|
|
{
|
|
Super::PostLoad();
|
|
|
|
if (GetLinkerUEVersion() < VER_UE4_DEPRECATE_UMG_STYLE_ASSETS)
|
|
{
|
|
if (Style_DEPRECATED != nullptr)
|
|
{
|
|
const FProgressBarStyle* StylePtr = Style_DEPRECATED->GetStyle<FProgressBarStyle>();
|
|
if (StylePtr != nullptr)
|
|
{
|
|
WidgetStyle = *StylePtr;
|
|
}
|
|
|
|
Style_DEPRECATED = nullptr;
|
|
}
|
|
|
|
if (BackgroundImage_DEPRECATED != nullptr)
|
|
{
|
|
WidgetStyle.BackgroundImage = BackgroundImage_DEPRECATED->Brush;
|
|
BackgroundImage_DEPRECATED = nullptr;
|
|
}
|
|
|
|
if (FillImage_DEPRECATED != nullptr)
|
|
{
|
|
WidgetStyle.FillImage = FillImage_DEPRECATED->Brush;
|
|
FillImage_DEPRECATED = nullptr;
|
|
}
|
|
|
|
if (MarqueeImage_DEPRECATED != nullptr)
|
|
{
|
|
WidgetStyle.MarqueeImage = MarqueeImage_DEPRECATED->Brush;
|
|
MarqueeImage_DEPRECATED = nullptr;
|
|
}
|
|
}
|
|
}
|
|
|
|
#if WITH_EDITOR
|
|
|
|
const FText UProgressBar::GetPaletteCategory()
|
|
{
|
|
return LOCTEXT("Common", "Common");
|
|
}
|
|
|
|
void UProgressBar::OnCreationFromPalette()
|
|
{
|
|
FillColorAndOpacity = FLinearColor(0, 0.5f, 1.0f);
|
|
}
|
|
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////
|
|
|
|
#undef LOCTEXT_NAMESPACE
|