]> Git trees. - libqmvoc.git/commitdiff
enable writing of declensions
authorFrederik Gladhorn <gladhorn@kde.org>
Sun, 24 Feb 2008 19:28:56 +0000 (19:28 +0000)
committerFrederik Gladhorn <gladhorn@kde.org>
Sun, 24 Feb 2008 19:28:56 +0000 (19:28 +0000)
svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=778861

keduvocdocument/keduvocdeclension.cpp
keduvocdocument/keduvocdeclension.h
keduvocdocument/keduvoctext.cpp
keduvocdocument/kvtml2defs.h

index 8fead39cd9253625d0e60bc9504228c7c3ba094e..16c4dfb2227c6451c9b1e0c46dbea8c2a04cb241 100644 (file)
@@ -93,10 +93,25 @@ void KEduVocDeclension::toXML(QDomElement & parent)
         return;
     }
     QDomDocument domDoc = parent.ownerDocument();
-    QDomElement gradeElement = domDoc.createElement( KVTML_DECLENSION );
-    parent.appendChild(gradeElement);
-
-    ///@todo write contents
+    QDomElement declensionElement = domDoc.createElement( KVTML_DECLENSION );
+
+    for ( KEduVocDeclension::DeclensionNumber num = KEduVocDeclension::Singular; num <= KEduVocDeclension::Plural; num = KEduVocDeclension::DeclensionNumber(num +1) ) {
+        QDomElement numberElement = domDoc.createElement( KVTML_GRAMMATICAL_NUMBER[num] );
+        for ( KEduVocDeclension::DeclensionCase dcase = KEduVocDeclension::Nominative; dcase < KEduVocDeclension::DeclensionCaseMAX; dcase = KEduVocDeclension::DeclensionCase(dcase +1) ) {
+            QDomElement caseElement = domDoc.createElement( KVTML_DECLENSION_CASE[dcase] );
+            declension(num, dcase).toXML(caseElement);
+
+            if (caseElement.hasChildNodes()) {
+                numberElement.appendChild(caseElement);
+            }
+        }
+        if (numberElement.hasChildNodes()) {
+            declensionElement.appendChild(numberElement);
+        }
+    }
+    if (declensionElement.hasChildNodes()) {
+        parent.appendChild(declensionElement);
+    }
 }
 
 
index 3c44abe6516c2b2c914b2e3c8a86eccc5a19fea7..c120fe5bd36cf2a32159d0db045259459754ed7b 100644 (file)
@@ -35,13 +35,13 @@ A declension contains all forms that a NOUN possibly can have.
 class KEDUVOCDOCUMENT_EXPORT KEduVocDeclension{
 public:
     enum DeclensionNumber {
-        Singular = 1,
+        Singular = 0,
         Dual,
         Plural
     };
 
     enum DeclensionCase {
-        Nominative = 1,
+        Nominative = 0,
         Genitive,
         Dative,
         Accusative,
index 471b317c58ae3bfb26f832b1090f8c29208017d4..4909911af9f8b00977174514f1b136f5c676b1e8 100644 (file)
@@ -173,6 +173,9 @@ bool KEduVocText::operator ==(const KEduVocText & other) const
 void KEduVocText::toXML(QDomElement& parent)
 {
     QDomDocument domDoc = parent.ownerDocument();
+    if (text().isEmpty()) {
+        return;
+    }
 
     // the text
     KEduVocKvtml2Writer::appendTextElement( parent, KVTML_TEXT, text() );
index 394044332aed722e5b563679fdfd3d3e63c4a721..97c232ac369ae5ee4b123f4e039e29cdfcd3a9bb 100644 (file)
 
 // declension
 #define KVTML_DECLENSION       "declension"
+static const QString KVTML_DECLENSION_CASE[] = {
+    "nominative",
+    "genitive",
+    "dative",
+    "accusative",
+    "ablative",
+    "locative",
+    "vocative" };
+
+static const QString KVTML_GRAMMATICAL_NUMBER[] = {
+    "singular",
+    "dual",
+    "plural" };
 
 // conjugation and personal pronouns
 #define KVTML_CONJUGATION       "conjugation"