Files
UnrealEngineUWP/Engine/Source/Editor/AnimationModifiers/Private/SModifierListview.h
ryan durand 627baf970a Updating copyright for Engine Editor.
#rnx
#rb none


#ROBOMERGE-SOURCE: CL 10869241 via CL 10869527 via CL 10869904
#ROBOMERGE-BOT: (v613-10869866)

[CL 10870586 by ryan durand in Main branch]
2019-12-26 15:33:43 -05:00

81 lines
2.8 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Widgets/Views/SListView.h"
#include "IDetailsView.h"
#include "AnimationModifier.h"
DECLARE_DELEGATE_OneParam(FOnModifierArray, const TArray<TWeakObjectPtr<UAnimationModifier>>&);
DECLARE_DELEGATE_RetVal_OneParam(bool, FOnCanModifierArray, const TArray<TWeakObjectPtr<UAnimationModifier>>&);
DECLARE_DELEGATE_OneParam(FOnSingleModifier, const TWeakObjectPtr<UAnimationModifier>&);
/** Data representation of a modifier in the listview */
struct FModifierListviewItem
{
TSubclassOf<UAnimationModifier> Class;
TWeakObjectPtr<UAnimationModifier> Instance;
int32 Index;
UClass* OuterClass;
};
typedef TSharedPtr<FModifierListviewItem> ModifierListviewItem;
class SModifierListView : public SCompoundWidget
{
SLATE_BEGIN_ARGS(SModifierListView)
: _Items(nullptr) {}
SLATE_ARGUMENT(TArray<ModifierListviewItem>*, Items)
SLATE_ARGUMENT(TSharedPtr<IDetailsView>, InstanceDetailsView)
SLATE_ARGUMENT(FOnModifierArray, OnApplyModifier);
SLATE_ARGUMENT(FOnCanModifierArray, OnCanRevertModifier)
SLATE_ARGUMENT(FOnModifierArray, OnRevertModifier);
SLATE_ARGUMENT(FOnModifierArray, OnRemoveModifier);
SLATE_ARGUMENT(FOnSingleModifier, OnOpenModifier);
SLATE_ARGUMENT(FOnSingleModifier, OnMoveUpModifier);
SLATE_ARGUMENT(FOnSingleModifier, OnMoveDownModifier);
SLATE_END_ARGS()
void Construct(const FArguments& InArgs);
TSharedRef<ITableRow> OnGenerateWidgetForList(ModifierListviewItem Item, const TSharedRef<STableViewBase>& OwnerTable);
void OnSelectionChanged(ModifierListviewItem SelectedItem, ESelectInfo::Type SelectInfo);
/** Context menu callbacks for modifier actions */
void OnApplyModifier();
void OnRemoveModifier();
void OnOpenModifier();
void OnRevertModifier();
bool OnCanRevertModifier();
void OnMoveUpModifier();
void OnMoveDownModifier();
/** Retrieve currently select Modifier instances */
const TArray<TWeakObjectPtr<UAnimationModifier>> GetSelectedModifierInstances();
/** Refreshes the listview panel */
void Refresh();
/** Generate the context menu widget when requested */
TSharedPtr<SWidget> OnContextMenuOpening();
protected:
/** UI elements and listview data */
TSharedPtr<SListView<ModifierListviewItem>> Listview;
TArray<ModifierListviewItem>* ListviewItems;
TSharedPtr<IDetailsView> InstanceDetailsView;
/** Delegates back to SAnimationModifiersTab functionality */
FOnModifierArray OnApplyModifierDelegate;
FOnModifierArray OnRevertModifierDelegate;
FOnCanModifierArray OnCanRevertModifierDelegate;
FOnModifierArray OnRemoveModifierDelegate;
FOnSingleModifier OnOpenModifierDelegate;
FOnSingleModifier OnMoveUpModifierDelegate;
FOnSingleModifier OnMoveDownModifierDelegate;
/** Check whether or not selected modifier can moved in either direction */
bool CanMoveSelectedItemUp();
bool CanMoveSelectedItemDown();
};