treeitem.cpp
author insilmaril
Wed, 01 Apr 2009 15:06:57 +0000
changeset 749 9ff332964015
parent 746 ee6b0f3a4c2f
child 750 ff3b01ce0960
permissions -rw-r--r--
moved scroll functions from BranchObj to BranchItem
     1 #include <iostream>
     2 using namespace std;
     3 
     4 #include <QStringList>
     5 
     6 #include "branchobj.h"
     7 #include "treeitem.h"
     8 #include "vymmodel.h"
     9 
    10 TreeItem::TreeItem(const QList<QVariant> &data, TreeItem *parent)
    11 {
    12 	model=NULL;
    13 
    14     parentItem = parent;
    15     itemData = data;
    16 	lmo=NULL;
    17 
    18 	branchOffset=0;
    19 	branchCounter=0;
    20 	lastSelectedBranchNum=-1;
    21 
    22 	note.setNote(""); 
    23 	// note.setFontHint (textEditor->getFontHintDefault() );	//FIXME-2
    24 	// isNoteInEditor=false;
    25 }
    26 
    27 TreeItem::~TreeItem()
    28 {
    29     qDeleteAll(childItems);
    30 }
    31 
    32 QString TreeItem::saveToDir (const QString &tmpdir,const QString &prefix, const QPointF& offset)
    33 {
    34 	qWarning ("TreeItem::saveToDir called directly");
    35 	return QString();
    36 }
    37 
    38 
    39 /*
    40 void TreeItem::copy (OrnamentedObj* other)	//FIXME-2
    41 
    42 {
    43 	note.copy (other->note);
    44 	model=other->model;
    45 }
    46 */
    47 
    48 void TreeItem::setModel (VymModel *m)
    49 {
    50 	model=m;
    51 }
    52 
    53 VymModel* TreeItem::getModel ()
    54 {
    55 	return model;
    56 }
    57 
    58 void TreeItem::appendChild(TreeItem *item)
    59 {
    60     childItems.append(item);
    61 	item->setModel (model);
    62 
    63 	if (item->type == Branch || item->type ==MapCenter)
    64 	{
    65 		if (branchCounter==0)
    66 			branchOffset=childItems.count()-1;
    67 		branchCounter++;
    68 	}
    69 }
    70 
    71 void TreeItem::removeChild(int row)
    72 {
    73     if (row<0 || row > childItems.size()-1)
    74 		qWarning ("TreeItem::removeChild tried to remove non existing item?!\n");
    75 	else
    76 	{
    77 		cout << "TI::removeChild this="<<this<<"  row="<<row<<endl;
    78 		delete childItems.takeAt (row);
    79 	}
    80 }
    81 
    82 TreeItem *TreeItem::child(int row)
    83 {
    84     return childItems.value(row);
    85 }
    86 
    87 int TreeItem::childCount() const
    88 {
    89     return childItems.count();
    90 }
    91 
    92 int TreeItem::childNumber() const
    93 {
    94     if (parentItem)
    95         return parentItem->childItems.indexOf(const_cast<TreeItem*>(this));
    96 
    97     return 0;
    98 }
    99 
   100 int TreeItem::columnCount() const
   101 {
   102     return itemData.count();
   103 }
   104 
   105 int TreeItem::branchCount() const
   106 {
   107     return branchCounter;
   108 }
   109 
   110 int TreeItem::imageCount() const
   111 {
   112 	int imageCounter=0;
   113     return imageCounter; // FIXME-1 imageCounter needs to be calculated...
   114 }
   115 
   116 int TreeItem::xlinkCount() const // FIXME-2 check if xlinks are stored in a different way (global to model?)
   117 {
   118 	int xlinkCounter=0;
   119     return xlinkCounter; // FIXME-1 xlinkCounter needs to be calculated...
   120 }
   121 
   122 int TreeItem::row() const
   123 {
   124     if (parentItem)
   125         return parentItem->childItems.indexOf(const_cast<TreeItem*>(this));
   126 
   127     return 0;
   128 }
   129 
   130 int TreeItem::column() const
   131 {
   132     return 0;
   133 }
   134 
   135 int TreeItem::depth() 
   136 {
   137 	int d=-1;
   138 	TreeItem *ti=this;
   139 	while (ti!=NULL)
   140 	{
   141 		ti=ti->parent();
   142 		d++;
   143 	}
   144 	return d;
   145 }
   146 
   147 TreeItem *TreeItem::parent()
   148 {
   149     return parentItem;
   150 }
   151 
   152 int TreeItem::num()
   153 {
   154 	switch (type)
   155 	{
   156 		case Undefined: return -1;
   157 		case MapCenter: return parentItem->childItems.indexOf (this) - branchOffset;
   158 		case Branch: return parentItem->childItems.indexOf (this) - branchOffset;
   159 		case Image: return -1; // FIXME-2
   160 		default: return -1;
   161 	}
   162 }
   163 
   164 int TreeItem::num (TreeItem *item)
   165 {
   166 	if (!item) return -1;
   167 	switch (item->getType())
   168 	{
   169 		case Undefined: return -1;
   170 		case MapCenter: return childItems.indexOf (this) - branchOffset;
   171 		case Branch: return childItems.indexOf (this) - branchOffset;
   172 		case Image: return -1; // FIXME-2
   173 		default: return -1;
   174 	}
   175 }
   176 
   177 QVariant TreeItem::data(int column) const
   178 {
   179     return itemData.value(column);
   180 }
   181 
   182 void TreeItem::setHeading (const QString s)
   183 {
   184 	itemData[0]=s;
   185 }
   186 
   187 QString TreeItem::getHeading ()
   188 {
   189 	return itemData[0].toString();
   190 }
   191 
   192 void TreeItem::setNote(const QString s)
   193 {
   194 	note.setNote(s);
   195 	// updateNoteFlag();  FIXME-2 needed?
   196 	if (model) 
   197 		model->emitContentHasChanged (this);
   198 }
   199 
   200 void TreeItem::setNoteObj(const NoteObj &n, bool updateNoteEditor)
   201 {
   202 	note=n;
   203 	// updateNoteFlag();  FIXME-2 needed?
   204 	if (model && updateNoteEditor)	
   205 		model->emitContentHasChanged (this);
   206 }
   207 
   208 QString TreeItem::getNote()
   209 {
   210 	return note.getNote();
   211 }
   212 
   213 NoteObj TreeItem::getNoteObj()
   214 {
   215 	return note;
   216 }
   217 
   218 QString TreeItem::getNoteASCII(const QString &indent, const int &width)
   219 {
   220     return note.getNoteASCII(indent,width);
   221 }
   222 
   223 QString TreeItem::getNoteASCII()
   224 {
   225     return note.getNoteASCII();
   226 }
   227 
   228 QString TreeItem::getNoteOpenDoc()
   229 {
   230     return note.getNoteOpenDoc();
   231 }
   232 
   233 void TreeItem::setType(const Type t)
   234 {
   235 	type=t;
   236 	itemData[1]=getTypeName();
   237 }
   238 
   239 TreeItem::Type TreeItem::getType()
   240 {
   241 	return type;
   242 }
   243 
   244 QString TreeItem::getTypeName()
   245 {
   246 	switch (type)
   247 	{
   248 		case Undefined: return QString ("Undefined");
   249 		case MapCenter: return QString ("MapCenter");
   250 		case Branch: return QString ("Branch");
   251 		case Image: return QString ("Image");
   252 		default: return QString ("TreeItem::getTypeName no typename defined?!");
   253 	}
   254 }
   255 
   256 TreeItem* TreeItem::getChildNum(const int &n)
   257 {
   258 	if (n>=0 && n<childItems.count() )
   259 		return childItems.at(n);
   260 	else
   261 		return NULL;
   262 }
   263 
   264 TreeItem* TreeItem::getFirstBranch()
   265 {
   266 	if (branchCounter>0)
   267 		return getBranchNum (branchOffset);
   268 	else
   269 		return NULL;
   270 }
   271 
   272 TreeItem* TreeItem::getLastBranch()
   273 {
   274 	if (branchCounter>0)
   275 		return getBranchNum (branchOffset + branchCounter-1);
   276 	else
   277 		return NULL;
   278 }
   279 
   280 
   281 TreeItem* TreeItem::getBranchNum(const int &n)
   282 {
   283 	if (branchCounter>0)
   284 		return getChildNum (branchOffset + n);
   285 	else
   286 		return NULL;
   287 }
   288 
   289 void TreeItem::setLastSelectedBranch()
   290 {
   291 	if (parentItem)
   292 		parentItem->lastSelectedBranchNum=parentItem->childItems.indexOf(this);
   293 }
   294 
   295 TreeItem* TreeItem::getLastSelectedBranch()
   296 {
   297 	return getBranchNum (lastSelectedBranchNum);
   298 }
   299 
   300 LinkableMapObj* TreeItem::getLMO()	// FIXME-3  VM should be unnecessary in the end
   301 {
   302 	return lmo;
   303 }
   304 
   305 void TreeItem::setLMO(LinkableMapObj *l)
   306 {
   307 	lmo=l;
   308 }
   309