KEduVocExpression::KEduVocExpression(const KEduVocExpression & other)
: d(new KEduVocExpressionPrivate(*other.d))
{
- kDebug() << "Expression copy constructor";
foreach (int key, other.d->m_translations.keys()) {
d->m_translations[key] = new KEduVocTranslation(*other.d->m_translations.value(key));
- kDebug() << "copy translation: " << other.d->m_translations.value(key)->text();
d->m_translations[key]->setEntry(this);
}
}
delete d;
}
-
void KEduVocExpression::removeTranslation( int index )
{
delete d->m_translations.take(index);
KEduVocTranslation* KEduVocExpression::translation( int index )
{
- if(d->m_translations.contains(index)) {
+ if(translationIndices().contains(index)) {
return d->m_translations[index];
}
d->m_translations[index] = new KEduVocTranslation(this);
void KEduVocWordType::removeTranslation(KEduVocTranslation* translation)
{
- d->m_translations.removeAt( d->m_translations.indexOf(translation));
+kDebug() << "Remove Translation from wt";
+
+ d->m_translations.removeAt( d->m_translations.indexOf(translation) );
+
+ // no lesson found - this entry is being deleted. remove all its siblings.
+ if (!translation->entry()->lesson()) {
+ int index = d->m_expressions.indexOf(translation->entry());
+ if (index != -1) {
+ d->m_expressions.removeAt(index);
+ }
+ }
// remove from cache
bool found = false;