October3d55/M/AutoSettings/Source/AutoSettingsInput/Private/UI/KeyLabel.cpp

73 lines
1.6 KiB
C++

// Copyright Sam Bonifacio. All Rights Reserved.
#include "UI/KeyLabel.h"
#include "GlobalKeyIconTagManager.h"
#include "InputMappingManager.h"
#include "Engine/Texture.h"
#include "Misc/AutoSettingsInputConfig.h"
UKeyLabel::UKeyLabel(const FObjectInitializer& ObjectInitializer) : UUserWidget(ObjectInitializer)
{
KeyInvalidText = NSLOCTEXT("AutoSettings", "KeyInvalid", "-");
}
FText UKeyLabel::GetDisplayName() const
{
if (!LabelOverride.IsEmpty())
{
return LabelOverride;
}
if (!HasValidKey())
{
return KeyInvalidText;
}
return UInputMappingManager::GetInputConfigStatic()->GetKeyFriendlyName(Key);
}
UTexture * UKeyLabel::GetIcon() const
{
return UGlobalKeyIconTagManager::Get()->GetIconForKey(Key, IconTags, AxisScale);
}
bool UKeyLabel::HasIcon() const
{
return GetIcon() != nullptr;
}
bool UKeyLabel::HasValidKey() const
{
return Key.IsValid();
}
FSlateBrush UKeyLabel::GetIconBrush_Implementation() const
{
FSlateBrush Brush = FSlateBrush();
Brush.SetResourceObject(GetIcon());
return Brush;
}
ESlateVisibility UKeyLabel::GetIconVisibility_Implementation() const
{
return HasIcon() ? ESlateVisibility::Visible : ESlateVisibility::Collapsed;
}
ESlateVisibility UKeyLabel::GetDisplayNameVisibility_Implementation() const
{
return HasIcon() ? ESlateVisibility::Collapsed : ESlateVisibility::Visible;
}
void UKeyLabel::NativeConstruct()
{
Super::NativeConstruct();
UGlobalKeyIconTagManager::Get()->OnGlobalKeyIconTagsModified.AddUniqueDynamic(this, &ThisClass::OnGlobalKeyIconTagsModified);
}
void UKeyLabel::OnGlobalKeyIconTagsModified()
{
// Key icon may have changed based on global tags, so refresh
UpdateKeyLabel();
}