#ifndef QIRREGULARBUTTON_H
#define QIRREGULARBUTTON_H

#include <QPushButton>

#include "Config.h"

class IrregularButton : public QPushButton {
	Q_OBJECT

public:
	explicit IrregularButton(QWidget* parent = nullptr);
	explicit IrregularButton(const QString& text, QWidget* parent = nullptr);
	IrregularButton(const QIcon& icon, const QString& text, QWidget* parent = nullptr);

	void SetStartEnd(const QPointF& start, const QPointF& end) { m_start = start; m_end = end; }

	void SetDetailedType(DetailedType dt) { m_detailedType = dt; }
	DetailedType GetDetailedType() const { return m_detailedType; }
	void SetBtnName(const QString& btnName) { m_btnName = btnName; }
	const QString GetBtnName() const { return m_btnName;}

	void OnEmitEnter();

signals:
	void Enter(const QPointF& start, const QPointF& end);
	void Leave();

protected:
    bool event(QEvent* e) override;
	//void enterEvent(QEnterEvent* event) override;
	//void leaveEvent(QEvent* event) override;
	void mousePressEvent(QMouseEvent* e) override;
	void mouseReleaseEvent(QMouseEvent* e) override;

	QPointF GetEndPoint(const QPointF& target);
	void InitParentWidgetSlot(QWidget* parent);

private:
	QPointF m_start;
	QPointF m_end;
	DetailedType m_detailedType;
	QString m_btnName;
	bool m_bTouchEnd = false;
};

#endif // QIRREGULARBUTTON_H