From 4fe48573fe936022cf875b6483e68dde49f50a3f Mon Sep 17 00:00:00 2001 From: Reto Zingg Date: Sat, 21 Sep 2013 13:51:18 +0300 Subject: [PATCH] adapt qmvockvtml2writer.cpp for querymee Conflicts: qmvockvtml2writer.cpp --- qmvockvtml2writer.cpp | 199 ++++++++++++++++++++++-------------------- 1 file changed, 104 insertions(+), 95 deletions(-) diff --git a/qmvockvtml2writer.cpp b/qmvockvtml2writer.cpp index 859ab8b..f230875 100644 --- a/qmvockvtml2writer.cpp +++ b/qmvockvtml2writer.cpp @@ -1,8 +1,14 @@ /*************************************************************************** - export a KEduVocDocument to a KVTML file +* this file is from kdeedu project. Filename: keduvockvtml2writer.cpp +***************************************************************************/ + +/*************************************************************************** + export a QmVocDocument to a KVTML file ----------------------------------------------------------------------- copyright : (C) 2007 Jeremy Whiting Copyright 2007-2010 Frederik Gladhorn + Copyright 2010, 2012 Reto Zingg + ***************************************************************************/ /*************************************************************************** @@ -14,27 +20,28 @@ * * ***************************************************************************/ -#include "keduvockvtml2writer.h" +#include "qmvockvtml2writer.h" #include #include -#include +// #include +#include -#include "keduvocdocument.h" -#include "keduvocexpression.h" -#include "keduvoclesson.h" -#include "keduvocleitnerbox.h" -#include "keduvocwordtype.h" +#include "qmvocdocument.h" +#include "qmvocexpression.h" +#include "qmvoclesson.h" +#include "qmvocleitnerbox.h" +#include "qmvocwordtype.h" #include "kvtml2defs.h" -KEduVocKvtml2Writer::KEduVocKvtml2Writer( QFile *file ) +QmVocKvtml2Writer::QmVocKvtml2Writer( QFile *file ) { // the file must be already open m_outputFile = file; } -bool KEduVocKvtml2Writer::writeDoc( KEduVocDocument *doc, const QString &generator ) +bool QmVocKvtml2Writer::writeDoc( QmVocDocument *doc, const QString &generator ) { if (createXmlDocument(doc, generator)) { QTextStream ts( m_outputFile ); @@ -44,7 +51,7 @@ bool KEduVocKvtml2Writer::writeDoc( KEduVocDocument *doc, const QString &generat return false; } -QByteArray KEduVocKvtml2Writer::toByteArray(KEduVocDocument * doc, const QString & generator) +QByteArray QmVocKvtml2Writer::toByteArray(QmVocDocument * doc, const QString & generator) { if (createXmlDocument(doc, generator)) { return m_domDoc.toByteArray(); @@ -52,7 +59,7 @@ QByteArray KEduVocKvtml2Writer::toByteArray(KEduVocDocument * doc, const QString return QByteArray(); } -bool KEduVocKvtml2Writer::createXmlDocument( KEduVocDocument *doc, const QString &generator ) +bool QmVocKvtml2Writer::createXmlDocument( QmVocDocument *doc, const QString &generator ) { m_doc = doc; @@ -109,7 +116,7 @@ bool KEduVocKvtml2Writer::createXmlDocument( KEduVocDocument *doc, const QString return true; } -bool KEduVocKvtml2Writer::writeInformation( QDomElement &informationElement, const QString &generator ) +bool QmVocKvtml2Writer::writeInformation( QDomElement &informationElement, const QString &generator ) { QDomElement currentElement; QDomText textNode; @@ -154,7 +161,7 @@ bool KEduVocKvtml2Writer::writeInformation( QDomElement &informationElement, con } -bool KEduVocKvtml2Writer::writeIdentifiers( QDomElement &identifiersElement ) +bool QmVocKvtml2Writer::writeIdentifiers( QDomElement &identifiersElement ) { for ( int i = 0; i < m_doc->identifierCount(); ++i ) { // create the node @@ -195,12 +202,12 @@ bool KEduVocKvtml2Writer::writeIdentifiers( QDomElement &identifiersElement ) return true; } -bool KEduVocKvtml2Writer::writeLessons( KEduVocLesson *parentLesson, QDomElement &lessonsElement ) +bool QmVocKvtml2Writer::writeLessons( QmVocLesson *parentLesson, QDomElement &lessonsElement ) { // iterate over child lessons. // the first time this is called with the root lesson which does not have a entry. for( int i = 0; i < parentLesson->childContainerCount(); i++ ) { - KEduVocLesson *lesson = static_cast(parentLesson->childContainer(i)); + QmVocLesson *lesson = static_cast(parentLesson->childContainer(i)); // make lesson element QDomElement thisLessonElement = m_domDoc.createElement( KVTML_CONTAINER ); @@ -216,7 +223,7 @@ bool KEduVocKvtml2Writer::writeLessons( KEduVocLesson *parentLesson, QDomElement writeLessons(lesson, thisLessonElement); // child entries - foreach(KEduVocExpression *entry, lesson->entries()) { + foreach(QmVocExpression *entry, lesson->entries()) { QDomElement entryElement = m_domDoc.createElement( KVTML_ENTRY ); entryElement.setAttribute( KVTML_ID, QString::number(m_allEntries.indexOf(entry)) ); thisLessonElement.appendChild(entryElement); @@ -228,22 +235,22 @@ bool KEduVocKvtml2Writer::writeLessons( KEduVocLesson *parentLesson, QDomElement -void KEduVocKvtml2Writer::writeSynonymAntonymFalseFriend(QDomElement & parentElement) +void QmVocKvtml2Writer::writeSynonymAntonymFalseFriend(QDomElement & parentElement) { - QList< KEduVocTranslation* > currentList; + QList< QmVocTranslation* > currentList; QDomElement synonymElement; // synonym, antonym, false friend - for(int type = KEduVocTranslation::Synonym; type <= KEduVocTranslation::FalseFriend; type++) { + for(int type = QmVocTranslation::Synonym; type <= QmVocTranslation::FalseFriend; type++) { switch (type) { - case KEduVocTranslation::Synonym: + case QmVocTranslation::Synonym: synonymElement = m_domDoc.createElement( KVTML_SYNONYM ); currentList = m_synonyms; break; - case KEduVocTranslation::Antonym: + case QmVocTranslation::Antonym: synonymElement = m_domDoc.createElement( KVTML_ANTONYM ); currentList = m_antonyms; break; - case KEduVocTranslation::FalseFriend: + case QmVocTranslation::FalseFriend: synonymElement = m_domDoc.createElement( KVTML_FALSEFRIEND ); currentList = m_falseFriends; break; @@ -251,23 +258,23 @@ void KEduVocKvtml2Writer::writeSynonymAntonymFalseFriend(QDomElement & parentEle while (!currentList.isEmpty()) { // after writing a translation, remove it from the list - KEduVocTranslation* translation = currentList.takeFirst(); + QmVocTranslation* translation = currentList.takeFirst(); QDomElement relatedElement; - QList list; + QList list; switch (type) { - case KEduVocTranslation::Synonym: + case QmVocTranslation::Synonym: list = translation->synonyms(); break; - case KEduVocTranslation::Antonym: + case QmVocTranslation::Antonym: list = translation->antonyms(); break; - case KEduVocTranslation::FalseFriend: + case QmVocTranslation::FalseFriend: list = translation->falseFriends(); break; } - foreach (KEduVocTranslation* synonym, list) { + foreach (QmVocTranslation* synonym, list) { // if it is not in the list it has already been written and we can move on if (currentList.contains(synonym)) { relatedElement = m_domDoc.createElement( KVTML_PAIR ); @@ -313,9 +320,9 @@ void KEduVocKvtml2Writer::writeSynonymAntonymFalseFriend(QDomElement & parentEle } // iterate over types } /* -bool KEduVocKvtml2Writer::writeRelated(QDomElement & parentElement, QList< KEduVocTranslation * > relatedList) +bool QmVocKvtml2Writer::writeRelated(QDomElement & parentElement, QList< QmVocTranslation * > relatedList) { - foreach (KEduVocTranslation* synonym, translation->synonyms()) { + foreach (QmVocTranslation* synonym, translation->synonyms()) { QDomElement entryElement = m_domDoc.createElement( KVTML_ENTRY ); entryElement.setAttribute( KVTML_ID, QString::number(m_allEntries.indexOf(translation->entry())) ); @@ -332,20 +339,20 @@ bool KEduVocKvtml2Writer::writeRelated(QDomElement & parentElement, QList< KEduV } }*/ -bool KEduVocKvtml2Writer::writeArticle( QDomElement &articleElement, int language ) +bool QmVocKvtml2Writer::writeArticle( QDomElement &articleElement, int language ) { ///@todo only write if not empty - QMap numbers; - numbers[0] = KEduVocWordFlag::Singular; - numbers[1] = KEduVocWordFlag::Dual; - numbers[2] = KEduVocWordFlag::Plural; - QMap genders; - genders[0] = KEduVocWordFlag::Masculine; - genders[1] = KEduVocWordFlag::Feminine; - genders[2] = KEduVocWordFlag::Neuter; - QMap defs; - defs[0] = KEduVocWordFlag::Definite; - defs[1] = KEduVocWordFlag::Indefinite; + QMap numbers; + numbers[0] = QmVocWordFlag::Singular; + numbers[1] = QmVocWordFlag::Dual; + numbers[2] = QmVocWordFlag::Plural; + QMap genders; + genders[0] = QmVocWordFlag::Masculine; + genders[1] = QmVocWordFlag::Feminine; + genders[2] = QmVocWordFlag::Neuter; + QMap defs; + defs[0] = QmVocWordFlag::Definite; + defs[1] = QmVocWordFlag::Indefinite; for (int num = 0; num <= 2; num++) { @@ -373,44 +380,44 @@ bool KEduVocKvtml2Writer::writeArticle( QDomElement &articleElement, int languag } -bool KEduVocKvtml2Writer::writeWordTypes( QDomElement &typesElement, KEduVocWordType* parentContainer ) +bool QmVocKvtml2Writer::writeWordTypes( QDomElement &typesElement, QmVocWordType* parentContainer ) { - foreach( KEduVocContainer* container, parentContainer->childContainers() ) { - KEduVocWordType* wordType = static_cast(container); + foreach( QmVocContainer* container, parentContainer->childContainers() ) { + QmVocWordType* wordType = static_cast(container); QDomElement typeDefinitionElement = m_domDoc.createElement( KVTML_CONTAINER ); typeDefinitionElement.appendChild( newTextElement( KVTML_NAME, wordType->name() ) ); - if (wordType->wordType().testFlag(KEduVocWordFlag::Noun)) + if (wordType->wordType().testFlag(QmVocWordFlag::Noun)) { - if (wordType->wordType().testFlag(KEduVocWordFlag::Masculine)) + if (wordType->wordType().testFlag(QmVocWordFlag::Masculine)) typeDefinitionElement.appendChild( newTextElement( KVTML_SPECIALWORDTYPE, KVTML_SPECIALWORDTYPE_NOUN_MALE ) ); - else if (wordType->wordType().testFlag(KEduVocWordFlag::Feminine)) + else if (wordType->wordType().testFlag(QmVocWordFlag::Feminine)) typeDefinitionElement.appendChild( newTextElement( KVTML_SPECIALWORDTYPE, KVTML_SPECIALWORDTYPE_NOUN_FEMALE ) ); - else if (wordType->wordType().testFlag(KEduVocWordFlag::Neuter)) + else if (wordType->wordType().testFlag(QmVocWordFlag::Neuter)) typeDefinitionElement.appendChild( newTextElement( KVTML_SPECIALWORDTYPE, KVTML_SPECIALWORDTYPE_NOUN_NEUTRAL ) ); else typeDefinitionElement.appendChild( newTextElement( KVTML_SPECIALWORDTYPE, KVTML_SPECIALWORDTYPE_NOUN ) ); } - else if (wordType->wordType().testFlag(KEduVocWordFlag::Verb)) + else if (wordType->wordType().testFlag(QmVocWordFlag::Verb)) typeDefinitionElement.appendChild( newTextElement( KVTML_SPECIALWORDTYPE, KVTML_SPECIALWORDTYPE_VERB ) ); - else if (wordType->wordType().testFlag(KEduVocWordFlag::Adjective)) + else if (wordType->wordType().testFlag(QmVocWordFlag::Adjective)) typeDefinitionElement.appendChild( newTextElement( KVTML_SPECIALWORDTYPE, KVTML_SPECIALWORDTYPE_ADJECTIVE ) ); - else if (wordType->wordType().testFlag(KEduVocWordFlag::Adverb)) + else if (wordType->wordType().testFlag(QmVocWordFlag::Adverb)) typeDefinitionElement.appendChild( newTextElement( KVTML_SPECIALWORDTYPE, KVTML_SPECIALWORDTYPE_ADVERB ) ); - else if (wordType->wordType().testFlag(KEduVocWordFlag::Conjunction)) + else if (wordType->wordType().testFlag(QmVocWordFlag::Conjunction)) typeDefinitionElement.appendChild( newTextElement( KVTML_SPECIALWORDTYPE, KVTML_SPECIALWORDTYPE_CONJUNCTION ) ); // child entries // child entries - foreach(KEduVocExpression *entry, wordType->entries()) { + foreach(QmVocExpression *entry, wordType->entries()) { QDomElement entryElement = m_domDoc.createElement( KVTML_ENTRY ); entryElement.setAttribute( KVTML_ID, QString::number(m_allEntries.indexOf(entry)) ); for(int translation = 0; translationidentifierCount(); translation++) { @@ -432,16 +439,16 @@ bool KEduVocKvtml2Writer::writeWordTypes( QDomElement &typesElement, KEduVocWord return true; } -bool KEduVocKvtml2Writer::writeLeitnerBoxes( QDomElement &leitnerParentElement, KEduVocLeitnerBox* parentContainer ) +bool QmVocKvtml2Writer::writeLeitnerBoxes( QDomElement &leitnerParentElement, QmVocLeitnerBox* parentContainer ) { - foreach( KEduVocContainer* container, parentContainer->childContainers() ) { - KEduVocLeitnerBox* leitnerBox = static_cast(container); + foreach( QmVocContainer* container, parentContainer->childContainers() ) { + QmVocLeitnerBox* 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()) { + foreach(QmVocExpression *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++) { @@ -461,13 +468,13 @@ bool KEduVocKvtml2Writer::writeLeitnerBoxes( QDomElement &leitnerParentElement, return true; } -bool KEduVocKvtml2Writer::writeEntries( QDomElement &entriesElement ) +bool QmVocKvtml2Writer::writeEntries( QDomElement &entriesElement ) { - m_allEntries = m_doc->lesson()->entries(KEduVocLesson::Recursive); + m_allEntries = m_doc->lesson()->entries(QmVocLesson::Recursive); // loop through entries for ( int i = 0; i < m_allEntries.count(); ++i ) { - KEduVocExpression *thisEntry = m_allEntries.value(i); + QmVocExpression *thisEntry = m_allEntries.value(i); // write entry tag QDomElement entryElement = m_domDoc.createElement( KVTML_ENTRY ); @@ -495,14 +502,14 @@ bool KEduVocKvtml2Writer::writeEntries( QDomElement &entriesElement ) } -bool KEduVocKvtml2Writer::writeTranslation( QDomElement &translationElement, KEduVocTranslation* translation ) +bool QmVocKvtml2Writer::writeTranslation( QDomElement &translationElement, QmVocTranslation* translation ) { - // so far only for KEduVocWord - text and grades + // so far only for QmVocWord - text and grades translation->toKVTML2(translationElement); // comparison if ( !(translation->comparativeForm().text().isEmpty() || translation->superlativeForm().text().isEmpty())) { - kDebug() << "Write comp"; + qDebug() << "Write comp"; QDomElement comparisonElement = m_domDoc.createElement( KVTML_COMPARISON ); translationElement.appendChild(comparisonElement); @@ -530,26 +537,28 @@ bool KEduVocKvtml2Writer::writeTranslation( QDomElement &translationElement, KEd // image if ( !translation->imageUrl().isEmpty() ) { - QString urlString; - if ( m_doc->url().upUrl().isParentOf( translation->imageUrl()) ) { - // try to save as relative url - urlString = KUrl::relativeUrl( m_doc->url() , translation->imageUrl() ); - } else { - urlString = translation->imageUrl().url(); - } - translationElement.appendChild( newTextElement( KVTML_IMAGE, urlString ) ); + qCritical("Fixme: imageURL is Empty..."); +// QString urlString; +// if ( m_doc->url().upUrl().isParentOf( translation->imageUrl()) ) { +// // try to save as relative url +// urlString = KUrl::relativeUrl( m_doc->url() , translation->imageUrl() ); +// } else { +// urlString = translation->imageUrl().url(); +// } +// translationElement.appendChild( newTextElement( KVTML_IMAGE, urlString ) ); } // sound if ( !translation->soundUrl().isEmpty() ) { - QString urlString; - if ( m_doc->url().upUrl().isParentOf( translation->soundUrl()) ) { - // try to save as relative url - urlString = KUrl::relativeUrl( m_doc->url() , translation->soundUrl() ); - } else { - urlString = translation->soundUrl().url(); - } - translationElement.appendChild( newTextElement( KVTML_SOUND, urlString ) ); + qCritical("Fixme: soundURL is Empty..."); +// QString urlString; +// if ( m_doc->url().upUrl().isParentOf( translation->soundUrl()) ) { +// // try to save as relative url +// urlString = KUrl::relativeUrl( m_doc->url() , translation->soundUrl() ); +// } else { +// urlString = translation->soundUrl().url(); +// } +// translationElement.appendChild( newTextElement( KVTML_SOUND, urlString ) ); } @@ -583,7 +592,7 @@ bool KEduVocKvtml2Writer::writeTranslation( QDomElement &translationElement, KEd // } // } -bool KEduVocKvtml2Writer::writeMultipleChoice( QDomElement &multipleChoiceElement, KEduVocTranslation* translation ) +bool QmVocKvtml2Writer::writeMultipleChoice( QDomElement &multipleChoiceElement, QmVocTranslation* translation ) /* good @@ -600,7 +609,7 @@ bool KEduVocKvtml2Writer::writeMultipleChoice( QDomElement &multipleChoiceElemen return true; } -QDomElement KEduVocKvtml2Writer::newTextElement( const QString &elementName, const QString &text ) +QDomElement QmVocKvtml2Writer::newTextElement( const QString &elementName, const QString &text ) { QDomElement retval = m_domDoc.createElement( elementName ); QDomText textNode = m_domDoc.createTextNode( text ); @@ -608,7 +617,7 @@ QDomElement KEduVocKvtml2Writer::newTextElement( const QString &elementName, con return retval; } -bool KEduVocKvtml2Writer::writePersonalPronoun(QDomElement & pronounElement, const KEduVocPersonalPronoun & pronoun) +bool QmVocKvtml2Writer::writePersonalPronoun(QDomElement & pronounElement, const QmVocPersonalPronoun & pronoun) { // general pronoun properties if ( pronoun.maleFemaleDifferent() ) { @@ -622,16 +631,16 @@ bool KEduVocKvtml2Writer::writePersonalPronoun(QDomElement & pronounElement, con } - QMap numbers; - numbers[0] = KEduVocWordFlag::Singular; - numbers[1] = KEduVocWordFlag::Dual; - numbers[2] = KEduVocWordFlag::Plural; - QMap persons; - persons[0] = KEduVocWordFlag::First; - persons[1] = KEduVocWordFlag::Second; - persons[2] = (KEduVocWordFlag::Flags)((int)KEduVocWordFlag::Third | (int)KEduVocWordFlag::Masculine); - persons[3] = (KEduVocWordFlag::Flags)((int)KEduVocWordFlag::Third | (int)KEduVocWordFlag::Feminine); - persons[4] = (KEduVocWordFlag::Flags)((int)KEduVocWordFlag::Third | (int)KEduVocWordFlag::Neuter); + QMap numbers; + numbers[0] = QmVocWordFlag::Singular; + numbers[1] = QmVocWordFlag::Dual; + numbers[2] = QmVocWordFlag::Plural; + QMap persons; + persons[0] = QmVocWordFlag::First; + persons[1] = QmVocWordFlag::Second; + persons[2] = (QmVocWordFlag::Flags)((int)QmVocWordFlag::Third | (int)QmVocWordFlag::Masculine); + persons[3] = (QmVocWordFlag::Flags)((int)QmVocWordFlag::Third | (int)QmVocWordFlag::Feminine); + persons[4] = (QmVocWordFlag::Flags)((int)QmVocWordFlag::Third | (int)QmVocWordFlag::Neuter); @@ -651,7 +660,7 @@ bool KEduVocKvtml2Writer::writePersonalPronoun(QDomElement & pronounElement, con return true; } -void KEduVocKvtml2Writer::appendTextElement(QDomElement & parent, const QString & elementName, const QString & text) +void QmVocKvtml2Writer::appendTextElement(QDomElement & parent, const QString & elementName, const QString & text) { // empty will never be written if (text.isEmpty()) { -- 2.47.3