From 5b6bf93f80b30f3aee9ef49a7a715f15d270ed48 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Thu, 27 Mar 2008 00:18:34 +0000 Subject: [PATCH] Change Expression: allow them to be in only one lesson. There are only small advantages and too much confusion otherwise. svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=790609 --- keduvocdocument/keduvocexpression.cpp | 34 ++++++++++++------------- keduvocdocument/keduvocexpression.h | 7 +++-- keduvocdocument/keduvockvtml2reader.cpp | 2 +- keduvocdocument/keduvoclesson.cpp | 13 +++------- 4 files changed, 24 insertions(+), 32 deletions(-) diff --git a/keduvocdocument/keduvocexpression.cpp b/keduvocdocument/keduvocexpression.cpp index 35cf692..d510c64 100644 --- a/keduvocdocument/keduvocexpression.cpp +++ b/keduvocdocument/keduvocexpression.cpp @@ -28,6 +28,7 @@ public: KEduVocExpressionPrivate() { m_active = true; + m_lesson = 0; } ~KEduVocExpressionPrivate(); @@ -35,7 +36,7 @@ public: bool operator== ( const KEduVocExpressionPrivate &p ) const; - QList m_lessons; + KEduVocLesson* m_lesson; bool m_active; QMap m_translations; @@ -51,7 +52,6 @@ KEduVocExpression::KEduVocExpressionPrivate::~KEduVocExpressionPrivate() KEduVocExpression::KEduVocExpressionPrivate::KEduVocExpressionPrivate(const KEduVocExpressionPrivate & other) { m_active = other.m_active; - m_lessons = other.m_lessons; foreach (int key, other.m_translations.keys()) { m_translations[key] = new KEduVocTranslation(*other.m_translations.value(key)); @@ -63,7 +63,7 @@ bool KEduVocExpression::KEduVocExpressionPrivate::operator== ( const KEduVocExpr { return m_translations == p.m_translations && - m_lessons == p.m_lessons && + m_lesson == p.m_lesson && m_active == p.m_active; } @@ -89,14 +89,16 @@ KEduVocExpression::KEduVocExpression( const QStringList & translations) KEduVocExpression::KEduVocExpression(const KEduVocExpression & other) : d(new KEduVocExpressionPrivate(*other.d)) -{} +{ + if (other.lesson()) { + other.lesson()->appendEntry(this); + } +} KEduVocExpression::~KEduVocExpression() { - foreach(KEduVocLesson * lesson, d->m_lessons) { - lesson->removeEntry(this); - } + d->m_lesson->removeEntry(this); delete d; } @@ -125,9 +127,9 @@ void KEduVocExpression::setTranslation( int index, const QString & expr ) } -QList KEduVocExpression::lessons() const +KEduVocLesson* KEduVocExpression::lesson() const { - return d->m_lessons; + return d->m_lesson; } @@ -185,15 +187,11 @@ QList< int > KEduVocExpression::translationIndices() const return d->m_translations.keys(); } -void KEduVocExpression::addLesson(KEduVocLesson * l) +void KEduVocExpression::setLesson(KEduVocLesson * l) { - d->m_lessons.append(l); -} - -void KEduVocExpression::removeLesson(KEduVocLesson * l) -{ - d->m_lessons.removeAt(d->m_lessons.indexOf(l)); + if (d->m_lesson) { + d->m_lesson->removeEntry(this); + } + d->m_lesson = l; } - - diff --git a/keduvocdocument/keduvocexpression.h b/keduvocdocument/keduvocexpression.h index 33790c8..4369bb8 100644 --- a/keduvocdocument/keduvocexpression.h +++ b/keduvocdocument/keduvocexpression.h @@ -61,9 +61,9 @@ public: ~KEduVocExpression(); - /** returns index of lesson (-1 = none) + /** return the lesson */ - QList lessons() const; + KEduVocLesson * lesson() const; /** reset all grades of the entry @@ -114,8 +114,7 @@ private: /** only called by lesson to add itself to the lesson list */ - void addLesson( KEduVocLesson * l ); - void removeLesson( KEduVocLesson * l ); + void setLesson( KEduVocLesson * l ); friend class KEduVocLesson; }; diff --git a/keduvocdocument/keduvockvtml2reader.cpp b/keduvocdocument/keduvockvtml2reader.cpp index eb356f7..789c83e 100644 --- a/keduvocdocument/keduvockvtml2reader.cpp +++ b/keduvocdocument/keduvockvtml2reader.cpp @@ -194,7 +194,7 @@ bool KEduVocKvtml2Reader::readGroups( QDomElement &domElementParent ) // now make sure we don't have any orphan entries foreach (KEduVocExpression * entry, m_allEntries.values()) { - if (entry->lessons().count() == 0) + if (!entry->lesson()) { defaultLesson->appendEntry(entry); } diff --git a/keduvocdocument/keduvoclesson.cpp b/keduvocdocument/keduvoclesson.cpp index ad04a3d..5622856 100644 --- a/keduvocdocument/keduvoclesson.cpp +++ b/keduvocdocument/keduvoclesson.cpp @@ -45,12 +45,7 @@ KEduVocLesson::KEduVocLesson( const KEduVocLesson &other ) KEduVocLesson::~KEduVocLesson() { - foreach (KEduVocExpression* entry, d->m_entries) { - entry->removeLesson(this); - if (entry->lessons().count() == 0) { - delete entry; - } - } + qDeleteAll(d->m_entries); delete d; } @@ -74,14 +69,14 @@ void KEduVocLesson::appendEntry(KEduVocExpression* entry) { Q_ASSERT(entry); d->m_entries.append( entry ); - entry->addLesson(this); + entry->setLesson(this); invalidateChildLessonEntries(); } void KEduVocLesson::insertEntry(int index, KEduVocExpression * entry) { d->m_entries.insert( index, entry ); - entry->addLesson(this); + entry->setLesson(this); invalidateChildLessonEntries(); } @@ -89,7 +84,7 @@ void KEduVocLesson::removeEntry(KEduVocExpression* entry) { if (entry) { d->m_entries.removeAt( d->m_entries.indexOf(entry) ); - entry->removeLesson(this); + entry->setLesson(0); invalidateChildLessonEntries(); } } -- 2.47.3