1 #include <QGraphicsScene>
4 #include "branchitem.h"
5 #include "linkablemapobj.h"
9 /////////////////////////////////////////////////////////////////
11 /////////////////////////////////////////////////////////////////
13 XLinkItem::XLinkItem (const QList<QVariant> &data, TreeItem *parent):MapItem (data,parent)
16 //cout << "Const XLinkItem () "<<this<<endl;
20 XLinkItem::~XLinkItem ()
22 //cout << "Destr XLinkItem "<<this<<" lmo="<<lmo<<endl;
25 //cout <<" calling delete (lmo)\n";
30 // Also delete partner
31 //cout << " deleting partner="<<partnerXLink<<endl;
32 partnerXLink->partnerXLink=NULL; // avoid endless recusion
33 model->deleteItem (partnerXLink);
38 void XLinkItem::init ()
45 xLinkState=XLinkItem::undefinedXLink;
47 color=QColor (180,180,180);
51 void XLinkItem::setBegin (BranchItem *bi)
60 BranchItem* XLinkItem::getBegin ()
65 void XLinkItem::setEnd (BranchItem *bi)
74 BranchItem* XLinkItem::getEnd()
79 void XLinkItem::setWidth (int w)
84 if (lmo) ((XLinkObj*)lmo)->updateXLink();
88 partnerXLink->setWidth (w);
91 int XLinkItem::getWidth()
93 if (isBeginXLink) return width;
95 return partnerXLink->getWidth();
100 void XLinkItem::setColor(QColor c)
105 if (lmo) ((XLinkObj*)lmo)->updateXLink();
109 partnerXLink->setColor (c);
112 QColor XLinkItem::getColor()
114 if (isBeginXLink) return color;
116 return partnerXLink->getColor();
121 void XLinkItem::setEnd (QPointF p)
123 if (lmo) ((XLinkObj*)lmo)->setEnd (p);
126 bool XLinkItem::activate ()
128 if (beginBranch && endBranch)
130 if (beginBranch==endBranch) return false;
132 partnerXLink=model->createXLink (endBranch);
133 partnerXLink->setBegin (beginBranch);
134 partnerXLink->setEnd (endBranch);
135 partnerXLink->partnerXLink=this;
136 partnerXLink->isBeginXLink=false;
138 xLinkState=activeXLink;
139 partnerXLink->xLinkState=activeXLink;
140 partnerXLink->setHeading ("xLink to: "+beginBranch->getHeading());
141 setHeading ("xLink to: "+endBranch->getHeading());
143 model->updateActions();
149 bool XLinkItem::isBegin()
154 void XLinkItem::updateXLink()
156 if(lmo && isBeginXLink)
157 ((XLinkObj*)lmo)->updateXLink();
159 if (partnerXLink) partnerXLink->updateXLink();
162 void XLinkItem::updateVisibility()
164 if (lmo) lmo->updateVisibility();
167 BranchItem* XLinkItem::getPartnerBranch()
169 if (!beginBranch && !endBranch)
177 BranchItem* XLinkItem::getOtherBranch(TreeItem *ti)
179 BranchItem *pb=getPartnerBranch();
180 if (!pb) return NULL;
190 XLinkItem* XLinkItem::getPartnerXLink()
196 QString XLinkItem::saveToDir ()
199 if (beginBranch && endBranch && xLinkState==activeXLink)
201 if (beginBranch==endBranch )
202 qWarning ("XLI::saveToDir beginBranch==endBranch"); //FIXME-3 s=""
205 QString colAttr=attribut ("color",color.name());
206 QString widAttr=attribut ("width",QString().setNum(width,10));
207 QString begSelAttr=attribut ("beginID",model->getSelectString(beginBranch));
208 QString endSelAttr=attribut ("endID", model->getSelectString(endBranch));
209 s=beginElement ("xlink", colAttr +widAttr +begSelAttr +endSelAttr);
211 s+=endElement ("xlink");
217 XLinkObj* XLinkItem::createMapObj(QGraphicsScene *scene)
219 XLinkObj* xlo=new XLinkObj (scene,this);
220 lmo=(LinkableMapObj*)xlo;