1.1 --- a/treeitem.cpp Wed Jun 03 20:37:17 2009 +0000
1.2 +++ b/treeitem.cpp Mon Jun 08 11:36:56 2009 +0000
1.3 @@ -11,7 +11,15 @@
1.4
1.5 extern FlagRow* standardFlagsMaster;
1.6
1.7 -TreeItem::TreeItem(const QList<QVariant> &data, TreeItem *parent):MapItem()
1.8 +TreeItem::TreeItem()
1.9 +{
1.10 + init();
1.11 + itemData.clear();
1.12 + rootItem=this;
1.13 + parentItem=NULL;
1.14 +}
1.15 +
1.16 +TreeItem::TreeItem(const QList<QVariant> &data, TreeItem *parent)
1.17 {
1.18 //cout << "Constructor TreeItem this="<<this<<" parent="<<parent<<endl;
1.19 init();
1.20 @@ -65,6 +73,7 @@
1.21 // isNoteInEditor=false;
1.22
1.23 hidden=false;
1.24 + hideExport=false;
1.25
1.26 // Reset ID
1.27 objID="";
1.28 @@ -94,15 +103,37 @@
1.29 return model;
1.30 }
1.31
1.32 +int TreeItem::getRowNumAppend (TreeItem *item)
1.33 +{
1.34 + switch (item->type)
1.35 + {
1.36 + case MapCenter: return branchOffset + branchCounter;
1.37 + case Branch: return branchOffset + branchCounter;
1.38 + case Image: return imageOffset + imageCounter;
1.39 + default: return -1;
1.40 + }
1.41 +}
1.42 +
1.43 void TreeItem::appendChild(TreeItem *item)
1.44 {
1.45 - childItems.append(item);
1.46 item->parentItem=this;
1.47 item->rootItem=rootItem;
1.48 item->setModel (model);
1.49
1.50 - if (item->type == Branch || item->type ==MapCenter)
1.51 + if (item->type == Image)
1.52 {
1.53 + childItems.insert (imageCounter,item);
1.54 + // images are on top of list
1.55 + if (imageCounter==0)
1.56 + imageOffset=0;
1.57 + imageCounter++;
1.58 + branchOffset++;
1.59 + }
1.60 +
1.61 + if (item->isBranchLikeType())
1.62 + {
1.63 + // branches are on bottom of list
1.64 + childItems.append(item);
1.65 if (branchCounter==0)
1.66 branchOffset=childItems.count()-1;
1.67 branchCounter++;
1.68 @@ -117,6 +148,12 @@
1.69 {
1.70 if (childItems.at(row)->isBranchLikeType())
1.71 branchCounter--;
1.72 + if (childItems.at(row)->type==Image)
1.73 + {
1.74 + imageCounter--;
1.75 + if (branchOffset>0)
1.76 + branchOffset--;
1.77 + }
1.78 childItems.removeAt (row);
1.79 }
1.80 }
1.81 @@ -160,8 +197,7 @@
1.82
1.83 int TreeItem::imageCount() const
1.84 {
1.85 - int imageCounter=0;
1.86 - return imageCounter; // FIXME-1 imageCounter needs to be calculated...
1.87 + return imageCounter;
1.88 }
1.89
1.90 int TreeItem::xlinkCount() const // FIXME-2 check if xlinks are stored in a different way (global to model?)
1.91 @@ -209,10 +245,9 @@
1.92 {
1.93 switch (type)
1.94 {
1.95 - case Undefined: return -1;
1.96 - case MapCenter: return parentItem->childItems.indexOf (this) - branchOffset;
1.97 - case Branch: return parentItem->childItems.indexOf (this) - branchOffset;
1.98 - case Image: return parentItem->childItems.indexOf (this) - imageOffset;
1.99 + case MapCenter: return parentItem->childItems.indexOf (this) - parentItem->branchOffset;
1.100 + case Branch: return parentItem->childItems.indexOf (this) - parentItem->branchOffset;
1.101 + case Image: return parentItem->childItems.indexOf (this) - parentItem->imageOffset;
1.102 default: return -1;
1.103 }
1.104 }
1.105 @@ -220,9 +255,9 @@
1.106 int TreeItem::num (TreeItem *item)
1.107 {
1.108 if (!item) return -1;
1.109 + if (!childItems.contains(item)) return -1;
1.110 switch (item->getType())
1.111 {
1.112 - case Undefined: return -1;
1.113 case MapCenter: return childItems.indexOf (item) - branchOffset;
1.114 case Branch: return childItems.indexOf (item) - branchOffset;
1.115 case Image: return parentItem->childItems.indexOf (item) - imageOffset;
1.116 @@ -348,8 +383,7 @@
1.117 systemFlags.deactivate ("system-note");
1.118 }
1.119
1.120 -void TreeItem::setNoteObj(const NoteObj &n, bool updateNoteEditor) //FIXME-1 setNoteObj is called for every select or so???
1.121 -{
1.122 +void TreeItem::setNoteObj(const NoteObj &n, bool updateNoteEditor){
1.123 note=n;
1.124 if (!note.isEmpty() && !systemFlags.isActive ("system-note"))
1.125 systemFlags.activate ("system-note");
1.126 @@ -426,13 +460,12 @@
1.127 return &standardFlags;
1.128 }
1.129
1.130 -/*
1.131 -void TreeItem::updateToolBar()
1.132 +/* FIXME-3 void TreeItem::updateToolBar()
1.133 {
1.134 standardFlags.updateToolBar();
1.135 }
1.136 */
1.137 -QStringList TreeItem::activeSystemFlagNames () //FIXME-1 missing: scrolled-tmp,hideInExport
1.138 +QStringList TreeItem::activeSystemFlagNames ()
1.139 {
1.140 return systemFlags.activeFlagNames();
1.141 }
1.142 @@ -521,7 +554,7 @@
1.143
1.144 BranchItem* TreeItem::getBranchNum(const int &n)
1.145 {
1.146 - if (branchCounter>0)
1.147 + if (n>=0 && n<branchCounter)
1.148 return (BranchItem*)getChildNum (branchOffset + n);
1.149 else
1.150 return NULL;
1.151 @@ -529,9 +562,9 @@
1.152
1.153 BranchObj* TreeItem::getBranchObjNum(const int &n)
1.154 {
1.155 - if (branchCounter>0)
1.156 + if (n>=0 && n<branchCounter)
1.157 {
1.158 - return (BranchObj*)(getChildNum (branchOffset+n)->lmo);
1.159 + return (BranchObj*)(getBranchNum(n)->getLMO());
1.160 } else
1.161 return NULL;
1.162 }
1.163 @@ -552,6 +585,21 @@
1.164 return getBranchNum (lastSelectedBranchNum);
1.165 }
1.166
1.167 +ImageItem* TreeItem::getImageNum (const int &n)
1.168 +{
1.169 + if (n>=0 && n<imageCounter)
1.170 + return (ImageItem*)getChildNum (imageOffset + n);
1.171 + else
1.172 + return NULL;
1.173 +}
1.174 +
1.175 +FloatImageObj* TreeItem::getImageObjNum (const int &n) // FIXME-5 what about SVGs later?
1.176 +{
1.177 + if (imageCounter>0 )
1.178 + return (FloatImageObj*)(getImageNum(n)->getLMO());
1.179 + else
1.180 + return NULL;
1.181 +}
1.182
1.183 void TreeItem::setHideTmp (HideTmpMode mode)
1.184 {
1.185 @@ -614,18 +662,14 @@
1.186
1.187 void TreeItem::setHideInExport(bool b)
1.188 {
1.189 - if (isBranchLikeType() )
1.190 + if (type==Branch || type==Image)
1.191 {
1.192 hideExport=b;
1.193 - /* FIXME-1 call setVis and updateContentsSize...
1.194 + // FIXME-1 call setVis and updateContentsSize...
1.195 if (b)
1.196 - systemFlags->activate("hideInExport");
1.197 + systemFlags.activate("hideInExport");
1.198 else
1.199 - systemFlags->deactivate("hideInExport");
1.200 - calcBBoxSize();
1.201 - positionBBox();
1.202 - requestReposition();
1.203 - */
1.204 + systemFlags.deactivate("hideInExport");
1.205 }
1.206 }
1.207