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