From 74bb9cd27242b9320f99ff4d2b50c3051576cc14 Mon Sep 17 00:00:00 2001 From: crupest Date: Tue, 8 Feb 2022 16:53:51 +0800 Subject: ... --- include/cru/ui/controls/Control.hpp | 157 ------------------------------------ 1 file changed, 157 deletions(-) delete mode 100644 include/cru/ui/controls/Control.hpp (limited to 'include/cru/ui/controls/Control.hpp') diff --git a/include/cru/ui/controls/Control.hpp b/include/cru/ui/controls/Control.hpp deleted file mode 100644 index c51643be..00000000 --- a/include/cru/ui/controls/Control.hpp +++ /dev/null @@ -1,157 +0,0 @@ -#pragma once -#include "Base.hpp" - -#include "../events/UiEvents.hpp" -#include "../render/Base.hpp" -#include "cru/common/Event.hpp" - -#include - -namespace cru::ui::controls { -class CRU_UI_API Control : public Object { - friend host::WindowHost; - - protected: - Control(); - - public: - Control(const Control& other) = delete; - Control(Control&& other) = delete; - Control& operator=(const Control& other) = delete; - Control& operator=(Control&& other) = delete; - ~Control() override; - - public: - virtual String GetControlType() const = 0; - - //*************** region: tree *************** - public: - host::WindowHost* GetWindowHost() const; - - Control* GetParent() const { return parent_; } - - const std::vector& GetChildren() const { return children_; } - - // Traverse the tree rooted the control including itself. - void TraverseDescendants(const std::function& predicate); - - public: - virtual render::RenderObject* GetRenderObject() const = 0; - - //*************** region: focus *************** - public: - bool HasFocus(); - - void SetFocus(); - - //*************** region: mouse *************** - public: - bool IsMouseOver() const { return is_mouse_over_; } - - bool CaptureMouse(); - - bool ReleaseMouse(); - - bool IsMouseCaptured(); - - //*************** region: cursor *************** - // Cursor is inherited from parent recursively if not set. - public: - // null for not set - std::shared_ptr GetCursor(); - - // will not return nullptr - std::shared_ptr GetInheritedCursor(); - - // null to unset - void SetCursor(std::shared_ptr cursor); - - public: - std::shared_ptr GetStyleRuleSet(); - - //*************** region: events *************** - public: - // Raised when mouse enter the control. Even when the control itself captures - // the mouse, this event is raised as regular. But if mouse is captured by - // another control, the control will not receive any mouse enter event. You - // can use `IsMouseCaptured` to get more info. - events::RoutedEvent* MouseEnterEvent() { - return &mouse_enter_event_; - } - // Raised when mouse is leave the control. Even when the control itself - // captures the mouse, this event is raised as regular. But if mouse is - // captured by another control, the control will not receive any mouse leave - // event. You can use `IsMouseCaptured` to get more info. - events::RoutedEvent* MouseLeaveEvent() { - return &mouse_leave_event_; - } - // Raised when mouse is move in the control. - events::RoutedEvent* MouseMoveEvent() { - return &mouse_move_event_; - } - // Raised when a mouse button is pressed in the control. - events::RoutedEvent* MouseDownEvent() { - return &mouse_down_event_; - } - // Raised when a mouse button is released in the control. - events::RoutedEvent* MouseUpEvent() { - return &mouse_up_event_; - } - events::RoutedEvent* MouseWheelEvent() { - return &mouse_wheel_event_; - } - events::RoutedEvent* KeyDownEvent() { - return &key_down_event_; - } - events::RoutedEvent* KeyUpEvent() { - return &key_up_event_; - } - events::RoutedEvent* GainFocusEvent() { - return &gain_focus_event_; - } - events::RoutedEvent* LoseFocusEvent() { - return &lose_focus_event_; - } - - private: - events::RoutedEvent mouse_enter_event_; - events::RoutedEvent mouse_leave_event_; - events::RoutedEvent mouse_move_event_; - events::RoutedEvent mouse_down_event_; - events::RoutedEvent mouse_up_event_; - events::RoutedEvent mouse_wheel_event_; - - events::RoutedEvent key_down_event_; - events::RoutedEvent key_up_event_; - - events::RoutedEvent gain_focus_event_; - events::RoutedEvent lose_focus_event_; - - //*************** region: tree *************** - protected: - void AddChild(Control* control, Index position); - void RemoveChild(Index position); - virtual void OnAddChild(Control* child, Index position); - virtual void OnRemoveChild(Control* child, Index position); - virtual void OnParentChanged(Control* old_parent, Control* new_parent); - virtual void OnAttachToHost(host::WindowHost* host); - virtual void OnDetachFromHost(host::WindowHost* host); - - protected: - virtual void OnMouseHoverChange(bool newHover) { CRU_UNUSED(newHover) } - - private: - Control* parent_ = nullptr; - std::vector children_; - - host::WindowHost* window_host_ = nullptr; - - private: - bool is_mouse_over_ = false; - - std::shared_ptr cursor_ = nullptr; - - std::shared_ptr style_rule_set_; - std::unique_ptr style_rule_set_bind_; -}; -} // namespace cru::ui::controls -- cgit v1.2.3