Files
UnrealEngineUWP/Engine/Source/Developer/Settings/Private/SettingsCategory.cpp
jason stasik 8322a4f3bc Add visibility controls to settings sections
#rb brooke.hubert
#preflight skip

#ROBOMERGE-AUTHOR: jason.stasik
#ROBOMERGE-SOURCE: CL 19053548 via CL 19059537 via CL 19071223 via CL 19071339 via CL 19072058
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v920-19070459)

[CL 19072234 by jason stasik in ue5-main branch]
2022-02-22 09:23:45 -05:00

84 lines
2.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "SettingsCategory.h"
#include "SettingsSection.h"
/* FSettingsCategory structors
*****************************************************************************/
FSettingsCategory::FSettingsCategory( const FName& InName )
: Name(InName)
{ }
/* FSettingsCategory interface
*****************************************************************************/
ISettingsSectionRef FSettingsCategory::AddSection( const FName& SectionName, const FText& InDisplayName, const FText& InDescription, const TWeakObjectPtr<UObject>& SettingsObject )
{
TSharedPtr<FSettingsSection>& Section = Sections.FindOrAdd(SectionName);
if (!Section.IsValid() || (Section->GetSettingsObject() != SettingsObject) || Section->GetCustomWidget().IsValid())
{
Section = MakeShareable(new FSettingsSection(AsShared(), SectionName, InDisplayName, InDescription, SettingsObject));
}
return Section.ToSharedRef();
}
ISettingsSectionRef FSettingsCategory::AddSection( const FName& SectionName, const FText& InDisplayName, const FText& InDescription, const TSharedRef<SWidget>& CustomWidget )
{
TSharedPtr<FSettingsSection>& Section = Sections.FindOrAdd(SectionName);
if (!Section.IsValid() || (Section->GetSettingsObject() != nullptr) || (Section->GetCustomWidget().Pin() != CustomWidget))
{
Section = MakeShareable(new FSettingsSection(AsShared(), SectionName, InDisplayName, InDescription, CustomWidget));
}
return Section.ToSharedRef();
}
void FSettingsCategory::Describe( const FText& InDisplayName, const FText& InDescription )
{
Description = InDescription;
DisplayName = InDisplayName;
}
void FSettingsCategory::RemoveSection( const FName& SectionName )
{
Sections.Remove(SectionName);
}
/* ISettingsCategory interface
*****************************************************************************/
ISettingsSectionPtr FSettingsCategory::GetSection( const FName& SectionName, bool bIgnoreVisibility ) const
{
ISettingsSectionPtr Section = Sections.FindRef(SectionName);
if (bIgnoreVisibility || (Section.IsValid() && SectionVisibilityPermissionList.PassesFilter(Section->GetName())))
{
return Section;
}
return nullptr;
}
int32 FSettingsCategory::GetSections( TArray<ISettingsSectionPtr>& OutSections, bool bIgnoreVisibility ) const
{
OutSections.Empty(Sections.Num());
for (TMap<FName, TSharedPtr<FSettingsSection> >::TConstIterator It(Sections); It; ++It)
{
if (bIgnoreVisibility || SectionVisibilityPermissionList.PassesFilter(It.Value()->GetName()))
{
OutSections.Add(It.Value());
}
}
return OutSections.Num();
}