7 #include "branchitem.h"
8 #include "mapcenteritem.h"
14 TreeItem::TreeItem(const QList<QVariant> &data, TreeItem *parent):MapItem()
23 //cout << "Destructor TreeItem "<<getHeadingStd()<<endl;
25 while (!childItems.isEmpty())
27 ti=childItems.takeFirst();
28 switch (ti->getType() )
30 case TreeItem::MapCenter:
31 delete (MapCenterItem*)ti;
33 case TreeItem::Branch:
34 delete (BranchItem*)ti;
53 lastSelectedBranchNum=-1;
59 // note.setFontHint (textEditor->getFontHintDefault() ); //FIXME-2
60 // isNoteInEditor=false;
68 QString TreeItem::saveToDir (const QString &tmpdir,const QString &prefix, const QPointF& offset)
70 cout << "TreeItem::saveToDir called directly for ("<<getHeadingStd()<<"), instead of inherited type...\n"; //FIXME-1 triggered on save
76 void TreeItem::copy (OrnamentedObj* other) //FIXME-2 probably need deep copy of branches and data!
79 note.copy (other->note);
86 void TreeItem::setModel (VymModel *m)
91 VymModel* TreeItem::getModel ()
96 void TreeItem::appendChild(TreeItem *item)
98 childItems.append(item);
99 item->parentItem=this;
100 item->setModel (model);
102 if (item->type == Branch || item->type ==MapCenter)
104 if (branchCounter==0)
105 branchOffset=childItems.count()-1;
110 void TreeItem::removeChild(int row)
112 if (row<0 || row > childItems.size()-1)
113 qWarning ("TreeItem::removeChild tried to remove non existing item?!\n");
116 if (childItems.at(row)->isBranchLikeType())
118 childItems.removeAt (row);
122 TreeItem *TreeItem::child(int row)
124 return childItems.value(row);
127 int TreeItem::childCount() const
129 return childItems.count();
132 int TreeItem::childNumber() const
135 return parentItem->childItems.indexOf(const_cast<TreeItem*>(this));
140 int TreeItem::columnCount() const
142 return itemData.count();
145 int TreeItem::branchCount() const
147 return branchCounter;
150 int TreeItem::imageCount() const
153 return imageCounter; // FIXME-1 imageCounter needs to be calculated...
156 int TreeItem::xlinkCount() const // FIXME-2 check if xlinks are stored in a different way (global to model?)
159 return xlinkCounter; // FIXME-1 xlinkCounter needs to be calculated...
162 int TreeItem::row() const
165 return parentItem->childItems.indexOf(const_cast<TreeItem*>(this));
170 int TreeItem::column() const
175 int TreeItem::depth()
187 TreeItem *TreeItem::parent()
192 int TreeItem::childNum()
194 return parentItem->childItems.indexOf (this);
201 case Undefined: return -1;
202 case MapCenter: return parentItem->childItems.indexOf (this) - branchOffset;
203 case Branch: return parentItem->childItems.indexOf (this) - branchOffset;
204 case Image: return parentItem->childItems.indexOf (this) - imageOffset;
209 int TreeItem::num (TreeItem *item)
211 if (!item) return -1;
212 switch (item->getType())
214 case Undefined: return -1;
215 case MapCenter: return childItems.indexOf (item) - branchOffset;
216 case Branch: return childItems.indexOf (item) - branchOffset;
217 case Image: return parentItem->childItems.indexOf (item) - imageOffset;
222 QVariant TreeItem::data(int column) const
224 return itemData.value(column);
227 void TreeItem::setHeading (const QString s)
232 QString TreeItem::getHeading () const
234 return itemData[0].toString();
237 std::string TreeItem::getHeadingStd () const
239 return itemData[0].toString().toStdString();
242 void TreeItem::setHeadingColor (QColor color)
247 QColor TreeItem::getHeadingColor ()
252 void TreeItem::setNote(const QString s)
255 // updateNoteFlag(); FIXME-2 needed?
257 model->emitNoteHasChanged (this);
260 void TreeItem::setNoteObj(const NoteObj &n, bool updateNoteEditor)
263 // updateNoteFlag(); FIXME-2 needed?
264 if (model && updateNoteEditor)
265 model->emitNoteHasChanged (this);
268 QString TreeItem::getNote()
270 return note.getNote();
273 NoteObj TreeItem::getNoteObj()
278 QString TreeItem::getNoteASCII(const QString &indent, const int &width)
280 return note.getNoteASCII(indent,width);
283 QString TreeItem::getNoteASCII()
285 return note.getNoteASCII();
288 QString TreeItem::getNoteOpenDoc()
290 return note.getNoteOpenDoc();
293 void TreeItem::setType(const Type t)
296 itemData[1]=getTypeName();
299 TreeItem::Type TreeItem::getType()
304 bool TreeItem::isBranchLikeType() const
306 if (type==Branch ||type==MapCenter) return true;
310 QString TreeItem::getTypeName()
314 case Undefined: return QString ("Undefined");
315 case MapCenter: return QString ("MapCenter");
316 case Branch: return QString ("Branch");
317 case Image: return QString ("Image");
318 default: return QString ("TreeItem::getTypeName no typename defined?!");
322 void TreeItem::setID (const QString &s)
327 QString TreeItem::getID()
333 TreeItem* TreeItem::getChildNum(const int &n)
335 if (n>=0 && n<childItems.count() )
336 return childItems.at(n);
341 BranchItem* TreeItem::getFirstBranch()
344 return getBranchNum (branchOffset);
349 BranchItem* TreeItem::getLastBranch()
352 return getBranchNum (branchOffset + branchCounter-1);
357 BranchItem* TreeItem::getNextBranch(BranchItem *currentBranch)
359 if (!currentBranch) return NULL;
360 int n=num (currentBranch)+1;
362 return getBranchNum (branchOffset + n);
368 BranchItem* TreeItem::getBranchNum(const int &n)
371 return (BranchItem*)getChildNum (branchOffset + n);
376 BranchObj* TreeItem::getBranchObjNum(const int &n)
380 return (BranchObj*)(getChildNum (branchOffset+n)->lmo);
385 void TreeItem::setLastSelectedBranch()
388 parentItem->lastSelectedBranchNum=parentItem->childItems.indexOf(this);
391 void TreeItem::setLastSelectedBranch(int i)
393 lastSelectedBranchNum=i;
396 TreeItem* TreeItem::getLastSelectedBranch()
398 return getBranchNum (lastSelectedBranchNum);
402 void TreeItem::setHideTmp (HideTmpMode mode)
404 if (isBranchLikeType() )
405 ((BranchItem*)this)->updateVisibility();
408 //updateVisibility();
413 if (mode==HideExport && (hideExport || hasHiddenExportParent() ) )
415 // Hide stuff according to hideExport flag and parents
416 //setVisibility (false);
418 //FIXME-2 hidden=true;
421 // Do not hide, but still take care of scrolled status
424 XXXXXXXX treeItem should be THIS
426 move visible to TreeItem???
428 BranchObj now has updateContents
430 maybe also start "bool TreeItem::branchlikeType"
434 if ( ((BranchItem*)treeItem)->hasScrolledParent((BranchItem*)treeItem))
435 setVisibility (false);
437 setVisibility (true);
438 //FIXME-2 hidden=false;
442 // And take care of my children
443 for (int i=0; i<branchCount(); ++i)
444 getBranchNum(i)->setHideTmp (mode);
447 bool TreeItem::hasHiddenExportParent()
449 // Calls parents recursivly to
450 // find out, if we or parents are temp. hidden
452 if (hidden || hideExport) return true;
455 return parentItem->hasHiddenExportParent();
461 void TreeItem::setHideInExport(bool b)
463 if (isBranchLikeType() )
466 /* FIXME-1 call setVis and updateContentsSize...
468 systemFlags->activate("hideInExport");
470 systemFlags->deactivate("hideInExport");
478 bool TreeItem::hideInExport()
483 bool TreeItem::isHidden()