UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
TextFilter.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "CoreTypes.h"
8#include "Containers/Array.h"
11#include "Delegates/Delegate.h"
14#include "Misc/IFilter.h"
15
19template< typename ItemType >
20class TTextFilter : public IFilter< ItemType >, public TSharedFromThis< TTextFilter< ItemType > >
21{
22public:
23
26
28 DECLARE_DELEGATE_RetVal_FiveParams( bool, FItemTestComplexExpression, ItemType, const FName& /*InKey*/, const FTextFilterString& /*InValue*/, ETextFilterComparisonOperation /*InComparisonOperation*/, ETextFilterTextComparisonMode /*InTextComparisonMode*/ );
29
36 : TextFilterExpressionContext( InTransformDelegate, FItemTestComplexExpression() )
37 , TextFilterExpressionEvaluator( ETextFilterExpressionEvaluatorMode::BasicString )
38 {
39 check( InTransformDelegate.IsBound() );
40 }
41
49
51 virtual FChangedEvent& OnChanged() override { return ChangedEvent; }
52
59 virtual bool PassesFilter( ItemType InItem ) const override
60 {
61 if (TextFilterExpressionEvaluator.GetFilterType() == ETextFilterExpressionType::Empty)
62 {
63 return true;
64 }
65
66 TextFilterExpressionContext.SetItem(&InItem);
67 const bool bResult = TextFilterExpressionEvaluator.TestTextFilter(TextFilterExpressionContext);
68 TextFilterExpressionContext.ClearItem();
69 return bResult;
70 }
71
74 {
75 return TextFilterExpressionEvaluator.GetFilterText();
76 }
77
80 {
81 if (TextFilterExpressionEvaluator.SetFilterText(InFilterText))
82 {
83 ChangedEvent.Broadcast();
84 }
85 }
86
89 {
90 return TextFilterExpressionEvaluator.GetFilterErrorText();
91 }
92
93private:
94
95 class FTextFilterExpressionContext : public ITextFilterExpressionContext
96 {
97 public:
98 typedef typename TRemoveReference<ItemType>::Type* ItemTypePtr;
99
101 : TransformArrayDelegate(InTransformArrayDelegate)
102 , TestComplexExpressionDelegate(InTestComplexExpressionDelegate)
103 , ItemPtr(nullptr)
104 {
105 }
106
107 void SetItem(ItemTypePtr InItem)
108 {
109 ItemPtr = InItem;
110 TransformArrayDelegate.Execute(*ItemPtr, ItemBasicStrings);
111 }
112
113 void ClearItem()
114 {
115 ItemPtr = nullptr;
116 ItemBasicStrings.Reset();
117 }
118
119 virtual bool TestBasicStringExpression(const FTextFilterString& InValue, const ETextFilterTextComparisonMode InTextComparisonMode) const override
120 {
121 for (const FString& BasicString : ItemBasicStrings)
122 {
123 if (TextFilterUtils::TestBasicStringExpression(BasicString, InValue, InTextComparisonMode))
124 {
125 return true;
126 }
127 }
128 return false;
129 }
130
131 virtual bool TestComplexExpression(const FName& InKey, const FTextFilterString& InValue, const ETextFilterComparisonOperation InComparisonOperation, const ETextFilterTextComparisonMode InTextComparisonMode) const override
132 {
133 if (ItemPtr && TestComplexExpressionDelegate.IsBound())
134 {
135 return TestComplexExpressionDelegate.Execute(*ItemPtr, InKey, InValue, InComparisonOperation, InTextComparisonMode);
136 }
137 return false;
138 }
139
140 private:
142 FItemToStringArray TransformArrayDelegate;
143
145 FItemTestComplexExpression TestComplexExpressionDelegate;
146
148 ItemTypePtr ItemPtr;
149
151 TArray<FString> ItemBasicStrings;
152 };
153
155 mutable FTextFilterExpressionContext TextFilterExpressionContext;
156
158 FTextFilterExpressionEvaluator TextFilterExpressionEvaluator;
159
161 FChangedEvent ChangedEvent;
162};
#define check(expr)
Definition AssertionMacros.h:314
#define OUT
Definition Platform.h:897
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
ETextFilterExpressionEvaluatorMode
Definition TextFilterExpressionEvaluator.h:30
ETextFilterTextComparisonMode
Definition TextFilterUtils.h:24
ETextFilterComparisonOperation
Definition TextFilterUtils.h:13
Definition NameTypes.h:617
Definition TextFilterExpressionEvaluator.h:198
CORE_API FText GetFilterErrorText() const
Definition TextFilterExpressionEvaluator.cpp:476
CORE_API bool SetFilterText(const FText &InFilterText)
Definition TextFilterExpressionEvaluator.cpp:298
CORE_API FText GetFilterText() const
Definition TextFilterExpressionEvaluator.cpp:293
CORE_API ETextFilterExpressionType GetFilterType() const
Definition TextFilterExpressionEvaluator.cpp:288
CORE_API bool TestTextFilter(const ITextFilterExpressionContext &InContext) const
Definition TextFilterExpressionEvaluator.cpp:486
Definition TextFilterUtils.h:38
Definition Text.h:385
Definition IFilter.h:13
ItemType ItemType
Definition IFilter.h:15
Definition TextFilterExpressionEvaluator.h:37
Definition SharedPointer.h:1640
Definition TextFilter.h:21
virtual bool PassesFilter(ItemType InItem) const override
Definition TextFilter.h:59
TTextFilter(FItemToStringArray InTransformDelegate)
Definition TextFilter.h:35
virtual FChangedEvent & OnChanged() override
Definition TextFilter.h:51
void SetRawFilterText(const FText &InFilterText)
Definition TextFilter.h:79
TTextFilter(FItemToStringArray InTransformDelegate, FItemTestComplexExpression InTestComplexExpressionDelegate)
Definition TextFilter.h:42
FText GetRawFilterText() const
Definition TextFilter.h:73
FText GetFilterErrorText() const
Definition TextFilter.h:88
DECLARE_DELEGATE_RetVal_FiveParams(bool, FItemTestComplexExpression, ItemType, const FName &, const FTextFilterString &, ETextFilterComparisonOperation, ETextFilterTextComparisonMode)
DECLARE_DERIVED_EVENT(TTextFilter, IFilter< ItemType >::FChangedEvent, FChangedEvent)
DECLARE_DELEGATE_TwoParams(FItemToStringArray, ItemType, OUT TArray< FString > &)
T Type
Definition RemoveReference.h:10