From: Frederik Gladhorn Date: Fri, 31 Aug 2007 09:09:26 +0000 (+0000) Subject: Add compability methods to read kvtml1 tenses. X-Git-Tag: v3.94.0~108 X-Git-Url: https://git.rmz.fi/?a=commitdiff_plain;h=9edb348163d1688b27815eab70672e26ed254e5f;p=libqmvoc.git Add compability methods to read kvtml1 tenses. svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=706784 --- diff --git a/keduvocdocument/keduvocconjugation.h b/keduvocdocument/keduvocconjugation.h index 831ef48..c73fa8b 100644 --- a/keduvocdocument/keduvocconjugation.h +++ b/keduvocdocument/keduvocconjugation.h @@ -29,11 +29,9 @@ #include - +///@todo get rid of this old strange prefix thing: used to mark personal pronouns. #define CONJ_PREFIX "--" // definition of prefixes (I, you, ..) -#define UL_USER_TENSE "#" // designates number of user tense - class KEDUVOCDOCUMENT_EXPORT KEduVocTenseRelation { @@ -72,14 +70,8 @@ public: ~KEduVocConjugation(); - /** - * @return - */ int entryCount() const; - - QString getVerbName() const; - QString getType( int index ); void setType( int index, const QString & type ); void cleanUp(); diff --git a/keduvocdocument/keduvockvtmlcompability.cpp b/keduvocdocument/keduvockvtmlcompability.cpp index 0728723..186daaf 100644 --- a/keduvocdocument/keduvockvtmlcompability.cpp +++ b/keduvocdocument/keduvockvtmlcompability.cpp @@ -25,27 +25,25 @@ #include -const QString KEduVocKvtmlCompability::KVTML_1_USAGE_USER_DEFINED = QString( "#" ); -const QString KEduVocKvtmlCompability::KVTML_1_USAGE_SEPERATOR = QString( ":" ); - -const QString KEduVocKvtmlCompability::KVTML_1_TYPE_USER = QString( "#" ); -const QString KEduVocKvtmlCompability::KVTML_1_TYPE_DIV = QString( ":" ); +const QString KEduVocKvtmlCompability::KVTML_1_USER_DEFINED = QString( "#" ); +const QString KEduVocKvtmlCompability::KVTML_1_SEPERATOR = QString( ":" ); KEduVocKvtmlCompability::KEduVocKvtmlCompability() { m_usages = usageMap(); m_userdefinedUsageCounter = 0; + m_userdefinedTenseCounter = 0; initOldTypeLists(); - initOldConjugations(); + initOldTenses(); } QSet KEduVocKvtmlCompability::usageFromKvtml1( const QString & oldUsage ) const { QSet usages; - foreach( QString usage , oldUsage.split( KVTML_1_USAGE_SEPERATOR, QString::SkipEmptyParts ) ) { + foreach( QString usage , oldUsage.split( KVTML_1_SEPERATOR, QString::SkipEmptyParts ) ) { usages.insert( m_usages[usage] ); } return usages; @@ -111,7 +109,7 @@ void KEduVocKvtmlCompability::addUserdefinedUsage( const QString & usage ) { // start counting at 1 !!! m_userdefinedUsageCounter++; - m_usages[KVTML_1_USAGE_USER_DEFINED + QString::number( m_userdefinedUsageCounter )] = usage; + m_usages[KVTML_1_USER_DEFINED + QString::number( m_userdefinedUsageCounter )] = usage; } QSet< QString > KEduVocKvtmlCompability::documentUsages() const @@ -161,7 +159,7 @@ QString KEduVocKvtmlCompability::mainTypeFromOldFormat( const QString & typeSubt QString mainType; int i; - if (( i = typeSubtypeString.indexOf( KVTML_1_TYPE_DIV ) ) >= 0 ) + if (( i = typeSubtypeString.indexOf( KVTML_1_SEPERATOR ) ) >= 0 ) mainType = typeSubtypeString.left( i ); else mainType = typeSubtypeString; @@ -189,7 +187,7 @@ QString KEduVocKvtmlCompability::subTypeFromOldFormat( const QString & typeSubty { int i; QString t = typeSubtypeString; - if (( i = t.indexOf( KVTML_1_TYPE_DIV ) ) >= 0 ) { + if (( i = t.indexOf( KVTML_1_SEPERATOR ) ) >= 0 ) { t.remove( 0, i+1 ); } else { return QString(); @@ -210,13 +208,13 @@ QString KEduVocKvtmlCompability::oldType( const QString & mainType, const QStrin oldType = m_oldMainTypeNames.key( mainType ); oldSubType = m_oldSubTypeNames.key( subType ); if ( !oldSubType.isEmpty() ) { - return oldType + KVTML_1_TYPE_DIV + oldSubType; + return oldType + KVTML_1_SEPERATOR + oldSubType; } return oldType; } -void KEduVocKvtmlCompability::initOldConjugations() +void KEduVocKvtmlCompability::initOldTenses() { m_oldTenses["PrSi"] = i18n( "Simple Present" ); m_oldTenses["PrPr"] = i18n( "Present Progressive" ); @@ -226,3 +224,32 @@ void KEduVocKvtmlCompability::initOldConjugations() m_oldTenses["PaPa"] = i18n( "Past Participle" ); m_oldTenses["FuSi"] = i18n( "Future" ); } + + +void KEduVocKvtmlCompability::addUserdefinedTense(const QString & tense) +{ + m_userdefinedTenseCounter++; + m_oldTenses[KVTML_1_USER_DEFINED + QString::number( m_userdefinedTenseCounter )] = tense; + m_tenses.insert(tense); + + kDebug() << " Add tense: " << KVTML_1_USER_DEFINED + QString::number( m_userdefinedTenseCounter ) << " - " << tense; +} + + +QString KEduVocKvtmlCompability::tenseFromKvtml1(const QString & oldTense) +{ + // in case the document got chaged, at least make up something as tense + if (!m_oldTenses.keys().contains(oldTense)) { + m_oldTenses[oldTense] = oldTense; + kDebug() << "Warning, tense not found in document!"; + } + m_tenses.insert(m_oldTenses.value(oldTense)); + return m_oldTenses.value(oldTense); +} + + +QStringList KEduVocKvtmlCompability::documentTenses() const +{ + return m_tenses.values(); +} + diff --git a/keduvocdocument/keduvockvtmlcompability.h b/keduvocdocument/keduvockvtmlcompability.h index 109812a..c8ea170 100644 --- a/keduvocdocument/keduvockvtmlcompability.h +++ b/keduvocdocument/keduvockvtmlcompability.h @@ -72,9 +72,6 @@ #define UL_USER_USAGE "#" // designates number of user type - - - /** * @file contains defines and constants necessary for reading kvtml files prior to KDE4. kvtml version 1. */ @@ -134,6 +131,9 @@ public: QString oldType( const QString& mainType, const QString& subType ) const; + void addUserdefinedTense( const QString& tense ); + QString tenseFromKvtml1( const QString & oldTense ); + QStringList documentTenses() const; private: /** @@ -146,10 +146,6 @@ private: /// Map to store usages. Initialized with preset values by the constructor. Later user defined usages can be added. QMap< QString, QString > m_usages; - /// # defines user defined usage - static const QString KVTML_1_USAGE_USER_DEFINED; - /// : seperates usages - static const QString KVTML_1_USAGE_SEPERATOR; /// only order was decisive, we have to keep count. int m_userdefinedUsageCounter; @@ -161,14 +157,17 @@ private: QMap m_oldMainTypeNames; QMap m_oldSubTypeNames; - static const QString KVTML_1_TYPE_USER; - static const QString KVTML_1_TYPE_DIV; - ///////////TENSES/CONJUGATIONS/////// - void initOldConjugations(); - QMap m_oldTenses; + void initOldTenses(); + QMap m_oldTenses; + int m_userdefinedTenseCounter; + QSet m_tenses; + /// # defines user defined usage/word type/tense + static const QString KVTML_1_USER_DEFINED; + /// : seperates usages/word types + static const QString KVTML_1_SEPERATOR; }; diff --git a/keduvocdocument/keduvockvtmlreader.cpp b/keduvocdocument/keduvockvtmlreader.cpp index 6a79ac5..0eea625 100644 --- a/keduvocdocument/keduvockvtmlreader.cpp +++ b/keduvocdocument/keduvockvtmlreader.cpp @@ -180,6 +180,8 @@ bool KEduVocKvtmlReader::readBody( QDomElement &domElementParent ) } } + m_doc->setTenseDescriptions(m_compability.documentTenses()); + return true; } @@ -387,7 +389,7 @@ bool KEduVocKvtmlReader::readConjug( QDomElement &domElementParent, QList m_doc->tenseDescriptions().count() ) { - // description missing ? - QString s; - QStringList sl = m_doc->tenseDescriptions(); - for ( int i = m_doc->tenseDescriptions().count(); i < num; i++ ) { - s.setNum( i + 1 ); - s.prepend( "#" ); // invent descr according to number - sl.append( s ); - } - m_doc->setTenseDescriptions( sl ); - } - } + QString oldShortTense = domAttrLang.value(); + + tense = m_compability.tenseFromKvtml1( oldShortTense ); } pers1_sing = ""; @@ -525,24 +511,24 @@ bool KEduVocKvtmlReader::readConjug( QDomElement &domElementParent, QList next type, count++ + } // while -> next tense, count++ return true; } @@ -578,33 +564,19 @@ bool KEduVocKvtmlReader::readType( QDomElement &domElementParent ) bool KEduVocKvtmlReader::readTense( QDomElement &domElementParent ) { - QString s; QDomElement currentElement; - QStringList descriptions; QDomNodeList entryList = domElementParent.elementsByTagName( KV_TENSE_DESC ); if ( entryList.length() <= 0 ) return false; - descriptions.clear(); - for ( int i = 0; i < entryList.count(); ++i ) { currentElement = entryList.item( i ).toElement(); if ( currentElement.parentNode() == domElementParent ) { - int no = 0; - - QDomAttr attribute = currentElement.attributeNode( KV_TENSE_NO ); - if ( !attribute.isNull() ) - no = attribute.value().toInt(); - - s = currentElement.text(); - if ( s.isNull() ) - s = ""; - descriptions.append( s ); + m_compability.addUserdefinedTense( currentElement.text() ); } } - m_doc->setTenseDescriptions( descriptions ); return true; }