]> Git trees. - libqmvoc.git/commitdiff
Parley now supports Synonyms, Antonyms and False Friends that are connections to...
authorFrederik Gladhorn <gladhorn@kde.org>
Sun, 23 Mar 2008 11:02:30 +0000 (11:02 +0000)
committerFrederik Gladhorn <gladhorn@kde.org>
Sun, 23 Mar 2008 11:02:30 +0000 (11:02 +0000)
FEATURE: 151382
Write not always synonyms but also antonyms and false friends

svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=789134

keduvocdocument/keduvockvtml2writer.cpp

index 88fa8052e92dd9c04f25d5de7bc8d6148355bb39..44357a3ed53cee4c1bab95d4eeb66fb5f7b9e704 100644 (file)
@@ -201,60 +201,91 @@ bool KEduVocKvtml2Writer::writeLessons( KEduVocLesson *parentLesson, QDomElement
 
 void KEduVocKvtml2Writer::writeSynonymAntonymFalseFriend(QDomElement & parentElement)
 {
+    QList< KEduVocTranslation* > currentList;
+    QDomElement synonymElement;
     // synonym, antonym, false friend
-    QDomElement synonymElement = m_domDoc.createElement( KVTML_SYNONYM );
-kDebug() << "writing list of synonyms: " << m_synonyms.count();
-    while (!m_synonyms.isEmpty()) {
-        // after writing a translation, remove it from the list
-        KEduVocTranslation* translation = m_synonyms.takeAt(0);
-
-        // fill the entry element but only add later if it is valid
-        QDomElement entryElement = m_domDoc.createElement( KVTML_ENTRY );
-        entryElement.setAttribute( KVTML_ID, QString::number(m_allEntries.indexOf(translation->entry())) );
-        // find out which id that is... silly
-        foreach(int index, translation->entry()->translationIndices()) {
-            if (translation->entry()->translation(index) == translation) {
-                // create <translation id="123">
-                QDomElement translationElement = m_domDoc.createElement( KVTML_TRANSLATION );
-                translationElement.setAttribute( KVTML_ID, QString::number(index) );
-                entryElement.appendChild(translationElement);
+    for(int type = KEduVocTranslation::Synonym; type <= KEduVocTranslation::FalseFriend; type++) {
+        switch (type) {
+            case KEduVocTranslation::Synonym:
+                synonymElement = m_domDoc.createElement( KVTML_SYNONYM );
+                currentList = m_synonyms;
+                break;
+            case KEduVocTranslation::Antonym:
+                synonymElement = m_domDoc.createElement( KVTML_ANTONYM );
+                currentList = m_antonyms;
+                break;
+            case KEduVocTranslation::FalseFriend:
+                synonymElement = m_domDoc.createElement( KVTML_FALSEFRIEND );
+                currentList = m_falseFriends;
                 break;
-            }
         }
 
+        while (!currentList.isEmpty()) {
+            // after writing a translation, remove it from the list
+            KEduVocTranslation* translation = currentList.takeAt(0);
+
+            // fill the entry element but only add later if it is valid
+            QDomElement entryElement = m_domDoc.createElement( KVTML_ENTRY );
+            entryElement.setAttribute( KVTML_ID, QString::number(m_allEntries.indexOf(translation->entry())) );
+            // find out which id that is... silly
+            foreach(int index, translation->entry()->translationIndices()) {
+                if (translation->entry()->translation(index) == translation) {
+                    // create <translation id="123">
+                    QDomElement translationElement = m_domDoc.createElement( KVTML_TRANSLATION );
+                    translationElement.setAttribute( KVTML_ID, QString::number(index) );
+                    entryElement.appendChild(translationElement);
+                    break;
+                }
+            }
 
-        QDomElement relatedElement;
-        foreach (KEduVocTranslation* synonym, translation->synonyms()) {
-            // if it is not in the list it has already been written and we can move on
-            if (m_synonyms.contains(synonym)) {
-                relatedElement = m_domDoc.createElement( KVTML_PAIR );
-                synonymElement.appendChild(relatedElement);
-                relatedElement.appendChild(entryElement);
 
+            QDomElement relatedElement;
 
-                QDomElement partnerElement = m_domDoc.createElement( KVTML_ENTRY );
-                partnerElement.setAttribute( KVTML_ID, QString::number(m_allEntries.indexOf(synonym->entry())) );
+            QList <KEduVocTranslation*> list;
 
-                // find out which id that is
-                foreach(int index, synonym->entry()->translationIndices()) {
-                    if (synonym->entry()->translation(index) == synonym) {
-                        // create <translation id="123">
-                        QDomElement translationElement = m_domDoc.createElement( KVTML_TRANSLATION );
-                        translationElement.setAttribute( KVTML_ID, QString::number(index) );
-                        partnerElement.appendChild(translationElement);
-                        break;
+            switch (type) {
+            case KEduVocTranslation::Synonym:
+                list = translation->synonyms();
+                break;
+            case KEduVocTranslation::Antonym:
+                list = translation->antonyms();
+                break;
+            case KEduVocTranslation::FalseFriend:
+                list = translation->falseFriends();
+                break;
+            }
+            foreach (KEduVocTranslation* synonym, list) {
+                // if it is not in the list it has already been written and we can move on
+                if (currentList.contains(synonym)) {
+                    relatedElement = m_domDoc.createElement( KVTML_PAIR );
+                    synonymElement.appendChild(relatedElement);
+                    relatedElement.appendChild(entryElement);
+
+
+                    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()) {
+                        if (synonym->entry()->translation(index) == synonym) {
+                            // create <translation id="123">
+                            QDomElement translationElement = m_domDoc.createElement( KVTML_TRANSLATION );
+                            translationElement.setAttribute( KVTML_ID, QString::number(index) );
+                            partnerElement.appendChild(translationElement);
+                            break;
+                        }
                     }
+                    relatedElement.appendChild( partnerElement );
                 }
-                relatedElement.appendChild( partnerElement );
+            }
+            if (relatedElement.hasChildNodes()) {
+                synonymElement.appendChild( relatedElement );
             }
         }
-        if (relatedElement.hasChildNodes()) {
-            synonymElement.appendChild( relatedElement );
+        if (synonymElement.hasChildNodes()) {
+            parentElement.appendChild( synonymElement );
         }
-    }
-    if (synonymElement.hasChildNodes()) {
-        parentElement.appendChild( synonymElement );
-    }
+    } // iterate over types
 }
 /*
 bool KEduVocKvtml2Writer::writeRelated(QDomElement & parentElement, QList< KEduVocTranslation * > relatedList)