xlink.cpp
author insilmaril
Mon, 14 Jun 2010 13:59:17 +0000
changeset 848 e265f07f2173
parent 847 43268373032d
permissions -rw-r--r--
Fixed tmp relink, colored headings in TreeView
insilmaril@847
     1
#include <QDebug>
insilmaril@847
     2
insilmaril@847
     3
#include "xlink.h"
insilmaril@847
     4
insilmaril@847
     5
#include "vymmodel.h"
insilmaril@847
     6
#include "xlinkitem.h"
insilmaril@847
     7
#include "xlinkobj.h"
insilmaril@847
     8
insilmaril@847
     9
/////////////////////////////////////////////////////////////////
insilmaril@847
    10
// Link
insilmaril@847
    11
/////////////////////////////////////////////////////////////////
insilmaril@847
    12
insilmaril@847
    13
Link::Link (VymModel *m)
insilmaril@847
    14
{
insilmaril@847
    15
	//qDebug() << "Const Link () this="<<this;
insilmaril@847
    16
	init();
insilmaril@847
    17
	model=m;
insilmaril@847
    18
}
insilmaril@847
    19
insilmaril@847
    20
Link::~Link ()
insilmaril@847
    21
{
insilmaril@847
    22
	//qDebug()<<"* Destr Link begin this="<<this<<"  bLI="<<beginLinkItem<<"  eLI="<<endLinkItem;
insilmaril@847
    23
	//deactivate();
insilmaril@847
    24
	//qDebug()<<"* Destr Link end   this="<<this;
insilmaril@847
    25
}
insilmaril@847
    26
insilmaril@847
    27
void Link::init () 
insilmaril@847
    28
{
insilmaril@847
    29
	xlo=NULL;
insilmaril@847
    30
	beginBranch=NULL;
insilmaril@847
    31
	endBranch=NULL;
insilmaril@847
    32
	xLinkState=Link::undefinedXLink;
insilmaril@847
    33
insilmaril@847
    34
	color=QColor (180,180,180);
insilmaril@847
    35
	width=1;
insilmaril@847
    36
}
insilmaril@847
    37
insilmaril@847
    38
void Link::setBeginBranch (BranchItem *bi)
insilmaril@847
    39
{
insilmaril@847
    40
	if (bi) 
insilmaril@847
    41
	{
insilmaril@847
    42
		xLinkState=initXLink;
insilmaril@847
    43
		beginBranch=bi;
insilmaril@847
    44
	}	
insilmaril@847
    45
}
insilmaril@847
    46
insilmaril@847
    47
BranchItem* Link::getBeginBranch ()
insilmaril@847
    48
{
insilmaril@847
    49
	return beginBranch;
insilmaril@847
    50
}
insilmaril@847
    51
insilmaril@847
    52
void Link::setEndBranch (BranchItem *bi)
insilmaril@847
    53
{
insilmaril@847
    54
	if (bi) 
insilmaril@847
    55
	{
insilmaril@847
    56
		xLinkState=initXLink;
insilmaril@847
    57
		endBranch=bi;
insilmaril@847
    58
	}		
insilmaril@847
    59
}
insilmaril@847
    60
insilmaril@847
    61
BranchItem* Link::getEndBranch()
insilmaril@847
    62
{
insilmaril@847
    63
	return endBranch;
insilmaril@847
    64
}
insilmaril@847
    65
insilmaril@847
    66
void Link::setEndPoint (QPointF p)
insilmaril@847
    67
{
insilmaril@847
    68
	if (xlo) xlo->setEnd (p);
insilmaril@847
    69
}
insilmaril@847
    70
insilmaril@847
    71
void Link::setBeginLinkItem (XLinkItem *li)
insilmaril@847
    72
{
insilmaril@847
    73
	if (li) 
insilmaril@847
    74
	{
insilmaril@847
    75
		xLinkState=initXLink;
insilmaril@847
    76
		beginLinkItem=li;
insilmaril@847
    77
	}	
insilmaril@847
    78
}
insilmaril@847
    79
insilmaril@847
    80
XLinkItem* Link::getBeginLinkItem ()
insilmaril@847
    81
{
insilmaril@847
    82
	return beginLinkItem;
insilmaril@847
    83
}
insilmaril@847
    84
insilmaril@847
    85
void Link::setEndLinkItem (XLinkItem *li)
insilmaril@847
    86
{
insilmaril@847
    87
	if (li) 
insilmaril@847
    88
	{
insilmaril@847
    89
		xLinkState=initXLink;
insilmaril@847
    90
		endLinkItem=li;
insilmaril@847
    91
	}		
insilmaril@847
    92
}
insilmaril@847
    93
insilmaril@847
    94
XLinkItem* Link::getEndLinkItem()
insilmaril@847
    95
{
insilmaril@847
    96
	return endLinkItem;
insilmaril@847
    97
}
insilmaril@847
    98
