Пример #1
0
QMap<int, QString> KoChangeTracker::saveInlineChanges(QMap<int, QString> changeTransTable, KoGenChanges &genChanges)
{
    foreach (int changeId, d->changes.keys()) {

        // return if the id we find in the changetranstable already has a length.
        if (changeTransTable.value(changeId).length()) {
            continue;
        }

        if ((elementById(changeId)->getChangeType() == KoGenChange::DeleteChange) &&
                (saveFormat() == KoChangeTracker::ODF_1_2)) {
            continue;
        }

        KoGenChange change;
        if (saveFormat() == KoChangeTracker::ODF_1_2) {
            change.setChangeFormat(KoGenChange::ODF_1_2);
        } else {
            change.setChangeFormat(KoGenChange::DELTAXML);
        }

        saveInlineChange(changeId, change);
        QString changeName = genChanges.insert(change);
        changeTransTable.insert(changeId, changeName);
    }
    return changeTransTable;
}
Пример #2
0
void ItDocument::detectIdSystem(QStringList alignedIds) {
    //QStringList keys = index.keys();
    /* Check first ID */
    if (alignedIds.isEmpty()) return;
    QString temp;
    QString id = "";
    //while (id=="" || !index.contains(id))
    id = alignedIds.takeFirst();
    ItElement * e = elementById(id);
    if (e==0) {
        setUnknownNumbering(NO_IDS_IN_DOCUMENT);
        return;
    }
    QString parent_id = e->getParentID(idNamespaceURI);
    if (!parent_id.isEmpty() && id.startsWith(parent_id)) {
        //qDebug() << "First ID starts with parent's ID: 2-level(?).";
        numbering_parent_prefix = parent_id;
        numbering_parent_prefix.remove(QRegExp("[0-9]+$"));
        if (numbering_parent_prefix.size()<parent_id.size()) {
            numbering_levels = 2;
            numbering_prefix = id;
            numbering_prefix.remove(QRegExp(QString("^%1").arg(parent_id)));
            temp = numbering_prefix;
            numbering_prefix.remove(QRegExp("[0-9]+$"));
            if (numbering_prefix.size()==temp.size()) {
                //qDebug() << "No number in the first ID (2-level):" << id << numbering_prefix << temp;
                setUnknownNumbering();
                return;
            }
        } else {
            //qDebug() << "Parents are not numbered: 1-level.";
            numbering_levels = 1;
            numbering_parent_prefix = "";
        }
    } else {
        //qDebug() << "First ID does not start with parent's ID: 1-level(?)." << id << parent_id;
        numbering_prefix = id;
        numbering_prefix.remove(QRegExp("[0-9]+$"));
        if (numbering_prefix.size()==id.size()) {
            //qDebug() << "No number in the first ID (1-level):" << id;
            setUnknownNumbering();
            return;
        }
        numbering_levels = 1;
        numbering_parent_prefix = "";
    }
    //qDebug() << "Verifying all aligned elements.";
    /* Verify all IDs */
    while (!alignedIds.isEmpty()) {
        id = alignedIds.takeFirst();
        if (id=="" || !index.contains(id)) {
            setUnknownNumbering();
            return;
        } // continue;
        //qDebug() << id;
        if (numbering_levels==1) {
            //temp = id;
            if (id.remove(QRegExp("[0-9]+$"))!=numbering_prefix) {
                //qDebug() << "No number in the ID (1-level):" << temp << id << numbering_prefix;
                setUnknownNumbering();
                return;
            }
        } else {
            parent_id = index.value(id)->getParentID(idNamespaceURI);
            //temp = id;
            if (id.remove(QRegExp("[0-9]+$")).remove(QRegExp(QString(numbering_prefix).append("$")))!=parent_id) {
                //qDebug() << "No parent ID" << parent_id << "or prefix" << numbering_prefix << "or number in the ID (2-level):" << temp;
                setUnknownNumbering();
                return;
            }
            //temp = parent_id;
            if (parent_id.remove(QRegExp("[0-9]+$"))!=numbering_parent_prefix) {
                //qDebug() << "No number in the parent ID (2-level):" << temp;
                setUnknownNumbering();
                return;
            }
        }
    }
    /* check for one common parent - revised: why not?? */
    /*if (numbering_levels==2 && first_parent_id==parent_id) {
    //qDebug() << "There is only one common parent! (1-level)";
    numbering_levels = 1;
    numbering_prefix = parent_id;
  }*/
}