Example #1
0
/**
 * @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);
    }
}
Example #2
0
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 ++ ;
    }
}