]> Git trees. - libqmvoc.git/commitdiff
Clean up expression constructor and setting the lesson for an entry.
authorFrederik Gladhorn <gladhorn@kde.org>
Thu, 27 Mar 2008 00:18:50 +0000 (00:18 +0000)
committerFrederik Gladhorn <gladhorn@kde.org>
Thu, 27 Mar 2008 00:18:50 +0000 (00:18 +0000)
No need to crash when reassigning to a different lesson ;)

svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=790613

keduvocdocument/keduvocexpression.cpp
keduvocdocument/keduvoclesson.cpp

index d510c64d30db5adfe180e1138ca70f8d9f159fa3..94ceff28a5e5b32798cb65810e8d2deab93f5e55 100644 (file)
@@ -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;
 }
 
+
index 56228568e296e224a988c3ed6b7499048bb06d57..f253dfd61b7d5f84a06de8d87d3806ac94ba4545 100644 (file)
@@ -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)