diff options
author | crupest <crupest@outlook.com> | 2022-02-08 16:53:51 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-02-08 16:53:51 +0800 |
commit | 74bb9cd27242b9320f99ff4d2b50c3051576cc14 (patch) | |
tree | 744bac5799c593d1d6f81e7b09581bea626f2cde /include/cru/ui/components/Menu.hpp | |
parent | b90c398de829d1ba5329651d75bae82f5e4085fe (diff) | |
download | cru-74bb9cd27242b9320f99ff4d2b50c3051576cc14.tar.gz cru-74bb9cd27242b9320f99ff4d2b50c3051576cc14.tar.bz2 cru-74bb9cd27242b9320f99ff4d2b50c3051576cc14.zip |
...
Diffstat (limited to 'include/cru/ui/components/Menu.hpp')
-rw-r--r-- | include/cru/ui/components/Menu.hpp | 107 |
1 files changed, 0 insertions, 107 deletions
diff --git a/include/cru/ui/components/Menu.hpp b/include/cru/ui/components/Menu.hpp deleted file mode 100644 index 9b60eb02..00000000 --- a/include/cru/ui/components/Menu.hpp +++ /dev/null @@ -1,107 +0,0 @@ -#pragma once -#include "Component.hpp" -#include "cru/common/Base.hpp" -#include "cru/ui/controls/Button.hpp" -#include "cru/ui/controls/Control.hpp" -#include "cru/ui/controls/FlexLayout.hpp" -#include "cru/ui/controls/Popup.hpp" -#include "cru/ui/controls/TextBlock.hpp" - -#include <functional> -#include <vector> - -namespace cru::ui::components { -class CRU_UI_API MenuItem : public Component { - public: - MenuItem(); - explicit MenuItem(String text); - - CRU_DELETE_COPY(MenuItem) - CRU_DELETE_MOVE(MenuItem) - - ~MenuItem(); - - public: - controls::Control* GetRootControl() override { return container_; } - - void SetText(String text); - - void SetOnClick(std::function<void()> on_click) { - on_click_ = std::move(on_click); - } - - private: - controls::Button* container_; - controls::TextBlock* text_; - std::function<void()> on_click_; -}; - -class CRU_UI_API Menu : public Component { - public: - Menu(); - - CRU_DELETE_COPY(Menu) - CRU_DELETE_MOVE(Menu) - - ~Menu(); - - public: - controls::Control* GetRootControl() override { return container_; } - - gsl::index GetItemCount() const { - return static_cast<gsl::index>(items_.size()); - } - - void AddItem(Component* component) { AddItem(component, GetItemCount()); } - void AddItem(Component* component, gsl::index index); - Component* RemoveItem(gsl::index index); - void ClearItems(); - - void AddTextItem(String text, std::function<void()> on_click) { - AddTextItem(std::move(text), GetItemCount(), std::move(on_click)); - } - void AddTextItem(String text, Index index, std::function<void()> on_click); - - void SetOnItemClick(std::function<void(Index)> on_item_click) { - on_item_click_ = std::move(on_item_click); - } - - private: - controls::FlexLayout* container_; - std::vector<Component*> items_; - - std::function<void(Index)> on_item_click_; -}; - -class CRU_UI_API PopupMenu : public Component { - public: - explicit PopupMenu(controls::Control* attached_control = nullptr); - - CRU_DELETE_COPY(PopupMenu) - CRU_DELETE_MOVE(PopupMenu) - - ~PopupMenu(); - - public: - controls::Control* GetRootControl() override; - - controls::Popup* GetPopup() { return popup_; } - Menu* GetMenu() { return menu_; } - - // position relative to screen left top. - void SetPosition(const Point& position); - void Show(); - // position relative to screen left top. - void Show(const Point& position) { - SetPosition(position); - Show(); - } - void Close(); - - private: - controls::Control* attached_control_; - - controls::Popup* popup_; - Menu* menu_; -}; -} // namespace cru::ui::components |