/** This method is used to load all of the links * @param pathsNode The XML node to load the links from * @return 0 , The file was loaded without problems * -2 , If the file is corrupt */ int CMapFileFilterXML::loadLinks(QDomElement *pathsNode) { QDomNode n = pathsNode->firstChild(); while (!n.isNull() ) { QDomElement e = n.toElement(); if (e.isNull() ) { kDebug() << "Unable to find link element "; return -2; } if (e.tagName()=="Link") { int srcLevelID = e.attribute("SrcLevel","-2").toInt(); int destLevelID = e.attribute("DestLevel","-2").toInt(); if (srcLevelID == -2 || destLevelID == -2) { kDebug() << "Unable to find link end points"; return -2; } CMapLevel *srcLevel = m_mapManager->findLevel(srcLevelID); CMapLevel *destLevel = m_mapManager->findLevel(destLevelID); int textID = e.attribute("SrcID","-2").toInt(); int destID = e.attribute("DestID","-2").toInt(); int labelPos = e.attribute("LabelPos","0").toInt(); int srcTyp = e.attribute("SrcType","-2").toInt(); int destTyp = e.attribute("DestType","-2").toInt(); if (textID == -2 || destID == -2 || destTyp == -2 || srcTyp == -2) { kDebug() << "Unable to find link end points"; return -2; } if (srcTyp == (int)TEXT) { CMapText *text = srcLevel->findText(textID); if (destTyp==(int)ROOM) { CMapRoom *destElement = destLevel->findRoom(destID); destElement->setLabelPosition((CMapRoom::labelPosTyp)labelPos,text); } if (destTyp==(int)ZONE) { CMapZone *destElement = m_mapManager->findZone(destID); destElement->setLabelPosition((CMapZone::labelPosTyp)labelPos,text); } } } n = n.nextSibling(); } return 0; }