]> Git trees. - libqmvoc.git/commitdiff
have grades for conjugation forms and articles
authorFrederik Gladhorn <gladhorn@kde.org>
Sat, 22 May 2010 00:56:54 +0000 (00:56 +0000)
committerFrederik Gladhorn <gladhorn@kde.org>
Sat, 22 May 2010 00:56:54 +0000 (00:56 +0000)
svn path=/branches/KDE/4.5/kdeedu/libkdeedu/; revision=1129341

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

index df212d838069276224492c9acba7dfeed58e0190..83cf9af568074e411c77eefbce3ee987c3d2ed89 100644 (file)
@@ -5,7 +5,7 @@
 
                           (C) 2005 Eric Pignet <eric at erixpage.com>
                           (C) 2007 Peter Hedlund <peter.hedlund@kdemail.net>
-    Copyright 2007-2008 Frederik Gladhorn <frederik.gladhorn@kdemail.net>
+    Copyright 2007-2010 Frederik Gladhorn <gladhorn@kde.org>
  ***************************************************************************/
 
 /***************************************************************************
@@ -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 )
 /*
  <multiplechoice>
index 610697e85b6f911a276edc44fef052e81e686eab..69717a8e0b9a928abaf1b9f8766ffa216b66569e 100644 (file)
@@ -2,7 +2,7 @@
                    export a KEduVocDocument to a KVTML file
     -----------------------------------------------------------------------
     copyright           : (C) 2007 Jeremy Whiting <jpwhiting@kde.org>
-                          (C) 2007-2008 Frederik Gladhorn <frederik.gladhorn@kdemail.net>
+    Copyright 2007-2010 Frederik Gladhorn <gladhorn@kde.org>
  ***************************************************************************/
 
 /***************************************************************************
@@ -19,6 +19,8 @@
 #include <QtCore/QTextStream>
 #include <QtCore/QFile>
 
+#include <KDebug>
+
 #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 )
-/*
- <comparison>
-   <absolute>good</absolute>
-   <comparative>better</comparative>
-   <superlative>best</superlative>
- </comparison>
-*/
-{
-    comparisonElement.appendChild( newTextElement( KVTML_COMPARATIVE, translation->comparative() ) );
-    comparisonElement.appendChild( newTextElement( KVTML_SUPERLATIVE, translation->superlative() ) );
-
-    return true;
-}
-
-
 bool KEduVocKvtml2Writer::writeMultipleChoice( QDomElement &multipleChoiceElement, KEduVocTranslation* translation )
 /*
  <multiplechoice>
index 00fbfed5c6bc5601f529562bcafc5a20494f9aaf..aa8b97fad29ea95cfee902dae22df3883e0a2ac0 100644 (file)
@@ -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
index b89ca57acbb2b2165fc34348e638a669c1559ef3..1d7a5eb3c2ca05f04b6790f77f11897c9618ca73 100644 (file)
@@ -2,7 +2,7 @@
                         Vocabulary Expression Translation for KDE Edu
     -----------------------------------------------------------------------
 
-    Copyright 2007-2008 Frederik Gladhorn <frederik.gladhorn@kdemail.net>
+    Copyright 2007-2010 Frederik Gladhorn <gladhorn@kde.org>
  ***************************************************************************/
 
 /***************************************************************************
@@ -62,8 +62,11 @@ public:
     QMap <QString, KEduVocConjugation> 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()
index 0d43188203fae9279eb095c5d62c792c9997b61c..520ae77dd1701d78ae21f43e8da33f82558ba081 100644 (file)
@@ -18,7 +18,6 @@
 #define KEDUVOCTRANSLATION_H
 
 #include "libkeduvocdocument_export.h"
-#include "keduvocarticle.h"
 #include "keduvocconjugation.h"
 #include "keduvoctext.h"
 #include <KDE/KUrl>
@@ -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 <QString, KEduVocConjugation> conjugations() const;
+    KDE_DEPRECATED QMap <QString, KEduVocConjugation> 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
       */