treeitem.cpp
changeset 790 133e2ed6b9c5
parent 788 78ba80b54bc4
child 791 f1006de05c54
     1.1 --- a/treeitem.cpp	Mon Aug 24 14:39:07 2009 +0000
     1.2 +++ b/treeitem.cpp	Thu Sep 03 08:52:00 2009 +0000
     1.3 @@ -1,11 +1,13 @@
     1.4  #include <iostream>
     1.5  #include <QStringList>
     1.6  
     1.7 -#include "treeitem.h"
     1.8 -
     1.9 +#include "attributeitem.h"
    1.10  #include "branchobj.h"
    1.11  #include "branchitem.h"
    1.12 +#include "treeitem.h"
    1.13  #include "vymmodel.h"
    1.14 +#include "xlinkitem.h"
    1.15 +#include "xlinkobj.h"
    1.16  
    1.17  using namespace std;
    1.18  
    1.19 @@ -53,6 +55,9 @@
    1.20  			case TreeItem::Attribute:
    1.21  				delete (AttributeItem*)ti;
    1.22  				break;
    1.23 +			case TreeItem::XLink:
    1.24 +				delete (XLinkItem*)ti;
    1.25 +				break;
    1.26  			default:
    1.27  				delete ti;
    1.28  				break;
    1.29 @@ -74,6 +79,9 @@
    1.30  	attributeCounter=0;
    1.31  	attributeOffset=0;
    1.32  
    1.33 +	xlinkCounter=0;
    1.34 +	xlinkOffset=0;
    1.35 +
    1.36  	note.setNote(""); 
    1.37  	// note.setFontHint (textEditor->getFontHintDefault() );	//FIXME-3
    1.38  	// isNoteInEditor=false;
    1.39 @@ -114,6 +122,7 @@
    1.40  	switch (item->type)
    1.41  	{
    1.42  		case Attribute: return attributeOffset + attributeCounter;
    1.43 +		case XLink: return xlinkOffset + xlinkCounter;
    1.44  		case Image: return imageOffset + imageCounter;
    1.45  		case MapCenter: return branchOffset + branchCounter;
    1.46  		case Branch: return branchOffset + branchCounter;
    1.47 @@ -132,6 +141,15 @@
    1.48  		// attribute are on top of list
    1.49  		childItems.insert (attributeCounter,item);
    1.50  		attributeCounter++;
    1.51 +		xlinkOffset++;
    1.52 +		imageOffset++;
    1.53 +		branchOffset++;
    1.54 +	}
    1.55 +
    1.56 +	if (item->type == XLink)
    1.57 +	{
    1.58 +		childItems.insert (xlinkCounter+xlinkOffset,item);
    1.59 +		xlinkCounter++;
    1.60  		imageOffset++;
    1.61  		branchOffset++;
    1.62  	}
    1.63 @@ -166,6 +184,13 @@
    1.64  		if (childItems.at(row)->type==Attribute)
    1.65  		{
    1.66  			attributeCounter--;
    1.67 +			xlinkOffset--;
    1.68 +			imageOffset--;
    1.69 +			branchOffset--;
    1.70 +		}	
    1.71 +		if (childItems.at(row)->type==XLink)
    1.72 +		{
    1.73 +			xlinkCounter--;
    1.74  			imageOffset--;
    1.75  			branchOffset--;
    1.76  		}	
    1.77 @@ -226,10 +251,9 @@
    1.78      return imageCounter; 
    1.79  }
    1.80  
    1.81 -int TreeItem::xlinkCount() const // FIXME-2 check if xlinks are stored in a different way (global to model?)
    1.82 +int TreeItem::xlinkCount() const
    1.83  {
    1.84 -	int xlinkCounter=0;
    1.85 -    return xlinkCounter; // FIXME-1 xlinkCounter needs to be calculated...
    1.86 +    return xlinkCounter; 
    1.87  }
    1.88  
    1.89  int TreeItem::attributeCount() const 
    1.90 @@ -283,6 +307,7 @@
    1.91  		case Branch: return parentItem->childItems.indexOf (this) - parentItem->branchOffset;
    1.92  		case Image: return parentItem->childItems.indexOf (this) - parentItem->imageOffset;
    1.93  		case Attribute: return parentItem->childItems.indexOf (this) - parentItem->attributeOffset;
    1.94 +		case XLink: return parentItem->childItems.indexOf (this) - parentItem->xlinkOffset;
    1.95  		default: return -1;
    1.96  	}
    1.97  }
    1.98 @@ -297,6 +322,7 @@
    1.99  		case Branch: return childItems.indexOf (item) - branchOffset;
   1.100  		case Image: return parentItem->childItems.indexOf (item) - imageOffset;
   1.101  		case Attribute: return parentItem->childItems.indexOf (item) - attributeOffset;
   1.102 +		case XLink: return parentItem->childItems.indexOf (item) - xlinkOffset;
   1.103  		default: return -1;
   1.104  	}
   1.105  }
   1.106 @@ -327,6 +353,7 @@
   1.107  		case Branch: return QString ("Branch");
   1.108  		case Image: return QString ("Image");
   1.109  		case Attribute: return QString ("Attribute");
   1.110 +		case XLink: return QString ("XLink");
   1.111  		default: return QString ("TreeItem::getTypeName no typename defined?!");
   1.112  	}
   1.113  }
   1.114 @@ -530,7 +557,6 @@
   1.115  {
   1.116  	switch (type)
   1.117  	{
   1.118 -		case Undefined: return false;
   1.119  		case MapCenter: 
   1.120  		case Branch: 
   1.121  			if (!parentItem) return false;
   1.122 @@ -539,7 +565,6 @@
   1.123  			else
   1.124  				return false;
   1.125  			break;	
   1.126 -		case Image: return false;
   1.127  		default: return false;
   1.128  	}
   1.129  }
   1.130 @@ -623,6 +648,33 @@
   1.131  		return NULL;
   1.132  }
   1.133  
   1.134 +XLinkItem* TreeItem::getXLinkNum (const int &n)	
   1.135 +{
   1.136 +	if (n>=0 && n<xlinkCounter )
   1.137 +		return (XLinkItem*)getChildNum (xlinkOffset +n);
   1.138 +	else
   1.139 +		return NULL;
   1.140 +}
   1.141 +
   1.142 +
   1.143 +XLinkObj* TreeItem::getXLinkObjNum (const int &n)	
   1.144 +{
   1.145 +	if (xlinkCounter>0 )
   1.146 +	{
   1.147 +		XLinkItem *xli=getXLinkNum (n);
   1.148 +		if (!xli) return NULL;
   1.149 +		if (xli->isBegin() )
   1.150 +			return (XLinkObj*)(xli->getLMO());
   1.151 +		else
   1.152 +		{
   1.153 +			xli=xli->getPartnerXLink();
   1.154 +			if (!xli) return NULL;
   1.155 +			return (XLinkObj*)(xli->getLMO());
   1.156 +		}
   1.157 +	}
   1.158 +	return NULL;
   1.159 +}
   1.160 +
   1.161  
   1.162  void TreeItem::setHideTmp (HideTmpMode mode)  //FIXME-2
   1.163  {