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