further speedup during load. positions of branches are saved (again)
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;
56 // note.setFontHint (textEditor->getFontHintDefault() ); //FIXME-2
57 // isNoteInEditor=false;
65 QString TreeItem::saveToDir (const QString &tmpdir,const QString &prefix, const QPointF& offset)
67 cout << "TreeItem::saveToDir called directly for ("<<getHeadingStd()<<"), instead of inherited type...\n"; //FIXME-1 triggered on save
73 void TreeItem::copy (OrnamentedObj* other) //FIXME-2 probably need deep copy of branches and data!
76 note.copy (other->note);
83 void TreeItem::setModel (VymModel *m)
88 VymModel* TreeItem::getModel ()
93 void TreeItem::appendChild(TreeItem *item)
95 childItems.append(item);
96 item->parentItem=this;
97 item->setModel (model);
99 if (item->type == Branch || item->type ==MapCenter)
101 if (branchCounter==0)
102 branchOffset=childItems.count()-1;
107 void TreeItem::removeChild(int row)
109 if (row<0 || row > childItems.size()-1)
110 qWarning ("TreeItem::removeChild tried to remove non existing item?!\n");
113 if (childItems.at(row)->isBranchLikeType())
115 childItems.removeAt (row);
119 TreeItem *TreeItem::child(int row)
121 return childItems.value(row);
124 int TreeItem::childCount() const
126 return childItems.count();
129 int TreeItem::childNumber() const
132 return parentItem->childItems.indexOf(const_cast<TreeItem*>(this));
137 int TreeItem::columnCount() const
139 return itemData.count();
142 int TreeItem::branchCount() const
144 return branchCounter;
147 int TreeItem::imageCount() const
150 return imageCounter; // FIXME-1 imageCounter needs to be calculated...
153 int TreeItem::xlinkCount() const // FIXME-2 check if xlinks are stored in a different way (global to model?)
156 return xlinkCounter; // FIXME-1 xlinkCounter needs to be calculated...
159 int TreeItem::row() const
162 return parentItem->childItems.indexOf(const_cast<TreeItem*>(this));
167 int TreeItem::column() const
172 int TreeItem::depth()
184 TreeItem *TreeItem::parent()
189 int TreeItem::childNum()
191 return parentItem->childItems.indexOf (this);
198 case Undefined: return -1;
199 case MapCenter: return parentItem->childItems.indexOf (this) - branchOffset;
200 case Branch: return parentItem->childItems.indexOf (this) - branchOffset;
201 case Image: return -1; // FIXME-2
206 int TreeItem::num (TreeItem *item)
208 if (!item) return -1;
209 switch (item->getType())
211 case Undefined: return -1;
212 case MapCenter: return childItems.indexOf (this) - branchOffset;
213 case Branch: return childItems.indexOf (this) - branchOffset;
214 case Image: return -1; // FIXME-2
219 QVariant TreeItem::data(int column) const
221 return itemData.value(column);
224 void TreeItem::setHeading (const QString s)
229 QString TreeItem::getHeading () const
231 return itemData[0].toString();
234 std::string TreeItem::getHeadingStd () const
236 return itemData[0].toString().toStdString();
239 void TreeItem::setHeadingColor (QColor color)
244 QColor TreeItem::getHeadingColor ()
249 void TreeItem::setNote(const QString s)
252 // updateNoteFlag(); FIXME-2 needed?
254 model->emitNoteHasChanged (this);
257 void TreeItem::setNoteObj(const NoteObj &n, bool updateNoteEditor)
260 // updateNoteFlag(); FIXME-2 needed?
261 if (model && updateNoteEditor)
262 model->emitNoteHasChanged (this);
265 QString TreeItem::getNote()
267 return note.getNote();
270 NoteObj TreeItem::getNoteObj()
275 QString TreeItem::getNoteASCII(const QString &indent, const int &width)
277 return note.getNoteASCII(indent,width);
280 QString TreeItem::getNoteASCII()
282 return note.getNoteASCII();
285 QString TreeItem::getNoteOpenDoc()
287 return note.getNoteOpenDoc();
290 void TreeItem::setType(const Type t)
293 itemData[1]=getTypeName();
296 TreeItem::Type TreeItem::getType()
301 bool TreeItem::isBranchLikeType() const
303 if (type==Branch ||type==MapCenter) return true;
307 QString TreeItem::getTypeName()
311 case Undefined: return QString ("Undefined");
312 case MapCenter: return QString ("MapCenter");
313 case Branch: return QString ("Branch");
314 case Image: return QString ("Image");
315 default: return QString ("TreeItem::getTypeName no typename defined?!");
319 void TreeItem::setID (const QString &s)
324 QString TreeItem::getID()
330 TreeItem* TreeItem::getChildNum(const int &n)
332 if (n>=0 && n<childItems.count() )
333 return childItems.at(n);
338 BranchItem* TreeItem::getFirstBranch()
341 return getBranchNum (branchOffset);
346 BranchItem* TreeItem::getLastBranch()
349 return getBranchNum (branchOffset + branchCounter-1);
355 BranchItem* TreeItem::getBranchNum(const int &n)
358 return (BranchItem*)getChildNum (branchOffset + n);
363 BranchObj* TreeItem::getBranchObjNum(const int &n)
367 return (BranchObj*)(getChildNum (branchOffset+n)->lmo);
372 void TreeItem::setLastSelectedBranch()
375 parentItem->lastSelectedBranchNum=parentItem->childItems.indexOf(this);
378 void TreeItem::setLastSelectedBranch(int i)
380 lastSelectedBranchNum=i;
383 TreeItem* TreeItem::getLastSelectedBranch()
385 return getBranchNum (lastSelectedBranchNum);
389 void TreeItem::setHideTmp (HideTmpMode mode)
391 if (isBranchLikeType() )
392 ((BranchItem*)this)->updateVisibility();
395 //updateVisibility();
400 if (mode==HideExport && (hideExport || hasHiddenExportParent() ) )
402 // Hide stuff according to hideExport flag and parents
403 //setVisibility (false);
405 //FIXME-2 hidden=true;
408 // Do not hide, but still take care of scrolled status
411 XXXXXXXX treeItem should be THIS
413 move visible to TreeItem???
415 BranchObj now has updateContents
417 maybe also start "bool TreeItem::branchlikeType"
421 if ( ((BranchItem*)treeItem)->hasScrolledParent((BranchItem*)treeItem))
422 setVisibility (false);
424 setVisibility (true);
425 //FIXME-2 hidden=false;
429 // And take care of my children
430 for (int i=0; i<branchCount(); ++i)
431 getBranchNum(i)->setHideTmp (mode);
434 bool TreeItem::hasHiddenExportParent()
436 // Calls parents recursivly to
437 // find out, if we or parents are temp. hidden
439 if (hidden || hideExport) return true;
442 return parentItem->hasHiddenExportParent();
448 void TreeItem::setHideInExport(bool b)
450 if (isBranchLikeType() )
453 /* FIXME-1 call setVis and updateContentsSize...
455 systemFlags->activate("hideInExport");
457 systemFlags->deactivate("hideInExport");
465 bool TreeItem::hideInExport()
470 bool TreeItem::isHidden()