From 398697109f732ffe7868c04811f3ffc0e364fd8e Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Sat, 22 May 2010 00:56:54 +0000 Subject: [PATCH] have grades for conjugation forms and articles svn path=/branches/KDE/4.5/kdeedu/libkdeedu/; revision=1129341 --- keduvocdocument/keduvockvtml2reader.cpp | 30 +++++++-- keduvocdocument/keduvockvtml2writer.cpp | 45 ++++++------- keduvocdocument/keduvockvtml2writer.h | 8 --- keduvocdocument/keduvoctranslation.cpp | 86 +++++++++++++++++++++++-- keduvocdocument/keduvoctranslation.h | 22 +++++-- 5 files changed, 139 insertions(+), 52 deletions(-) diff --git a/keduvocdocument/keduvockvtml2reader.cpp b/keduvocdocument/keduvockvtml2reader.cpp index df212d8..83cf9af 100644 --- a/keduvocdocument/keduvockvtml2reader.cpp +++ b/keduvocdocument/keduvockvtml2reader.cpp @@ -5,7 +5,7 @@ (C) 2005 Eric Pignet (C) 2007 Peter Hedlund - Copyright 2007-2008 Frederik Gladhorn + Copyright 2007-2010 Frederik Gladhorn ***************************************************************************/ /*************************************************************************** @@ -334,6 +334,14 @@ bool KEduVocKvtml2Reader::readTranslation( QDomElement &translationElement, expr->translation(index)->fromKVTML2(translationElement); QDomElement currentElement; + // article grade + currentElement = translationElement.firstChildElement( KVTML_ARTICLE ); + if ( !currentElement.isNull() ) { + KEduVocText article; + article.fromKVTML2(currentElement); + expr->translation(index)->setArticle(article); + } + // comparisons currentElement = translationElement.firstChildElement( KVTML_COMPARISON ); if ( !currentElement.isNull() ) { @@ -583,7 +591,6 @@ bool KEduVocKvtml2Reader::readWordType( KEduVocWordType* parentContainer, QDomEl } } // special type - // read entries QDomElement entryElement = typeElement.firstChildElement( KVTML_ENTRY ); while ( !entryElement.isNull() ) { @@ -632,18 +639,31 @@ bool KEduVocKvtml2Reader::readComparison( QDomElement &domElementParent, KEduVoc currentElement = domElementParent.firstChildElement( KVTML_COMPARATIVE ); if ( !currentElement.isNull() ) { - translation->setComparative( currentElement.text() ); + KEduVocText comparative; + comparative.fromKVTML2(currentElement); + + // be compatible for KDE < 4.5 + if (comparative.text().isEmpty()) { + comparative.setText(currentElement.text()); + } + translation->setComparativeForm(comparative); } currentElement = domElementParent.firstChildElement( KVTML_SUPERLATIVE ); if ( !currentElement.isNull() ) { - translation->setSuperlative( currentElement.text() ); + KEduVocText superlative; + superlative.fromKVTML2(currentElement); + + // be compatible for KDE < 4.5 + if (superlative.text().isEmpty()) { + superlative.setText(currentElement.text()); + } + translation->setSuperlativeForm(superlative); } return true; } - bool KEduVocKvtml2Reader::readMultipleChoice( QDomElement &multipleChoiceElement, KEduVocTranslation* translation ) /* diff --git a/keduvocdocument/keduvockvtml2writer.cpp b/keduvocdocument/keduvockvtml2writer.cpp index 610697e..69717a8 100644 --- a/keduvocdocument/keduvockvtml2writer.cpp +++ b/keduvocdocument/keduvockvtml2writer.cpp @@ -2,7 +2,7 @@ export a KEduVocDocument to a KVTML file ----------------------------------------------------------------------- copyright : (C) 2007 Jeremy Whiting - (C) 2007-2008 Frederik Gladhorn + Copyright 2007-2010 Frederik Gladhorn ***************************************************************************/ /*************************************************************************** @@ -19,6 +19,8 @@ #include #include +#include + #include "keduvocdocument.h" #include "keduvocexpression.h" #include "keduvoclesson.h" @@ -496,10 +498,24 @@ bool KEduVocKvtml2Writer::writeTranslation( QDomElement &translationElement, KEd translation->toKVTML2(translationElement); // comparison - if ( !(translation->comparative().isEmpty() || translation->comparative().isEmpty())) { + if ( !(translation->comparativeForm().text().isEmpty() || translation->superlativeForm().text().isEmpty())) { + kDebug() << "Write comp"; QDomElement comparisonElement = m_domDoc.createElement( KVTML_COMPARISON ); - writeComparison( comparisonElement, translation ); - translationElement.appendChild( comparisonElement ); + translationElement.appendChild(comparisonElement); + + QDomElement comparativeElement = m_domDoc.createElement( KVTML_COMPARATIVE ); + comparisonElement.appendChild(comparativeElement); + translation->comparativeForm().toKVTML2(comparativeElement); + + QDomElement superlativeElement = m_domDoc.createElement( KVTML_SUPERLATIVE ); + comparisonElement.appendChild(superlativeElement); + translation->superlativeForm().toKVTML2(superlativeElement); + } + + if (translation->article().practiceCount() != 0) { + QDomElement articleElement = m_domDoc.createElement( KVTML_ARTICLE ); + translationElement.appendChild(articleElement); + translation->comparativeForm().toKVTML2(articleElement); } // multiplechoice @@ -564,27 +580,6 @@ bool KEduVocKvtml2Writer::writeTranslation( QDomElement &translationElement, KEd // } // } - - - - - -bool KEduVocKvtml2Writer::writeComparison( QDomElement &comparisonElement, KEduVocTranslation* translation ) -/* - - good - better - best - -*/ -{ - comparisonElement.appendChild( newTextElement( KVTML_COMPARATIVE, translation->comparative() ) ); - comparisonElement.appendChild( newTextElement( KVTML_SUPERLATIVE, translation->superlative() ) ); - - return true; -} - - bool KEduVocKvtml2Writer::writeMultipleChoice( QDomElement &multipleChoiceElement, KEduVocTranslation* translation ) /* diff --git a/keduvocdocument/keduvockvtml2writer.h b/keduvocdocument/keduvockvtml2writer.h index 00fbfed..aa8b97f 100644 --- a/keduvocdocument/keduvockvtml2writer.h +++ b/keduvocdocument/keduvockvtml2writer.h @@ -113,15 +113,7 @@ private: */ bool writeLessons( KEduVocLesson *parentLesson, QDomElement &lessonsElement ); - void writeSynonymAntonymFalseFriend(QDomElement & parentElement); - - /** write a comparison - * @param comparisonElement QDomElement comparison to write to - * @param comparison object to write - * @returns success - */ - bool writeComparison( QDomElement &comparisonElement, KEduVocTranslation *translation ); /** write multiple choice choices * @param multipleChoiceElement QDomElement multiplechoice to write to diff --git a/keduvocdocument/keduvoctranslation.cpp b/keduvocdocument/keduvoctranslation.cpp index b89ca57..1d7a5eb 100644 --- a/keduvocdocument/keduvoctranslation.cpp +++ b/keduvocdocument/keduvoctranslation.cpp @@ -2,7 +2,7 @@ Vocabulary Expression Translation for KDE Edu ----------------------------------------------------------------------- - Copyright 2007-2008 Frederik Gladhorn + Copyright 2007-2010 Frederik Gladhorn ***************************************************************************/ /*************************************************************************** @@ -62,8 +62,11 @@ public: QMap m_conjugations; /// The comparison forms of adjectives and adverbs: (fast), faster, fastest - QString m_comparative; - QString m_superlative; + KEduVocText* m_comparative; + KEduVocText* m_superlative; + + /// The grade of an article. The text part should not be used. + KEduVocText* m_articleGrade; KEduVocDeclension* m_declension; @@ -82,6 +85,10 @@ KEduVocTranslation::KEduVocTranslationPrivate::KEduVocTranslationPrivate(KEduVoc m_wordType = 0; m_leitnerBox = 0; m_declension = 0; + + m_comparative = 0; + m_superlative = 0; + m_articleGrade = 0; } @@ -388,22 +395,87 @@ KEduVocExpression * KEduVocTranslation::entry() QString KEduVocTranslation::comparative() const { - return d->m_comparative; + if (d->m_comparative) { + return d->m_comparative->text(); + } + return QString(); } void KEduVocTranslation::setComparative(const QString & comparative) { - d->m_comparative = comparative; + if (!d->m_comparative) { + d->m_comparative = new KEduVocText(comparative); + } else { + d->m_comparative->setText(comparative); + } } QString KEduVocTranslation::superlative() const { - return d->m_superlative; + if (d->m_superlative) { + return d->m_superlative->text(); + } + return QString(); } void KEduVocTranslation::setSuperlative(const QString & superlative) { - d->m_superlative = superlative; + if (!d->m_superlative) { + d->m_superlative = new KEduVocText(superlative); + } else { + d->m_superlative->setText(superlative); + } +} + +KEduVocText KEduVocTranslation::comparativeForm() const +{ + if (!d->m_comparative) { + return KEduVocText(); + } + KEduVocText t(*(d->m_comparative)); + return t; +} + +void KEduVocTranslation::setComparativeForm(const KEduVocText& comparative) +{ + if (!d->m_comparative) { + d->m_comparative = new KEduVocText(); + } + *(d->m_comparative) = comparative; +} + +KEduVocText KEduVocTranslation::superlativeForm() const +{ + if (!d->m_superlative) { + return KEduVocText(); + } + KEduVocText t(*d->m_superlative); + return t; +} + +void KEduVocTranslation::setSuperlativeForm(const KEduVocText& superlative) +{ + if (!d->m_superlative) { + d->m_superlative = new KEduVocText(); + } + *d->m_superlative = superlative; +} + +KEduVocText KEduVocTranslation::article() const +{ + if (!d->m_articleGrade) { + return KEduVocText(); + } + KEduVocText t(*d->m_articleGrade); + return t; +} + +void KEduVocTranslation::setArticle(const KEduVocText& article) +{ + if (!d->m_articleGrade) { + d->m_articleGrade = new KEduVocText(); + } + *d->m_articleGrade = article; } KEduVocDeclension * KEduVocTranslation::declension() diff --git a/keduvocdocument/keduvoctranslation.h b/keduvocdocument/keduvoctranslation.h index 0d43188..520ae77 100644 --- a/keduvocdocument/keduvoctranslation.h +++ b/keduvocdocument/keduvoctranslation.h @@ -18,7 +18,6 @@ #define KEDUVOCTRANSLATION_H #include "libkeduvocdocument_export.h" -#include "keduvocarticle.h" #include "keduvocconjugation.h" #include "keduvoctext.h" #include @@ -82,7 +81,7 @@ public: /** sets comment of this expression * @param expr comment of this index */ - void setComment( const QString & expr ); + void setComment( const QString& expr ); /** sets example this expression * @param expression example of this index @@ -185,15 +184,24 @@ public: * Bad, only compatibility. Deprecated. * @return */ - QMap conjugations() const; + KDE_DEPRECATED QMap conjugations() const; /** * Comparison forms of adjectives/adverbs. */ - QString comparative() const; - void setComparative(const QString& comparative); - QString superlative() const; - void setSuperlative(const QString& superlative); + KDE_DEPRECATED QString comparative() const; + KDE_DEPRECATED void setComparative(const QString& comparative); + // TODO rename to comparative and remove the deprecated function + KEduVocText comparativeForm() const; + void setComparativeForm(const KEduVocText& comparative); + + KDE_DEPRECATED QString superlative() const; + KDE_DEPRECATED void setSuperlative(const QString& superlative); + KEduVocText superlativeForm() const; + void setSuperlativeForm(const KEduVocText& superlative); + + KEduVocText article() const; + void setArticle(const KEduVocText& article); /** returns multiple choice if available */ -- 2.47.3