2022-04-01 14:21:11 -04:00
|
|
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "MVVMBlueprintViewBinding.h"
|
|
|
|
|
#include "MVVMBlueprintViewModelContext.h"
|
|
|
|
|
|
|
|
|
|
#include "MVVMBlueprintView.generated.h"
|
|
|
|
|
|
2023-01-13 01:54:01 -05:00
|
|
|
class UMVVMWidgetBlueprintExtension_View;
|
|
|
|
|
|
2022-04-01 14:21:11 -04:00
|
|
|
class UWidget;
|
|
|
|
|
class UWidgetBlueprint;
|
|
|
|
|
|
2023-03-17 16:33:42 -04:00
|
|
|
namespace UE::MVVM
|
|
|
|
|
{
|
|
|
|
|
enum class EBindingMessageType : uint8
|
|
|
|
|
{
|
|
|
|
|
Info,
|
|
|
|
|
Warning,
|
|
|
|
|
Error
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct FBindingMessage
|
|
|
|
|
{
|
|
|
|
|
FText MessageText;
|
|
|
|
|
EBindingMessageType MessageType;
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
2022-04-01 14:21:11 -04:00
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
UCLASS(Within=MVVMWidgetBlueprintExtension_View)
|
|
|
|
|
class MODELVIEWVIEWMODELBLUEPRINT_API UMVVMBlueprintView : public UObject
|
|
|
|
|
{
|
|
|
|
|
GENERATED_BODY()
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
FMVVMBlueprintViewModelContext* FindViewModel(FGuid ViewModelId);
|
|
|
|
|
const FMVVMBlueprintViewModelContext* FindViewModel(FGuid ViewModelId) const;
|
2022-06-03 14:47:48 -04:00
|
|
|
const FMVVMBlueprintViewModelContext* FindViewModel(FName ViewModelName) const;
|
2022-04-01 14:21:11 -04:00
|
|
|
|
|
|
|
|
void AddViewModel(const FMVVMBlueprintViewModelContext& NewContext);
|
2022-06-03 14:47:48 -04:00
|
|
|
bool RemoveViewModel(FGuid ViewModelId);
|
|
|
|
|
int32 RemoveViewModels(const TArrayView<FGuid> ViewModelIds);
|
|
|
|
|
bool RenameViewModel(FName OldViewModelName, FName NewViewModelName);
|
2022-04-01 14:21:11 -04:00
|
|
|
|
|
|
|
|
const TArrayView<const FMVVMBlueprintViewModelContext> 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;
|
2022-10-26 22:19:39 -04:00
|
|
|
FMVVMBlueprintViewBinding* GetBinding(FGuid Id);
|
|
|
|
|
const FMVVMBlueprintViewBinding* GetBinding(FGuid Id) const;
|
2022-04-01 14:21:11 -04:00
|
|
|
|
|
|
|
|
TArrayView<FMVVMBlueprintViewBinding> GetBindings()
|
|
|
|
|
{
|
|
|
|
|
return Bindings;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const TArrayView<const FMVVMBlueprintViewBinding> GetBindings() const
|
|
|
|
|
{
|
|
|
|
|
return Bindings;
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-17 16:33:42 -04:00
|
|
|
TArray<FText> GetBindingMessages(FGuid Id, UE::MVVM::EBindingMessageType InMessageType) const;
|
|
|
|
|
bool HasBindingMessage(FGuid Id, UE::MVVM::EBindingMessageType InMessageType) const;
|
|
|
|
|
void AddMessageToBinding(FGuid Id, UE::MVVM::FBindingMessage MessageToAdd);
|
|
|
|
|
void ResetBindingMessages();
|
|
|
|
|
|
2022-04-01 14:21:11 -04:00
|
|
|
#if WITH_EDITOR
|
2022-10-06 20:08:12 -04:00
|
|
|
// virtual void PostEditUndo() override;
|
|
|
|
|
|
2022-04-01 14:21:11 -04:00
|
|
|
virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
|
2022-05-20 18:54:53 -04:00
|
|
|
virtual void PostEditChangeChainProperty(FPropertyChangedChainEvent& PropertyChainEvent) override;
|
|
|
|
|
|
2022-12-08 09:06:03 -05:00
|
|
|
void AddAssetTags(TArray<FAssetRegistryTag>& OutTags);
|
2022-04-01 14:21:11 -04:00
|
|
|
void WidgetRenamed(FName OldObjectName, FName NewObjectName);
|
|
|
|
|
#endif
|
|
|
|
|
|
2022-10-05 16:05:24 -04:00
|
|
|
virtual void PostLoad() override;
|
|
|
|
|
|
2022-04-01 14:21:11 -04:00
|
|
|
DECLARE_EVENT(UMVVMBlueprintView, FOnBindingsUpdated);
|
|
|
|
|
FOnBindingsUpdated OnBindingsUpdated;
|
|
|
|
|
|
|
|
|
|
DECLARE_EVENT(UMVVMBlueprintView, FOnViewModelsUpdated);
|
|
|
|
|
FOnViewModelsUpdated OnViewModelsUpdated;
|
|
|
|
|
|
2022-08-24 13:14:51 -04:00
|
|
|
// Use during compilation to clean the automatically generated graph.
|
|
|
|
|
UPROPERTY(Transient)
|
|
|
|
|
TArray<TObjectPtr<UEdGraph>> TemporaryGraph;
|
|
|
|
|
|
2022-04-01 14:21:11 -04:00
|
|
|
private:
|
2023-01-31 10:21:03 -05:00
|
|
|
UPROPERTY(EditAnywhere, Category = "Viewmodel")
|
2022-04-01 14:21:11 -04:00
|
|
|
TArray<FMVVMBlueprintViewBinding> Bindings;
|
|
|
|
|
|
2023-01-31 10:21:03 -05:00
|
|
|
UPROPERTY(EditAnywhere, Category = "Viewmodel")
|
2022-04-01 14:21:11 -04:00
|
|
|
TArray<FMVVMBlueprintViewModelContext> AvailableViewModels;
|
2023-03-17 16:33:42 -04:00
|
|
|
|
|
|
|
|
TMap<FGuid, TArray<UE::MVVM::FBindingMessage>> BindingMessages;
|
|
|
|
|
|
|
|
|
|
bool bIsContextSensitive;
|
2022-04-01 14:21:11 -04:00
|
|
|
};
|
2023-01-13 01:54:01 -05:00
|
|
|
|
|
|
|
|
#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_2
|
|
|
|
|
#include "CoreMinimal.h"
|
|
|
|
|
#include "View/MVVMView.h"
|
|
|
|
|
#endif
|