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 {