treeitem.cpp
author insilmaril
Wed, 04 Feb 2009 11:52:52 +0000
changeset 739 3d43b46a8564
parent 738 716a777c1c98
child 740 6dc0a20031f7
permissions -rw-r--r--
Images are now also added to model
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@739
   108
		case Image: return QString ("Image");
insilmaril@726
   109
		default: return QString ("TreeItem::getTypeName no typename defined?!");
insilmaril@726
   110
	}
insilmaril@725
   111
}
insilmaril@725
   112
insilmaril@738
   113
TreeItem* TreeItem::getChildNum(const int &n)
insilmaril@738
   114
{
insilmaril@738
   115
	if (n>=0 && n<childItems.count() )
insilmaril@738
   116
		return childItems.at(n);
insilmaril@738
   117
	else
insilmaril@738
   118
		return NULL;
insilmaril@738
   119
}
insilmaril@738
   120
insilmaril@738
   121
TreeItem* TreeItem::getFirstBranch()
insilmaril@738
   122
{
insilmaril@738
   123
	if (branchCount>0)
insilmaril@738
   124
		return getBranchNum (branchOffset);
insilmaril@738
   125
	else
insilmaril@738
   126
		return NULL;
insilmaril@738
   127
}
insilmaril@738
   128
insilmaril@738
   129
TreeItem* TreeItem::getLastBranch()
insilmaril@738
   130
{
insilmaril@738
   131
	if (branchCount>0)
insilmaril@738
   132
		return getBranchNum (branchOffset + branchCount-1);
insilmaril@738
   133
	else
insilmaril@738
   134
		return NULL;
insilmaril@738
   135
}
insilmaril@738
   136
insilmaril@738
   137
insilmaril@738
   138
TreeItem* TreeItem::getBranchNum(const int &n)
insilmaril@738
   139
{
insilmaril@738
   140
	if (branchCount>0)
insilmaril@738
   141
		return getChildNum (branchOffset + n);
insilmaril@738
   142
	else
insilmaril@738
   143
		return NULL;
insilmaril@738
   144
}
insilmaril@738
   145
insilmaril@738
   146
void TreeItem::setLastSelectedBranch()
insilmaril@738
   147
{
insilmaril@738
   148
	if (parentItem)
insilmaril@738
   149
		parentItem->lastSelectedBranchNum=parentItem->childItems.indexOf(this);
insilmaril@738
   150
}
insilmaril@738
   151
insilmaril@738
   152
TreeItem* TreeItem::getLastSelectedBranch()
insilmaril@738
   153
{
insilmaril@738
   154
	return getBranchNum (lastSelectedBranchNum);
insilmaril@738
   155
}
insilmaril@738
   156
insilmaril@727
   157
LinkableMapObj* TreeItem::getLMO()	// FIXME VM should be unnecessary in the end
insilmaril@726
   158
{
insilmaril@726
   159
	return lmo;
insilmaril@726
   160
}
insilmaril@726
   161
insilmaril@726
   162
void TreeItem::setLMO(LinkableMapObj *l)
insilmaril@726
   163
{
insilmaril@726
   164
	lmo=l;
insilmaril@726
   165
}
insilmaril@726
   166