#include <QGraphicsScene>
#include "xlinkitem.h"
#include "branchitem.h"
#include "linkablemapobj.h"
#include "vymmodel.h"
#include "xlinkobj.h"
/////////////////////////////////////////////////////////////////
// XLinkItem
/////////////////////////////////////////////////////////////////
XLinkItem::XLinkItem (const QList<QVariant> &data, TreeItem *parent):MapItem (data,parent)
{
//qDebug() << "Const XLinkItem () "<<this;
init();
}
XLinkItem::~XLinkItem ()
{
// qDebug() << "Destr XLinkItem begin "<<this<<" pI="<<parentItem<<" link="<<link;
if (link)
{
XLinkItem *xli=link->getOtherEnd (this);
if (xli) model->deleteLater (xli->getID());
model->deleteLink (link);
}
// qDebug() << "Destr XLinkItem end";
}
void XLinkItem::init ()
{
setType (XLink);
link=NULL;
}
void XLinkItem::clear()
{
}
void XLinkItem::setLink (Link *l)
{
link=l;
}
Link* XLinkItem::getLink ()
{
return link;
}
void XLinkItem::updateXLink()
{
if (link)
link->updateLink();
}
MapObj* XLinkItem::getMO()
{
if (link)
return link->getMO();
return NULL;
}
void XLinkItem::setSelection()
{
if (link)
{
XLinkObj* xlo=(XLinkObj*)getMO();
if (xlo)
{
if (parentItem==link->getBeginBranch() )
xlo->setSelection(XLinkObj::C0);
else if (parentItem==link->getEndBranch() )
xlo->setSelection(XLinkObj::C1);
}
}
}
BranchItem* XLinkItem::getPartnerBranch()
{
if (link && link->getBeginBranch() && link->getEndBranch())
{
if (parentItem==link->getBeginBranch())
return link->getEndBranch();
else
return link->getBeginBranch();
}
return NULL;
}