#pragma once #include "../helper/ClickDetector.h" #include "../render/BorderRenderObject.h" #include "IBorderControl.h" #include "IClickableControl.h" #include "SingleChildControl.h" namespace cru::ui::controls { class CRU_UI_API Button : public SingleChildControl, public virtual IClickableControl, public virtual IBorderControl { public: static constexpr auto kControlName = "Button"; public: Button(); public: helper::ClickState GetClickState() override { return click_detector_.GetState(); } IEvent* ClickStateChangeEvent() override { return click_detector_.StateChangeEvent(); } IEvent* ClickEvent() override { return click_detector_.ClickEvent(); } void ApplyBorderStyle(const style::ApplyBorderStyleInfo& style) override; private: helper::ClickDetector click_detector_; }; } // namespace cru::ui::controls