void DiagramScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent)
{
    if (line != 0 && myMode == InsertLine)
    {
        QList<QGraphicsItem *> firstItems = items(line->line().p1());
        if (firstItems.count() && firstItems.first() == line)
            firstItems.removeFirst();
        QList<QGraphicsItem *> secondItems = items(line->line().p2());
        if (secondItems.count() && secondItems.first() == line)
            secondItems.removeFirst();

        removeItem(line);
        delete line;

        if (firstItems.count() > 0 && secondItems.count() > 0 &&
            firstItems.first()->type() == DiagramItem::Type &&
            secondItems.first()->type() == DiagramItem::Type &&
            firstItems.first() != secondItems.first()) {
            DiagramItem *firstItem = qgraphicsitem_cast<DiagramItem *>(firstItems.first());
            DiagramItem *secondItem = qgraphicsitem_cast<DiagramItem *>(secondItems.first());

            if (firstItem->CheckEmployment())
            {
                line = 0;
                return;
            }
            if (secondItem->CheckEmployment())
            {
                line = 0;
                return;
            }

            Link *link = new Link(firstItem, secondItem);
            firstItem->addLink(link);
            secondItem->addLink(link);
            link->setZValue(-1000.0);
            addItem(link);
            link->updatePosition();
            emit linkInserted(firstItem, secondItem, link);
        }
        myMode = MoveItem;
    }
    line = 0;
    QGraphicsScene::mouseReleaseEvent(mouseEvent);
}