]> Git trees. - libqmvoc.git/commitdiff
read declensions
authorFrederik Gladhorn <gladhorn@kde.org>
Sun, 24 Feb 2008 20:54:34 +0000 (20:54 +0000)
committerFrederik Gladhorn <gladhorn@kde.org>
Sun, 24 Feb 2008 20:54:34 +0000 (20:54 +0000)
svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=778902

keduvocdocument/keduvocdeclension.cpp
keduvocdocument/keduvocdeclension.h
keduvocdocument/keduvoctranslation.cpp

index 55d7037e4efeb281bb2038e8d200ec602fea5677..4b9c6b8c2418be5aa742b606ed6836ce6afe46dc 100644 (file)
@@ -114,5 +114,31 @@ void KEduVocDeclension::toKVTML2(QDomElement & parent)
     }
 }
 
+KEduVocDeclension* KEduVocDeclension::fromKVTML2(QDomElement & parent)
+{
+    QDomElement declensionElement = parent.firstChildElement( KVTML_DECLENSION );
+    // we don't create empty objects, if neccessary, create later on demand.
+    if (declensionElement.isNull()) {
+        return 0;
+    }
+
+    KEduVocDeclension* declension = new KEduVocDeclension;
+
+    for ( KEduVocDeclension::DeclensionNumber num = KEduVocDeclension::Singular; num <= KEduVocDeclension::Plural; num = KEduVocDeclension::DeclensionNumber(num +1) ) {
+        QDomElement numberElement = declensionElement.firstChildElement( KVTML_GRAMMATICAL_NUMBER[num] );
+        if (!numberElement.isNull()) {
+            for ( KEduVocDeclension::DeclensionCase dcase = KEduVocDeclension::Nominative; dcase < KEduVocDeclension::DeclensionCaseMAX; dcase = KEduVocDeclension::DeclensionCase(dcase +1) ) {
+                QDomElement caseElement = numberElement.firstChildElement( KVTML_DECLENSION_CASE[dcase] );
+                if (!caseElement.isNull()) {
+                    KEduVocText text;
+                    text.fromKVTML2(caseElement);
+                    declension->setDeclension(text, num, dcase);
+                }
+            }
+        }
+    }
+    return declension;
+}
+
 
 
index 70c3f6e8a43f8acb6a73ffe8d2a6213a46db9392..b9b9edef5c2054b940f2f310d461dc1c294bb7ae 100644 (file)
@@ -97,9 +97,16 @@ public:
 
     bool isEmpty();
 
-    void fromKVTML2(QDomElement& parent);
+
     void toKVTML2(QDomElement& parent);
 
+    /**
+     * Reads a declension from xml, returns 0 if it is empty
+     * @param parent 
+     * @return 
+     */
+    static KEduVocDeclension* fromKVTML2(QDomElement& parent);
+
     static int indexOf(DeclensionNumber number, DeclensionCase decCase);
 
 private:
index 466ebff74ce71edd0f4005709d5b80663c34e849..7165561ada5710265cd84318ab264f365928bf1e 100644 (file)
@@ -388,6 +388,8 @@ void KEduVocTranslation::fromKVTML2(QDomElement & parent)
 {
     KEduVocText::fromKVTML2(parent);
 
+    setDeclension(KEduVocDeclension::fromKVTML2(parent));
+
     setComment( parent.firstChildElement( KVTML_COMMENT ).text() );
 
     setPronunciation( parent.firstChildElement( KVTML_PRONUNCIATION ).text() );