From 1fab30a7ea4b0a5b33f210a17c0993761583ab12 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Sat, 28 Jun 2008 23:57:54 +0000 Subject: [PATCH] also write these little leitner beasties svn path=/branches/work/soc-parley/libkdeedu/; revision=825675 --- keduvocdocument/keduvoccontainer.h | 3 ++- keduvocdocument/keduvockvtml2writer.cpp | 36 +++++++++++++++++++++++++ keduvocdocument/keduvockvtml2writer.h | 9 +++++++ keduvocdocument/keduvocleitnerbox.cpp | 15 ++++------- 4 files changed, 52 insertions(+), 11 deletions(-) diff --git a/keduvocdocument/keduvoccontainer.h b/keduvocdocument/keduvoccontainer.h index 7a80b1f..3067123 100644 --- a/keduvocdocument/keduvoccontainer.h +++ b/keduvocdocument/keduvoccontainer.h @@ -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, diff --git a/keduvocdocument/keduvockvtml2writer.cpp b/keduvocdocument/keduvockvtml2writer.cpp index 754aafa..354999e 100644 --- a/keduvocdocument/keduvockvtml2writer.cpp +++ b/keduvocdocument/keduvockvtml2writer.cpp @@ -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(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; translationidentifierCount(); translation++) { + if (entry->translation(translation)->leitnerBox()== leitnerBox) { + QDomElement translationElement = m_domDoc.createElement( KVTML_TRANSLATION ); + // create + 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 ) { diff --git a/keduvocdocument/keduvockvtml2writer.h b/keduvocdocument/keduvockvtml2writer.h index 45095cd..5e6cff2 100644 --- a/keduvocdocument/keduvockvtml2writer.h +++ b/keduvocdocument/keduvockvtml2writer.h @@ -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 */ diff --git a/keduvocdocument/keduvocleitnerbox.cpp b/keduvocdocument/keduvocleitnerbox.cpp index 8c78f6e..3bb8c2f 100644 --- a/keduvocdocument/keduvocleitnerbox.cpp +++ b/keduvocdocument/keduvocleitnerbox.cpp @@ -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 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); } -- 2.47.3