1 module treeitem; 2 3 import dqml.qvariant; 4 5 class TreeItem 6 { 7 public: 8 this(QVariant[] data, TreeItem parentItem = null) 9 { 10 m_parentItem = parentItem; 11 m_itemData = data; 12 } 13 14 ~this() 15 { 16 foreach (c; m_childItems) 17 destroy(c); 18 } 19 20 void appendChild(TreeItem child) 21 { 22 m_childItems ~= child; 23 } 24 25 TreeItem child(int row) 26 { 27 return m_childItems[row]; 28 } 29 30 int childCount() const 31 { 32 return cast(int) m_childItems.length; 33 } 34 35 int columnCount() const 36 { 37 return cast(int) m_itemData.length; 38 } 39 40 QVariant data(int column) 41 { 42 return m_itemData[column]; 43 } 44 45 int row() const 46 { 47 import std.algorithm : countUntil; 48 if (m_parentItem) 49 return cast(int) m_parentItem.m_childItems.countUntil(this); 50 51 return 0; 52 } 53 54 TreeItem parentItem() 55 { 56 return m_parentItem; 57 } 58 59 private: 60 TreeItem[] m_childItems; 61 QVariant[] m_itemData; 62 TreeItem m_parentItem; 63 }