treeitem.cpp
author insilmaril
Fri, 30 Jan 2009 09:14:12 +0000
changeset 738 716a777c1c98
parent 727 96402b172173
child 739 3d43b46a8564
permissions -rw-r--r--
fixes for selecting branches
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@727
    69
TreeItem *TreeItem::parent()
insilmaril@727
    70
{
insilmaril@727
    71
    return parentItem;
insilmaril@727
    72
}
insilmaril@727
    73
insilmaril@725
    74
insilmaril@725
    75
QVariant TreeItem::data(int column) const
insilmaril@725
    76
{
insilmaril@725
    77
    return itemData.value(column);
insilmaril@725
    78
}
insilmaril@725
    79
insilmaril@726
    80
void TreeItem::setHeading (const QString s)
insilmaril@725
    81
{
insilmaril@726
    82
	itemData[0]=s;
insilmaril@726
    83
}
insilmaril@726
    84
insilmaril@726
    85
QString TreeItem::getHeading ()
insilmaril@726
    86
{
insilmaril@726
    87
	return itemData[0].toString();
insilmaril@726
    88
}
insilmaril@726
    89
insilmaril@726
    90
void TreeItem::setType(const Type t)
insilmaril@726
    91
{
insilmaril@726
    92
	type=t;
insilmaril@726
    93
	itemData[1]=getTypeName();
insilmaril@726
    94
}
insilmaril@726
    95
insilmaril@726
    96
TreeItem::Type TreeItem::getType()
insilmaril@726
    97
{
insilmaril@726
    98
	return type;
insilmaril@726
    99
}
insilmaril@726
   100
insilmaril@726
   101
QString TreeItem::getTypeName()
insilmaril@726
   102
{
insilmaril@726
   103
	switch (type)
insilmaril@726
   104
	{
insilmaril@726
   105
		case Undefined: return QString ("Undefined");
insilmaril@726
   106
		case MapCenter: return QString ("MapCenter");
insilmaril@726
   107
		case Branch: return QString ("Branch");
insilmaril@726
   108
		default: return QString ("TreeItem::getTypeName no typename defined?!");
insilmaril@726
   109
	}
insilmaril@725
   110
}
insilmaril@725
   111
insilmaril@738
   112
TreeItem* TreeItem::getChildNum(const int &n)
insilmaril@738
   113
{
insilmaril@738
   114
	if (n>=0 && n<childItems.count() )
insilmaril@738
   115
		return childItems.at(n);
insilmaril@738
   116
	else
insilmaril@738
   117
		return NULL;
insilmaril@738
   118
}
insilmaril@738
   119
insilmaril@738
   120
TreeItem* TreeItem::getFirstBranch()
insilmaril@738
   121
{
insilmaril@738
   122
	if (branchCount>0)
insilmaril@738
   123
		return getBranchNum (branchOffset);
insilmaril@738
   124
	else
insilmaril@738
   125
		return NULL;
insilmaril@738
   126
}
insilmaril@738
   127
insilmaril@738
   128
TreeItem* TreeItem::getLastBranch()
insilmaril@738
   129
{
insilmaril@738
   130
	if (branchCount>0)
insilmaril@738
   131
		return getBranchNum (branchOffset + branchCount-1);
insilmaril@738
   132
	else
insilmaril@738
   133
		return NULL;
insilmaril@738
   134
}
insilmaril@738
   135
insilmaril@738
   136
insilmaril@738
   137
TreeItem* TreeItem::getBranchNum(const int &n)
insilmaril@738
   138
{
insilmaril@738
   139
	if (branchCount>0)
insilmaril@738
   140
		return getChildNum (branchOffset + n);
insilmaril@738
   141
	else
insilmaril@738
   142
		return NULL;
insilmaril@738
   143
}
insilmaril@738
   144
insilmaril@738
   145
void TreeItem::setLastSelectedBranch()
insilmaril@738
   146
{
insilmaril@738
   147
	if (parentItem)
insilmaril@738
   148
		parentItem->lastSelectedBranchNum=parentItem->childItems.indexOf(this);
insilmaril@738
   149
}
insilmaril@738
   150
insilmaril@738
   151
TreeItem* TreeItem::getLastSelectedBranch()
insilmaril@738
   152
{
insilmaril@738
   153
	return getBranchNum (lastSelectedBranchNum);
insilmaril@738
   154
}
insilmaril@738
   155
insilmaril@727
   156
LinkableMapObj* TreeItem::getLMO()	// FIXME VM should be unnecessary in the end
insilmaril@726
   157
{
insilmaril@726
   158
	return lmo;
insilmaril@726
   159
}
insilmaril@726
   160
insilmaril@726
   161
void TreeItem::setLMO(LinkableMapObj *l)
insilmaril@726
   162
{
insilmaril@726
   163
	lmo=l;
insilmaril@726
   164
}
insilmaril@726
   165