// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Blueprint/UserWidget.h" #include "Blueprint/UserWidgetPool.h" #include "Templates/SharedPointer.h" #include "Templates/SubclassOf.h" #include "UObject/UObjectGlobals.h" #include "GameSettingDetailView.generated.h" class UCommonRichTextBlock; class UCommonTextBlock; class UGameSetting; class UGameSettingDetailExtension; class UGameSettingVisualData; class UObject; class UVerticalBox; struct FStreamableHandle; /** * */ UCLASS(Abstract) class GAMESETTINGS_API UGameSettingDetailView : public UUserWidget { GENERATED_BODY() public: UGameSettingDetailView(const FObjectInitializer& ObjectInitializer); void FillSettingDetails(UGameSetting* InSetting); //UVisual interface virtual void ReleaseSlateResources(bool bReleaseChildren) override; //~ End UVisual Interface protected: virtual void NativeConstruct() override; virtual void NativeOnInitialized() override; void CreateDetailsExtension(UGameSetting* InSetting, TSubclassOf ExtensionClass); protected: UPROPERTY(EditAnywhere) TObjectPtr VisualData; UPROPERTY(Transient) FUserWidgetPool ExtensionWidgetPool; UPROPERTY(Transient) TObjectPtr CurrentSetting; TSharedPtr StreamingHandle; private: // Bound Widgets UPROPERTY(BlueprintReadOnly, meta = (BindWidgetOptional, BlueprintProtected = true, AllowPrivateAccess = true)) TObjectPtr Text_SettingName; UPROPERTY(BlueprintReadOnly, meta = (BindWidgetOptional, BlueprintProtected = true, AllowPrivateAccess = true)) TObjectPtr RichText_Description; UPROPERTY(BlueprintReadOnly, meta = (BindWidgetOptional, BlueprintProtected = true, AllowPrivateAccess = true)) TObjectPtr RichText_DynamicDetails; UPROPERTY(BlueprintReadOnly, meta = (BindWidgetOptional, BlueprintProtected = true, AllowPrivateAccess = true)) TObjectPtr RichText_WarningDetails; UPROPERTY(BlueprintReadOnly, meta = (BindWidgetOptional, BlueprintProtected = true, AllowPrivateAccess = true)) TObjectPtr RichText_DisabledDetails; UPROPERTY(BlueprintReadOnly, meta = (BindWidgetOptional, BlueprintProtected = true, AllowPrivateAccess = true)) TObjectPtr Box_DetailsExtension; };