From 0eb7a5888e4aeb1b9f50cc3fa69df69b2bf14514 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Thu, 27 Mar 2008 00:18:50 +0000 Subject: [PATCH] Clean up expression constructor and setting the lesson for an entry. No need to crash when reassigning to a different lesson ;) svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=790613 --- keduvocdocument/keduvocexpression.cpp | 12 ++++++++++++ keduvocdocument/keduvoclesson.cpp | 14 +++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/keduvocdocument/keduvocexpression.cpp b/keduvocdocument/keduvocexpression.cpp index d510c64..94ceff2 100644 --- a/keduvocdocument/keduvocexpression.cpp +++ b/keduvocdocument/keduvocexpression.cpp @@ -33,6 +33,7 @@ public: ~KEduVocExpressionPrivate(); KEduVocExpressionPrivate(const KEduVocExpressionPrivate &other); + KEduVocExpressionPrivate& operator= (const KEduVocExpressionPrivate &other); bool operator== ( const KEduVocExpressionPrivate &p ) const; @@ -58,6 +59,15 @@ KEduVocExpression::KEduVocExpressionPrivate::KEduVocExpressionPrivate(const KEdu } } +KEduVocExpression::KEduVocExpressionPrivate & KEduVocExpression::KEduVocExpressionPrivate::operator =(const KEduVocExpressionPrivate & other) +{ + m_active = other.m_active; + + foreach (int key, other.m_translations.keys()) { + m_translations[key] = new KEduVocTranslation(*other.m_translations.value(key)); + } + return *this; +} bool KEduVocExpression::KEduVocExpressionPrivate::operator== ( const KEduVocExpression::KEduVocExpressionPrivate &p ) const { @@ -90,6 +100,7 @@ KEduVocExpression::KEduVocExpression( const QStringList & translations) KEduVocExpression::KEduVocExpression(const KEduVocExpression & other) : d(new KEduVocExpressionPrivate(*other.d)) { + d->m_lesson = 0; if (other.lesson()) { other.lesson()->appendEntry(this); } @@ -195,3 +206,4 @@ void KEduVocExpression::setLesson(KEduVocLesson * l) d->m_lesson = l; } + diff --git a/keduvocdocument/keduvoclesson.cpp b/keduvocdocument/keduvoclesson.cpp index 5622856..f253dfd 100644 --- a/keduvocdocument/keduvoclesson.cpp +++ b/keduvocdocument/keduvoclesson.cpp @@ -67,14 +67,12 @@ int KEduVocLesson::entryCount(EnumEntriesRecursive recursive) void KEduVocLesson::appendEntry(KEduVocExpression* entry) { - Q_ASSERT(entry); - d->m_entries.append( entry ); - entry->setLesson(this); - invalidateChildLessonEntries(); + insertEntry(d->m_entries.size(), entry); } void KEduVocLesson::insertEntry(int index, KEduVocExpression * entry) { + Q_ASSERT(entry); d->m_entries.insert( index, entry ); entry->setLesson(this); invalidateChildLessonEntries(); @@ -82,11 +80,9 @@ void KEduVocLesson::insertEntry(int index, KEduVocExpression * entry) void KEduVocLesson::removeEntry(KEduVocExpression* entry) { - if (entry) { - d->m_entries.removeAt( d->m_entries.indexOf(entry) ); - entry->setLesson(0); - invalidateChildLessonEntries(); - } + Q_ASSERT(entry); + d->m_entries.removeAt( d->m_entries.indexOf(entry) ); + invalidateChildLessonEntries(); } KEduVocExpression * KEduVocLesson::entry(int row, EnumEntriesRecursive recursive) -- 2.47.3