// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "IPropertyTypeCustomization.h" #include "Internationalization/CulturePointer.h" namespace ESelectInfo { enum Type : int; } class FUserGeneratedContentLocalizationDescriptorDetails : public IPropertyTypeCustomization { public: /** Makes a new instance of this detail layout class for a specific detail view requesting it */ static TSharedRef MakeInstance() { return MakeShared(); } //~ Begin IPropertyTypeCustomization Interface virtual void CustomizeHeader(TSharedRef StructPropertyHandle, FDetailWidgetRow& HeaderRow, IPropertyTypeCustomizationUtils& StructCustomizationUtils) override; virtual void CustomizeChildren(TSharedRef StructPropertyHandle, IDetailChildrenBuilder& StructBuilder, IPropertyTypeCustomizationUtils& StructCustomizationUtils) override; //~ End IPropertyTypeCustomization Interface private: void CustomizeNativeCulture(TSharedRef PropertyHandle, IDetailChildrenBuilder& StructBuilder, IPropertyTypeCustomizationUtils& StructCustomizationUtils); FCulturePtr NativeCulture_GetCulture() const; bool NativeCulture_IsCulturePickable(FCulturePtr Culture) const; void NativeCulture_OnSelectionChanged(FCulturePtr SelectedCulture, ESelectInfo::Type SelectInfo); void CustomizeCulturesToGenerate(TSharedRef PropertyHandle, IDetailChildrenBuilder& StructBuilder, IPropertyTypeCustomizationUtils& StructCustomizationUtils); void CulturesToGenerate_OnPreBatchSelect(); void CulturesToGenerate_OnPostBatchSelect(); void CulturesToGenerate_OnCultureSelectionChanged(bool IsSelected, FCulturePtr Culture); bool CulturesToGenerate_IsCultureSelected(FCulturePtr Culture) const; TArray AvailableCultures; TSharedPtr NativeCultureHandle; TSharedPtr CulturesToGenerateHandle; bool CulturesToGenerate_IsInBatchSelectOperation = false; };