From 1343592e5d7465488bb4d5da836634a3da2266f2 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Sun, 23 Mar 2008 03:27:05 +0000 Subject: [PATCH] Read also false friend and antonym. svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=789091 --- keduvocdocument/keduvockvtml2reader.cpp | 75 ++++++++++++++++--------- keduvocdocument/keduvoctranslation.h | 6 ++ 2 files changed, 55 insertions(+), 26 deletions(-) diff --git a/keduvocdocument/keduvockvtml2reader.cpp b/keduvocdocument/keduvockvtml2reader.cpp index 764e585..eb356f7 100644 --- a/keduvocdocument/keduvockvtml2reader.cpp +++ b/keduvocdocument/keduvockvtml2reader.cpp @@ -388,32 +388,55 @@ 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 ); + QDomElement pairElement; + for(int type = KEduVocTranslation::Synonym; type <= KEduVocTranslation::FalseFriend; type++) { + switch (type) { + case KEduVocTranslation::Synonym: + pairElement= rootElement.firstChildElement( KVTML_SYNONYM ); + break; + case KEduVocTranslation::Antonym: + pairElement= rootElement.firstChildElement( KVTML_ANTONYM ); + break; + case KEduVocTranslation::FalseFriend: + pairElement= rootElement.firstChildElement( KVTML_FALSEFRIEND ); + break; + } + // 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); + + switch (type) { + case KEduVocTranslation::Synonym: + first->addSynonym(second); + second->addSynonym(first); + break; + case KEduVocTranslation::Antonym: + first->addAntonym(second); + second->addAntonym(first); + break; + case KEduVocTranslation::FalseFriend: + first->addFalseFriend(second); + second->addFalseFriend(first); + break; + } + pairElement = pairElement.nextSiblingElement( KVTML_PAIR ); + } } return true; } diff --git a/keduvocdocument/keduvoctranslation.h b/keduvocdocument/keduvoctranslation.h index 1b4b5ea..e458891 100644 --- a/keduvocdocument/keduvoctranslation.h +++ b/keduvocdocument/keduvoctranslation.h @@ -36,6 +36,12 @@ class KEDUVOCDOCUMENT_EXPORT KEduVocTranslation :public KEduVocText { public: + enum Related { + Synonym, + Antonym, + FalseFriend + }; + /** * Default constructor for an empty translation. */ -- 2.47.3