-
Notifications
You must be signed in to change notification settings - Fork 0
/
treeitem.cpp
66 lines (53 loc) · 2.35 KB
/
treeitem.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "treeitem.h"
// TreeItem::TreeItem(const QVector<QVariant>& data, TreeItem* parent)
// : itemData(data)
// , parentItem(parent) { }
TreeItem::~TreeItem() { qDeleteAll(childItems); }
QVariant TreeItem::data(int column) const {
if(column < 0 || column >= itemData.size()) return QVariant();
return itemData.at(column);
}
TreeItem* TreeItem::child(int number) {
if(number < 0 || number >= childItems.size()) return nullptr;
return childItems.at(number);
}
TreeItem* TreeItem::parent() { return parentItem; }
// bool TreeItem::insertChildren(int position, int count, int columns) {
// if(position < 0 || position > childItems.size()) return false;
// for(int row = 0; row < count; ++row) {
// QVector<QVariant> data(columns);
// TreeItem* item = new TreeItem(data, this);
// childItems.insert(position, item);
// }
// return true;
// }
// bool TreeItem::insertColumns(int position, int columns) {
// if(position < 0 || position > itemData.size()) return false;
// for(int column = 0; column < columns; ++column) itemData.insert(position, QVariant());
// for(TreeItem* child: std::as_const(childItems)) child->insertColumns(position, columns);
// return true;
// }
// bool TreeItem::removeChildren(int position, int count) {
// if(position < 0 || position + count > childItems.size()) return false;
// for(int row = 0; row < count; ++row) delete childItems.takeAt(position);
// return true;
// }
// bool TreeItem::removeColumns(int position, int columns) {
// if(position < 0 || position + columns > itemData.size()) return false;
// for(int column = 0; column < columns; ++column) itemData.erase(itemData.begin() + position);
// for(TreeItem* child: std::as_const(childItems)) child->removeColumns(position, columns);
// return true;
// }
bool TreeItem::setData(int column, const QVariant& value) {
if(column < 0 || column >= itemData.size()) return false;
itemData[column] = value;
return true;
}
int TreeItem::childCount() const { return childItems.size(); }
int TreeItem::childNumber() const {
if(parentItem)
if(auto it = std::ranges::find(parentItem->childItems, this); it != parentItem->childItems.end())
return std::distance(parentItem->childItems.begin(), it);
return 0;
}
int TreeItem::columnCount() const { return itemData.size(); }