From: Frederik Gladhorn Date: Thu, 22 Nov 2007 16:56:00 +0000 (+0000) Subject: Replace the Multiple Choice class by a simple stringlist. X-Git-Tag: v4.0.71~93^2~27 X-Git-Url: https://git.rmz.fi/?a=commitdiff_plain;h=3d1599b908061fd2aa13b55ff7d1cb4431493650;p=libqmvoc.git Replace the Multiple Choice class by a simple stringlist. Use a stringlistmodel for the mc dock (very improvised still). Port cvs reader and pauker a little. svn path=/branches/work/kdeedu_parley/libkdeedu/; revision=740150 --- diff --git a/keduvocdocument/CMakeLists.txt b/keduvocdocument/CMakeLists.txt index 66e3d3d..966dc73 100644 --- a/keduvocdocument/CMakeLists.txt +++ b/keduvocdocument/CMakeLists.txt @@ -13,16 +13,16 @@ keduvocdocument.cpp keduvocconjugation.cpp keduvocpersonalpronoun.cpp keduvocdeclination.cpp - keduvocmultiplechoice.cpp + #keduvocmultiplechoice.cpp keduvocwordtype.cpp keduvockvtmlcompability.cpp #keduvockvtmlreader.cpp keduvockvtml2reader.cpp #keduvockvtmlwriter.cpp keduvockvtml2writer.cpp - #keduvoccsvreader.cpp - #keduvoccsvwriter.cpp - #keduvocpaukerreader.cpp + keduvoccsvreader.cpp + keduvoccsvwriter.cpp + keduvocpaukerreader.cpp #keduvocvokabelnreader.cpp #keduvocwqlreader.cpp #keduvocxdxfreader.cpp diff --git a/keduvocdocument/keduvoccsvreader.cpp b/keduvocdocument/keduvoccsvreader.cpp index 232669e..4afd7e5 100644 --- a/keduvocdocument/keduvoccsvreader.cpp +++ b/keduvocdocument/keduvoccsvreader.cpp @@ -31,6 +31,7 @@ #include #include "keduvocdocument.h" +#include "keduvoclesson.h" #include "keduvocexpression.h" KEduVocCsvReader::KEduVocCsvReader( QIODevice *file ) @@ -54,13 +55,17 @@ bool KEduVocCsvReader::readDoc( KEduVocDocument *doc ) int languageCount = 0; + KEduVocLesson* lesson = new KEduVocLesson( i18n("Vocabulary"), m_doc->lesson()); + m_doc->lesson()->appendChildLesson(lesson); + while ( !inputStream.atEnd() ) { QString s = inputStream.readLine(); if ( !s.simplified().isEmpty() ) { KEduVocExpression expression( s.split(separator) ); - languageCount = qMax( languageCount, expression.translationIndices().count() ); - m_doc->appendEntry( &expression ); + languageCount = qMax( languageCount, + expression.translationIndices().count() ); + lesson->addEntry( &expression ); } } diff --git a/keduvocdocument/keduvoccsvwriter.cpp b/keduvocdocument/keduvoccsvwriter.cpp index 056d4d3..1917158 100644 --- a/keduvocdocument/keduvoccsvwriter.cpp +++ b/keduvocdocument/keduvoccsvwriter.cpp @@ -23,6 +23,7 @@ #include #include "keduvocdocument.h" +#include "keduvoclesson.h" #include "keduvocexpression.h" KEduVocCsvWriter::KEduVocCsvWriter( QFile *file ) @@ -52,8 +53,8 @@ bool KEduVocCsvWriter::writeDoc( KEduVocDocument *doc, const QString &generator int idCount = m_doc->identifierCount(); QString currentRow; - for ( int e = 0; e < m_doc->entryCount(); e++ ) { - expression = m_doc->entry( e ); + for ( int e = 0; e < m_doc->lesson()->entriesRecursive().count(); e++ ) { + expression = m_doc->lesson()->entriesRecursive().value( e ); currentRow = ""; bool sep = false; diff --git a/keduvocdocument/keduvocexpression.cpp b/keduvocdocument/keduvocexpression.cpp index 1a28a19..4630cc5 100644 --- a/keduvocdocument/keduvocexpression.cpp +++ b/keduvocdocument/keduvocexpression.cpp @@ -63,17 +63,15 @@ KEduVocExpression::KEduVocExpression() : d( new KEduVocExpressionPrivate( this ) ) {} -KEduVocExpression::KEduVocExpression( KEduVocLesson* lesson, const QString & expression ) +KEduVocExpression::KEduVocExpression( const QString & expression ) : d( new KEduVocExpressionPrivate( this ) ) { - d->m_lessons.append(lesson); setTranslation( 0, expression.simplified() ); } -KEduVocExpression::KEduVocExpression( KEduVocLesson* lesson, const QStringList & translations) +KEduVocExpression::KEduVocExpression( const QStringList & translations) : d( new KEduVocExpressionPrivate( this ) ) { - d->m_lessons.append(lesson); foreach ( QString translation, translations ) { setTranslation(d->m_translations.count(), translation); } diff --git a/keduvocdocument/keduvocexpression.h b/keduvocdocument/keduvocexpression.h index b072c5f..0ff9507 100644 --- a/keduvocdocument/keduvocexpression.h +++ b/keduvocdocument/keduvocexpression.h @@ -45,7 +45,7 @@ public: * @param expression translation * @param lesson lesson number */ - explicit KEduVocExpression( KEduVocLesson* lesson, const QString & expression ); + explicit KEduVocExpression( const QString & expression ); /** Constructor for a vocabulary expression with an original and one or more translations * @@ -53,7 +53,7 @@ public: * @param separator expression will be split into an original and one or more translations using separator * @param lesson lesson number, 0 for none */ - explicit KEduVocExpression( KEduVocLesson* lesson, const QStringList & translations ); + explicit KEduVocExpression( const QStringList & translations ); ~KEduVocExpression(); diff --git a/keduvocdocument/keduvockvtml2reader.cpp b/keduvocdocument/keduvockvtml2reader.cpp index ee7f90c..dfdf856 100644 --- a/keduvocdocument/keduvockvtml2reader.cpp +++ b/keduvocdocument/keduvockvtml2reader.cpp @@ -394,9 +394,7 @@ bool KEduVocKvtml2Reader::readTranslation( QDomElement &translationElement, // multiple choice currentElement = translationElement.firstChildElement( KVTML_MULTIPLECHOICE ); if ( !currentElement.isNull() ) { - KEduVocMultipleChoice mc; - readMultipleChoice( currentElement, mc ); - expr->translation( index ).setMultipleChoice( mc ); + readMultipleChoice( currentElement, expr->translation( index ) ); } // image @@ -643,7 +641,7 @@ bool KEduVocKvtml2Reader::readComparison( QDomElement &domElementParent, KEduVoc } -bool KEduVocKvtml2Reader::readMultipleChoice( QDomElement &multipleChoiceElement, KEduVocMultipleChoice &mc ) +bool KEduVocKvtml2Reader::readMultipleChoice( QDomElement &multipleChoiceElement, KEduVocTranslation &translation ) /* good @@ -656,15 +654,12 @@ bool KEduVocKvtml2Reader::readMultipleChoice( QDomElement &multipleChoiceElement { QDomElement currentElement; - QString s; - mc.clear(); - QDomNodeList choiceNodes = multipleChoiceElement.elementsByTagName( KVTML_CHOICE ); for ( int i = 0; i < choiceNodes.count(); ++i ) { currentElement = choiceNodes.item( i ).toElement(); if ( currentElement.parentNode() == multipleChoiceElement ) { - mc.appendChoice( currentElement.text() ); + translation.multipleChoice().append( currentElement.text() ); } } return true; diff --git a/keduvocdocument/keduvockvtml2reader.h b/keduvocdocument/keduvockvtml2reader.h index 4e88653..893d4be 100644 --- a/keduvocdocument/keduvockvtml2reader.h +++ b/keduvocdocument/keduvockvtml2reader.h @@ -120,7 +120,7 @@ private: * @param multipleChoiceElement element to read from * @param mc KEduVocMultipleChoice object to read to */ - bool readMultipleChoice( QDomElement &multipleChoiceElement, KEduVocMultipleChoice &mc ); + bool readMultipleChoice( QDomElement &multipleChoiceElement, KEduVocTranslation &translation ); /** read a grade * @param gradeElement element to read from diff --git a/keduvocdocument/keduvockvtml2writer.cpp b/keduvocdocument/keduvockvtml2writer.cpp index c60f601..8cbd85a 100644 --- a/keduvocdocument/keduvockvtml2writer.cpp +++ b/keduvocdocument/keduvockvtml2writer.cpp @@ -463,7 +463,7 @@ bool KEduVocKvtml2Writer::writeTranslation( QDomElement &translationElement, KEd // multiplechoice if ( !translation.multipleChoice().isEmpty() ) { QDomElement multipleChoiceElement = m_domDoc.createElement( KVTML_MULTIPLECHOICE ); - writeMultipleChoice( multipleChoiceElement, translation.multipleChoice() ); + writeMultipleChoice( multipleChoiceElement, translation ); translationElement.appendChild( multipleChoiceElement ); } @@ -511,7 +511,7 @@ bool KEduVocKvtml2Writer::writeComparison( QDomElement &comparisonElement, const } -bool KEduVocKvtml2Writer::writeMultipleChoice( QDomElement &multipleChoiceElement, const KEduVocMultipleChoice &mc ) +bool KEduVocKvtml2Writer::writeMultipleChoice( QDomElement &multipleChoiceElement, KEduVocTranslation &translation ) /* good @@ -522,11 +522,9 @@ bool KEduVocKvtml2Writer::writeMultipleChoice( QDomElement &multipleChoiceElemen */ { - QStringList choices = mc.choices(); - for ( int i = 0; i < choices.size(); ++i ) { - multipleChoiceElement.appendChild( newTextElement( KVTML_CHOICE, choices[i] ) ); + foreach ( QString choice, translation.multipleChoice() ) { + multipleChoiceElement.appendChild( newTextElement( KVTML_CHOICE, choice ) ); } - return true; } diff --git a/keduvocdocument/keduvockvtml2writer.h b/keduvocdocument/keduvockvtml2writer.h index eb5d06c..1de872f 100644 --- a/keduvocdocument/keduvockvtml2writer.h +++ b/keduvocdocument/keduvockvtml2writer.h @@ -110,10 +110,9 @@ public: * @param multipleChoiceElement QDomElement multiplechoice to write to * @returns success */ - bool writeMultipleChoice( QDomElement &multipleChoiceElement, const KEduVocMultipleChoice &mc ); + bool writeMultipleChoice( QDomElement &multipleChoiceElement, KEduVocTranslation &translation ); private: - QDomElement newTextElement( const QString &elementName, const QString &text ); QFile *m_outputFile; diff --git a/keduvocdocument/keduvockvtmlreader.cpp b/keduvocdocument/keduvockvtmlreader.cpp index 65d7971..c31e9e6 100644 --- a/keduvocdocument/keduvockvtmlreader.cpp +++ b/keduvocdocument/keduvockvtmlreader.cpp @@ -737,7 +737,7 @@ bool KEduVocKvtmlReader::readComparison( QDomElement &domElementParent, KEduVocC } -bool KEduVocKvtmlReader::readMultipleChoice( QDomElement &domElementParent, KEduVocMultipleChoice &mc ) +bool KEduVocKvtmlReader::readMultipleChoice( QDomElement &domElementParent, KEduVocTranslation &translation ) /* good diff --git a/keduvocdocument/keduvocpaukerreader.cpp b/keduvocdocument/keduvocpaukerreader.cpp index 2ed69c4..51c8ce4 100644 --- a/keduvocdocument/keduvocpaukerreader.cpp +++ b/keduvocdocument/keduvocpaukerreader.cpp @@ -21,6 +21,7 @@ #include #include "keduvocexpression.h" +#include "keduvoclesson.h" #include "keduvocdocument.h" KEduVocPaukerReader::KEduVocPaukerReader( KEduVocDocument * doc ) @@ -126,9 +127,11 @@ void KEduVocPaukerReader::readCard() } } - KEduVocExpression expr = KEduVocExpression( front ); - expr.setTranslation( 1, back ); - m_doc->appendEntry( &expr ); + KEduVocLesson* lesson = new KEduVocLesson(i18n("Vocabulary"), m_doc->lesson()); + m_doc->lesson()->appendChildLesson(lesson); + + KEduVocExpression* expr = new KEduVocExpression( QStringList() << front << back); + lesson->addEntry( expr ); } diff --git a/keduvocdocument/keduvoctranslation.cpp b/keduvocdocument/keduvoctranslation.cpp index 0d50249..7fc0b26 100644 --- a/keduvocdocument/keduvoctranslation.cpp +++ b/keduvocdocument/keduvoctranslation.cpp @@ -60,7 +60,7 @@ public: /// Usages give a context (eg. this word is usually used in [biology]) QSet m_usages; /// When creating multiple choice tests, these are possible answers. (otherwise other words are added randomly) - KEduVocMultipleChoice m_multipleChoice; + QStringList m_multipleChoice; /// Conjugations of a word (I go, you go, he goes... boring in english) QMap m_conjugations; @@ -282,13 +282,13 @@ KEduVocComparison & KEduVocTranslation::comparison() } -void KEduVocTranslation::setMultipleChoice( const KEduVocMultipleChoice &mc ) -{ - d->m_multipleChoice = mc; -} +// void KEduVocTranslation::setMultipleChoice( const QStringList &mc ) +// { +// d->m_multipleChoice = mc; +// } -KEduVocMultipleChoice & KEduVocTranslation::multipleChoice() +QStringList & KEduVocTranslation::multipleChoice() { return d->m_multipleChoice; } diff --git a/keduvocdocument/keduvoctranslation.h b/keduvocdocument/keduvoctranslation.h index 174e89b..7f1ef30 100644 --- a/keduvocdocument/keduvoctranslation.h +++ b/keduvocdocument/keduvoctranslation.h @@ -20,7 +20,7 @@ #include "libkeduvocdocument_export.h" #include "keduvocgrammar.h" #include "keduvocconjugation.h" -#include "keduvocmultiplechoice.h" +// #include "keduvocmultiplechoice.h" #include #include @@ -227,12 +227,12 @@ public: /** returns multiple choice if available */ - KEduVocMultipleChoice & multipleChoice(); + QStringList & multipleChoice(); /** sets multiple choice * @param mc multiple choice block */ - void setMultipleChoice( const KEduVocMultipleChoice &mc ); +// void setMultipleChoice( const QStringList &mc ); /** get the sound url for this translation if it exists */ KUrl soundUrl();