std::vector<int> IntersectionNodesInAirport::ReflectRemoveOf( ALTObjectList objList ) { std::vector<int> vChangeNodeIndexs; //IntersectionNodeList vNodes = m_vNodeList; IntersectionNodeList newNodeList; ALTObjectUIDList objIDList = GetObjectUIDList(objList); for(int i=0;i <(int)m_vNodeList.size();i++) { IntersectionNode& theNode = m_vNodeList[i]; bool bChanged = theNode.HasObjectIn(objIDList); for(int j=0;j< (int)objIDList.size();j++) { int nObjID = objIDList.at(j); theNode.RemoveObjectItem(nObjID); } if(theNode.IsValid()) { newNodeList.push_back(theNode); if(bChanged) vChangeNodeIndexs.push_back((int)newNodeList.size()-1); } } m_vNodeList = newNodeList; UpdateNodesIdx(*this, vChangeNodeIndexs); UpdateNodesName(*this, vChangeNodeIndexs); UpdateDataToDB(m_nAirportID, vChangeNodeIndexs); return vChangeNodeIndexs; }
void CImageTreeCtrl::OnEndlabeledit(NMHDR* pNMHDR, LRESULT* pResult) { TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR; TVITEM & item = pTVDispInfo->item; *pResult = 1; if(item.pszText && CanSetLabelText(item)) { if (UpdateDataToDB()) { // item.pszText=m_name_new.GetBuffer(); } else { item.pszText=m_name_old.GetBuffer(); } SetItem(&item); *pResult = 0; } }
std::vector<int> IntersectionNodesInAirport::ReflectChangeOf( ALTObjectList changObjs,ALTObjectList objList ) { IntersectionNodeList vOldNodes = m_vNodeList; std::vector<int> vChangeNodeIndexs; IntersectionNodeList newNodeList; ALTObjectUIDList changeObjIDs = GetObjectUIDList(changObjs); for(int i=0;i <(int)m_vNodeList.size();i++) { IntersectionNode& theNode = m_vNodeList[i]; bool bChanged = theNode.HasObjectIn(changeObjIDs); for(int j=0;j< (int)changeObjIDs.size();j++) { int changeOjbID = changeObjIDs.at(j); theNode.RemoveObjectItem(changeOjbID); } if(theNode.IsValid()) { newNodeList.push_back(theNode); if(bChanged) vChangeNodeIndexs.push_back((int)newNodeList.size()-1); } } m_vNodeList = newNodeList; //calculate intersection nodes for(int i=0;i< (int) changObjs.size();i++) { ALTObject * pChangObj = changObjs[i].get(); for(int j=0;j< (int)objList.size();j++) { ALTObject* OtherObj = objList[j].get(); if( OtherObj->getID() != pChangObj->getID() ) { std::vector<IntersectionNode> reslts; GetIntersectionNodes(pChangObj,OtherObj,reslts); AddNodes(reslts); } } } for(int i=0;i< (int)m_vNodeList.size();i++) { IntersectionNode& theNode = m_vNodeList[i]; if(theNode.HasObjectIn(changeObjIDs)) { if( vChangeNodeIndexs.end()== std::find(vChangeNodeIndexs.begin(), vChangeNodeIndexs.end(), i) ) { vChangeNodeIndexs.push_back(i); } } } UpdateNodesIdx(*this, vChangeNodeIndexs); UpdateNodesName(*this, vChangeNodeIndexs); // for(int i=0;i< (int)m_vNodeList.size();i++) { IntersectionNode& theNewNode = m_vNodeList[i]; for(int j=0;j<(int)vOldNodes.size();j++) { IntersectionNode& theOldNode = vOldNodes[j]; if( theNewNode.GetID() == theOldNode.GetID()|| theNewNode.IsIdentical(theOldNode) ) { theNewNode.SetID(theOldNode.GetID()); vOldNodes.erase( vOldNodes.begin() + j); break; } } } for(int i=0;i< (int)vOldNodes.size();i++) { IntersectionNode& theOldNode = vOldNodes[i]; theOldNode.DeleteData(); } UpdateDataToDB(m_nAirportID, vChangeNodeIndexs); return vChangeNodeIndexs; }