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