]> Git trees. - libqmvoc.git/commitdiff
Read those little synonym-beastys.
authorFrederik Gladhorn <gladhorn@kde.org>
Sun, 23 Mar 2008 03:27:02 +0000 (03:27 +0000)
committerFrederik Gladhorn <gladhorn@kde.org>
Sun, 23 Mar 2008 03:27:02 +0000 (03:27 +0000)
svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=789090

keduvocdocument/keduvockvtml2reader.cpp
keduvocdocument/keduvockvtml2reader.h
keduvocdocument/keduvockvtml2writer.cpp

index 951b3f3393086155e317db7aa0bc4bb95b5a02a2..764e585aaeaefec0e05feccd60485570961a8392 100644 (file)
@@ -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() ) {
+        //<entry id="123"/>
+        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 )
 /*
  <article>
index 42f8d14ec8e0098c5939acb43d553d786d959554..c0947c549b751e2b0c5074c036cf78837ab5aa0b 100644 (file)
@@ -145,6 +145,8 @@ private:
      */
     bool readLesson( KEduVocLesson* parentLesson, QDomElement &lessonElement );
 
+    bool readSynonymsAntonymsFalseFriends( QDomElement &rootElement );
+
     /** pre-opened QIODevice to read from */
     QIODevice *m_inputFile;
 
index 0370b9ae5a8bf4faac8ef9c4cfd528859522620b..88fa8052e92dd9c04f25d5de7bc8d6148355bb39 100644 (file)
@@ -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 <translation id="123">
                         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 );