From: Frederik Gladhorn Date: Sun, 24 Feb 2008 20:54:34 +0000 (+0000) Subject: read declensions X-Git-Tag: v4.0.71~36 X-Git-Url: https://git.rmz.fi/?a=commitdiff_plain;h=45d654bb13c5ee1b61144ce6b43330b45f8b9b67;p=libqmvoc.git read declensions svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=778902 --- diff --git a/keduvocdocument/keduvocdeclension.cpp b/keduvocdocument/keduvocdeclension.cpp index 55d7037..4b9c6b8 100644 --- a/keduvocdocument/keduvocdeclension.cpp +++ b/keduvocdocument/keduvocdeclension.cpp @@ -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; +} + diff --git a/keduvocdocument/keduvocdeclension.h b/keduvocdocument/keduvocdeclension.h index 70c3f6e..b9b9ede 100644 --- a/keduvocdocument/keduvocdeclension.h +++ b/keduvocdocument/keduvocdeclension.h @@ -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: diff --git a/keduvocdocument/keduvoctranslation.cpp b/keduvocdocument/keduvoctranslation.cpp index 466ebff..7165561 100644 --- a/keduvocdocument/keduvoctranslation.cpp +++ b/keduvocdocument/keduvoctranslation.cpp @@ -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() );