#include "keduvocdocument.h"
#include "keduvocexpression.h"
#include "keduvoclesson.h"
+#include "keduvocleitnerbox.h"
#include "keduvocwordtype.h"
#include "kvtml2defs.h"
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 );
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 )
{
class KEduVocDocument;
class KEduVocExpression;
class KEduVocLesson;
+class KEduVocLeitnerBox;
/**
* @brief Class to write kvtml2 data files from KEduVocDocument
*/
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
*/
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()
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();
}
KEduVocExpression * KEduVocLeitnerBox::entry(int row, EnumEntriesRecursive recursive)
{
- if (recursive == Recursive) {
- return entriesRecursive().value(row);
- }
+ Q_UNUSED(recursive)
return entries().value(row);
}