vymmodel.cpp
changeset 790 133e2ed6b9c5
parent 788 78ba80b54bc4
child 791 f1006de05c54
     1.1 --- a/vymmodel.cpp	Mon Aug 24 14:39:07 2009 +0000
     1.2 +++ b/vymmodel.cpp	Thu Sep 03 08:52:00 2009 +0000
     1.3 @@ -16,6 +16,7 @@
     1.4  #include "parser.h"
     1.5  
     1.6  #include "warningdialog.h"
     1.7 +#include "xlinkitem.h"
     1.8  #include "xml-freemind.h"
     1.9  #include "xmlobj.h"
    1.10  #include "xml-vym.h"
    1.11 @@ -238,7 +239,7 @@
    1.12  	s+=xml.beginElement("vymmap",mapAttr);
    1.13  	xml.incIndent();
    1.14  
    1.15 -	// Find the used flags while traversing the tree	// FIXME-2 this can be done local to vymmodel maybe...
    1.16 +	// Find the used flags while traversing the tree	// FIXME-3 this can be done local to vymmodel maybe...
    1.17  	standardFlagsMaster->resetUsedCounter();
    1.18  	
    1.19  	// Build xml recursivly
    1.20 @@ -261,7 +262,8 @@
    1.21  				// Save Image
    1.22  				s+=((ImageItem*)saveSel)->saveToDir(tmpdir,prefix);
    1.23  				break;
    1.24 -			default://FIXME-4 other types shouldn't be safed...
    1.25 +			default: 
    1.26 +				// other types shouldn't be safed directly...
    1.27  				break;
    1.28  		}
    1.29  	}
    1.30 @@ -1444,12 +1446,14 @@
    1.31  
    1.32  TreeItem* VymModel::findID (const QString &s)
    1.33  {
    1.34 -	TreeItem *ti;
    1.35 -	for (int i=0; i<rootItem->branchCount(); i++)
    1.36 +	BranchItem *cur=NULL;
    1.37 +	BranchItem *prev=NULL;
    1.38 +	next(cur,prev);
    1.39 +	while (cur) 
    1.40  	{
    1.41 -		ti=rootItem->getBranchNum(i)->findID (s);
    1.42 -		if (ti) return ti;
    1.43 -	}	
    1.44 +		if (s==cur->getID() ) return cur;
    1.45 +		next(cur,prev);
    1.46 +	}
    1.47  	return NULL;
    1.48  }
    1.49  
    1.50 @@ -1984,7 +1988,7 @@
    1.51  		int n;
    1.52  
    1.53  		QList<QVariant> cData;
    1.54 -		cData << "new" << "undef"<<"undef";
    1.55 +		cData << "new" << "undef";
    1.56  
    1.57  		ImageItem *newii=new ImageItem(cData) ;	
    1.58  		//newii->setHeading (QApplication::translate("Heading of new image in map", "new image"));
    1.59 @@ -2008,13 +2012,48 @@
    1.60  	return NULL;
    1.61  }
    1.62  
    1.63 +XLinkItem* VymModel::createXLink(BranchItem *bi,bool createMO)
    1.64 +{
    1.65 +	if (bi)
    1.66 +	{
    1.67 +		QModelIndex parix;
    1.68 +		int n;
    1.69 +
    1.70 +		QList<QVariant> cData;
    1.71 +		cData << "new xLink"<<"undef";
    1.72 +
    1.73 +		XLinkItem *newxli=new XLinkItem(cData) ;	
    1.74 +
    1.75 +		emit (layoutAboutToBeChanged() );
    1.76 +
    1.77 +			parix=index(bi);
    1.78 +			n=bi->getRowNumAppend(newxli);
    1.79 +			beginInsertRows (parix,n,n+1);
    1.80 +			bi->appendChild (newxli);	
    1.81 +			endInsertRows ();
    1.82 +
    1.83 +		emit (layoutChanged() );
    1.84 +
    1.85 +		// save scroll state. If scrolled, automatically select
    1.86 +		// new branch in order to tmp unscroll parent...
    1.87 +		newxli->setBegin (bi);
    1.88 +		if (createMO) 
    1.89 +		{
    1.90 +			newxli->createMapObj(mapScene);
    1.91 +			reposition();
    1.92 +		}
    1.93 +		return newxli;
    1.94 +	} 
    1.95 +	return NULL;
    1.96 +}
    1.97 +
    1.98  AttributeItem* VymModel::addAttribute()	// FIXME-2 savestate missing
    1.99  {
   1.100  	BranchItem *selbi=getSelectedBranch();
   1.101  	if (selbi)
   1.102  	{
   1.103  		QList<QVariant> cData;
   1.104 -		cData << "new attribute" << "undef"<<"undef";
   1.105 +		cData << "new attribute" << "undef";
   1.106  		AttributeItem *a=new AttributeItem (cData);
   1.107  
   1.108  		emit (layoutAboutToBeChanged() );
   1.109 @@ -2061,7 +2100,7 @@
   1.110  	beginInsertRows (parix,n,n+1);
   1.111  
   1.112  	QList<QVariant> cData;
   1.113 -	cData << "VM:addMapCenter" << "undef"<<"undef";
   1.114 +	cData << "VM:addMapCenter" << "undef";
   1.115  	BranchItem *newbi=new BranchItem (cData,rootItem);
   1.116  	newbi->setHeading (QApplication::translate("Heading of mapcenter in new map", "New map"));
   1.117  	rootItem->appendChild (newbi);
   1.118 @@ -2086,7 +2125,7 @@
   1.119  
   1.120  	// Create TreeItem
   1.121  	QList<QVariant> cData;
   1.122 -	cData << "new" << "undef"<<"undef";
   1.123 +	cData << "new" << "undef";
   1.124  
   1.125  	BranchItem *parbi;
   1.126  	QModelIndex parix;
   1.127 @@ -2298,15 +2337,20 @@
   1.128  		return;
   1.129  	}
   1.130  	TreeItem *ti=getSelectedItem();
   1.131 -	if (ti->getType()==TreeItem::Image || ti->getType()==TreeItem::Attribute)
   1.132 +	if (ti)
   1.133  	{
   1.134  		TreeItem *pi=ti->parent();
   1.135 -		saveStateChangingPart(
   1.136 -			pi, 
   1.137 -			ti,
   1.138 -			"delete ()",
   1.139 -			QString("Delete %1").arg(getObjectName(ti))
   1.140 -		);
   1.141 +		if (!pi) return;
   1.142 +		if (ti->getType()==TreeItem::Image || ti->getType()==TreeItem::Attribute)
   1.143 +		{
   1.144 +			saveStateChangingPart(
   1.145 +				pi, 
   1.146 +				ti,
   1.147 +				"delete ()",
   1.148 +				QString("Delete %1").arg(getObjectName(ti))
   1.149 +			);
   1.150 +		}
   1.151 +		// FIXME-0 savestate missing for deletion of other times
   1.152  		unselect();
   1.153  		deleteItem (ti);
   1.154  		emitDataHasChanged (pi);
   1.155 @@ -2393,6 +2437,7 @@
   1.156  
   1.157  TreeItem* VymModel::deleteItem (TreeItem *ti)
   1.158  {
   1.159 +	cout << "VM::deleteItem "<<ti<<endl;
   1.160  	if (ti)
   1.161  	{
   1.162  		TreeItem *pi=ti->parent();
   1.163 @@ -2764,49 +2809,40 @@
   1.164  }
   1.165  
   1.166  
   1.167 -void VymModel::followXLink(int i)	// FIXME-2
   1.168 +void VymModel::followXLink(int i)	
   1.169  {
   1.170  	i=0;
   1.171 -	/*
   1.172 -	BranchObj *bo=getSelectedBranch();
   1.173 -	if (bo)
   1.174 +	BranchItem *selbi=getSelectedBranch();
   1.175 +	if (selbi)
   1.176  	{
   1.177 -		bo=bo->XLinkTargetAt(i);
   1.178 -		if (bo) 
   1.179 -		{
   1.180 -			selection.select(bo);
   1.181 -			emitShowSelection();
   1.182 -		}
   1.183 +		selbi=selbi->getXLinkNum(i)->getPartnerBranch();
   1.184 +		if (selbi) select (selbi);
   1.185  	}
   1.186 -	*/
   1.187  }
   1.188  
   1.189 -void VymModel::editXLink(int i)	// FIXME-2 VM missing saveState
   1.190 +void VymModel::editXLink(int i)	
   1.191  {
   1.192  	i=0;
   1.193 -	/*
   1.194 -	BranchObj *bo=getSelectedBranch();
   1.195 -	if (bo)
   1.196 +	BranchItem *selbi=getSelectedBranch();
   1.197 +	if (selbi)
   1.198  	{
   1.199 -		XLinkObj *xlo=bo->XLinkAt(i);
   1.200 -		if (xlo) 
   1.201 +		XLinkItem *xli=selbi->getXLinkNum(i);
   1.202 +		if (xli) 
   1.203  		{
   1.204  			EditXLinkDialog dia;
   1.205 -			dia.setXLink (xlo);
   1.206 -			dia.setSelection(bo);
   1.207 +			dia.setXLink (xli);
   1.208 +			dia.setSelection(selbi);
   1.209  			if (dia.exec() == QDialog::Accepted)
   1.210  			{
   1.211  				if (dia.useSettingsGlobal() )
   1.212  				{
   1.213 -					setMapDefXLinkColor (xlo->getColor() );
   1.214 -					setMapDefXLinkWidth (xlo->getWidth() );
   1.215 +					setMapDefXLinkColor (xli->getColor() );
   1.216 +					setMapDefXLinkWidth (xli->getWidth() );
   1.217  				}
   1.218 -				if (dia.deleteXLink())
   1.219 -					bo->deleteXLinkAt(i);
   1.220 +				if (dia.deleteXLink()) deleteItem (xli);
   1.221  			}
   1.222  		}	
   1.223  	}
   1.224 -*/	
   1.225  }
   1.226  
   1.227