diff options
author | crupest <crupest@outlook.com> | 2019-04-04 17:12:25 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2019-04-04 17:12:25 +0800 |
commit | a410e2048db6f5ef6fb50e401a59b4b98b979050 (patch) | |
tree | 500680c63b074e8c3eefd756fd6a1d0f41840c1a /src/ui/control.hpp | |
parent | fcaf471275a67d718887430ee63a53890915c4c7 (diff) | |
download | cru-a410e2048db6f5ef6fb50e401a59b4b98b979050.tar.gz cru-a410e2048db6f5ef6fb50e401a59b4b98b979050.tar.bz2 cru-a410e2048db6f5ef6fb50e401a59b4b98b979050.zip |
...
Diffstat (limited to 'src/ui/control.hpp')
-rw-r--r-- | src/ui/control.hpp | 134 |
1 files changed, 0 insertions, 134 deletions
diff --git a/src/ui/control.hpp b/src/ui/control.hpp deleted file mode 100644 index b69734d6..00000000 --- a/src/ui/control.hpp +++ /dev/null @@ -1,134 +0,0 @@ -#pragma once -#include "cru/common/base.hpp" - -#include "cru/ui/event/ui_event.hpp" - -#include "" - -#include <string_view> - -namespace cru::ui { -class Window; - -class Control : public Object { - friend class Window; - - protected: - Control() = default; - - public: - Control(const Control& other) = delete; - Control(Control&& other) = delete; - Control& operator=(const Control& other) = delete; - Control& operator=(Control&& other) = delete; - ~Control() override = default; - - public: - virtual std::wstring_view GetControlType() const = 0; - - //*************** region: tree *************** - public: - // Get the window if attached, otherwise, return nullptr. - Window* GetWindow() const { return window_; } - - Control* GetParent() const { return parent_; } - - virtual const std::vector<Control*>& GetChildren() const = 0; - - // Traverse the tree rooted the control including itself. - void TraverseDescendants(const std::function<void(Control*)>& predicate); - - void _SetParent(Control* parent); - void _SetDescendantWindow(Window* window); - - private: - static void _TraverseDescendants( - Control* control, const std::function<void(Control*)>& predicate); - - public: - virtual render::RenderObject* GetRenderObject() const = 0; - - //*************** region: focus *************** - public: - bool RequestFocus(); - - bool HasFocus(); - - //*************** region: events *************** - public: - // Raised when mouse enter the control. - events::RoutedEvent<events::MouseEventArgs>* MouseEnterEvent() { - return &mouse_enter_event_; - } - // Raised when mouse is leave the control. - events::RoutedEvent<events::MouseEventArgs>* MouseLeaveEvent() { - return &mouse_leave_event_; - } - // Raised when mouse is move in the control. - events::RoutedEvent<events::MouseEventArgs>* MouseMoveEvent() { - return &mouse_move_event_; - } - // Raised when a mouse button is pressed in the control. - events::RoutedEvent<events::MouseButtonEventArgs>* MouseDownEvent() { - return &mouse_down_event_; - } - // Raised when a mouse button is released in the control. - events::RoutedEvent<events::MouseButtonEventArgs>* MouseUpEvent() { - return &mouse_up_event_; - } - // Raised when a mouse button is pressed in the control and released in the - // control with mouse not leaving it between two operations. - events::RoutedEvent<events::MouseButtonEventArgs>* MouseClickEvent() { - return &mouse_click_event_; - } - events::RoutedEvent<events::MouseWheelEventArgs>* MouseWheelEvent() { - return &mouse_wheel_event_; - } - events::RoutedEvent<events::KeyEventArgs>* KeyDownEvent() { - return &key_down_event_; - } - events::RoutedEvent<events::KeyEventArgs>* KeyUpEvent() { - return &key_up_event_; - } - events::RoutedEvent<events::CharEventArgs>* CharEvent() { - return &char_event_; - } - events::RoutedEvent<events::FocusChangeEventArgs>* GainFocusEvent() { - return &gain_focus_event_; - } - events::RoutedEvent<events::FocusChangeEventArgs>* LoseFocusEvent() { - return &lose_focus_event_; - } - - private: - events::RoutedEvent<events::MouseEventArgs> mouse_enter_event_; - events::RoutedEvent<events::MouseEventArgs> mouse_leave_event_; - events::RoutedEvent<events::MouseEventArgs> mouse_move_event_; - events::RoutedEvent<events::MouseButtonEventArgs> mouse_down_event_; - events::RoutedEvent<events::MouseButtonEventArgs> mouse_up_event_; - events::RoutedEvent<events::MouseButtonEventArgs> mouse_click_event_; - events::RoutedEvent<events::MouseWheelEventArgs> mouse_wheel_event_; - - events::RoutedEvent<events::KeyEventArgs> key_down_event_; - events::RoutedEvent<events::KeyEventArgs> key_up_event_; - events::RoutedEvent<events::CharEventArgs> char_event_; - - events::RoutedEvent<events::FocusChangeEventArgs> gain_focus_event_; - events::RoutedEvent<events::FocusChangeEventArgs> lose_focus_event_; - - //*************** region: tree *************** - protected: - virtual void OnParentChanged(Control* old_parent, Control* new_parent); - virtual void OnAttachToWindow(Window* window); - virtual void OnDetachToWindow(Window* window); - - //*************** region: additional mouse event *************** - protected: - virtual void OnMouseClickBegin(MouseButton button); - virtual void OnMouseClickEnd(MouseButton button); - - private: - Window* window_ = nullptr; - Control* parent_ = nullptr; -}; -} // namespace cru::ui |