From 614c9d27ff0aa8eeff663469979af191c07792e3 Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 12 Feb 2022 22:21:47 +0800 Subject: ... --- include/cru/ui/controls/CheckBox.h | 32 +++++++++++++++++++++++++++++ include/cru/ui/controls/ICheckableControl.h | 11 ++++++++++ 2 files changed, 43 insertions(+) create mode 100644 include/cru/ui/controls/CheckBox.h create mode 100644 include/cru/ui/controls/ICheckableControl.h (limited to 'include/cru/ui') diff --git a/include/cru/ui/controls/CheckBox.h b/include/cru/ui/controls/CheckBox.h new file mode 100644 index 00000000..a892389b --- /dev/null +++ b/include/cru/ui/controls/CheckBox.h @@ -0,0 +1,32 @@ +#pragma once +#include "IBorderControl.h" +#include "ICheckableControl.h" +#include "NoChildControl.h" +#include "cru/ui/render/BorderRenderObject.h" + +namespace cru::ui::controls { +class CRU_UI_API CheckBox : public NoChildControl, + public virtual IBorderControl, + public virtual ICheckableControl { + public: + CheckBox(); + ~CheckBox() override; + + render::RenderObject* GetRenderObject() const override { + return container_render_object_.get(); + } + + bool IsChecked() const override { return checked_; } + void SetChecked(bool checked) override; + + IEvent* CheckedChangeEvent() override { return &checked_change_event_; } + + void ApplyBorderStyle(const style::ApplyBorderStyleInfo& style) override; + + private: + bool checked_ = false; + Event checked_change_event_; + + std::unique_ptr container_render_object_; +}; +} // namespace cru::ui::controls diff --git a/include/cru/ui/controls/ICheckableControl.h b/include/cru/ui/controls/ICheckableControl.h new file mode 100644 index 00000000..2c7aace8 --- /dev/null +++ b/include/cru/ui/controls/ICheckableControl.h @@ -0,0 +1,11 @@ +#pragma once +#include "../Base.h" +#include "cru/common/Event.h" + +namespace cru::ui::controls { +struct CRU_UI_API ICheckableControl : virtual Interface { + virtual bool IsChecked() const = 0; + virtual void SetChecked(bool checked) = 0; + virtual IEvent* CheckedChangeEvent() = 0; +}; +} // namespace cru::ui::controls -- cgit v1.2.3