From: Frederik Gladhorn Date: Sat, 15 Dec 2007 14:19:40 +0000 (+0000) Subject: Start a drag and drop implemntation for the lesson model/view. X-Git-Tag: v4.0.71~93^2~10 X-Git-Url: https://git.rmz.fi/?a=commitdiff_plain;h=4600f5b22736884765246ffe2b4b379c3acb338f;p=libqmvoc.git Start a drag and drop implemntation for the lesson model/view. Moving lessons around works, adding them as child has a tendency to add the first instead of the selected lesson. Probably trivial. Lots of cleanup. WordType class has now always WordType as type, the special types are handled in the class by a function. svn path=/branches/work/kdeedu_parley/libkdeedu/; revision=748787 --- diff --git a/keduvocdocument/keduvoccontainer.cpp b/keduvocdocument/keduvoccontainer.cpp index 75ee76e..ba877f4 100644 --- a/keduvocdocument/keduvoccontainer.cpp +++ b/keduvocdocument/keduvoccontainer.cpp @@ -70,6 +70,7 @@ KEduVocContainer::~KEduVocContainer() void KEduVocContainer::appendChildContainer(KEduVocContainer * child) { d->m_childContainers.append(child); + child->d->m_parentContainer = this; } KEduVocContainer * KEduVocContainer::childContainer(int row) @@ -78,12 +79,17 @@ KEduVocContainer * KEduVocContainer::childContainer(int row) } -void KEduVocContainer::removeChildContainer(int row) +void KEduVocContainer::deleteChildContainer(int row) { kDebug() << "Delete of container - check entry deletion!"; delete d->m_childContainers.takeAt(row); } +void KEduVocContainer::removeChildContainer(int row) +{ + d->m_childContainers.removeAt(row); +} + int KEduVocContainer::childContainerCount() const { @@ -211,4 +217,10 @@ KEduVocContainer * KEduVocContainer::childOfType(KEduVocContainer::EnumContainer return 0; } +void KEduVocContainer::insertChildContainer(int row, KEduVocContainer * child) +{ + d->m_childContainers.insert(row, child); +} + + diff --git a/keduvocdocument/keduvoccontainer.h b/keduvocdocument/keduvoccontainer.h index 885928d..0de1ec0 100644 --- a/keduvocdocument/keduvoccontainer.h +++ b/keduvocdocument/keduvoccontainer.h @@ -33,22 +33,17 @@ public: /// @todo let wordtype have only one type and the actual types in a different function enum EnumContainerType{ Container, - LessonContainer, - LeitnerContainer, - WordTypeContainer, - WordTypeNounContainer, - WordTypeNounMaleContainer, - WordTypeNounFemaleContainer, - WordTypeNounNeutralContainer, - WordTypeVerbContainer, - WordTypeAdjectiveContainer, - WordTypeAdverbContainer + Lesson, + WordType, + Leitner }; /** default constructor */ - explicit KEduVocContainer(const QString& name, EnumContainerType type = LessonContainer, KEduVocContainer *parent = 0); + explicit KEduVocContainer(const QString& name, EnumContainerType type, KEduVocContainer *parent = 0); void appendChildContainer(KEduVocContainer *child); + void insertChildContainer(int row, KEduVocContainer *child); + void deleteChildContainer(int row); void removeChildContainer(int row); KEduVocContainer *childContainer(int row); diff --git a/keduvocdocument/keduvocdocument.cpp b/keduvocdocument/keduvocdocument.cpp index 2b66dd7..05b45b8 100644 --- a/keduvocdocument/keduvocdocument.cpp +++ b/keduvocdocument/keduvocdocument.cpp @@ -83,8 +83,8 @@ public: QStringList m_tenseDescriptions; QSet m_usages; -// use the name of the root lesson as title -// QString m_title; + + QString m_title; QString m_author; QString m_license; QString m_comment; @@ -112,7 +112,7 @@ void KEduVocDocument::KEduVocDocumentPrivate::init() delete m_lessonContainer; } m_lessonContainer = new KEduVocLesson("root"); - m_lessonContainer->setContainerType(KEduVocLesson::LessonContainer); + m_lessonContainer->setContainerType(KEduVocLesson::Lesson); if ( m_wordTypeContainer ) { delete m_wordTypeContainer; } @@ -128,6 +128,7 @@ void KEduVocDocument::KEduVocDocumentPrivate::init() m_querytrans = ""; m_url.setFileName( i18n( "Untitled" ) ); m_author = ""; + m_title = ""; m_comment = ""; m_version = ""; m_generator = ""; @@ -748,13 +749,13 @@ QString KEduVocDocument::title() const if ( d->m_lessonContainer->name().isEmpty() ) return d->m_url.fileName(); else - return d->m_lessonContainer->name(); + return d->m_title; } void KEduVocDocument::setTitle( const QString & title ) { - d->m_lessonContainer->setName(title.simplified()); + d->m_title = title; } diff --git a/keduvocdocument/keduvockvtml2reader.cpp b/keduvocdocument/keduvockvtml2reader.cpp index fb6a8ef..d0a34ae 100644 --- a/keduvocdocument/keduvockvtml2reader.cpp +++ b/keduvocdocument/keduvockvtml2reader.cpp @@ -532,25 +532,25 @@ bool KEduVocKvtml2Reader::readWordType( KEduVocWordType* parentContainer, QDomEl if ( !specialType.isEmpty() ) { // get the localized version if ( specialType == KVTML_SPECIALWORDTYPE_NOUN ) { - wordTypeContainer->setContainerType(KEduVocLesson::WordTypeNounContainer); + wordTypeContainer->setWordType(KEduVocWordType::Noun); } if ( specialType == KVTML_SPECIALWORDTYPE_VERB ) { - wordTypeContainer->setContainerType(KEduVocLesson::WordTypeVerbContainer); + wordTypeContainer->setWordType(KEduVocWordType::Verb); } if ( specialType == KVTML_SPECIALWORDTYPE_ADVERB ) { - wordTypeContainer->setContainerType(KEduVocLesson::WordTypeAdverbContainer); + wordTypeContainer->setWordType(KEduVocWordType::Adverb); } if ( specialType == KVTML_SPECIALWORDTYPE_ADJECTIVE ) { - wordTypeContainer->setContainerType(KEduVocLesson::WordTypeAdjectiveContainer); + wordTypeContainer->setWordType(KEduVocWordType::Adjective); } if ( specialType == KVTML_SPECIALWORDTYPE_NOUN_MALE ) { - wordTypeContainer->setContainerType(KEduVocLesson::WordTypeNounMaleContainer); + wordTypeContainer->setWordType(KEduVocWordType::NounMale); } if ( specialType == KVTML_SPECIALWORDTYPE_NOUN_FEMALE ) { - wordTypeContainer->setContainerType(KEduVocLesson::WordTypeNounFemaleContainer); + wordTypeContainer->setWordType(KEduVocWordType::NounFemale); } if ( specialType == KVTML_SPECIALWORDTYPE_NOUN_NEUTRAL ) { - wordTypeContainer->setContainerType(KEduVocLesson::WordTypeNounNeutralContainer); + wordTypeContainer->setWordType(KEduVocWordType::NounNeutral); } } // special type diff --git a/keduvocdocument/keduvockvtml2writer.cpp b/keduvocdocument/keduvockvtml2writer.cpp index ee8daf5..dcefe47 100644 --- a/keduvocdocument/keduvockvtml2writer.cpp +++ b/keduvocdocument/keduvockvtml2writer.cpp @@ -275,26 +275,26 @@ bool KEduVocKvtml2Writer::writeWordTypes( QDomElement &typesElement, KEduVocWord QDomElement typeDefinitionElement = m_domDoc.createElement( KVTML_CONTAINER ); typeDefinitionElement.appendChild( newTextElement( KVTML_NAME, wordType->name() ) ); - switch (wordType->containerType()) { - case KEduVocLesson::WordTypeNounContainer: + switch (wordType->wordType()) { + case KEduVocWordType::Noun: typeDefinitionElement.appendChild( newTextElement( KVTML_SPECIALWORDTYPE, KVTML_SPECIALWORDTYPE_NOUN ) ); break; - case KEduVocLesson::WordTypeNounMaleContainer: + case KEduVocWordType::NounMale: typeDefinitionElement.appendChild( newTextElement( KVTML_SPECIALWORDTYPE, KVTML_SPECIALWORDTYPE_NOUN_MALE ) ); break; - case KEduVocLesson::WordTypeNounFemaleContainer: + case KEduVocWordType::NounFemale: typeDefinitionElement.appendChild( newTextElement( KVTML_SPECIALWORDTYPE, KVTML_SPECIALWORDTYPE_NOUN_FEMALE ) ); break; - case KEduVocLesson::WordTypeNounNeutralContainer: + case KEduVocWordType::NounNeutral: typeDefinitionElement.appendChild( newTextElement( KVTML_SPECIALWORDTYPE, KVTML_SPECIALWORDTYPE_NOUN_NEUTRAL ) ); break; - case KEduVocLesson::WordTypeVerbContainer: + case KEduVocWordType::Verb: typeDefinitionElement.appendChild( newTextElement( KVTML_SPECIALWORDTYPE, KVTML_SPECIALWORDTYPE_VERB ) ); break; - case KEduVocLesson::WordTypeAdjectiveContainer: + case KEduVocWordType::Adjective: typeDefinitionElement.appendChild( newTextElement( KVTML_SPECIALWORDTYPE, KVTML_SPECIALWORDTYPE_ADJECTIVE ) ); break; - case KEduVocLesson::WordTypeAdverbContainer: + case KEduVocWordType::Adverb: typeDefinitionElement.appendChild( newTextElement( KVTML_SPECIALWORDTYPE, KVTML_SPECIALWORDTYPE_ADVERB ) ); break; default: diff --git a/keduvocdocument/keduvoclesson.cpp b/keduvocdocument/keduvoclesson.cpp index 1cd04cb..472242a 100644 --- a/keduvocdocument/keduvoclesson.cpp +++ b/keduvocdocument/keduvoclesson.cpp @@ -37,7 +37,7 @@ KEduVocLesson::Private::~ Private() } KEduVocLesson::KEduVocLesson(const QString& name, KEduVocContainer *parent) - : d( new Private ), KEduVocContainer(name, LessonContainer, parent) + : d( new Private ), KEduVocContainer(name, Lesson, parent) { } diff --git a/keduvocdocument/keduvocwordtype.cpp b/keduvocdocument/keduvocwordtype.cpp index 7cc324b..1c48278 100644 --- a/keduvocdocument/keduvocwordtype.cpp +++ b/keduvocdocument/keduvocwordtype.cpp @@ -24,14 +24,16 @@ class KEduVocWordType::Private { public: + EnumWordType m_wordType; // entries QList m_translations; }; KEduVocWordType::KEduVocWordType(const QString& name, KEduVocWordType *parent) - : d( new Private ), KEduVocContainer(name, WordTypeContainer, parent) + : d( new Private ), KEduVocContainer(name, WordType, parent) { + d->m_wordType = General; } KEduVocWordType::KEduVocWordType( const KEduVocWordType &other ) @@ -89,4 +91,14 @@ KEduVocExpression * KEduVocWordType::entry(int row) return entries().value(row); } +void KEduVocWordType::setWordType(EnumWordType type) +{ + d->m_wordType = type; +} + +KEduVocWordType::EnumWordType KEduVocWordType::wordType() const +{ + return d->m_wordType; +} + diff --git a/keduvocdocument/keduvocwordtype.h b/keduvocdocument/keduvocwordtype.h index 4c8d511..7c9d4e3 100644 --- a/keduvocdocument/keduvocwordtype.h +++ b/keduvocdocument/keduvocwordtype.h @@ -31,6 +31,19 @@ class KEduVocTranslation; class KEDUVOCDOCUMENT_EXPORT KEduVocWordType :public KEduVocContainer { public: + + enum EnumWordType { + General, + Noun, + NounMale, + NounFemale, + NounNeutral, + Verb, + Adjective, + Adverb + }; + + /** default constructor */ explicit KEduVocWordType(const QString& name, KEduVocWordType *parent = 0); @@ -43,6 +56,10 @@ public: /** assignment operator */ KEduVocWordType& operator= ( const KEduVocWordType& ); + void setWordType(EnumWordType type); + KEduVocWordType::EnumWordType wordType() const; + + KEduVocTranslation * translation(int row); /** get a list of all entries in the lesson */