author | insilmaril |
Wed, 09 Jun 2010 13:14:08 +0000 | |
changeset 847 | 43268373032d |
permissions | -rw-r--r-- |
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 |