// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "View/MVVMView.h" #include "MVVMBlueprintViewBinding.h" #include "MVVMBlueprintViewModelContext.h" #include "MVVMBlueprintView.generated.h" class UWidget; class UWidgetBlueprint; /** * */ UCLASS(Within=MVVMWidgetBlueprintExtension_View) class MODELVIEWVIEWMODELBLUEPRINT_API UMVVMBlueprintView : public UObject { GENERATED_BODY() public: FMVVMBlueprintViewModelContext* FindViewModel(FGuid ViewModelId); const FMVVMBlueprintViewModelContext* FindViewModel(FGuid ViewModelId) const; const FMVVMBlueprintViewModelContext* FindViewModel(FName ViewModelName) const; void AddViewModel(const FMVVMBlueprintViewModelContext& NewContext); bool RemoveViewModel(FGuid ViewModelId); int32 RemoveViewModels(const TArrayView ViewModelIds); bool RenameViewModel(FName OldViewModelName, FName NewViewModelName); void SetViewModels(const TArray& ViewModelContexts); const TArrayView GetViewModels() const { return AvailableViewModels; } const FMVVMBlueprintViewBinding* FindBinding(const UWidget* Widget, const FProperty* Property) const; FMVVMBlueprintViewBinding* FindBinding(const UWidget* Widget, const FProperty* Property); void RemoveBinding(const FMVVMBlueprintViewBinding* Binding); void RemoveBindingAt(int32 Index); FMVVMBlueprintViewBinding& AddBinding(const UWidget* Widget, const FProperty* Property); FMVVMBlueprintViewBinding& AddDefaultBinding(); int32 GetNumBindings() const { return Bindings.Num(); } FMVVMBlueprintViewBinding* GetBindingAt(int32 Index); const FMVVMBlueprintViewBinding* GetBindingAt(int32 Index) const; TArrayView GetBindings() { return Bindings; } const TArrayView GetBindings() const { return Bindings; } #if WITH_EDITOR virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override; virtual void PostEditChangeChainProperty(FPropertyChangedChainEvent& PropertyChainEvent) override; void WidgetRenamed(FName OldObjectName, FName NewObjectName); #endif DECLARE_EVENT(UMVVMBlueprintView, FOnBindingsUpdated); FOnBindingsUpdated OnBindingsUpdated; DECLARE_EVENT(UMVVMBlueprintView, FOnViewModelsUpdated); FOnViewModelsUpdated OnViewModelsUpdated; private: UPROPERTY(EditAnywhere, Category = "MVVM") TArray Bindings; UPROPERTY(EditAnywhere, Category = "MVVM") TArray AvailableViewModels; };