diff --git a/sample/treeView/appl/widget/BasicTree.cpp b/sample/treeView/appl/widget/BasicTree.cpp index 0335fcde..b183b70e 100644 --- a/sample/treeView/appl/widget/BasicTree.cpp +++ b/sample/treeView/appl/widget/BasicTree.cpp @@ -14,16 +14,22 @@ ETK_DECLARE_TYPE(appl::widget::BasicTree); appl::widget::BasicTree::BasicTree() { addObjectType("appl::widget::BasicTree"); setMouseLimit(1); - m_tree = NodeElement::create("root"); + m_tree = NodeElement::create(TreeElement("root", false, true)); for (size_t iii=0; iii<10; ++iii) { - auto elem_iii = NodeElement::create("elem_" + etk::toString(iii)); + auto elem_iii = NodeElement::create(TreeElement("elem_" + etk::toString(iii))); m_tree->addChild(elem_iii); for (size_t jjj=0; jjjaddChild(elem_iii_jjj); } } - m_flatTree.setRoot(m_tree); + m_flatTree.setRoot(m_tree, + [&](TreeElement* _value){ + return true; + }, + [&](TreeElement* _value){ + return _value.m_isExpand; + }); } appl::widget::BasicTree::~BasicTree() { @@ -41,11 +47,11 @@ ivec2 appl::widget::BasicTree::getMatrixSize() const { fluorine::Variant appl::widget::BasicTree::getData(int32_t _role, const ivec2& _pos) { auto elem = m_flatTree[_pos.y()]; - etk::String value = elem->getData(); + TreeElement& value = elem->getData(); switch (_role) { case ewol::widget::ListRole::Text: if (_pos.x() == 0) { - return value; + return value.m_display; } if (_pos.x() == 1) { //return etk::toString(countToRoot); diff --git a/sample/treeView/appl/widget/BasicTree.hpp b/sample/treeView/appl/widget/BasicTree.hpp index 7e27ff52..302e43c3 100644 --- a/sample/treeView/appl/widget/BasicTree.hpp +++ b/sample/treeView/appl/widget/BasicTree.hpp @@ -16,6 +16,18 @@ namespace appl { class BasicTree; using BasicTreeShared = ememory::SharedPtr; using BasicTreeWeak = ememory::WeakPtr; + class TreeElement { + public: + TreeElement(const etk::String& _display="", bool _isSelected = false, bool m_isExpand=false): + m_display(_display), + m_isSelected(_isSelected), + m_isExpand(_isExpand) { + + } + etk::String m_display; + bool m_isSelected = false; + bool m_isExpand = false; + } /** * @brief Generic display folder class. This widget display the content of a single folder : */ @@ -31,9 +43,8 @@ namespace appl { fluorine::Variant getData(int32_t _role, const ivec2& _pos) override; bool onItemEvent(int32_t _IdInput, enum gale::key::status _typeEvent, const ivec2& _pos, const vec2& _mousePosition) override; - using NodeElement = etk::TreeNode; - ememory::SharedPtr m_tree; - etk::FlatTree m_flatTree; + ememory::SharedPtr> m_tree; + etk::FlatTree m_flatTree; }; }; };