void AGOSEngine::setItemParent(Item *item, Item *parent) { Item *old_parent = derefItem(item->parent); if (item == parent) error("setItemParent: Trying to set item as its own parent"); // unlink it if it has a parent if (old_parent) unlinkItem(item); itemChildrenChanged(old_parent); linkItem(item, parent); itemChildrenChanged(parent); }
void AGOSEngine::xPlace(Item *x, Item *y) { if (derefItem(x->parent)) unlinkItem(x); linkItem(x, y); }
void MindMap::readFromText(QTextStream& in) { clear(); m_roots.clear(); // m_root = nullptr; Node* current=nullptr; int currentD = 0; QList<Node*> m_listOfAncestor; Node* parent = nullptr; while(!in.atEnd()) { //if(i==90) // return; QString line=in.readLine(); int depth = getDepth(line); QString data = line.trimmed(); // qDebug() << "depth:" <<depth << "data:" <<data << "currentD:" <<currentD << "ancestor count:" <<m_listOfAncestor.size(); if((depth==0)&&(data.isEmpty()))//&&(currentD==0) { continue; } else { if(nullptr!=current) { if(depth>currentD)//on level under { parent = current; //current = addNodeAt(QPoint(parent->childItems().count()*20,currentD*40)); current = addNodeAt(QPoint(currentD*100,parent->childItems().count()*40)); m_listOfAncestor.append(current); currentD = depth; } else if(depth==currentD)// previous d == current d { // qDebug() << "$$$$$$$$$$$$$$" << "parent:" << (parent==nullptr ? "null" : parent->getText()); m_listOfAncestor.removeLast(); //current = addNodeAt(QPoint(parent->childItems().count()*20,currentD*40)); current = addNodeAt(QPoint(currentD*100,parent->childItems().count()*40)); m_listOfAncestor.append(current); } else if(depth<currentD)//many level above { while(m_listOfAncestor.size()>depth) m_listOfAncestor.removeLast(); if(!m_listOfAncestor.isEmpty()) { parent = m_listOfAncestor.last(); } else { parent = nullptr; } // qDebug() << "////////////////" << "parent:" << (parent==nullptr ? "null" : parent->getText()); //current = addNodeAt(QPoint(0,currentD*40)); current = addNodeAt(QPoint(currentD*100,currentD*40)); if(nullptr==parent) { m_listOfAncestor.clear(); m_listOfAncestor.append(current); m_roots.append(current); } m_listOfAncestor.append(current); currentD = depth; } else { // qDebug() << ";;;;;;;;;;;;;;;;;;;;;;;;;"; } current->setText(data); linkItem(parent,current); } else { current = addNodeAt(QPoint(sceneRect().width()/2,sceneRect().height()/2)); current->setText(data); m_roots.append(current); qDebug() << "add roots" << current; currentD = depth; parent = current; m_listOfAncestor.clear(); m_listOfAncestor.append(current); } } } }