From e18c4fb46d7913f337cc25b9a6e3a25359c3f10a Mon Sep 17 00:00:00 2001 From: crupest Date: Wed, 9 Feb 2022 22:29:17 +0800 Subject: ... --- include/cru/ui/controls/TreeView.h | 40 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 include/cru/ui/controls/TreeView.h (limited to 'include/cru/ui/controls') 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& 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 children_; + + Control* control_; +}; + +} // namespace cru::ui::controls -- cgit v1.2.3