diff options
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 |