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 }