/** * @brief Regola::updateMetadata update the updatable metadata if existing or insert them * @return */ void Regola::insertMetadata(QTreeWidget *tree) { //--- /* breakpoint trap extern bool stopMeta; if( stopMeta ) { stopMeta = true ; }*/ //--- bool found = false; Element *firstElement = NULL ; int row = 0 ; foreach(Element * topLevel, childItems) { if(topLevel->getType() == Element::ET_PROCESSING_INSTRUCTION) { if(NULL == firstElement) { firstElement = topLevel ; } if(topLevel->getPITarget() == MetadataInfo::QXMLEDIT_TARGET_PI) { MetadataInfo info; if(info.parseUpdatable(topLevel->getPIData(), row)) { found = true ; updateMetadataRecord(tree, topLevel, &info, true); break; } } row ++ ; } } if(!found) { // insert new metadata MetadataInfo newInfo; newInfo.markNewRecord(); QString newData = newInfo.updatable()->toProcessingInstruction(); newInfo.updatable()->update(false); Element *newPI = new Element(this, Element::ET_PROCESSING_INSTRUCTION, NULL); newPI->setPITarget(MetadataInfo::QXMLEDIT_TARGET_PI); newPI->setPIData(newData); newPI->markEdited(); // at the second place, if possible int insertIndex = 0 ; if((NULL != firstElement) && (firstElement->getType() == Element::ET_PROCESSING_INSTRUCTION) && (firstElement->getPITarget().toLower() == "xml")) { insertIndex = 1; } childItems.insert(insertIndex, newPI); newPI->caricaFigli(tree, NULL, paintInfo, true, insertIndex); afterInsertHousekeeping(newPI, tree, true); } }
void Regola::updateMetadata(QTreeWidget *tree) { int index = 0 ; foreach(Element * topLevel, childItems) { if((topLevel->getType() == Element::ET_PROCESSING_INSTRUCTION) && (topLevel->getPITarget() == MetadataInfo::QXMLEDIT_TARGET_PI)) { MetadataInfo info; if(info.parseUpdatable(topLevel->getPIData(), index)) { updateMetadataRecord(tree, topLevel, &info, false); break; } } index ++ ; } }