HAL
base_tree_item.cpp
Go to the documentation of this file.
2 #include <iostream>
3 
4 namespace hal
5 {
6  BaseTreeItem::BaseTreeItem() : mParent(nullptr)
7  {
8 
9  }
10 
11 
13  {
14  for(BaseTreeItem* item : mChildren)
15  delete item;
16  }
17 
18 
20  {
21  return mParent;
22  }
23 
25  {
26  mParent = parent;
27  }
28 
30  {
31  return (row < 0 || row >= mChildren.size()) ? nullptr : mChildren.at(row);
32  }
33 
35  {
36  return mChildren;
37  }
38 
40  {
41  child->setParent(this);
42  mChildren.append(child);
43  }
44 
45  void BaseTreeItem::insertChild(int index, BaseTreeItem *child)
46  {
47  child->setParent(this);
48  if (index > mChildren.size())
49  index = mChildren.size();
50  mChildren.insert(index, child);
51  }
52 
54  {
55  if(row < 0 || row >= mChildren.size())
56  return nullptr;
57  else
58  {
59  BaseTreeItem* itemToRemove = mChildren.at(row);
60  mChildren.removeAt(row);
61  return itemToRemove;
62  }
63  }
64 
66  {
67  int index = mChildren.indexOf(child);
68  if(index == -1)
69  return false;
70  else
71  {
72  mChildren.removeAt(index);
73  return true;
74  }
75  }
76 
78  {
79  return mChildren.size();
80  }
81 
83  {
84  int index = -1;
85  for(int i = 0; i < mChildren.size(); i++)
86  {
87  if(mChildren.at(i) == child)
88  {
89  index = i;
90  break;
91  }
92  }
93  return index;
94  }
95 
97  {
98  if(!mParent)
99  return -1;
100 
101  return mParent->getRowForChild(this);
102  }
103 
104  QVariant RootTreeItem::getData(int column) const
105  {
106  if (column <= mHeaderLabels.size())
107  return mHeaderLabels.at(column);
108  return QVariant();
109  }
110 
112  {
113  mHeaderLabels.clear();
114  for (int i = 0; i < data.length(); i++) {
115  mHeaderLabels[i] = data[i].toString();
116  }
117  }
118 
119  void RootTreeItem::setDataAtColumn(int column, QVariant &data)
120  {
121  while (column >= mHeaderLabels.size())
122  mHeaderLabels << QString();
123  mHeaderLabels[column] = data.toString();
124  }
125 
127  {
128 
129  }
130 
131 }
(Future) Base class for all tree models related to the details widget.
virtual int getRowForChild(const BaseTreeItem *child) const
virtual QList< BaseTreeItem * > getChildren() const
virtual bool removeChild(BaseTreeItem *child)
BaseTreeItem * mParent
virtual BaseTreeItem * getParent() const
virtual int getChildCount() const
virtual void appendChild(BaseTreeItem *child)
virtual BaseTreeItem * removeChildAtPos(int row)
virtual void setParent(BaseTreeItem *parent)
virtual int getOwnRow()
virtual void insertChild(int index, BaseTreeItem *child)
virtual BaseTreeItem * getChild(int row) const
QList< BaseTreeItem * > mChildren
QVariant getData(int column) const override
void setDataAtColumn(int column, QVariant &data) override
void appendData(QVariant data) override
void setData(QList< QVariant > data) override
const T & at(int i) const const
void clear()
int size() const const