[DEV] add subElement

This commit is contained in:
Edouard DUPIN 2018-08-20 22:25:50 +02:00
parent 0b2e9d4129
commit 0d0cb02b85
2 changed files with 26 additions and 9 deletions

View File

@ -14,16 +14,22 @@ ETK_DECLARE_TYPE(appl::widget::BasicTree);
appl::widget::BasicTree::BasicTree() { appl::widget::BasicTree::BasicTree() {
addObjectType("appl::widget::BasicTree"); addObjectType("appl::widget::BasicTree");
setMouseLimit(1); setMouseLimit(1);
m_tree = NodeElement::create("root"); m_tree = NodeElement::create(TreeElement("root", false, true));
for (size_t iii=0; iii<10; ++iii) { 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); m_tree->addChild(elem_iii);
for (size_t jjj=0; jjj<iii; ++jjj) { for (size_t jjj=0; jjj<iii; ++jjj) {
auto elem_iii_jjj = NodeElement::create("elem_" + etk::toString(iii) + "____" + etk::toString(jjj)); auto elem_iii_jjj = NodeElement::create(TreeElement("elem_" + etk::toString(iii) + "____" + etk::toString(jjj)));
elem_iii->addChild(elem_iii_jjj); elem_iii->addChild(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() { 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) { fluorine::Variant appl::widget::BasicTree::getData(int32_t _role, const ivec2& _pos) {
auto elem = m_flatTree[_pos.y()]; auto elem = m_flatTree[_pos.y()];
etk::String value = elem->getData(); TreeElement& value = elem->getData();
switch (_role) { switch (_role) {
case ewol::widget::ListRole::Text: case ewol::widget::ListRole::Text:
if (_pos.x() == 0) { if (_pos.x() == 0) {
return value; return value.m_display;
} }
if (_pos.x() == 1) { if (_pos.x() == 1) {
//return etk::toString(countToRoot); //return etk::toString(countToRoot);

View File

@ -16,6 +16,18 @@ namespace appl {
class BasicTree; class BasicTree;
using BasicTreeShared = ememory::SharedPtr<appl::widget::BasicTree>; using BasicTreeShared = ememory::SharedPtr<appl::widget::BasicTree>;
using BasicTreeWeak = ememory::WeakPtr<appl::widget::BasicTree>; using BasicTreeWeak = ememory::WeakPtr<appl::widget::BasicTree>;
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 : * @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; 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; bool onItemEvent(int32_t _IdInput, enum gale::key::status _typeEvent, const ivec2& _pos, const vec2& _mousePosition) override;
using NodeElement = etk::TreeNode<etk::String>; ememory::SharedPtr<etk::TreeNode<NodeElement>> m_tree;
ememory::SharedPtr<NodeElement> m_tree; etk::FlatTree<TreeElement> m_flatTree;
etk::FlatTree<etk::String> m_flatTree;
}; };
}; };
}; };