aboutsummaryrefslogtreecommitdiff
path: root/src/ui/control.hpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2019-04-04 17:12:25 +0800
committercrupest <crupest@outlook.com>2019-04-04 17:12:25 +0800
commita410e2048db6f5ef6fb50e401a59b4b98b979050 (patch)
tree500680c63b074e8c3eefd756fd6a1d0f41840c1a /src/ui/control.hpp
parentfcaf471275a67d718887430ee63a53890915c4c7 (diff)
downloadcru-a410e2048db6f5ef6fb50e401a59b4b98b979050.tar.gz
cru-a410e2048db6f5ef6fb50e401a59b4b98b979050.tar.bz2
cru-a410e2048db6f5ef6fb50e401a59b4b98b979050.zip
...
Diffstat (limited to 'src/ui/control.hpp')
-rw-r--r--src/ui/control.hpp134
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