// Copyright 2019-Present LexLiu. All Rights Reserved. #include "CoreMinimal.h" #include "IDetailCustomization.h" #include "Layout/ILGUILayoutInterface.h" #include "Widget/AnchorPreviewWidget.h" #pragma once /** * */ class FUIItemCustomization : public IDetailCustomization { public: FUIItemCustomization(); ~FUIItemCustomization(); static TSharedRef MakeInstance(); /** IDetailCustomization interface */ virtual void CustomizeDetails(IDetailLayoutBuilder& DetailBuilder) override; private: TArray> TargetScriptArray; static TArray ValueRangeArray; void AddSlotProperty(IDetailLayoutBuilder& DetailBuilder); bool GetIsAnchorsEnabled()const; FText GetAnchorsTooltipText()const; void ForceRefreshEditor(IDetailLayoutBuilder* DetailBuilder); void ForceUpdateUI(); bool OnCanCopyAnchor()const; bool OnCanPasteAnchor()const; void OnCopyAnchor(); void OnPasteAnchor(IDetailLayoutBuilder* DetailBuilder); void OnCopyHierarchyIndex(); void OnPasteHierarchyIndex(TSharedRef PropertyHandle); void OnSelectAnchor(LGUIAnchorPreviewWidget::UIAnchorHorizontalAlign HorizontalAlign, LGUIAnchorPreviewWidget::UIAnchorVerticalAlign VerticalAlign, IDetailLayoutBuilder* DetailBuilder); LGUIAnchorPreviewWidget::UIAnchorHorizontalAlign GetAnchorHAlign(TSharedRef AnchorMinHandle, TSharedRef AnchorMaxHandle)const; LGUIAnchorPreviewWidget::UIAnchorVerticalAlign GetAnchorVAlign(TSharedRef AnchorMinHandle, TSharedRef AnchorMaxHandle)const; FText GetHAlignText(TSharedRef AnchorMinHandle, TSharedRef AnchorMaxHandle)const; FText GetVAlignText(TSharedRef AnchorMinHandle, TSharedRef AnchorMaxHandle)const; FText GetAnchorLabelText(TSharedRef AnchorMinHandle, TSharedRef AnchorMaxHandle, int LabelIndex)const; FText GetAnchorLabelTooltipText(TSharedRef AnchorMinHandle, TSharedRef AnchorMaxHandle, int LabelTooltipIndex)const; TOptional GetAnchorValue(TSharedRef AnchorHandle, int AnchorValueIndex)const; TOptional GetMinMaxSliderValue(TSharedRef AnchorHandle, int AnchorValueIndex, bool MinOrMax)const; void ApplyValueChanged(float Value, TSharedRef AnchorHandle, int AnchorValueIndex); void OnAnchorValueChanged(float Value, TSharedRef AnchorHandle, int AnchorValueIndex); void OnAnchorValueCommitted(float Value, ETextCommit::Type commitType, TSharedRef AnchorHandle, int AnchorValueIndex); void OnAnchorValueSliderMovementBegin(); void OnAnchorValueSliderMovementEnd(float Value, TSharedRef AnchorHandle, int AnchorValueIndex); EVisibility GetAnchorPresetButtonVisibility()const; bool IsAnchorValueEnable(TSharedRef AnchorHandle, int AnchorValueIndex)const; bool IsAnchorEditable()const; FReply OnClickIncreaseOrDecreaseHierarchyIndex(bool IncreaseOrDecrease, TSharedRef HierarchyIndexHandle); EVisibility GetDisplayNameWarningVisibility()const; FReply OnClickFixDisplayNameButton(bool singleOrAll, TSharedRef DisplayNameHandle); TArray AnchorAsMarginArray; void OnPrePivotChange(); void OnPivotChanged(); FLGUICanLayoutControlAnchor GetLayoutControlAnchorValue()const; enum class EAnchorControlledByLayoutType { HorizontalAnchor, HorizontalAnchoredPosition, HorizontalSizeDelta, VerticalAnchor, VerticalAnchoredPosition, VerticalSizeDelta, }; bool IsAnchorControlledByMultipleLayout(TMap>& Result)const; bool GetLayoutControlHorizontalAnchor()const; bool GetLayoutControlVerticalAnchor()const; bool GetLayoutControlHorizontalAnchoredPosition()const; bool GetLayoutControlVerticalAnchoredPosition()const; bool GetLayoutControlHorizontalSizeDelta()const; bool GetLayoutControlVerticalSizeDelta()const; };