]> Git trees. - libqmvoc.git/commitdiff
also write these little leitner beasties
authorFrederik Gladhorn <gladhorn@kde.org>
Sat, 28 Jun 2008 23:57:54 +0000 (23:57 +0000)
committerFrederik Gladhorn <gladhorn@kde.org>
Sat, 28 Jun 2008 23:57:54 +0000 (23:57 +0000)
svn path=/branches/work/soc-parley/libkdeedu/; revision=825675

keduvocdocument/keduvoccontainer.h
keduvocdocument/keduvockvtml2writer.cpp
keduvocdocument/keduvockvtml2writer.h
keduvocdocument/keduvocleitnerbox.cpp

index 7a80b1f37e3466fe419d932ee0634c8c3feaea14..3067123418785d12b52dc2941e959076c6e925d3 100644 (file)
@@ -29,8 +29,9 @@ class KEduVocExpression;
 /** class to store information about a container - that can be a lesson or word types */
 class KEDUVOCDOCUMENT_EXPORT KEduVocContainer
 {
+    // make this a template?
+
 public:
-    /// @todo let wordtype have only one type and the actual types in a different function
     enum EnumContainerType{
         Container,
         Lesson,
index 754aafa8fcd0b7666052ef7ea83b4195c15380c5..354999e1a1faab782d835559998942047750592a 100644 (file)
@@ -24,6 +24,7 @@
 #include "keduvocdocument.h"
 #include "keduvocexpression.h"
 #include "keduvoclesson.h"
+#include "keduvocleitnerbox.h"
 #include "keduvocwordtype.h"
 #include "kvtml2defs.h"
 
@@ -101,6 +102,13 @@ bool KEduVocKvtml2Writer::createXmlDocument( KEduVocDocument *doc, const QString
         domElementKvtml.appendChild( currentElement );
     }
 
+    // leitner boxes
+    currentElement = m_domDoc.createElement( KVTML_LEITNERBOXES );
+    writeLeitnerBoxes( currentElement, m_doc->leitnerContainer() );
+    if ( currentElement.hasChildNodes() ) {
+        domElementKvtml.appendChild( currentElement );
+    }
+
     writeSynonymAntonymFalseFriend(domElementKvtml);
 
     m_domDoc.appendChild( domElementKvtml );
@@ -413,6 +421,34 @@ bool KEduVocKvtml2Writer::writeWordTypes( QDomElement &typesElement, KEduVocWord
     return true;
 }
 
+bool KEduVocKvtml2Writer::writeLeitnerBoxes( QDomElement &leitnerParentElement, KEduVocLeitnerBox* parentContainer )
+{
+    foreach( KEduVocContainer* container, parentContainer->childContainers() ) {
+        KEduVocLeitnerBox* leitnerBox = static_cast<KEduVocLeitnerBox*>(container);
+
+        QDomElement containerElement = m_domDoc.createElement( KVTML_CONTAINER );
+        containerElement.appendChild( newTextElement( KVTML_NAME, leitnerBox->name() ) );
+
+        // child entries
+        foreach(KEduVocExpression *entry, leitnerBox->entries()) {
+            QDomElement entryElement = m_domDoc.createElement( KVTML_ENTRY );
+            entryElement.setAttribute( KVTML_ID, QString::number(m_allEntries.indexOf(entry)) );
+            for(int translation = 0; translation<m_doc->identifierCount(); translation++) {
+                if (entry->translation(translation)->leitnerBox()== leitnerBox) {
+                    QDomElement translationElement = m_domDoc.createElement( KVTML_TRANSLATION );
+                    // create <translation id="123">
+                    translationElement.setAttribute( KVTML_ID, QString::number(translation) );
+                    // append both
+                    entryElement.appendChild(translationElement);
+                }
+            }
+            containerElement.appendChild( entryElement );
+        }
+
+        leitnerParentElement.appendChild( containerElement );
+    }
+    return true;
+}
 
 bool KEduVocKvtml2Writer::writeTenses( QDomElement &tensesElement )
 {
index 45095cdd2b255c6d536e6ba4d363b3e8cc3ba781..5e6cff2d111a0e6d0c4208c651aaa27bb9ad16b5 100644 (file)
@@ -29,6 +29,7 @@
 class KEduVocDocument;
 class KEduVocExpression;
 class KEduVocLesson;
+class KEduVocLeitnerBox;
 
 /**
 * @brief Class to write kvtml2 data files from KEduVocDocument
@@ -79,6 +80,14 @@ private:
      */
     bool writeWordTypes( QDomElement &typesElement, KEduVocWordType* parentContainer );
 
+    /**
+     * write the leitner boxes @see KEduVocLeitnerBox
+     * @param leitnerParentElement parent dom element
+     * @param parentContainer parent of the KEduVocLeitnerBoxes to write
+     * @return success
+     */
+    bool writeLeitnerBoxes( QDomElement &leitnerParentElement, KEduVocLeitnerBox* parentContainer );
+
     /** write tenses
      * @param tensesElement QDomElement tenses to write to
      */
index 8c78f6e6f4e36756a2dd90b86aec46e3d1effc3b..3bb8c2f28eb2c9f92c072f6baa50822fcbec898e 100644 (file)
@@ -31,6 +31,8 @@ public:
 KEduVocLeitnerBox::KEduVocLeitnerBox(const QString& name, KEduVocLeitnerBox *parent)
         : KEduVocContainer(name, Leitner, parent), d( new Private )
 {
+    // only one top level and children, this is only a list
+    Q_ASSERT(!parent || !parent->parent());
 }
 
 KEduVocLeitnerBox::~KEduVocLeitnerBox()
@@ -43,18 +45,13 @@ KEduVocLeitnerBox::~KEduVocLeitnerBox()
 
 QList<KEduVocExpression*> KEduVocLeitnerBox::entries(EnumEntriesRecursive recursive)
 {
-    if (recursive == Recursive) {
-        return entriesRecursive();
-    }
-
+    Q_UNUSED(recursive)
     return d->m_expressions;
 }
 
 int KEduVocLeitnerBox::entryCount(EnumEntriesRecursive recursive)
 {
-    if (recursive == Recursive) {
-        return entriesRecursive().count();
-    }
+    Q_UNUSED(recursive)
     return d->m_expressions.count();
 }
 
@@ -109,9 +106,7 @@ KEduVocTranslation * KEduVocLeitnerBox::translation(int row)
 
 KEduVocExpression * KEduVocLeitnerBox::entry(int row, EnumEntriesRecursive recursive)
 {
-    if (recursive == Recursive) {
-        return entriesRecursive().value(row);
-    }
+    Q_UNUSED(recursive)
     return entries().value(row);
 }