// Copyright (c) Microsoft Corporation. 
// Licensed under the MIT license.

#pragma once
#include "CoreMinimal.h"
#include "Widgets/Input/SButton.h"

class SVisibilityButton : public SButton
{
public:
	SLATE_BEGIN_ARGS(SVisibilityButton)
		: _Content()
		, _ContentPadding(FMargin(4.0, 2.0))
		, _ButtonStyle(&FCoreStyle::Get().GetWidgetStyle< FButtonStyle >("Button"))
		, _HAlign(HAlign_Fill)
		, _VAlign(VAlign_Fill)
	{}
	
	/** Slot for this button's content (optional) */
	SLATE_DEFAULT_SLOT(FArguments, Content)

	/** Spacing between button's border and the content. */;
	SLATE_ATTRIBUTE(FMargin, ContentPadding)
	
	SLATE_STYLE_ARGUMENT(FButtonStyle, ButtonStyle)

	/** Horizontal alignment */
	SLATE_ARGUMENT(EHorizontalAlignment, HAlign)

	/** Vertical alignment */
	SLATE_ARGUMENT(EVerticalAlignment, VAlign)

	SLATE_EVENT(FOnClicked, OnClicked)
	
	SLATE_EVENT(FOnClicked, OnRightClicked)


	SLATE_EVENT(FSimpleDelegate, OnHovered)

	SLATE_EVENT(FSimpleDelegate, OnUnhovered)

	SLATE_END_ARGS()

public:
	void Construct(const FArguments& InArgs);

	// SButton overrides
	virtual FReply OnMouseButtonUp(const FGeometry& MyGeometry, const FPointerEvent& MouseEvent) override;
	// SButton


private:
	FOnClicked OnRightClicked;
};

