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