treeitem.cpp
changeset 776 25e634a7e1dc
parent 773 340bc29da9a0
child 777 8acac4fade1b
     1.1 --- a/treeitem.cpp	Wed Jun 03 20:37:17 2009 +0000
     1.2 +++ b/treeitem.cpp	Mon Jun 08 11:36:56 2009 +0000
     1.3 @@ -11,7 +11,15 @@
     1.4  
     1.5  extern FlagRow* standardFlagsMaster;
     1.6  
     1.7 -TreeItem::TreeItem(const QList<QVariant> &data, TreeItem *parent):MapItem()
     1.8 +TreeItem::TreeItem()
     1.9 +{
    1.10 +	init();
    1.11 +	itemData.clear();
    1.12 +	rootItem=this;
    1.13 +	parentItem=NULL;
    1.14 +}
    1.15 +
    1.16 +TreeItem::TreeItem(const QList<QVariant> &data, TreeItem *parent)
    1.17  {
    1.18  	//cout << "Constructor TreeItem this="<<this<<"  parent="<<parent<<endl;
    1.19  	init();
    1.20 @@ -65,6 +73,7 @@
    1.21  	// isNoteInEditor=false;
    1.22  
    1.23  	hidden=false;
    1.24 +	hideExport=false;
    1.25  
    1.26  	// Reset ID
    1.27  	objID="";
    1.28 @@ -94,15 +103,37 @@
    1.29  	return model;
    1.30  }
    1.31  
    1.32 +int TreeItem::getRowNumAppend (TreeItem *item)
    1.33 +{	
    1.34 +	switch (item->type)
    1.35 +	{
    1.36 +		case MapCenter: return branchOffset + branchCounter;
    1.37 +		case Branch: return branchOffset + branchCounter;
    1.38 +		case Image: return imageOffset + imageCounter;
    1.39 +		default: return -1;
    1.40 +	}
    1.41 +}
    1.42 +
    1.43  void TreeItem::appendChild(TreeItem *item)
    1.44  {
    1.45 -    childItems.append(item);
    1.46  	item->parentItem=this;
    1.47  	item->rootItem=rootItem;
    1.48  	item->setModel (model);
    1.49  
    1.50 -	if (item->type == Branch || item->type ==MapCenter)
    1.51 +	if (item->type == Image)
    1.52  	{
    1.53 +		childItems.insert (imageCounter,item);
    1.54 +		// images are on top of list
    1.55 +		if (imageCounter==0)
    1.56 +			imageOffset=0;
    1.57 +		imageCounter++;
    1.58 +		branchOffset++;
    1.59 +	}
    1.60 +
    1.61 +	if (item->isBranchLikeType())
    1.62 +	{
    1.63 +		// branches are on bottom of list
    1.64 +		childItems.append(item);
    1.65  		if (branchCounter==0)
    1.66  			branchOffset=childItems.count()-1;
    1.67  		branchCounter++;
    1.68 @@ -117,6 +148,12 @@
    1.69  	{
    1.70  		if (childItems.at(row)->isBranchLikeType())
    1.71  			branchCounter--;
    1.72 +		if (childItems.at(row)->type==Image)
    1.73 +		{
    1.74 +			imageCounter--;
    1.75 +			if (branchOffset>0) 
    1.76 +				branchOffset--;
    1.77 +		}	
    1.78  		childItems.removeAt (row);
    1.79  	}
    1.80  }
    1.81 @@ -160,8 +197,7 @@
    1.82  
    1.83  int TreeItem::imageCount() const
    1.84  {
    1.85 -	int imageCounter=0;
    1.86 -    return imageCounter; // FIXME-1 imageCounter needs to be calculated...
    1.87 +    return imageCounter; 
    1.88  }
    1.89  
    1.90  int TreeItem::xlinkCount() const // FIXME-2 check if xlinks are stored in a different way (global to model?)
    1.91 @@ -209,10 +245,9 @@
    1.92  {
    1.93  	switch (type)
    1.94  	{
    1.95 -		case Undefined: return -1;
    1.96 -		case MapCenter: return parentItem->childItems.indexOf (this) - branchOffset;
    1.97 -		case Branch: return parentItem->childItems.indexOf (this) - branchOffset;
    1.98 -		case Image: return parentItem->childItems.indexOf (this) - imageOffset;
    1.99 +		case MapCenter: return parentItem->childItems.indexOf (this) - parentItem->branchOffset;
   1.100 +		case Branch: return parentItem->childItems.indexOf (this) - parentItem->branchOffset;
   1.101 +		case Image: return parentItem->childItems.indexOf (this) - parentItem->imageOffset;
   1.102  		default: return -1;
   1.103  	}
   1.104  }
   1.105 @@ -220,9 +255,9 @@
   1.106  int TreeItem::num (TreeItem *item)
   1.107  {
   1.108  	if (!item) return -1;
   1.109 +	if (!childItems.contains(item)) return -1;
   1.110  	switch (item->getType())
   1.111  	{
   1.112 -		case Undefined: return -1;
   1.113  		case MapCenter: return childItems.indexOf (item) - branchOffset;
   1.114  		case Branch: return childItems.indexOf (item) - branchOffset;
   1.115  		case Image: return parentItem->childItems.indexOf (item) - imageOffset;
   1.116 @@ -348,8 +383,7 @@
   1.117  	systemFlags.deactivate ("system-note");
   1.118  }
   1.119  
   1.120 -void TreeItem::setNoteObj(const NoteObj &n, bool updateNoteEditor) //FIXME-1 setNoteObj is called for every select or so???
   1.121 -{
   1.122 +void TreeItem::setNoteObj(const NoteObj &n, bool updateNoteEditor){
   1.123  	note=n;
   1.124  	if (!note.isEmpty() && !systemFlags.isActive ("system-note"))
   1.125  		systemFlags.activate ("system-note");
   1.126 @@ -426,13 +460,12 @@
   1.127  	return &standardFlags;
   1.128  }
   1.129  
   1.130 -/*
   1.131 -void TreeItem::updateToolBar()
   1.132 +/* FIXME-3 void TreeItem::updateToolBar()
   1.133  {
   1.134  	standardFlags.updateToolBar();
   1.135  }
   1.136  */
   1.137 -QStringList TreeItem::activeSystemFlagNames ()	//FIXME-1 missing: scrolled-tmp,hideInExport
   1.138 +QStringList TreeItem::activeSystemFlagNames ()
   1.139  {
   1.140  	return systemFlags.activeFlagNames();
   1.141  }
   1.142 @@ -521,7 +554,7 @@
   1.143  
   1.144  BranchItem* TreeItem::getBranchNum(const int &n)
   1.145  {
   1.146 -	if (branchCounter>0)
   1.147 +	if (n>=0 && n<branchCounter)
   1.148  		return (BranchItem*)getChildNum (branchOffset + n);
   1.149  	else
   1.150  		return NULL;
   1.151 @@ -529,9 +562,9 @@
   1.152  
   1.153  BranchObj* TreeItem::getBranchObjNum(const int &n)
   1.154  {
   1.155 -	if (branchCounter>0)
   1.156 +	if (n>=0 && n<branchCounter)
   1.157  	{
   1.158 -		return (BranchObj*)(getChildNum (branchOffset+n)->lmo);
   1.159 +		return (BranchObj*)(getBranchNum(n)->getLMO());
   1.160  	} else
   1.161  		return NULL;
   1.162  }
   1.163 @@ -552,6 +585,21 @@
   1.164  	return getBranchNum (lastSelectedBranchNum);
   1.165  }
   1.166  
   1.167 +ImageItem* TreeItem::getImageNum (const int &n)
   1.168 +{
   1.169 +	if (n>=0 && n<imageCounter)
   1.170 +		return (ImageItem*)getChildNum (imageOffset + n);
   1.171 +	else
   1.172 +		return NULL;
   1.173 +}
   1.174 +
   1.175 +FloatImageObj* TreeItem::getImageObjNum (const int &n)	// FIXME-5 what about SVGs later?
   1.176 +{
   1.177 +	if (imageCounter>0 )
   1.178 +		return (FloatImageObj*)(getImageNum(n)->getLMO());
   1.179 +	else
   1.180 +		return NULL;
   1.181 +}
   1.182  
   1.183  void TreeItem::setHideTmp (HideTmpMode mode)
   1.184  {
   1.185 @@ -614,18 +662,14 @@
   1.186  
   1.187  void TreeItem::setHideInExport(bool b) 
   1.188  {
   1.189 -	if (isBranchLikeType() )
   1.190 +	if (type==Branch || type==Image)
   1.191  	{
   1.192  		hideExport=b;
   1.193 -		/* FIXME-1 call setVis and updateContentsSize...
   1.194 +		// FIXME-1 call setVis and updateContentsSize...
   1.195  		if (b)
   1.196 -			systemFlags->activate("hideInExport");
   1.197 +			systemFlags.activate("hideInExport");
   1.198  		else	
   1.199 -			systemFlags->deactivate("hideInExport");
   1.200 -		calcBBoxSize();
   1.201 -		positionBBox();
   1.202 -		requestReposition();	
   1.203 -		*/
   1.204 +			systemFlags.deactivate("hideInExport");
   1.205  	}
   1.206  }	
   1.207