insilmaril@847
    99
void Link::setWidth (int w)
insilmaril@847
   100
{
insilmaril@847
   101
	width=w;
insilmaril@847
   102
	if (xlo) xlo->updateXLink();
insilmaril@847
   103
}
insilmaril@847
   104
insilmaril@847
   105
int Link::getWidth()
insilmaril@847
   106
{
insilmaril@847
   107
	return width;
insilmaril@847
   108
}
insilmaril@847
   109
insilmaril@847
   110
void Link::setColor(QColor c)
insilmaril@847
   111
{
insilmaril@847
   112
	color=c;
insilmaril@847
   113
	if (xlo) xlo->updateXLink();
insilmaril@847
   114
}
insilmaril@847
   115
insilmaril@847
   116
QColor Link::getColor()
insilmaril@847
   117
{
insilmaril@847
   118
	return color;
insilmaril@847
   119
}
insilmaril@847
   120
insilmaril@847
   121
bool Link::activate ()	
insilmaril@847
   122
{
insilmaril@847
   123
	if (beginBranch && endBranch)
insilmaril@847
   124
	{
insilmaril@847
   125
		
insilmaril@847
   126
		if (beginBranch==endBranch) return false;
insilmaril@847
   127
		xLinkState=activeXLink;
insilmaril@847
   128
insilmaril@847
   129
		model->updateActions();
insilmaril@847
   130
		return true;
insilmaril@847
   131
	} else
insilmaril@847
   132
		return false;
insilmaril@847
   133
}
insilmaril@847
   134
insilmaril@847
   135
void Link::deactivate ()	
insilmaril@847
   136
{
insilmaril@847
   137
	// Remove pointers from XLinkItem to Link and
insilmaril@847
   138
	// delete XLinkObj
insilmaril@847
   139
insilmaril@847
   140
	xLinkState=deleteXLink;
insilmaril@847
   141
	if (beginLinkItem) beginLinkItem->setLink (NULL);
insilmaril@847
   142
	if (endLinkItem) endLinkItem->setLink (NULL);
insilmaril@847
   143
	if (xlo)
insilmaril@847
   144
	{
insilmaril@847
   145
		delete (xlo);  
insilmaril@847
   146
		xlo=NULL;
insilmaril@847
   147
	}
insilmaril@847
   148
}
insilmaril@847
   149
insilmaril@847
   150
void Link::removeXLinkItem (XLinkItem *xli)
insilmaril@847
   151
{
insilmaril@847
   152
	if (xli==beginLinkItem) beginLinkItem=NULL;
insilmaril@847
   153
	if (xli==endLinkItem) endLinkItem=NULL;
insilmaril@847
   154
}
insilmaril@847
   155
insilmaril@847
   156
void Link::updateLink()
insilmaril@847
   157
{
insilmaril@847
   158
	if(xlo ) xlo->updateXLink();
insilmaril@847
   159
}
insilmaril@847
   160
insilmaril@847
   161
QString Link::saveToDir ()
insilmaril@847
   162
{
insilmaril@847
   163
	QString s="";
insilmaril@847
   164
	if (beginBranch && endBranch && xLinkState==activeXLink)
insilmaril@847
   165
	{
insilmaril@847
   166
		if (beginBranch==endBranch )
insilmaril@847
   167
			qWarning ("Link::saveToDir  beginBranch==endBranch");
insilmaril@847
   168
		else
insilmaril@847
   169
		{
insilmaril@847
   170
			QString colAttr=attribut ("color",color.name());
insilmaril@847
   171
			QString widAttr=attribut ("width",QString().setNum(width,10));
insilmaril@847
   172
			QString begSelAttr=attribut ("beginID",model->getSelectString(beginBranch));
insilmaril@847
   173
			QString endSelAttr=attribut ("endID",  model->getSelectString(endBranch));
insilmaril@847
   174
			s=singleElement ("xlink", colAttr +widAttr +begSelAttr +endSelAttr);
insilmaril@847
   175
insilmaril@847
   176
		}
insilmaril@847
   177
	}
insilmaril@847
   178
	return s;
insilmaril@847
   179
}
insilmaril@847
   180
insilmaril@847
   181
XLinkObj* Link::getXLinkObj()
insilmaril@847
   182
{
insilmaril@847
   183
	return xlo;
insilmaril@847
   184
}
insilmaril@847
   185
insilmaril@847
   186
XLinkObj* Link::createMapObj(QGraphicsScene *scene)  
insilmaril@847
   187
{
insilmaril@847
   188
	if (!xlo) xlo=new XLinkObj (scene,this);  
insilmaril@847
   189
	return xlo;
insilmaril@847
   190
}
insilmaril@847
   191
insilmaril@847
   192