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 cout << "Destructor TreeItem\n";
39 //if (lmo) delete (lmo);
40 qDeleteAll(childItems);
43 QString TreeItem::saveToDir (const QString &tmpdir,const QString &prefix, const QPointF& offset)
45 cout << "TreeItem::saveToDir called directly for ("<<getHeadingStd()<<"), instead of inherited type...\n"; //FIXME-1 triggered on save
51 void TreeItem::copy (OrnamentedObj* other) //FIXME-2 probably need deep copy of branches and data!
54 note.copy (other->note);
61 void TreeItem::setModel (VymModel *m)
66 VymModel* TreeItem::getModel ()
71 void TreeItem::appendChild(TreeItem *item)
73 childItems.append(item);
74 item->setModel (model);
76 if (item->type == Branch || item->type ==MapCenter)
79 branchOffset=childItems.count()-1;
84 void TreeItem::removeChild(int row)
86 if (row<0 || row > childItems.size()-1)
87 qWarning ("TreeItem::removeChild tried to remove non existing item?!\n");
90 cout << "TI::removeChild this="<<this<<" row="<<row<<endl;
91 if (childItems.at(row)->isBranchLikeType())
93 childItems.removeAt (row);
97 TreeItem *TreeItem::child(int row)
99 return childItems.value(row);
102 int TreeItem::childCount() const
104 return childItems.count();
107 int TreeItem::childNumber() const
110 return parentItem->childItems.indexOf(const_cast<TreeItem*>(this));
115 int TreeItem::columnCount() const
117 return itemData.count();
120 int TreeItem::branchCount() const
122 return branchCounter;
125 int TreeItem::imageCount() const
128 return imageCounter; // FIXME-1 imageCounter needs to be calculated...
131 int TreeItem::xlinkCount() const // FIXME-2 check if xlinks are stored in a different way (global to model?)
134 return xlinkCounter; // FIXME-1 xlinkCounter needs to be calculated...
137 int TreeItem::row() const
140 return parentItem->childItems.indexOf(const_cast<TreeItem*>(this));
145 int TreeItem::column() const
150 int TreeItem::depth()
162 TreeItem *TreeItem::parent()
167 int TreeItem::childNum()
169 return parentItem->childItems.indexOf (this);
176 case Undefined: return -1;
177 case MapCenter: return parentItem->childItems.indexOf (this) - branchOffset;
178 case Branch: return parentItem->childItems.indexOf (this) - branchOffset;
179 case Image: return -1; // FIXME-2
184 int TreeItem::num (TreeItem *item)
186 if (!item) return -1;
187 switch (item->getType())
189 case Undefined: return -1;
190 case MapCenter: return childItems.indexOf (this) - branchOffset;
191 case Branch: return childItems.indexOf (this) - branchOffset;
192 case Image: return -1; // FIXME-2
197 QVariant TreeItem::data(int column) const
199 return itemData.value(column);
202 void TreeItem::setHeading (const QString s)
207 QString TreeItem::getHeading () const
209 return itemData[0].toString();
212 std::string TreeItem::getHeadingStd () const
214 return itemData[0].toString().toStdString();
217 void TreeItem::setNote(const QString s)
220 // updateNoteFlag(); FIXME-2 needed?
222 model->emitNoteHasChanged (this);
225 void TreeItem::setNoteObj(const NoteObj &n, bool updateNoteEditor)
228 // updateNoteFlag(); FIXME-2 needed?
229 if (model && updateNoteEditor)
230 model->emitNoteHasChanged (this);
233 QString TreeItem::getNote()
235 return note.getNote();
238 NoteObj TreeItem::getNoteObj()
243 QString TreeItem::getNoteASCII(const QString &indent, const int &width)
245 return note.getNoteASCII(indent,width);
248 QString TreeItem::getNoteASCII()
250 return note.getNoteASCII();
253 QString TreeItem::getNoteOpenDoc()
255 return note.getNoteOpenDoc();
258 void TreeItem::setType(const Type t)
261 itemData[1]=getTypeName();
264 TreeItem::Type TreeItem::getType()
269 bool TreeItem::isBranchLikeType() const
271 if (type==Branch ||type==MapCenter) return true;
275 QString TreeItem::getTypeName()
279 case Undefined: return QString ("Undefined");
280 case MapCenter: return QString ("MapCenter");
281 case Branch: return QString ("Branch");
282 case Image: return QString ("Image");
283 default: return QString ("TreeItem::getTypeName no typename defined?!");
287 void TreeItem::setID (const QString &s)
292 QString TreeItem::getID()
298 TreeItem* TreeItem::getChildNum(const int &n)
300 if (n>=0 && n<childItems.count() )
301 return childItems.at(n);
306 BranchItem* TreeItem::getFirstBranch()
309 return getBranchNum (branchOffset);
314 BranchItem* TreeItem::getLastBranch()
317 return getBranchNum (branchOffset + branchCounter-1);
323 BranchItem* TreeItem::getBranchNum(const int &n)
326 return (BranchItem*)getChildNum (branchOffset + n);
331 BranchObj* TreeItem::getBranchObjNum(const int &n)
335 return (BranchObj*)(getChildNum (branchOffset+n)->lmo);
340 void TreeItem::setLastSelectedBranch()
343 parentItem->lastSelectedBranchNum=parentItem->childItems.indexOf(this);
346 TreeItem* TreeItem::findBySelectString (const QString &s) //FIXME-1
349 LinkableMapObj *lmo=this;
353 while (!s.isEmpty() )
355 part=s.section(",",0,0);
357 num=part.right(part.length() - 3);
361 return false; // in a subtree there is no center
366 lmo=lmo->getTreeItem()->getBranchObjNum (num.toInt());
369 lmo=((BranchObj*)lmo)->getFloatImageNum (num.toUInt());
373 s=s.right(s.length() - part.length() -1 );
381 void TreeItem::setLastSelectedBranch(int i)
383 lastSelectedBranchNum=i;
386 TreeItem* TreeItem::getLastSelectedBranch()
388 return getBranchNum (lastSelectedBranchNum);
392 void TreeItem::setHideTmp (HideTmpMode mode)
394 if (isBranchLikeType() )
395 ((BranchItem*)this)->updateVisibility();
398 //updateVisibility();
403 if (mode==HideExport && (hideExport || hasHiddenExportParent() ) )
405 // Hide stuff according to hideExport flag and parents
406 //setVisibility (false);
408 //FIXME-2 hidden=true;
411 // Do not hide, but still take care of scrolled status
414 XXXXXXXX treeItem should be THIS
416 move visible to TreeItem???
418 BranchObj now has updateContents
420 maybe also start "bool TreeItem::branchlikeType"
424 if ( ((BranchItem*)treeItem)->hasScrolledParent((BranchItem*)treeItem))
425 setVisibility (false);
427 setVisibility (true);
428 //FIXME-2 hidden=false;
432 // And take care of my children
433 for (int i=0; i<branchCount(); ++i)
434 getBranchNum(i)->setHideTmp (mode);
437 bool TreeItem::hasHiddenExportParent()
439 // Calls parents recursivly to
440 // find out, if we or parents are temp. hidden
442 if (hidden || hideExport) return true;
445 return parentItem->hasHiddenExportParent();
451 void TreeItem::setHideInExport(bool b)
453 if (isBranchLikeType() )
456 /* FIXME-1 call setVis and updateContentsSize...
458 systemFlags->activate("hideInExport");
460 systemFlags->deactivate("hideInExport");
468 bool TreeItem::hideInExport()
473 bool TreeItem::isHidden()
479 LinkableMapObj* TreeItem::getLMO() // FIXME-3 VM should be unnecessary in the end
484 void TreeItem::setLMO(LinkableMapObj *l)