// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "SearchQuery.h" #include "Widgets/Views/SHeaderRow.h" class STableViewBase; template class STreeView; class IDetailsView; class ITableRow; class FSearchNode; class FAssetNode; class FMenuBuilder; class IAssetRegistry; class SHeaderRow; /** * Implements the undo history panel. */ class SSearchBrowser : public SCompoundWidget { public: SLATE_BEGIN_ARGS(SSearchBrowser) { } SLATE_END_ARGS() public: virtual ~SSearchBrowser(); /** * Construct this widget * * @param InArgs The declaration data for this widget. */ void Construct( const FArguments& InArgs ); public: virtual void Tick(const FGeometry& AllottedGeometry, const double InCurrentTime, const float InDeltaTime) override; private: TSharedRef GetViewMenuWidget(); FText GetSearchBackgroundText() const; FText GetStatusText() const; FText GetAdvancedStatus() const; FText GetUnindexedAssetsText() const; void HandleForceIndexOfAssetsMissingIndex(); FReply OnRefresh(); EColumnSortMode::Type GetColumnSortMode(const FName ColumnId) const; void OnColumnSortModeChanged(const EColumnSortPriority::Type SortPriority, const FName& ColumnId, const EColumnSortMode::Type InSortMode); void RefreshList(); void AppendResult(FSearchRecord&& InResult); void OnSearchTextCommited(const FText& InText, ETextCommit::Type InCommitType); void OnSearchTextChanged(const FText& InText); void TryRefreshingSearch(const FText& InText); TSharedRef HandleListGenerateRow(TSharedPtr TransactionInfo, const TSharedRef& OwnerTable); void GetChildrenForInfo(TSharedPtr InInfo, TArray< TSharedPtr >& OutChildren); void HandleListSelectionChanged(TSharedPtr TransactionInfo, ESelectInfo::Type SelectInfo); bool IsSearching() const; private: FText FilterText; // Filters FString FilterString; FSearchQueryWeakPtr ActiveSearchPtr; TMap> SearchResultHierarchy; TArray< TSharedPtr > SearchResults; TSharedPtr< STreeView< TSharedPtr > > SearchTreeView; IAssetRegistry* AssetRegistry = nullptr; TSharedPtr HeaderColumns; FName SortByColumn; EColumnSortMode::Type SortMode; };