diff options
author | crupest <crupest@outlook.com> | 2022-02-09 22:29:17 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-02-09 22:29:17 +0800 |
commit | e18c4fb46d7913f337cc25b9a6e3a25359c3f10a (patch) | |
tree | ca0d2ba0477af904c2b3ccc0f1b4ea5d3c101dc0 /include/cru/ui/controls | |
parent | 1cbbad7166ca3dad08f947aeea5d7efc197bd2f3 (diff) | |
download | cru-e18c4fb46d7913f337cc25b9a6e3a25359c3f10a.tar.gz cru-e18c4fb46d7913f337cc25b9a6e3a25359c3f10a.tar.bz2 cru-e18c4fb46d7913f337cc25b9a6e3a25359c3f10a.zip |
...
Diffstat (limited to 'include/cru/ui/controls')
-rw-r--r-- | include/cru/ui/controls/TreeView.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/include/cru/ui/controls/TreeView.h b/include/cru/ui/controls/TreeView.h new file mode 100644 index 00000000..2e782ee0 --- /dev/null +++ b/include/cru/ui/controls/TreeView.h @@ -0,0 +1,40 @@ +#pragma once +#include "Control.h" + +namespace cru::ui::controls { +class TreeView; + +class CRU_UI_API TreeViewItem : public Object { + friend TreeView; + + private: + TreeViewItem(TreeView* tree_view, TreeViewItem* parent); + + public: + CRU_DELETE_COPY(TreeViewItem) + CRU_DELETE_MOVE(TreeViewItem) + + ~TreeViewItem() override; + + TreeView* GetTreeView() { return tree_view_; } + TreeViewItem* GetParent() { return parent_; } + + const std::vector<TreeViewItem*>& GetChildren() const { return children_; } + Index GetChildCount() const { return children_.size(); } + TreeViewItem* GetChildAt(Index index) { + Expects(index >= 0 && index < children_.size()); + return children_[index]; + } + + TreeViewItem* AddItem(Index position); + void RemoveItem(Index position); + + private: + TreeView* tree_view_; + TreeViewItem* parent_; + std::vector<TreeViewItem*> children_; + + Control* control_; +}; + +} // namespace cru::ui::controls |