diff -r d85834ad8c54 -r 133e2ed6b9c5 treeitem.cpp --- a/treeitem.cpp Mon Aug 24 14:39:07 2009 +0000 +++ b/treeitem.cpp Thu Sep 03 08:52:00 2009 +0000 @@ -1,11 +1,13 @@ #include #include -#include "treeitem.h" - +#include "attributeitem.h" #include "branchobj.h" #include "branchitem.h" +#include "treeitem.h" #include "vymmodel.h" +#include "xlinkitem.h" +#include "xlinkobj.h" using namespace std; @@ -53,6 +55,9 @@ case TreeItem::Attribute: delete (AttributeItem*)ti; break; + case TreeItem::XLink: + delete (XLinkItem*)ti; + break; default: delete ti; break; @@ -74,6 +79,9 @@ attributeCounter=0; attributeOffset=0; + xlinkCounter=0; + xlinkOffset=0; + note.setNote(""); // note.setFontHint (textEditor->getFontHintDefault() ); //FIXME-3 // isNoteInEditor=false; @@ -114,6 +122,7 @@ switch (item->type) { case Attribute: return attributeOffset + attributeCounter; + case XLink: return xlinkOffset + xlinkCounter; case Image: return imageOffset + imageCounter; case MapCenter: return branchOffset + branchCounter; case Branch: return branchOffset + branchCounter; @@ -132,6 +141,15 @@ // attribute are on top of list childItems.insert (attributeCounter,item); attributeCounter++; + xlinkOffset++; + imageOffset++; + branchOffset++; + } + + if (item->type == XLink) + { + childItems.insert (xlinkCounter+xlinkOffset,item); + xlinkCounter++; imageOffset++; branchOffset++; } @@ -166,6 +184,13 @@ if (childItems.at(row)->type==Attribute) { attributeCounter--; + xlinkOffset--; + imageOffset--; + branchOffset--; + } + if (childItems.at(row)->type==XLink) + { + xlinkCounter--; imageOffset--; branchOffset--; } @@ -226,10 +251,9 @@ return imageCounter; } -int TreeItem::xlinkCount() const // FIXME-2 check if xlinks are stored in a different way (global to model?) +int TreeItem::xlinkCount() const { - int xlinkCounter=0; - return xlinkCounter; // FIXME-1 xlinkCounter needs to be calculated... + return xlinkCounter; } int TreeItem::attributeCount() const @@ -283,6 +307,7 @@ case Branch: return parentItem->childItems.indexOf (this) - parentItem->branchOffset; case Image: return parentItem->childItems.indexOf (this) - parentItem->imageOffset; case Attribute: return parentItem->childItems.indexOf (this) - parentItem->attributeOffset; + case XLink: return parentItem->childItems.indexOf (this) - parentItem->xlinkOffset; default: return -1; } } @@ -297,6 +322,7 @@ case Branch: return childItems.indexOf (item) - branchOffset; case Image: return parentItem->childItems.indexOf (item) - imageOffset; case Attribute: return parentItem->childItems.indexOf (item) - attributeOffset; + case XLink: return parentItem->childItems.indexOf (item) - xlinkOffset; default: return -1; } } @@ -327,6 +353,7 @@ case Branch: return QString ("Branch"); case Image: return QString ("Image"); case Attribute: return QString ("Attribute"); + case XLink: return QString ("XLink"); default: return QString ("TreeItem::getTypeName no typename defined?!"); } } @@ -530,7 +557,6 @@ { switch (type) { - case Undefined: return false; case MapCenter: case Branch: if (!parentItem) return false; @@ -539,7 +565,6 @@ else return false; break; - case Image: return false; default: return false; } } @@ -623,6 +648,33 @@ return NULL; } +XLinkItem* TreeItem::getXLinkNum (const int &n) +{ + if (n>=0 && n0 ) + { + XLinkItem *xli=getXLinkNum (n); + if (!xli) return NULL; + if (xli->isBegin() ) + return (XLinkObj*)(xli->getLMO()); + else + { + xli=xli->getPartnerXLink(); + if (!xli) return NULL; + return (XLinkObj*)(xli->getLMO()); + } + } + return NULL; +} + void TreeItem::setHideTmp (HideTmpMode mode) //FIXME-2 {