9 #include "branchitem.h"
12 TreeItem::TreeItem(const QList<QVariant> &data, TreeItem *parent)
21 //cout << "Destructor TreeItem "<<getHeadingStd()<<endl;
23 while (!childItems.isEmpty())
25 ti=childItems.takeFirst();
26 switch (ti->getType() )
28 case TreeItem::MapCenter:
29 delete (MapCenterItem*)ti;
31 case TreeItem::Branch:
32 delete (BranchItem*)ti;
52 lastSelectedBranchNum=-1;
55 // note.setFontHint (textEditor->getFontHintDefault() ); //FIXME-2
56 // isNoteInEditor=false;
66 QString TreeItem::saveToDir (const QString &tmpdir,const QString &prefix, const QPointF& offset)
68 cout << "TreeItem::saveToDir called directly for ("<<getHeadingStd()<<"), instead of inherited type...\n"; //FIXME-1 triggered on save
74 void TreeItem::copy (OrnamentedObj* other) //FIXME-2 probably need deep copy of branches and data!
77 note.copy (other->note);
84 void TreeItem::setModel (VymModel *m)
89 VymModel* TreeItem::getModel ()
94 void TreeItem::appendChild(TreeItem *item)
96 childItems.append(item);
97 item->parentItem=this;
98 item->setModel (model);
100 if (item->type == Branch || item->type ==MapCenter)
102 if (branchCounter==0)
103 branchOffset=childItems.count()-1;
108 void TreeItem::removeChild(int row)
110 if (row<0 || row > childItems.size()-1)
111 qWarning ("TreeItem::removeChild tried to remove non existing item?!\n");
114 if (childItems.at(row)->isBranchLikeType())
116 childItems.removeAt (row);
120 TreeItem *TreeItem::child(int row)
122 return childItems.value(row);
125 int TreeItem::childCount() const
127 return childItems.count();
130 int TreeItem::childNumber() const
133 return parentItem->childItems.indexOf(const_cast<TreeItem*>(this));
138 int TreeItem::columnCount() const
140 return itemData.count();
143 int TreeItem::branchCount() const
145 return branchCounter;
148 int TreeItem::imageCount() const
151 return imageCounter; // FIXME-1 imageCounter needs to be calculated...
154 int TreeItem::xlinkCount() const // FIXME-2 check if xlinks are stored in a different way (global to model?)
157 return xlinkCounter; // FIXME-1 xlinkCounter needs to be calculated...
160 int TreeItem::row() const
163 return parentItem->childItems.indexOf(const_cast<TreeItem*>(this));
168 int TreeItem::column() const
173 int TreeItem::depth()
185 TreeItem *TreeItem::parent()
190 int TreeItem::childNum()
192 return parentItem->childItems.indexOf (this);
199 case Undefined: return -1;
200 case MapCenter: return parentItem->childItems.indexOf (this) - branchOffset;
201 case Branch: return parentItem->childItems.indexOf (this) - branchOffset;
202 case Image: return -1; // FIXME-2
207 int TreeItem::num (TreeItem *item)
209 if (!item) return -1;
210 switch (item->getType())
212 case Undefined: return -1;
213 case MapCenter: return childItems.indexOf (this) - branchOffset;
214 case Branch: return childItems.indexOf (this) - branchOffset;
215 case Image: return -1; // FIXME-2
220 QVariant TreeItem::data(int column) const
222 return itemData.value(column);
225 void TreeItem::setHeading (const QString s)
230 QString TreeItem::getHeading () const
232 return itemData[0].toString();
235 std::string TreeItem::getHeadingStd () const
237 return itemData[0].toString().toStdString();
240 void TreeItem::setNote(const QString s)
243 // updateNoteFlag(); FIXME-2 needed?
245 model->emitNoteHasChanged (this);
248 void TreeItem::setNoteObj(const NoteObj &n, bool updateNoteEditor)
251 // updateNoteFlag(); FIXME-2 needed?
252 if (model && updateNoteEditor)
253 model->emitNoteHasChanged (this);
256 QString TreeItem::getNote()
258 return note.getNote();
261 NoteObj TreeItem::getNoteObj()
266 QString TreeItem::getNoteASCII(const QString &indent, const int &width)
268 return note.getNoteASCII(indent,width);
271 QString TreeItem::getNoteASCII()
273 return note.getNoteASCII();
276 QString TreeItem::getNoteOpenDoc()
278 return note.getNoteOpenDoc();
281 void TreeItem::setType(const Type t)
284 itemData[1]=getTypeName();
287 TreeItem::Type TreeItem::getType()
292 bool TreeItem::isBranchLikeType() const
294 if (type==Branch ||type==MapCenter) return true;
298 QString TreeItem::getTypeName()
302 case Undefined: return QString ("Undefined");
303 case MapCenter: return QString ("MapCenter");
304 case Branch: return QString ("Branch");
305 case Image: return QString ("Image");
306 default: return QString ("TreeItem::getTypeName no typename defined?!");
310 void TreeItem::setID (const QString &s)
315 QString TreeItem::getID()
321 TreeItem* TreeItem::getChildNum(const int &n)
323 if (n>=0 && n<childItems.count() )
324 return childItems.at(n);
329 BranchItem* TreeItem::getFirstBranch()
332 return getBranchNum (branchOffset);
337 BranchItem* TreeItem::getLastBranch()
340 return getBranchNum (branchOffset + branchCounter-1);
346 BranchItem* TreeItem::getBranchNum(const int &n)
349 return (BranchItem*)getChildNum (branchOffset + n);
354 BranchObj* TreeItem::getBranchObjNum(const int &n)
358 return (BranchObj*)(getChildNum (branchOffset+n)->lmo);
363 void TreeItem::setLastSelectedBranch()
366 parentItem->lastSelectedBranchNum=parentItem->childItems.indexOf(this);
369 TreeItem* TreeItem::findBySelectString (const QString &s) //FIXME-1
372 LinkableMapObj *lmo=this;
376 while (!s.isEmpty() )
378 part=s.section(",",0,0);
380 num=part.right(part.length() - 3);
384 return false; // in a subtree there is no center
389 lmo=lmo->getTreeItem()->getBranchObjNum (num.toInt());
392 lmo=((BranchObj*)lmo)->getFloatImageNum (num.toUInt());
396 s=s.right(s.length() - part.length() -1 );
404 void TreeItem::setLastSelectedBranch(int i)
406 lastSelectedBranchNum=i;
409 TreeItem* TreeItem::getLastSelectedBranch()
411 return getBranchNum (lastSelectedBranchNum);
415 void TreeItem::setHideTmp (HideTmpMode mode)
417 if (isBranchLikeType() )
418 ((BranchItem*)this)->updateVisibility();
421 //updateVisibility();
426 if (mode==HideExport && (hideExport || hasHiddenExportParent() ) )
428 // Hide stuff according to hideExport flag and parents
429 //setVisibility (false);
431 //FIXME-2 hidden=true;
434 // Do not hide, but still take care of scrolled status
437 XXXXXXXX treeItem should be THIS
439 move visible to TreeItem???
441 BranchObj now has updateContents
443 maybe also start "bool TreeItem::branchlikeType"
447 if ( ((BranchItem*)treeItem)->hasScrolledParent((BranchItem*)treeItem))
448 setVisibility (false);
450 setVisibility (true);
451 //FIXME-2 hidden=false;
455 // And take care of my children
456 for (int i=0; i<branchCount(); ++i)
457 getBranchNum(i)->setHideTmp (mode);
460 bool TreeItem::hasHiddenExportParent()
462 // Calls parents recursivly to
463 // find out, if we or parents are temp. hidden
465 if (hidden || hideExport) return true;
468 return parentItem->hasHiddenExportParent();
474 void TreeItem::setHideInExport(bool b)
476 if (isBranchLikeType() )
479 /* FIXME-1 call setVis and updateContentsSize...
481 systemFlags->activate("hideInExport");
483 systemFlags->deactivate("hideInExport");
491 bool TreeItem::hideInExport()
496 bool TreeItem::isHidden()
502 LinkableMapObj* TreeItem::getLMO() // FIXME-3 VM should be unnecessary in the end
507 void TreeItem::setLMO(LinkableMapObj *l)