From dacd71af168529de89a0251aac6edb51c17da5f9 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Sun, 23 Mar 2008 03:27:02 +0000 Subject: [PATCH] Read those little synonym-beastys. svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=789090 --- keduvocdocument/keduvockvtml2reader.cpp | 34 +++++++++++++++++++++++++ keduvocdocument/keduvockvtml2reader.h | 2 ++ keduvocdocument/keduvockvtml2writer.cpp | 14 +++++----- 3 files changed, 43 insertions(+), 7 deletions(-) diff --git a/keduvocdocument/keduvockvtml2reader.cpp b/keduvocdocument/keduvockvtml2reader.cpp index 951b3f3..764e585 100644 --- a/keduvocdocument/keduvockvtml2reader.cpp +++ b/keduvocdocument/keduvockvtml2reader.cpp @@ -177,6 +177,8 @@ bool KEduVocKvtml2Reader::readGroups( QDomElement &domElementParent ) } } + readSynonymsAntonymsFalseFriends( domElementParent ); + groupElement = domElementParent.firstChildElement( KVTML_WORDTYPES ); if ( !groupElement.isNull() ) { readChildWordTypes( m_doc->wordTypeContainer(), groupElement ); @@ -384,6 +386,38 @@ bool KEduVocKvtml2Reader::readLesson( KEduVocLesson* parentLesson, QDomElement & } +bool KEduVocKvtml2Reader::readSynonymsAntonymsFalseFriends( QDomElement &rootElement ) +{ + // synonyms + QDomElement pairElement = rootElement.firstChildElement( KVTML_SYNONYM ); + // pair + pairElement = pairElement.firstChildElement( KVTML_PAIR ); + while ( !pairElement.isNull() ) { + // + QDomElement entryElement = pairElement.firstChildElement( KVTML_ENTRY ); + int firstEntryId = entryElement.attribute( KVTML_ID ).toInt(); + + QDomElement translationElement = entryElement.firstChildElement( KVTML_TRANSLATION ); + int firstTranslationId = translationElement.attribute( KVTML_ID ).toInt(); + + // second entry + entryElement = entryElement.nextSiblingElement( KVTML_ENTRY ); + int secondEntryId = entryElement.attribute( KVTML_ID ).toInt(); + translationElement = entryElement.firstChildElement( KVTML_TRANSLATION ); + int secondTranslationId = translationElement.attribute( KVTML_ID ).toInt(); + + // pair them up + KEduVocTranslation *first = m_allEntries[firstEntryId]->translation(firstTranslationId); + KEduVocTranslation *second = m_allEntries[secondEntryId]->translation(secondTranslationId); + + first->addSynonym(second); + second->addSynonym(first); + + pairElement = pairElement.nextSiblingElement( KVTML_PAIR ); + } + return true; +} + bool KEduVocKvtml2Reader::readArticle( QDomElement &articleElement, int identifierNum ) /*
diff --git a/keduvocdocument/keduvockvtml2reader.h b/keduvocdocument/keduvockvtml2reader.h index 42f8d14..c0947c5 100644 --- a/keduvocdocument/keduvockvtml2reader.h +++ b/keduvocdocument/keduvockvtml2reader.h @@ -145,6 +145,8 @@ private: */ bool readLesson( KEduVocLesson* parentLesson, QDomElement &lessonElement ); + bool readSynonymsAntonymsFalseFriends( QDomElement &rootElement ); + /** pre-opened QIODevice to read from */ QIODevice *m_inputFile; diff --git a/keduvocdocument/keduvockvtml2writer.cpp b/keduvocdocument/keduvockvtml2writer.cpp index 0370b9a..88fa805 100644 --- a/keduvocdocument/keduvockvtml2writer.cpp +++ b/keduvocdocument/keduvockvtml2writer.cpp @@ -232,8 +232,8 @@ kDebug() << "writing list of synonyms: " << m_synonyms.count(); relatedElement.appendChild(entryElement); - entryElement = m_domDoc.createElement( KVTML_ENTRY ); - entryElement.setAttribute( KVTML_ID, QString::number(m_allEntries.indexOf(synonym->entry())) ); + QDomElement partnerElement = m_domDoc.createElement( KVTML_ENTRY ); + partnerElement.setAttribute( KVTML_ID, QString::number(m_allEntries.indexOf(synonym->entry())) ); // find out which id that is foreach(int index, synonym->entry()->translationIndices()) { @@ -241,16 +241,16 @@ kDebug() << "writing list of synonyms: " << m_synonyms.count(); // create QDomElement translationElement = m_domDoc.createElement( KVTML_TRANSLATION ); translationElement.setAttribute( KVTML_ID, QString::number(index) ); - entryElement.appendChild(translationElement); + partnerElement.appendChild(translationElement); break; } } - relatedElement.appendChild( entryElement ); - } - if (relatedElement.hasChildNodes()) { - synonymElement.appendChild( relatedElement ); + relatedElement.appendChild( partnerElement ); } } + if (relatedElement.hasChildNodes()) { + synonymElement.appendChild( relatedElement ); + } } if (synonymElement.hasChildNodes()) { parentElement.appendChild( synonymElement ); -- 2.47.3