diff -r 6e4b586aa88a -r 25e634a7e1dc treeitem.cpp --- a/treeitem.cpp Wed Jun 03 20:37:17 2009 +0000 +++ b/treeitem.cpp Mon Jun 08 11:36:56 2009 +0000 @@ -11,7 +11,15 @@ extern FlagRow* standardFlagsMaster; -TreeItem::TreeItem(const QList &data, TreeItem *parent):MapItem() +TreeItem::TreeItem() +{ + init(); + itemData.clear(); + rootItem=this; + parentItem=NULL; +} + +TreeItem::TreeItem(const QList &data, TreeItem *parent) { //cout << "Constructor TreeItem this="<type) + { + case MapCenter: return branchOffset + branchCounter; + case Branch: return branchOffset + branchCounter; + case Image: return imageOffset + imageCounter; + default: return -1; + } +} + void TreeItem::appendChild(TreeItem *item) { - childItems.append(item); item->parentItem=this; item->rootItem=rootItem; item->setModel (model); - if (item->type == Branch || item->type ==MapCenter) + if (item->type == Image) { + childItems.insert (imageCounter,item); + // images are on top of list + if (imageCounter==0) + imageOffset=0; + imageCounter++; + branchOffset++; + } + + if (item->isBranchLikeType()) + { + // branches are on bottom of list + childItems.append(item); if (branchCounter==0) branchOffset=childItems.count()-1; branchCounter++; @@ -117,6 +148,12 @@ { if (childItems.at(row)->isBranchLikeType()) branchCounter--; + if (childItems.at(row)->type==Image) + { + imageCounter--; + if (branchOffset>0) + branchOffset--; + } childItems.removeAt (row); } } @@ -160,8 +197,7 @@ int TreeItem::imageCount() const { - int imageCounter=0; - return imageCounter; // FIXME-1 imageCounter needs to be calculated... + return imageCounter; } int TreeItem::xlinkCount() const // FIXME-2 check if xlinks are stored in a different way (global to model?) @@ -209,10 +245,9 @@ { switch (type) { - case Undefined: return -1; - case MapCenter: return parentItem->childItems.indexOf (this) - branchOffset; - case Branch: return parentItem->childItems.indexOf (this) - branchOffset; - case Image: return parentItem->childItems.indexOf (this) - imageOffset; + case MapCenter: return parentItem->childItems.indexOf (this) - parentItem->branchOffset; + case Branch: return parentItem->childItems.indexOf (this) - parentItem->branchOffset; + case Image: return parentItem->childItems.indexOf (this) - parentItem->imageOffset; default: return -1; } } @@ -220,9 +255,9 @@ int TreeItem::num (TreeItem *item) { if (!item) return -1; + if (!childItems.contains(item)) return -1; switch (item->getType()) { - case Undefined: return -1; case MapCenter: return childItems.indexOf (item) - branchOffset; case Branch: return childItems.indexOf (item) - branchOffset; case Image: return parentItem->childItems.indexOf (item) - imageOffset; @@ -348,8 +383,7 @@ systemFlags.deactivate ("system-note"); } -void TreeItem::setNoteObj(const NoteObj &n, bool updateNoteEditor) //FIXME-1 setNoteObj is called for every select or so??? -{ +void TreeItem::setNoteObj(const NoteObj &n, bool updateNoteEditor){ note=n; if (!note.isEmpty() && !systemFlags.isActive ("system-note")) systemFlags.activate ("system-note"); @@ -426,13 +460,12 @@ return &standardFlags; } -/* -void TreeItem::updateToolBar() +/* FIXME-3 void TreeItem::updateToolBar() { standardFlags.updateToolBar(); } */ -QStringList TreeItem::activeSystemFlagNames () //FIXME-1 missing: scrolled-tmp,hideInExport +QStringList TreeItem::activeSystemFlagNames () { return systemFlags.activeFlagNames(); } @@ -521,7 +554,7 @@ BranchItem* TreeItem::getBranchNum(const int &n) { - if (branchCounter>0) + if (n>=0 && n0) + if (n>=0 && nlmo); + return (BranchObj*)(getBranchNum(n)->getLMO()); } else return NULL; } @@ -552,6 +585,21 @@ return getBranchNum (lastSelectedBranchNum); } +ImageItem* TreeItem::getImageNum (const int &n) +{ + if (n>=0 && n0 ) + return (FloatImageObj*)(getImageNum(n)->getLMO()); + else + return NULL; +} void TreeItem::setHideTmp (HideTmpMode mode) { @@ -614,18 +662,14 @@ void TreeItem::setHideInExport(bool b) { - if (isBranchLikeType() ) + if (type==Branch || type==Image) { hideExport=b; - /* FIXME-1 call setVis and updateContentsSize... + // FIXME-1 call setVis and updateContentsSize... if (b) - systemFlags->activate("hideInExport"); + systemFlags.activate("hideInExport"); else - systemFlags->deactivate("hideInExport"); - calcBBoxSize(); - positionBBox(); - requestReposition(); - */ + systemFlags.deactivate("hideInExport"); } }