// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved. #pragma once #include "IDetailCustomization.h" #include "ILocalizationServiceProvider.h" class ULocalizationTarget; class IPropertyHandle; class ULocalizationTargetSet; class IDetailCategoryBuilder; struct FLocalizationServiceProviderWrapper { FLocalizationServiceProviderWrapper() : Provider(nullptr) {} FLocalizationServiceProviderWrapper(ILocalizationServiceProvider* const InProvider) : Provider(InProvider) {} ILocalizationServiceProvider* Provider; }; class FLocalizationTargetSetDetailCustomization : public IDetailCustomization { public: FLocalizationTargetSetDetailCustomization(); void CustomizeDetails(IDetailLayoutBuilder& DetailBuilder) override; private: void BuildTargetsList(); void RebuildTargetsList(); FText GetCurrentServiceProviderDisplayName() const; TSharedRef ServiceProviderComboBox_OnGenerateWidget(TSharedPtr LSPWrapper) const; void ServiceProviderComboBox_OnSelectionChanged(TSharedPtr LSPWrapper, ESelectInfo::Type SelectInfo); bool CanGatherAllTargets() const; void GatherAllTargets(); bool CanImportAllTargets() const; void ImportAllTargets(); bool CanExportAllTargets() const; void ExportAllTargets(); bool CanCountWordsForAllTargets() const; void CountWordsForAllTargets(); bool CanCompileAllTargets() const; void CompileAllTargets(); void UpdateTargetFromReports(ULocalizationTarget* const LocalizationTarget); TSharedRef OnGenerateRow(TSharedPtr TargetObjectPropertyHandle, const TSharedRef& Table); FReply OnNewTargetButtonClicked(); private: IDetailLayoutBuilder* DetailLayoutBuilder; TWeakObjectPtr TargetSet; IDetailCategoryBuilder* ServiceProviderCategoryBuilder; TArray< TSharedPtr > Providers; TSharedPtr TargetObjectsPropertyHandle; FSimpleDelegate TargetsArrayPropertyHandle_OnNumElementsChanged; TArray< TSharedPtr > TargetsList; TSharedPtr< SListView< TSharedPtr > > TargetsListView; /* If set, the entry at the index specified needs to be initialized as soon as possible. */ int32 NewEntryIndexToBeInitialized; };