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 cout << "TI::removeChild this="<<this<<" row="<<row<<endl;
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::setNote(const QString s)
244 // updateNoteFlag(); FIXME-2 needed?
246 model->emitNoteHasChanged (this);
249 void TreeItem::setNoteObj(const NoteObj &n, bool updateNoteEditor)
252 // updateNoteFlag(); FIXME-2 needed?
253 if (model && updateNoteEditor)
254 model->emitNoteHasChanged (this);
257 QString TreeItem::getNote()
259 return note.getNote();
262 NoteObj TreeItem::getNoteObj()
267 QString TreeItem::getNoteASCII(const QString &indent, const int &width)
269 return note.getNoteASCII(indent,width);
272 QString TreeItem::getNoteASCII()
274 return note.getNoteASCII();
277 QString TreeItem::getNoteOpenDoc()
279 return note.getNoteOpenDoc();
282 void TreeItem::setType(const Type t)
285 itemData[1]=getTypeName();
288 TreeItem::Type TreeItem::getType()
293 bool TreeItem::isBranchLikeType() const
295 if (type==Branch ||type==MapCenter) return true;
299 QString TreeItem::getTypeName()
303 case Undefined: return QString ("Undefined");
304 case MapCenter: return QString ("MapCenter");
305 case Branch: return QString ("Branch");
306 case Image: return QString ("Image");
307 default: return QString ("TreeItem::getTypeName no typename defined?!");
311 void TreeItem::setID (const QString &s)
316 QString TreeItem::getID()
322 TreeItem* TreeItem::getChildNum(const int &n)
324 if (n>=0 && n<childItems.count() )
325 return childItems.at(n);
330 BranchItem* TreeItem::getFirstBranch()
333 return getBranchNum (branchOffset);
338 BranchItem* TreeItem::getLastBranch()
341 return getBranchNum (branchOffset + branchCounter-1);
347 BranchItem* TreeItem::getBranchNum(const int &n)
350 return (BranchItem*)getChildNum (branchOffset + n);
355 BranchObj* TreeItem::getBranchObjNum(const int &n)
359 return (BranchObj*)(getChildNum (branchOffset+n)->lmo);
364 void TreeItem::setLastSelectedBranch()
367 parentItem->lastSelectedBranchNum=parentItem->childItems.indexOf(this);
370 TreeItem* TreeItem::findBySelectString (const QString &s) //FIXME-1
373 LinkableMapObj *lmo=this;
377 while (!s.isEmpty() )
379 part=s.section(",",0,0);
381 num=part.right(part.length() - 3);
385 return false; // in a subtree there is no center
390 lmo=lmo->getTreeItem()->getBranchObjNum (num.toInt());
393 lmo=((BranchObj*)lmo)->getFloatImageNum (num.toUInt());
397 s=s.right(s.length() - part.length() -1 );
405 void TreeItem::setLastSelectedBranch(int i)
407 lastSelectedBranchNum=i;
410 TreeItem* TreeItem::getLastSelectedBranch()
412 return getBranchNum (lastSelectedBranchNum);
416 void TreeItem::setHideTmp (HideTmpMode mode)
418 if (isBranchLikeType() )
419 ((BranchItem*)this)->updateVisibility();
422 //updateVisibility();
427 if (mode==HideExport && (hideExport || hasHiddenExportParent() ) )
429 // Hide stuff according to hideExport flag and parents
430 //setVisibility (false);
432 //FIXME-2 hidden=true;
435 // Do not hide, but still take care of scrolled status
438 XXXXXXXX treeItem should be THIS
440 move visible to TreeItem???
442 BranchObj now has updateContents
444 maybe also start "bool TreeItem::branchlikeType"
448 if ( ((BranchItem*)treeItem)->hasScrolledParent((BranchItem*)treeItem))
449 setVisibility (false);
451 setVisibility (true);
452 //FIXME-2 hidden=false;
456 // And take care of my children
457 for (int i=0; i<branchCount(); ++i)
458 getBranchNum(i)->setHideTmp (mode);
461 bool TreeItem::hasHiddenExportParent()
463 // Calls parents recursivly to
464 // find out, if we or parents are temp. hidden
466 if (hidden || hideExport) return true;
469 return parentItem->hasHiddenExportParent();
475 void TreeItem::setHideInExport(bool b)
477 if (isBranchLikeType() )
480 /* FIXME-1 call setVis and updateContentsSize...
482 systemFlags->activate("hideInExport");
484 systemFlags->deactivate("hideInExport");
492 bool TreeItem::hideInExport()
497 bool TreeItem::isHidden()
503 LinkableMapObj* TreeItem::getLMO() // FIXME-3 VM should be unnecessary in the end
508 void TreeItem::setLMO(LinkableMapObj *l)