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
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
#include <klocale.h>
#include "keduvocdocument.h"
+#include "keduvoclesson.h"
#include "keduvocexpression.h"
KEduVocCsvReader::KEduVocCsvReader( QIODevice *file )
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 );
}
}
#include <KLocale>
#include "keduvocdocument.h"
+#include "keduvoclesson.h"
#include "keduvocexpression.h"
KEduVocCsvWriter::KEduVocCsvWriter( QFile *file )
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;
: 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);
}
* @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
*
* @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();
// 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
}
-bool KEduVocKvtml2Reader::readMultipleChoice( QDomElement &multipleChoiceElement, KEduVocMultipleChoice &mc )
+bool KEduVocKvtml2Reader::readMultipleChoice( QDomElement &multipleChoiceElement, KEduVocTranslation &translation )
/*
<multiplechoice>
<choice>good</choice>
{
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;
* @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
// multiplechoice
if ( !translation.multipleChoice().isEmpty() ) {
QDomElement multipleChoiceElement = m_domDoc.createElement( KVTML_MULTIPLECHOICE );
- writeMultipleChoice( multipleChoiceElement, translation.multipleChoice() );
+ writeMultipleChoice( multipleChoiceElement, translation );
translationElement.appendChild( multipleChoiceElement );
}
}
-bool KEduVocKvtml2Writer::writeMultipleChoice( QDomElement &multipleChoiceElement, const KEduVocMultipleChoice &mc )
+bool KEduVocKvtml2Writer::writeMultipleChoice( QDomElement &multipleChoiceElement, KEduVocTranslation &translation )
/*
<multiplechoice>
<choice>good</choice>
</multiplechoice>
*/
{
- 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;
}
* @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;
}
-bool KEduVocKvtmlReader::readMultipleChoice( QDomElement &domElementParent, KEduVocMultipleChoice &mc )
+bool KEduVocKvtmlReader::readMultipleChoice( QDomElement &domElementParent, KEduVocTranslation &translation )
/*
<multiplechoice>
<mc1>good</mc1>
#include <KLocale>
#include "keduvocexpression.h"
+#include "keduvoclesson.h"
#include "keduvocdocument.h"
KEduVocPaukerReader::KEduVocPaukerReader( KEduVocDocument * doc )
}
}
- 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 );
}
/// Usages give a context (eg. this word is usually used in [biology])
QSet<QString> 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 <QString, KEduVocConjugation> m_conjugations;
}
-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;
}
#include "libkeduvocdocument_export.h"
#include "keduvocgrammar.h"
#include "keduvocconjugation.h"
-#include "keduvocmultiplechoice.h"
+// #include "keduvocmultiplechoice.h"
#include <KDE/KUrl>
#include <QtCore/QString>
/** 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();