summaryrefslogtreecommitdiffstats
path: root/smtreeitem.cpp
blob: ed9f73e2b1f0c9fc4bf7814b45fb44b902c0e1b1 (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
101
/*
  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 "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){
	mData = other.mData;
	if(other.mParent){
		mParent = new SmTreeItem(*mParent);
	}else{
		mParent = 0;
	}
	foreach(SmTreeItem *child, other.mChildren){
		mChildren << new SmTreeItem(*child);
	}
}

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;
}

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;
}

QVariant SmTreeItem::foregroundColor() const{
    return mForegroundColor;
}

void SmTreeItem::setForegroundColor(const QVariant &data){
    mForegroundColor = 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;
}