10template<
typename ItemType>
23 TreeRootItems =
nullptr;
88 if (TreeView && Filter && RootItems && TreeRootItems && GetChildrenDelegate.IsBound())
90 TreeRootItems->
Empty();
91 ItemsPassingFilter.Empty();
96 PrefilterExpandedItems.Empty();
97 TreeView->GetExpandedItems(PrefilterExpandedItems);
101 if (ExpandAndCacheMatches(
RootItem))
111 TreeView->ClearExpandedItems();
116 PrefilterExpandedItems.Empty();
124 TreeView->RequestTreeRefresh();
125 bWasEnabled = bIsEnabled;
139 GetChildrenDelegate.Execute(
Parent, AllChildren);
140 for (
auto Child : AllChildren)
142 if (ItemsPassingFilter.Contains(
Child))
159 bool ExpandAndCacheMatches(ItemType
Parent)
163 GetChildrenDelegate.Execute(
Parent, AllChildren);
164 for (
auto Child : AllChildren)
173 TreeView->SetItemExpansion(
Parent,
true);
174 ItemsPassingFilter.Add(
Parent);
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
virtual bool PassesFilter(TItemType InItem) const =0
Definition STreeView.h:90
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
void Empty(SizeType Slack=0)
Definition Array.h:2273
Definition SlateDelegates.h:134
Definition TreeFilterHandler.h:12
void SetRootItems(TArray< ItemType > *InRootItems, TArray< ItemType > *InTreeRootItems)
Definition TreeFilterHandler.h:45
void SetGetChildrenDelegate(FOnGetChildren InGetChildrenDelegate)
Definition TreeFilterHandler.h:55
bool GetIsEnabled()
Definition TreeFilterHandler.h:61
void OnGetFilteredChildren(ItemType Parent, TArray< ItemType > &FilteredChildren)
Definition TreeFilterHandler.h:134
TreeFilterHandler()
Definition TreeFilterHandler.h:18
void SetIsEnabled(bool bInIsEnabled)
Definition TreeFilterHandler.h:70
void SetTreeView(STreeView< ItemType > *InTreeView)
Definition TreeFilterHandler.h:29
void RefreshAndFilterTree()
Definition TreeFilterHandler.h:86
TSlateDelegates< ItemType >::FOnGetChildren FOnGetChildren
Definition TreeFilterHandler.h:14
void SetFilter(IFilter< ItemType > *InFilter)
Definition TreeFilterHandler.h:35
void RemoveCachedItem(ItemType ItemToRemove)
Definition TreeFilterHandler.h:76