treeitem.cpp
author insilmaril
Wed, 04 Feb 2009 16:33:16 +0000
changeset 740 6dc0a20031f7
parent 739 3d43b46a8564
child 741 1b4d1ea6ea8c
permissions -rw-r--r--
started to rewrite first(), next()
insilmaril@725
     1
#include <QStringList>
insilmaril@725
     2
insilmaril@725
     3
#include "treeitem.h"
insilmaril@725
     4
insilmaril@725
     5
TreeItem::TreeItem(const QList<QVariant> &data, TreeItem *parent)
insilmaril@725
     6
{
insilmaril@725
     7
    parentItem = parent;
insilmaril@725
     8
    itemData = data;
insilmaril@726
     9
	lmo=NULL;
insilmaril@738
    10
insilmaril@738
    11
	branchOffset=0;
insilmaril@738
    12
	branchCount=0;
insilmaril@738
    13
	lastSelectedBranchNum=-1;
insilmaril@725
    14
}
insilmaril@725
    15
insilmaril@725
    16
TreeItem::~TreeItem()
insilmaril@725
    17
{
insilmaril@725
    18
    qDeleteAll(childItems);
insilmaril@725
    19
}
insilmaril@725
    20
insilmaril@725
    21
void TreeItem::appendChild(TreeItem *item)
insilmaril@725
    22
{
insilmaril@725
    23
    childItems.append(item);
insilmaril@738
    24
	if (item->type == Branch)
insilmaril@738
    25
	{
insilmaril@738
    26
		if (branchCount==0)
insilmaril@738
    27
			branchOffset=childItems.count()-1;
insilmaril@738
    28
		branchCount++;
insilmaril@738
    29
	}
insilmaril@725
    30
}
insilmaril@725
    31
insilmaril@727
    32
void TreeItem::removeChild(int row)
insilmaril@727
    33
{
insilmaril@727
    34
    if (row>=0)
insilmaril@727
    35
	{
insilmaril@727
    36
		delete (childItems.at(row) );
insilmaril@727
    37
		childItems.removeAt (row);
insilmaril@727
    38
	} else
insilmaril@727
    39
		qWarning ("TreeItem::removeChild tried to remove non existing item?!\n");
insilmaril@727
    40
}
insilmaril@727
    41
insilmaril@725
    42
TreeItem *TreeItem::child(int row)
insilmaril@725
    43
{
insilmaril@725
    44
    return childItems.value(row);
insilmaril@725
    45
}
insilmaril@725
    46
insilmaril@725
    47
int TreeItem::childCount() const
insilmaril@725
    48
{
insilmaril@725
    49
    return childItems.count();
insilmaril@725
    50
}
insilmaril@725
    51
insilmaril@725
    52
int TreeItem::columnCount() const
insilmaril@725
    53
{
insilmaril@725
    54
    return itemData.count();
insilmaril@725
    55
}
insilmaril@727
    56
int TreeItem::row() const
insilmaril@727
    57
{
insilmaril@727
    58
    if (parentItem)
insilmaril@727
    59
        return parentItem->childItems.indexOf(const_cast<TreeItem*>(this));
insilmaril@727
    60
insilmaril@727
    61
    return 0;
insilmaril@727
    62
}
insilmaril@727
    63
insilmaril@727
    64
int TreeItem::column() const
insilmaril@727
    65
{
insilmaril@727
    66
    return 0;
insilmaril@727
    67
}
insilmaril@727
    68
insilmaril@740
    69
int TreeItem::depth() 
insilmaril@740
    70
{
insilmaril@740
    71
	int d=-1;
insilmaril@740
    72
	TreeItem *ti=this;
insilmaril@740
    73
	while (ti!=NULL)
insilmaril@740
    74
	{
insilmaril@740
    75
		ti=ti->parent();
insilmaril@740
    76
		d++;
insilmaril@740
    77
	}
insilmaril@740
    78
	return d;
insilmaril@740
    79
}
insilmaril@740
    80
insilmaril@727
    81
TreeItem *TreeItem::parent()
insilmaril@727
    82
{
insilmaril@727
    83
    return parentItem;
insilmaril@727
    84
}
insilmaril@727
    85
insilmaril@725
    86
insilmaril@725
    87
QVariant TreeItem::data(int column) const
insilmaril@725
    88
{
insilmaril@725
    89
    return itemData.value(column);
insilmaril@725
    90
}
insilmaril@725
    91
