123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265 |
- #pragma once
- #include "WaapiPlaybackTransport.h"
- #include "DataSource/WwiseBrowserDataSource.h"
- #include "DataSource/WaapiDataSource.h"
- #include "Misc/TextFilter.h"
- #include "Widgets/SCompoundWidget.h"
- #include "Styling/SlateBrush.h"
- #include "Framework/Views/ITypedTableView.h"
- #include "WwiseBrowser/IWwiseBrowserColumn.h"
- class FUICommandList;
- class STableViewBase;
- class ITableRow;
- class SHeaderRow;
- class FWwiseBrowserDataSource;
- class SWwiseBrowserTreeView;
- using StringFilter = TTextFilter<const FString&>;
- class WwiseBrowserBuilderVisitor;
- class FWwiseBrowserDataLoader;
- class SWwiseBrowser : public SCompoundWidget
- {
- public:
- SLATE_BEGIN_ARGS( SWwiseBrowser )
- : _FocusSearchBoxWhenOpened(false)
- , _ShowTreeTitle(true)
- , _ShowSearchBar(true)
- , _ShowSeparator(true)
- , _AllowContextMenu(true)
- , _SelectionMode( ESelectionMode::Multi )
- {}
-
- SLATE_NAMED_SLOT( FArguments, SearchContent )
-
- SLATE_ARGUMENT( bool, FocusSearchBoxWhenOpened )
-
- SLATE_ARGUMENT( bool, ShowTreeTitle )
-
- SLATE_ARGUMENT( bool, ShowSearchBar )
-
- SLATE_ARGUMENT( bool, ShowSeparator )
-
- SLATE_ARGUMENT( bool, AllowContextMenu )
-
- SLATE_ARGUMENT( ESelectionMode::Type, SelectionMode )
- SLATE_END_ARGS( )
- AUDIOKINETICTOOLS_API void Construct(const FArguments& InArgs);
- SWwiseBrowser(void);
- ~SWwiseBrowser();
- AUDIOKINETICTOOLS_API static const FName WwiseBrowserTabName;
- AUDIOKINETICTOOLS_API TSharedRef<SWidget> MakeAddFilterMenu();
- void SoundBankFilterExecute(ESoundBankStatusFilter Filter);
- bool SoundBankFilterIsChecked(ESoundBankStatusFilter Filter);
- void UAssetFilterExecute(EUAssetStatusFilter Filter);
- bool UAssetFilterIsChecked(EUAssetStatusFilter Filter);
- void WwiseTypeFilterExecute(EWwiseTypeFilter Filter);
- bool WwiseTypeFilterIsChecked(EWwiseTypeFilter Filter);
- void SoundBankNotUpToDateExecute();
- void RemoveFiltersExecute();
- void UAssetNotUpToDateExecute();
- AUDIOKINETICTOOLS_API void ForceRefresh();
- AUDIOKINETICTOOLS_API void InitialParse();
- static FReply DoDragDetected(const FPointerEvent& MouseEvent, const TArray<FWwiseTreeItemPtr>& SelectedItems);
- TAttribute<FText> GetFilterHighlightText() const;
- static void ImportWwiseAssets(const TArray<FWwiseTreeItemPtr>& SelectedItems, const FString& PackagePath);
-
- const TMap<FName, TSharedPtr<IWwiseBrowserColumn>>& GetColumns() const
- {
- return Columns;
- }
- virtual FReply OnKeyDown(const FGeometry& MyGeometry, const FKeyEvent& InKeyEvent) override;
- EVisibility IsItemPlaying(FGuid ItemId) const;
- void ExpandItem(FWwiseTreeItemPtr TreeItem, bool bShouldExpand);
- void ExpandItem(FWwiseTreeItemPtr TreeItem);
- bool IsItemExpanded(FWwiseTreeItemPtr TreeItem);
- void UpdateWaapiSelection(const TArray<TSharedPtr<FWwiseTreeItem>>& WaapiTreeItems);
- EWwiseConnectionStatus IsWaapiAvailable() const;
-
- bool AllowTreeViewDelegates;
- private:
-
- TSharedPtr<SWwiseBrowserTreeView> TreeViewPtr;
-
- TSharedPtr< SHeaderRow > HeaderRowWidget;
-
- TSharedPtr<StringFilter> SearchBoxFilter;
-
- bool bIsFilterApplied;
- FSoundBankStatusFilter SoundBankStatusFilter;
- FUAssetStatusFilter UAssetStatusFilter;
- FWwiseTypeFilter WwiseTypeFilter;
- const FSlateBrush* GetFilterBadgeIcon() const;
- void OnTextFilterUpdated();
- void OnFilterUpdated();
- void ApplyFilter();
- bool IsFiltering();
- FText GetFilterText();
- FString GetFilterString();
-
- TArray< FWwiseTreeItemPtr > RootItems;
-
- TSet< FString > LastSelectedPaths;
-
- TSet< FString > LastExpandedPaths;
-
- FReply OnOpenSettingsClicked();
-
- FReply OnRefreshClicked();
-
- FReply OnGenerateSoundBanksClicked();
- void OnTreeItemDoubleClicked(FWwiseTreeItemPtr TreeItem);
-
- void ConstructTree();
-
- TSharedRef<ITableRow> GenerateRow( FWwiseTreeItemPtr TreeItem, const TSharedRef<STableViewBase>& OwnerTable );
-
- void GetChildrenForTree( FWwiseTreeItemPtr TreeItem, TArray< FWwiseTreeItemPtr >& OutChildren );
-
- TSharedRef<FUICommandList> CommandList;
-
- virtual FReply OnDragDetected(const FGeometry& Geometry, const FPointerEvent& MouseEvent) override;
- void ExpandFirstLevel();
- void ExpandParents(FWwiseTreeItemPtr Item);
- FText GetProjectName() const;
- FText GetConnectedWwiseProjectName() const;
- EVisibility IsWarningVisible() const;
- EVisibility IsWarningNotVisible() const;
- FText GetWarningText() const;
- FText GetConnectionStatusText() const;
- FText GetSoundBanksLocationText() const;
-
- void PopulateSearchStrings( const FString& FolderName, OUT TArray< FString >& OutSearchStrings ) const;
- void OnSearchBoxChanged( const FText& InSearchText );
- void SetItemVisibility(FWwiseTreeItemPtr Item, bool IsVisible);
- void SaveCurrentTreeExpansion();
- void RestoreTreeExpansion(const TArray< FWwiseTreeItemPtr >& Items);
-
- void TreeSelectionChanged( FWwiseTreeItemPtr TreeItem, ESelectInfo::Type SelectInfo );
-
- void TreeExpansionChanged( FWwiseTreeItemPtr TreeItem, bool bIsExpanded );
-
- void CreateWwiseBrowserCommands();
-
- TSharedPtr<SWidget> MakeWwiseBrowserContextMenu();
-
- void HandlePlayWwiseItemCommandExecute();
- bool HandlePlayOrStopWwiseItemCanExecute();
-
- void HandleStopWwiseItemCommandExecute();
-
- void HandleStopAllWwiseItemCommandExecute();
-
- void HandleExploreWwiseItemCommandExecute();
- bool HandleExploreWwiseItemCanExecute();
-
- void HandleFindInProjectExplorerWwiseItemCommandExecute();
- bool HandleFindInProjectExplorerWwiseItemCanExecute();
-
- void HandleFindInContentBrowserCommandExecute();
- bool HandleFindInContentBrowserCanExecute();
- void HandleRefreshWwiseBrowserCommandExecute();
-
- void HandleImportWwiseItemCommandExecute() const;
-
- void SetupColumns(SHeaderRow& HeaderRow);
- void GetTreeItemsFromWaapi(const TArray<TSharedPtr<FWwiseTreeItem>>& WaapiTreeItems, TArray<TSharedPtr<FWwiseTreeItem>>& TreeItems);
- FWwiseTreeItemPtr GetTreeItemFromWaapiItem(FWwiseTreeItemPtr WaapiTreeItem);
- void ExpandItems(const TArray< FWwiseTreeItemPtr >& Items);
- private:
-
- TMap<FName, TSharedPtr<IWwiseBrowserColumn>> Columns;
-
- TUniquePtr<FWwiseBrowserDataSource> DataSource;
-
- TUniquePtr<WaapiPlaybackTransport> Transport;
- };
|