Files
UnrealEngine/Engine/Source/Developer/WidgetRegistration/Public/Persistence/BuilderPersistenceManager.h
2025-05-18 13:04:45 +08:00

141 lines
4.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Containers/Map.h"
#include "EditorConfigBase.h"
#include "BuilderKey.h"
#include "UObject/ObjectPtr.h"
#include "BuilderPersistenceManager.generated.h"
/**
* Manages an array of FNames to persist
*/
USTRUCT()
struct WIDGETREGISTRATION_API FPersistedNameArray
{
GENERATED_BODY()
public:
UPROPERTY()
TArray<FName> ArrayOfNamesToPersist;
};
/**
* Manages a Bool to persist
*/
USTRUCT()
struct WIDGETREGISTRATION_API FPersistedBool
{
GENERATED_BODY()
public:
UPROPERTY()
bool PersistedBool = false;
};
/**
* The Builder Persistence Manager handles persistence for Builders through use of FBuilderKeys
*/
UCLASS(EditorConfig="BuilderPersistenceManager")
class WIDGETREGISTRATION_API UBuilderPersistenceManager : public UEditorConfigBase
{
GENERATED_BODY()
public:
/**
* @return the default named favorites array for the Builder with FBuilderKey Key, if one exists, else an empty array is returned
*
* @param Key the FBuilderKey to retrieve the favorites for
*/
TArray<FName> GetFavoritesNames( const UE::DisplayBuilders::FBuilderKey& Key );
/**
* Sets the default named favorites array for the Builder with FBuilderKey Key
*
* @param Key the FBuilderKey to retrieve the favorites for
* @param Favorites the array of FNames for the favorites to persist
*/
void PersistFavoritesNames( const UE::DisplayBuilders::FBuilderKey& Key, TArray<FName>& Favorites );
/**
* Sets the default button label EVisisbility for the Builder with FBuilderKey Key
*
* @param Key the FBuilderKey to retrieve the button label Bool for
* @param Bool the bool for the button labels to persist
*/
void PersistShowButtonLabels( const UE::DisplayBuilders::FBuilderKey& Key, bool bValue );
/**
* @return the bool or the buttons labels for the Builder with FBuilderKey Key, if one exists, else an empty array is returned
*
* @param Key the FBuilderKey to retrieve the button label bool
* @param PersistedBoolIfNoneFound the Bool to set as the new persistence value, if one is not found
*/
bool GetShowButtonLabels( const UE::DisplayBuilders::FBuilderKey& Key, bool bDefaultValue );
/**
* Initialize the Persistence manager
*/
static void Initialize();
/**
* Shuts down the Persistence manager
*/
static void ShutDown();
/**
* Gets the singleton for the Builder Persistence Manager
*/
static UBuilderPersistenceManager* Get()
{
return Instance;
}
private:
UPROPERTY(meta=(EditorConfig))
TMap<FString, FPersistedNameArray> SavedNameToPersistedFNameArrayMap;
UPROPERTY(meta=(EditorConfig))
TMap<FString, FPersistedBool> SavedNameToPersistedBoolMap;
static TObjectPtr<UBuilderPersistenceManager> Instance;
private:
/**
* @return the an array for the Builder with FBuilderKey Key and the suffix that the array was persisted with, if one exists, else an empty array is returned
*
* @param Key the FBuilderKey to retrieve the FNames array for
* @param PersistenceKeySuffix the suffix to add to the FBuilderKey to persist the array of FNames with
*/
TArray<FName> GetPersistedArrayOfNames( const UE::DisplayBuilders::FBuilderKey& Key, FName PersistenceKeySuffix );
/**
* Persists the array of FNames the Builder with FBuilderKey Key and suffix PersistenceKeySuffix
*
* @param Key the FBuilderKey to retrieve the favorites for
* @param PersistenceKeySuffix the suffix added to the FBuilderKey to persist the array of FNames with
*/
void PersistArrayOfNames( const UE::DisplayBuilders::FBuilderKey& Key, FName PersistenceKeySuffix, TArray<FName>& ArrayOfNamesToPersist );
/**
* Returns the bool for the Builder with FBuilderKey Key and the suffix that the array was persisted with, if one exists, else an empty array is returned
*
* @param Key the FBuilderKey to retrieve the bool
* @param PersistenceKeySuffix the suffix to add to the FBuilderKey to get the bool with
* @param bDefaultValue the Bool to set as the new persistence value, if one is not found
*/
bool GetPersistedBool( const UE::DisplayBuilders::FBuilderKey& Key, FName PersistenceKeySuffix, bool bDefaultValue );
/**
* Persists the Bool the Builder with FBuilderKey Key and suffix PersistenceKeySuffix
*
* @param Key the FBuilderKey to retrieve the favorites for
* @param PersistenceKeySuffix the suffix added to the FBuilderKey to persist the Bool with
*/
void PersistBool( const UE::DisplayBuilders::FBuilderKey& Key, FName PersistenceKeySuffix, bool bInPersistedBool );
};