insilmaril@726
    92
void TreeItem::setHeading (const QString s)
insilmaril@725
    93
{
insilmaril@726
    94
	itemData[0]=s;
insilmaril@726
    95
}
insilmaril@726
    96
insilmaril@726
    97
QString TreeItem::getHeading ()
insilmaril@726
    98
{
insilmaril@726
    99
	return itemData[0].toString();
insilmaril@726
   100
}
insilmaril@726
   101
insilmaril@726
   102
void TreeItem::setType(const Type t)
insilmaril@726
   103
{
insilmaril@726
   104
	type=t;
insilmaril@726
   105
	itemData[1]=getTypeName();
insilmaril@726
   106
}
insilmaril@726
   107
insilmaril@726
   108
TreeItem::Type TreeItem::getType()
insilmaril@726
   109
{
insilmaril@726
   110
	return type;
insilmaril@726
   111
}
insilmaril@726
   112
insilmaril@726
   113
QString TreeItem::getTypeName()
insilmaril@726
   114
{
insilmaril@726
   115
	switch (type)
insilmaril@726
   116
	{
insilmaril@726
   117
		case Undefined: return QString ("Undefined");
insilmaril@726
   118
		case MapCenter: return QString ("MapCenter");
insilmaril@726
   119
		case Branch: return QString ("Branch");
insilmaril@739
   120
		case Image: return QString ("Image");
insilmaril@726
   121
		default: return QString ("TreeItem::getTypeName no typename defined?!");
insilmaril@726
   122
	}
insilmaril@725
   123
}
insilmaril@725
   124
insilmaril@738
   125
TreeItem* TreeItem::getChildNum(const int &n)
insilmaril@738
   126
{
insilmaril@738
   127
	if (n>=0 && n<childItems.count() )
insilmaril@738
   128
		return childItems.at(n);
insilmaril@738
   129
	else
insilmaril@738
   130
		return NULL;
insilmaril@738
   131
}
insilmaril@738
   132
insilmaril@738
   133
TreeItem* TreeItem::getFirstBranch()
insilmaril@738
   134
{
insilmaril@738
   135
	if (branchCount>0)
insilmaril@738
   136
		return getBranchNum (branchOffset);
insilmaril@738
   137
	else
insilmaril@738
   138
		return NULL;
insilmaril@738
   139
}
insilmaril@738
   140
insilmaril@738
   141
TreeItem* TreeItem::getLastBranch()
insilmaril@738
   142
{
insilmaril@738
   143
	if (branchCount>0)
insilmaril@738
   144
		return getBranchNum (branchOffset + branchCount-1);
insilmaril@738
   145
	else
insilmaril@738
   146
		return NULL;
insilmaril@738
   147
}
insilmaril@738
   148
insilmaril@738
   149
insilmaril@738
   150
TreeItem* TreeItem::getBranchNum(const int &n)
insilmaril@738
   151
{
insilmaril@738
   152
	if (branchCount>0)
insilmaril@738
   153
		return getChildNum (branchOffset + n);
insilmaril@738
   154
	else
insilmaril@738
   155
		return NULL;
insilmaril@738
   156
}
insilmaril@738
   157
insilmaril@738
   158
void TreeItem::setLastSelectedBranch()
insilmaril@738
   159
{
insilmaril@738
   160
	if (parentItem)
insilmaril@738
   161
		parentItem->lastSelectedBranchNum=parentItem->childItems.indexOf(this);
insilmaril@738
   162
}
insilmaril@738
   163
insilmaril@738
   164
TreeItem* TreeItem::getLastSelectedBranch()
insilmaril@738
   165
{
insilmaril@738
   166
	return getBranchNum (lastSelectedBranchNum);
insilmaril@738
   167
}
insilmaril@738
   168
insilmaril@727
   169
LinkableMapObj* TreeItem::getLMO()	// FIXME VM should be unnecessary in the end
insilmaril@726
   170
{
insilmaril@726
   171
	return lmo;
insilmaril@726
   172
}
insilmaril@726
   173
insilmaril@726
   174
void TreeItem::setLMO(LinkableMapObj *l)
insilmaril@726
   175
{
insilmaril@726
   176
	lmo=l;
insilmaril@726
   177
}
insilmaril@726
   178