9 #include "branchitem.h"
12 TreeItem::TreeItem(const QList<QVariant> &data, TreeItem *parent)
22 lastSelectedBranchNum=-1;
25 // note.setFontHint (textEditor->getFontHintDefault() ); //FIXME-2
26 // isNoteInEditor=false;
38 qDeleteAll(childItems);
41 QString TreeItem::saveToDir (const QString &tmpdir,const QString &prefix, const QPointF& offset)
43 qWarning ("TreeItem::saveToDir called directly");
49 void TreeItem::copy (OrnamentedObj* other) //FIXME-2 probably need deep copy of branches and data!
52 note.copy (other->note);
59 void TreeItem::setModel (VymModel *m)
64 VymModel* TreeItem::getModel ()
69 void TreeItem::appendChild(TreeItem *item)
71 childItems.append(item);
72 item->setModel (model);
74 if (item->type == Branch || item->type ==MapCenter)
77 branchOffset=childItems.count()-1;
82 void TreeItem::removeChild(int row)
84 if (row<0 || row > childItems.size()-1)
85 qWarning ("TreeItem::removeChild tried to remove non existing item?!\n");
88 cout << "TI::removeChild this="<<this<<" row="<<row<<endl;
89 delete childItems.takeAt (row);
93 TreeItem *TreeItem::child(int row)
95 return childItems.value(row);
98 int TreeItem::childCount() const
100 return childItems.count();
103 int TreeItem::childNumber() const
106 return parentItem->childItems.indexOf(const_cast<TreeItem*>(this));
111 int TreeItem::columnCount() const
113 return itemData.count();
116 int TreeItem::branchCount() const
118 return branchCounter;
121 int TreeItem::imageCount() const
124 return imageCounter; // FIXME-1 imageCounter needs to be calculated...
127 int TreeItem::xlinkCount() const // FIXME-2 check if xlinks are stored in a different way (global to model?)
130 return xlinkCounter; // FIXME-1 xlinkCounter needs to be calculated...
133 int TreeItem::row() const
136 return parentItem->childItems.indexOf(const_cast<TreeItem*>(this));
141 int TreeItem::column() const
146 int TreeItem::depth()
158 TreeItem *TreeItem::parent()
167 case Undefined: return -1;
168 case MapCenter: return parentItem->childItems.indexOf (this) - branchOffset;
169 case Branch: return parentItem->childItems.indexOf (this) - branchOffset;
170 case Image: return -1; // FIXME-2
175 int TreeItem::num (TreeItem *item)
177 if (!item) return -1;
178 switch (item->getType())
180 case Undefined: return -1;
181 case MapCenter: return childItems.indexOf (this) - branchOffset;
182 case Branch: return childItems.indexOf (this) - branchOffset;
183 case Image: return -1; // FIXME-2
188 QVariant TreeItem::data(int column) const
190 return itemData.value(column);
193 void TreeItem::setHeading (const QString s)
198 QString TreeItem::getHeading () const
200 return itemData[0].toString();
203 std::string TreeItem::headingStd () const
205 return itemData[0].toString().toStdString();
208 void TreeItem::setNote(const QString s)
211 // updateNoteFlag(); FIXME-2 needed?
213 model->emitNoteHasChanged (this);
216 void TreeItem::setNoteObj(const NoteObj &n, bool updateNoteEditor)
219 // updateNoteFlag(); FIXME-2 needed?
220 if (model && updateNoteEditor)
221 model->emitNoteHasChanged (this);
224 QString TreeItem::getNote()
226 return note.getNote();
229 NoteObj TreeItem::getNoteObj()
234 QString TreeItem::getNoteASCII(const QString &indent, const int &width)
236 return note.getNoteASCII(indent,width);
239 QString TreeItem::getNoteASCII()
241 return note.getNoteASCII();
244 QString TreeItem::getNoteOpenDoc()
246 return note.getNoteOpenDoc();
249 void TreeItem::setType(const Type t)
252 itemData[1]=getTypeName();
255 TreeItem::Type TreeItem::getType()
260 bool TreeItem::isBranchLikeType() const
262 if (type==Branch ||type==MapCenter) return true;
266 QString TreeItem::getTypeName()
270 case Undefined: return QString ("Undefined");
271 case MapCenter: return QString ("MapCenter");
272 case Branch: return QString ("Branch");
273 case Image: return QString ("Image");
274 default: return QString ("TreeItem::getTypeName no typename defined?!");
278 void TreeItem::setID (const QString &s)
283 QString TreeItem::getID()
289 TreeItem* TreeItem::getChildNum(const int &n)
291 if (n>=0 && n<childItems.count() )
292 return childItems.at(n);
297 BranchItem* TreeItem::getFirstBranch()
300 return getBranchNum (branchOffset);
305 BranchItem* TreeItem::getLastBranch()
308 return getBranchNum (branchOffset + branchCounter-1);
314 BranchItem* TreeItem::getBranchNum(const int &n)
317 return (BranchItem*)getChildNum (branchOffset + n);
322 BranchObj* TreeItem::getBranchObjNum(const int &n)
326 return (BranchObj*)(getChildNum (branchOffset+n)->lmo);
331 void TreeItem::setLastSelectedBranch()
334 parentItem->lastSelectedBranchNum=parentItem->childItems.indexOf(this);
337 TreeItem* TreeItem::findBySelectString (const QString &s) //FIXME-1
340 LinkableMapObj *lmo=this;
344 while (!s.isEmpty() )
346 part=s.section(",",0,0);
348 num=part.right(part.length() - 3);
352 return false; // in a subtree there is no center
357 lmo=lmo->getTreeItem()->getBranchObjNum (num.toInt());
360 lmo=((BranchObj*)lmo)->getFloatImageNum (num.toUInt());
364 s=s.right(s.length() - part.length() -1 );
372 void TreeItem::setLastSelectedBranch(int i)
374 lastSelectedBranchNum=i;
377 TreeItem* TreeItem::getLastSelectedBranch()
379 return getBranchNum (lastSelectedBranchNum);
383 void TreeItem::setHideTmp (HideTmpMode mode)
385 if (isBranchLikeType() )
386 ((BranchItem*)this)->updateVisibility();
389 //updateVisibility();
394 if (mode==HideExport && (hideExport || hasHiddenExportParent() ) )
396 // Hide stuff according to hideExport flag and parents
397 //setVisibility (false);
399 //FIXME-2 hidden=true;
402 // Do not hide, but still take care of scrolled status
405 XXXXXXXX treeItem should be THIS
407 move visible to TreeItem???
409 BranchObj now has updateContents
411 maybe also start "bool TreeItem::branchlikeType"
415 if ( ((BranchItem*)treeItem)->hasScrolledParent((BranchItem*)treeItem))
416 setVisibility (false);
418 setVisibility (true);
419 //FIXME-2 hidden=false;
423 // And take care of my children
424 for (int i=0; i<branchCount(); ++i)
425 getBranchNum(i)->setHideTmp (mode);
428 bool TreeItem::hasHiddenExportParent()
430 // Calls parents recursivly to
431 // find out, if we or parents are temp. hidden
433 if (hidden || hideExport) return true;
436 return parentItem->hasHiddenExportParent();
442 void TreeItem::setHideInExport(bool b)
444 if (isBranchLikeType() )
447 /* FIXME-1 call setVis and updateContentsSize...
449 systemFlags->activate("hideInExport");
451 systemFlags->deactivate("hideInExport");
459 bool TreeItem::hideInExport()
464 bool TreeItem::isHidden()
470 LinkableMapObj* TreeItem::getLMO() // FIXME-3 VM should be unnecessary in the end
475 void TreeItem::setLMO(LinkableMapObj *l)