blob: 559bcd395b62f85d40c720edcdefd6660c5a62af (
plain)
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
/*
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version
2 of the License, or (at your option) any later version.
*/
#include <QVector>
#include <QHash>
#include "smtreeitem.h"
SmTreeItem::SmTreeItem(const QList<QVariant> &data, SmTreeItem *parent) : mData(data), mParent(parent) {}
SmTreeItem::SmTreeItem(int rows, SmTreeItem *parent) : mParent(parent){
for(int i = 0; i < rows; ++i){
mData << QVariant();
}
}
SmTreeItem::SmTreeItem(const SmTreeItem &other){
mParent = 0;
mData = other.mData;
}
SmTreeItem::~SmTreeItem(){
qDeleteAll(mChildren);
}
void SmTreeItem::appendChild(SmTreeItem *child){
mChildren.append(child);
}
SmTreeItem *SmTreeItem::child(int row) const{
if(row > -1 && row < mChildren.count()){
return mChildren.at(row);
}
return 0;
}
SmTreeItem *SmTreeItem::next() const{
int pos = row();
if(parent() == 0){
return 0;
}
if(pos + 1 < parent()->childCount()){
return parent()->child(pos + 1);
}
return parent()->next();
}
int SmTreeItem::childCount() const{
return mChildren.count();
}
int SmTreeItem::columnCount() const{
return mData.count();
}
int SmTreeItem::row() const{
if(mParent){
return mParent->mChildren.indexOf(const_cast<SmTreeItem*>(this));
}
return 0;
}
SmTreeItem *SmTreeItem::parent() const{
return mParent;
}
void SmTreeItem::setParent(SmTreeItem *parent){
mParent = parent;
}
QVariant SmTreeItem::data(int column) const{
return mData.at(column);
}
void SmTreeItem::setData(int column, const QVariant &data){
mData[column] = data;
}
bool SmTreeItem::insertChild(int where, SmTreeItem *child){
if((where < 0) || (where > mChildren.count())){
return false;
}
mChildren.insert(where, child);
return true;
}
bool SmTreeItem::removeChild(int where, bool deleteChild){
if((where < 0) || (where >= mChildren.count())){
return false;
}
SmTreeItem *child = mChildren.takeAt(where);
if(deleteChild){
delete child;
}
return true;
}
|