UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
TypedElementDataStorageUiInterface.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Array.h"
17#include "UObject/Interface.h"
19
20#include "TypedElementDataStorageUiInterface.generated.h"
21
23{
24 class ITedsWidget;
25 class IUiProvider;
26}
27
28class SWidget;
30
35USTRUCT()
37{
38public:
39
41
43 explicit FTedsWidgetConstructorBase(EForceInit) {} //< For compatibility and shouldn't be directly used.
44 virtual ~FTedsWidgetConstructorBase() = default;
45
49
51 TYPEDELEMENTFRAMEWORK_API virtual const UScriptStruct* GetTypeInfo() const;
53 TYPEDELEMENTFRAMEWORK_API virtual const TArray<TWeakObjectPtr<const UScriptStruct>>& GetMatchedColumns() const;
54
57protected:
58
59 bool Initialize_Internal(const UE::Editor::DataStorage::FMetaDataView& InArguments,
61
62protected:
63 // The columns this widget constructor matched against
65
66 // If the constructor matched against any dynamic columns, map from the base template for the column -> FName identifier
68
69 // The row containing the widget factory this constructor was factories from
70 UE::Editor::DataStorage::RowHandle WidgetFactoryRow = UE::Editor::DataStorage::InvalidRowHandle;
71
72 // The query conditions required by this constructor
73 const UE::Editor::DataStorage::Queries::FConditions* QueryConditions = nullptr;
74
75 // The constructor's typeinfo
76 const UScriptStruct* TypeInfo = nullptr;
77};
78
79template<>
81{
82 enum
83 {
86 };
87};
88
94USTRUCT()
96{
98
99public:
101 explicit FTypedElementWidgetConstructor(EForceInit) : FTedsWidgetConstructorBase(ForceInit) {} //< For compatibility and shouldn't be directly used.
102
103 virtual ~FTypedElementWidgetConstructor() override = default;
104
106 TYPEDELEMENTFRAMEWORK_API virtual TConstArrayView<const UScriptStruct*> GetAdditionalColumnsList() const;
107
117 TYPEDELEMENTFRAMEWORK_API virtual FText CreateWidgetDisplayNameText(
118 UE::Editor::DataStorage::ICoreProvider* DataStorage, UE::Editor::DataStorage::RowHandle Row = UE::Editor::DataStorage::InvalidRowHandle) const;
119
128 TYPEDELEMENTFRAMEWORK_API virtual TSharedPtr<SWidget> ConstructFinalWidget(
133
146
157
162
163 /*
164 * Deprecated public functions
165 */
166
173 UE_DEPRECATED(5.6, "CreateWidgetDisplayName is deprecated, please use CreateWidgetDisplayNameText instead, which will return FText rather than an FString.")
174 TYPEDELEMENTFRAMEWORK_API virtual FString CreateWidgetDisplayName(
175 UE::Editor::DataStorage::ICoreProvider* DataStorage, UE::Editor::DataStorage::RowHandle Row) const final;
176
177 // To get around name hiding since the deprecated functions overload methods from the base class
179 using FTedsWidgetConstructorBase::GetQueryConditions;
180
182 UE_DEPRECATED(5.6, "Use Initialize that takes in the factory row handle instead")
183 TYPEDELEMENTFRAMEWORK_API virtual bool Initialize(const UE::Editor::DataStorage::FMetaDataView& InArguments,
184 TArray<TWeakObjectPtr<const UScriptStruct>> InMatchedColumnTypes, const UE::Editor::DataStorage::Queries::FConditions& InQueryConditions);
185
187 UE_DEPRECATED(5.6, "Use GetQueryConditions that takes in ICoreProvider* instead")
188 TYPEDELEMENTFRAMEWORK_API virtual const UE::Editor::DataStorage::Queries::FConditions* GetQueryConditions() const final;
189
192 TYPEDELEMENTFRAMEWORK_API virtual TSharedPtr<SWidget> CreateWidget(const UE::Editor::DataStorage::FMetaDataView& Arguments);
195 UE::Editor::DataStorage::ICoreProvider* DataStorage,
196 UE::Editor::DataStorage::IUiProvider* DataStorageUi,
197 UE::Editor::DataStorage::RowHandle TargetRow,
198 UE::Editor::DataStorage::RowHandle WidgetRow,
199 const UE::Editor::DataStorage::FMetaDataView& Arguments);
201 TYPEDELEMENTFRAMEWORK_API virtual bool SetColumns(UE::Editor::DataStorage::ICoreProvider* DataStorage, UE::Editor::DataStorage::RowHandle Row);
202
204 TYPEDELEMENTFRAMEWORK_API virtual FText DescribeColumnType(const UScriptStruct* ColumnType) const;
205
210 TYPEDELEMENTFRAMEWORK_API virtual bool FinalizeWidget(
211 UE::Editor::DataStorage::ICoreProvider* DataStorage,
212 UE::Editor::DataStorage::IUiProvider* DataStorageUi,
213 UE::Editor::DataStorage::RowHandle Row,
214 const TSharedPtr<SWidget>& Widget);
215
217 TYPEDELEMENTFRAMEWORK_API void AddDefaultWidgetColumns(UE::Editor::DataStorage::RowHandle Row, UE::Editor::DataStorage::ICoreProvider* DataStorage) const;
218
223 TYPEDELEMENTFRAMEWORK_API UE::Editor::DataStorage::RowHandle GetTargetRow(
224 UE::Editor::DataStorage::ICoreProvider* DataStorage, UE::Editor::DataStorage::RowHandle WidgetRow) const;
225};
226
231USTRUCT()
233{
235
236
238
239 FSimpleWidgetConstructor() : Super(StaticStruct()) {} //< For compatibility and shouldn't be directly used.
240
241 virtual ~FSimpleWidgetConstructor() override = default;
242
243 /*
244 * Required function to create the actual widget instance.
245 *
246 * @param DataStorage A pointer to the TEDS data storage interface
247 * @param DataStorageUi A pointer to the TEDS data storage UI interface
248 * @param TargetRow The row for the actual data this widget is being created for (can be InvalidRowHandle if there is no target row attached to this widget)
249 * @param WidgetRow The row that contains information about the widget itself
250 * @param Arguments Any metadata arguments that were specified
251 * @return The actual widget instance
252 */
258 const UE::Editor::DataStorage::FMetaDataView& Arguments) override;
259
260 /*
261 * Override this function to add any columns to the WidgetRow before CreateWidget is called
262 *
263 * @param DataStorage A pointer to the TEDS data storage interface
264 * @param WidgetRow The row that contains information about the widget itself
265 * @return Whether any columns were added
266 */
268
269protected:
270
273
277 TYPEDELEMENTFRAMEWORK_API virtual bool FinalizeWidget(
281 const TSharedPtr<SWidget>& Widget) override final;
282
290 const UE::Editor::DataStorage::FMetaDataView& Arguments) override final;
291};
292
293template<>
295{
296 enum
297 {
300 };
301};
302
304{
306 {
307 public:
308 inline static const FName PurposeMappingDomain = "WidgetPurpose";
309
310 enum class EPurposeType : uint8
311 {
313 Generic,
324 };
325
327 {
337 };
338
340
341 /*
342 * Struct describing the default init params for a widget purpose. These can also be added to the purpose row post init using the columns
343 * in WidgetPurposeColumns.h
344 */
383
389
407
415
417 virtual RowHandle FindPurpose(const FPurposeID& PurposeID) const = 0;
418
420 virtual void ListWidgetPurposes(const WidgetPurposeCallback& Callback) const = 0;
421
422
425
428
445
453 template<typename ConstructorType>
455
465 Queries::FConditions Columns) = 0;
466
475 template<typename ConstructorType>
477
484 template<TColumnType ColumnType>
486
494 const UScriptStruct* Column) = 0;
495
504 const FMetaDataView& Arguments, const WidgetConstructorCallback& Callback) = 0;
505
516 const FMetaDataView& Arguments, const WidgetConstructorCallback& Callback) = 0;
517
525 virtual void ConstructWidgets(RowHandle PurposeRow, const FMetaDataView& Arguments,
527
534 const FMetaDataView& Arguments) = 0;
535
542 const FMetaDataView& Arguments) = 0;
543
546
548 virtual TableHandle GetWidgetTable() const = 0;
549
563
565 virtual void RegisterSorterGeneratorForProperty(const FFieldClass* PropertyType,
567
569 template<typename PropertyClassType> requires(std::is_base_of_v<FProperty, PropertyClassType>)
571
573 virtual void UnregisterSorterGeneratorForProperty(const FFieldClass* PropertyType) = 0;
574
576 template<typename PropertyClassType> requires(std::is_base_of_v<FProperty, PropertyClassType>)
578
584 virtual bool SupportsExtension(FName Extension) const = 0;
586 virtual void ListExtensions(TFunctionRef<void(FName)> Callback) const = 0;
587
593 UE_DEPRECATED(5.7, "Registering Widget Factories by instance is not supported anymore, register them by type instead")
595
596 UE_DEPRECATED(5.7, "Registering Widget Factories by instance is not supported anymore, register them by type instead")
598 Queries::FConditions Columns) = 0;
599
600 UE_DEPRECATED(5.6, "Use the version that takes in an FPurposeInfo struct instead")
602
603 UE_DEPRECATED(5.6, "Use the version that takes in PurposeRowHandle instead. FindPurpose() to lookup row handle by PurposeID")
605
607 UE_DEPRECATED(5.6, "Use the version that takes in PurposeRowHandle instead. FindPurpose() to lookup row handle by PurposeID")
609
610 UE_DEPRECATED(5.6, "Use the version that takes in PurposeRowHandle instead. FindPurpose() to lookup row handle by PurposeID")
611 virtual bool RegisterWidgetFactory(FName Purpose, const UScriptStruct* Constructor, Queries::FConditions Columns) = 0;
612
614 UE_DEPRECATED(5.6, "Use the version that takes in PurposeRowHandle instead. FindPurpose() to lookup row handle by PurposeID")
615 bool RegisterWidgetFactory(FName Purpose, Queries::FConditions Columns);
616
617 UE_DEPRECATED(5.6, "Use the version that takes in PurposeRowHandle instead. FindPurpose() to lookup row handle by PurposeID")
619
620 UE_DEPRECATED(5.6, "Use the version that takes in PurposeRowHandle instead. FindPurpose() to lookup row handle by PurposeID")
622 Queries::FConditions Columns) = 0;
623
624 UE_DEPRECATED(5.6, "Use the version that takes in PurposeRowHandle instead. FindPurpose() to lookup row handle by PurposeID")
626
627 UE_DEPRECATED(5.6, "Use the version that takes in PurposeRowHandle instead. FindPurpose() to lookup row handle by PurposeID")
629 const FMetaDataView& Arguments, const WidgetConstructorCallback& Callback) = 0;
630
631 UE_DEPRECATED(5.6, "Use the version that takes in PurposeRowHandle instead. FindPurpose() to lookup row handle by PurposeID")
633
634 };
635
638
639 //
640 // Implementations
641 //
642
645 {
647 return this->RegisterWidgetFactory(Purpose, ConstructorType::StaticStruct());
649 }
650
651 template<typename ConstructorType>
653 {
654 return this->RegisterWidgetFactory(PurposeRow, ConstructorType::StaticStruct());
655 }
656
657 template<typename ConstructorType>
659 {
661 return this->RegisterWidgetFactory(Purpose, ConstructorType::StaticStruct(), Columns);
663 }
664
665 template<typename ConstructorType>
667 {
668 return this->RegisterWidgetFactory(PurposeRow, ConstructorType::StaticStruct(), Columns);
669 }
670
671 template<TColumnType ColumnType>
673 {
674 return this->RegisterDecoratorWidgetFactory(PurposeRow, Constructor, ColumnType::StaticStruct());
675 }
676
677 template<typename PropertyClassType> requires(std::is_base_of_v<FProperty, PropertyClassType>)
682
683 template<typename PropertyClassType> requires(std::is_base_of_v<FProperty, PropertyClassType>)
685 {
686 UnregisterSorterGeneratorForProperty(PropertyClassType::StaticClass());
687 }
688}
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define register
Definition AndroidPlatformCompilerSetup.h:11
EForceInit
Definition CoreMiscDefines.h:154
@ ForceInit
Definition CoreMiscDefines.h:155
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define PRAGMA_ENABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:12
#define PRAGMA_DISABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:8
const bool
Definition NetworkReplayStreaming.h:178
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define USTRUCT(...)
Definition ObjectMacros.h:746
UScriptStruct * StaticStruct()
Definition ReflectedTypeAccessors.h:18
void Construct(const FArguments &InArgs)
TConstArrayView< const UScriptStruct * > TConstArrayView< const UScriptStruct * >
Definition TypedElementQueryCapabilities.inl:16
WidgetT * CreateWidget(OwnerType OwningObject, TSubclassOf< UUserWidget > UserWidgetClass=WidgetT::StaticClass(), FName WidgetName=NAME_None)
Definition UserWidget.h:1811
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Field.h:66
Definition NameTypes.h:617
Definition UnrealType.h:3087
Definition UnrealType.h:174
Definition Text.h:385
static CORE_API const FText & GetEmpty()
Definition Text.cpp:252
Definition IModularFeature.h:12
Definition SWidget.h:165
Definition ArrayView.h:139
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition UniquePtr.h:107
Definition MapKey.h:19
Definition TypedElementMetaData.h:112
Definition TypedElementDataStorageInterface.h:65
Definition TypedElementDataStorageUiInterface.h:306
bool RegisterDecoratorWidgetFactory(RowHandle PurposeRow, const UScriptStruct *Constructor)
Definition TypedElementDataStorageUiInterface.h:672
virtual void ConstructWidgets(RowHandle PurposeRow, const FMetaDataView &Arguments, const WidgetCreatedCallback &ConstructionCallback)=0
virtual bool RegisterWidgetFactory(RowHandle PurposeRow, const UScriptStruct *Constructor, Queries::FConditions Columns)=0
virtual FPurposeID GetDefaultWidgetPurposeID() const =0
virtual void ListExtensions(TFunctionRef< void(FName)> Callback) const =0
virtual RowHandle RegisterWidgetPurpose(const FPurposeID &PurposeID, const FPurposeInfo &InPurposeInfo)=0
virtual void CreateWidgetConstructors(RowHandle PurposeRow, EMatchApproach MatchApproach, TArray< TWeakObjectPtr< const UScriptStruct > > &Columns, const FMetaDataView &Arguments, const WidgetConstructorCallback &Callback)=0
virtual void CreateWidgetConstructors(RowHandle PurposeRow, const FMetaDataView &Arguments, const WidgetConstructorCallback &Callback)=0
virtual RowHandle FindPurpose(const FPurposeID &PurposeID) const =0
virtual bool RegisterDecoratorWidgetFactory(RowHandle PurposeRow, const UScriptStruct *Constructor, const UScriptStruct *Column)=0
virtual TSharedPtr< SWidget > ConstructWidget(RowHandle Row, FTypedElementWidgetConstructor &Constructor, const FMetaDataView &Arguments)=0
virtual void RegisterSorterGeneratorForProperty(const FFieldClass *PropertyType, PropertySorterConstructorCallback PropertySorterConstructor)=0
virtual TSharedPtr< ITedsWidget > CreateContainerTedsWidget(RowHandle UiRowHandle) const =0
void UnregisterSorterGeneratorForProperty()
Definition TypedElementDataStorageUiInterface.h:684
static const FName PurposeMappingDomain
Definition TypedElementDataStorageUiInterface.h:308
virtual TableHandle GetWidgetTable() const =0
virtual void UnregisterSorterGeneratorForProperty(const FFieldClass *PropertyType)=0
virtual bool SupportsExtension(FName Extension) const =0
virtual TSharedPtr< SWidget > ConstructInternalWidget(RowHandle Row, FTypedElementWidgetConstructor &Constructor, const FMetaDataView &Arguments)=0
virtual void GeneratePropertySorters(TArray< TSharedPtr< const FColumnSorterInterface > > &Results, TArrayView< TWeakObjectPtr< const UScriptStruct > > Columns) const =0
EMatchApproach
Definition TypedElementDataStorageUiInterface.h:327
FMapKey FPurposeID
Definition TypedElementDataStorageUiInterface.h:339
virtual FPurposeID GetGeneralWidgetPurposeID() const =0
virtual bool RegisterWidgetFactory(RowHandle PurposeRow, const UScriptStruct *Constructor)=0
virtual void ListWidgetPurposes(const WidgetPurposeCallback &Callback) const =0
EPurposeType
Definition TypedElementDataStorageUiInterface.h:311
virtual RowHandle RegisterWidgetPurpose(const FPurposeInfo &InPurposeInfo)=0
Definition Class.h:1720
Definition CommonTypes.cpp:10
uint64 TableHandle
Definition Handles.h:12
uint64 RowHandle
Definition Handles.h:15
Definition AdvancedWidgetsModule.cpp:13
Definition TypedElementDataStorageUiInterface.h:233
virtual ~FSimpleWidgetConstructor() override=default
FSimpleWidgetConstructor()
Definition TypedElementDataStorageUiInterface.h:239
Definition TypedElementDataStorageUiInterface.h:37
TArray< TWeakObjectPtr< const UScriptStruct > > MatchedColumnTypes
Definition TypedElementDataStorageUiInterface.h:64
FTedsWidgetConstructorBase(EForceInit)
Definition TypedElementDataStorageUiInterface.h:43
TMap< TWeakObjectPtr< const UScriptStruct >, FName > MatchedDynamicTemplates
Definition TypedElementDataStorageUiInterface.h:67
virtual ~FTedsWidgetConstructorBase()=default
Definition TypedElementDataStorageUiInterface.h:96
virtual ~FTypedElementWidgetConstructor() override=default
FTypedElementWidgetConstructor(EForceInit)
Definition TypedElementDataStorageUiInterface.h:101
Definition WidgetPurposeColumns.h:25
Definition StructOpsTypeTraits.h:11
@ WithNoInitConstructor
Definition StructOpsTypeTraits.h:15
@ WithPureVirtual
Definition StructOpsTypeTraits.h:33
Definition StructOpsTypeTraits.h:46
Definition WeakObjectPtrTemplates.h:25
Definition TypedElementDataStorageUiInterface.h:346
FName Namespace
Definition TypedElementDataStorageUiInterface.h:348
FPurposeID ParentPurposeID
Definition TypedElementDataStorageUiInterface.h:363
EPurposeType Type
Definition TypedElementDataStorageUiInterface.h:357
FName Name
Definition TypedElementDataStorageUiInterface.h:351
TYPEDELEMENTFRAMEWORK_API FPurposeID GeneratePurposeID() const
Definition TypedElementDataStorageUiInterface.cpp:419
FName Frame
Definition TypedElementDataStorageUiInterface.h:354
TYPEDELEMENTFRAMEWORK_API FName ToString() const
Definition TypedElementDataStorageUiInterface.cpp:424
FText Description
Definition TypedElementDataStorageUiInterface.h:360