7 #include "branchitem.h"
13 TreeItem::TreeItem(const QList<QVariant> &data, TreeItem *parent)
22 //cout << "Destructor TreeItem "<<getHeadingStd()<<endl;
24 while (!childItems.isEmpty())
26 ti=childItems.takeFirst();
27 switch (ti->getType() )
29 case TreeItem::MapCenter:
30 delete (MapCenterItem*)ti;
32 case TreeItem::Branch:
33 delete (BranchItem*)ti;
53 lastSelectedBranchNum=-1;
56 // note.setFontHint (textEditor->getFontHintDefault() ); //FIXME-2
57 // isNoteInEditor=false;
67 QString TreeItem::saveToDir (const QString &tmpdir,const QString &prefix, const QPointF& offset)
69 cout << "TreeItem::saveToDir called directly for ("<<getHeadingStd()<<"), instead of inherited type...\n"; //FIXME-1 triggered on save
75 void TreeItem::copy (OrnamentedObj* other) //FIXME-2 probably need deep copy of branches and data!
78 note.copy (other->note);
85 void TreeItem::setModel (VymModel *m)
90 VymModel* TreeItem::getModel ()
95 void TreeItem::appendChild(TreeItem *item)
97 childItems.append(item);
98 item->parentItem=this;
99 item->setModel (model);
101 if (item->type == Branch || item->type ==MapCenter)
103 if (branchCounter==0)
104 branchOffset=childItems.count()-1;
109 void TreeItem::removeChild(int row)
111 if (row<0 || row > childItems.size()-1)
112 qWarning ("TreeItem::removeChild tried to remove non existing item?!\n");
115 if (childItems.at(row)->isBranchLikeType())
117 childItems.removeAt (row);
121 TreeItem *TreeItem::child(int row)
123 return childItems.value(row);
126 int TreeItem::childCount() const
128 return childItems.count();
131 int TreeItem::childNumber() const
134 return parentItem->childItems.indexOf(const_cast<TreeItem*>(this));
139 int TreeItem::columnCount() const
141 return itemData.count();
144 int TreeItem::branchCount() const
146 return branchCounter;
149 int TreeItem::imageCount() const
152 return imageCounter; // FIXME-1 imageCounter needs to be calculated...
155 int TreeItem::xlinkCount() const // FIXME-2 check if xlinks are stored in a different way (global to model?)
158 return xlinkCounter; // FIXME-1 xlinkCounter needs to be calculated...
161 int TreeItem::row() const
164 return parentItem->childItems.indexOf(const_cast<TreeItem*>(this));
169 int TreeItem::column() const
174 int TreeItem::depth()
186 TreeItem *TreeItem::parent()
191 int TreeItem::childNum()
193 return parentItem->childItems.indexOf (this);
200 case Undefined: return -1;
201 case MapCenter: return parentItem->childItems.indexOf (this) - branchOffset;
202 case Branch: return parentItem->childItems.indexOf (this) - branchOffset;
203 case Image: return -1; // FIXME-2
208 int TreeItem::num (TreeItem *item)
210 if (!item) return -1;
211 switch (item->getType())
213 case Undefined: return -1;
214 case MapCenter: return childItems.indexOf (this) - branchOffset;
215 case Branch: return childItems.indexOf (this) - branchOffset;
216 case Image: return -1; // FIXME-2
221 QVariant TreeItem::data(int column) const
223 return itemData.value(column);
226 void TreeItem::setHeading (const QString s)
231 QString TreeItem::getHeading () const
233 return itemData[0].toString();
236 std::string TreeItem::getHeadingStd () const
238 return itemData[0].toString().toStdString();
241 void TreeItem::setHeadingColor (QColor color)
246 QColor TreeItem::getHeadingColor ()
251 void TreeItem::setNote(const QString s)
254 // updateNoteFlag(); FIXME-2 needed?
256 model->emitNoteHasChanged (this);
259 void TreeItem::setNoteObj(const NoteObj &n, bool updateNoteEditor)
262 // updateNoteFlag(); FIXME-2 needed?
263 if (model && updateNoteEditor)
264 model->emitNoteHasChanged (this);
267 QString TreeItem::getNote()
269 return note.getNote();
272 NoteObj TreeItem::getNoteObj()
277 QString TreeItem::getNoteASCII(const QString &indent, const int &width)
279 return note.getNoteASCII(indent,width);
282 QString TreeItem::getNoteASCII()
284 return note.getNoteASCII();
287 QString TreeItem::getNoteOpenDoc()
289 return note.getNoteOpenDoc();
292 void TreeItem::setType(const Type t)
295 itemData[1]=getTypeName();
298 TreeItem::Type TreeItem::getType()
303 bool TreeItem::isBranchLikeType() const
305 if (type==Branch ||type==MapCenter) return true;
309 QString TreeItem::getTypeName()
313 case Undefined: return QString ("Undefined");
314 case MapCenter: return QString ("MapCenter");
315 case Branch: return QString ("Branch");
316 case Image: return QString ("Image");
317 default: return QString ("TreeItem::getTypeName no typename defined?!");
321 void TreeItem::setID (const QString &s)
326 QString TreeItem::getID()
332 TreeItem* TreeItem::getChildNum(const int &n)
334 if (n>=0 && n<childItems.count() )
335 return childItems.at(n);
340 BranchItem* TreeItem::getFirstBranch()
343 return getBranchNum (branchOffset);
348 BranchItem* TreeItem::getLastBranch()
351 return getBranchNum (branchOffset + branchCounter-1);
357 BranchItem* TreeItem::getBranchNum(const int &n)
360 return (BranchItem*)getChildNum (branchOffset + n);
365 BranchObj* TreeItem::getBranchObjNum(const int &n)
369 return (BranchObj*)(getChildNum (branchOffset+n)->lmo);
374 void TreeItem::setLastSelectedBranch()
377 parentItem->lastSelectedBranchNum=parentItem->childItems.indexOf(this);
380 TreeItem* TreeItem::findBySelectString (const QString &s) //FIXME-1
383 LinkableMapObj *lmo=this;
387 while (!s.isEmpty() )
389 part=s.section(",",0,0);
391 num=part.right(part.length() - 3);
395 return false; // in a subtree there is no center
400 lmo=lmo->getTreeItem()->getBranchObjNum (num.toInt());
403 lmo=((BranchObj*)lmo)->getFloatImageNum (num.toUInt());
407 s=s.right(s.length() - part.length() -1 );
415 void TreeItem::setLastSelectedBranch(int i)
417 lastSelectedBranchNum=i;
420 TreeItem* TreeItem::getLastSelectedBranch()
422 return getBranchNum (lastSelectedBranchNum);
426 void TreeItem::setHideTmp (HideTmpMode mode)
428 if (isBranchLikeType() )
429 ((BranchItem*)this)->updateVisibility();
432 //updateVisibility();
437 if (mode==HideExport && (hideExport || hasHiddenExportParent() ) )
439 // Hide stuff according to hideExport flag and parents
440 //setVisibility (false);
442 //FIXME-2 hidden=true;
445 // Do not hide, but still take care of scrolled status
448 XXXXXXXX treeItem should be THIS
450 move visible to TreeItem???
452 BranchObj now has updateContents
454 maybe also start "bool TreeItem::branchlikeType"
458 if ( ((BranchItem*)treeItem)->hasScrolledParent((BranchItem*)treeItem))
459 setVisibility (false);
461 setVisibility (true);
462 //FIXME-2 hidden=false;
466 // And take care of my children
467 for (int i=0; i<branchCount(); ++i)
468 getBranchNum(i)->setHideTmp (mode);
471 bool TreeItem::hasHiddenExportParent()
473 // Calls parents recursivly to
474 // find out, if we or parents are temp. hidden
476 if (hidden || hideExport) return true;
479 return parentItem->hasHiddenExportParent();
485 void TreeItem::setHideInExport(bool b)
487 if (isBranchLikeType() )
490 /* FIXME-1 call setVis and updateContentsSize...
492 systemFlags->activate("hideInExport");
494 systemFlags->deactivate("hideInExport");
502 bool TreeItem::hideInExport()
507 bool TreeItem::isHidden()
513 LinkableMapObj* TreeItem::getLMO() // FIXME-3 VM should be unnecessary in the end
518 void TreeItem::setLMO(LinkableMapObj *l)