-rw-r--r-- | korganizer/kotodoview.cpp | 52 |
1 files changed, 27 insertions, 25 deletions
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp index 2602487..35c2a9f 100644 --- a/korganizer/kotodoview.cpp +++ b/korganizer/kotodoview.cpp @@ -688,36 +688,36 @@ void KOTodoView::updateView() for(c=l.first();c;c=l.next()) { kdDebug() << " - relation: " << c->getSummary() << endl; } } */ // Put for each Event a KOTodoViewItem in the list view. Don't rely on a // specific order of events. That means that we have to generate parent items // recursively for proper hierarchical display of Todos. mTodoMap.clear(); Todo *todo; todo = todoList.first();// todo; todo = todoList.next()) { while ( todo ) { bool next = true; // qDebug("todo %s ", todo->summary().latin1()); Incidence *incidence = todo->relatedTo(); - while ( incidence ) { + while ( incidence ) { if ( incidence->typeID() == todoID ) { //qDebug("related %s ",incidence->summary().latin1() ); - if ( !(todoList.contains ( ((Todo* )incidence ) ) )) { + if ( !(todoList.contains ( ((Todo* )incidence ) ) ) && incidence->calEnabled() ) { //qDebug("related not found "); todoList.remove( ); todo = todoList.current(); next = false; incidence = 0; } else { //qDebug("related found "); incidence = incidence->relatedTo(); } } else incidence = 0; } if ( next ) todo = todoList.next(); } @@ -823,60 +823,62 @@ bool KOTodoView::checkTodo( Todo * todo ) return true; } void KOTodoView::restoreItemState( QListViewItem *item ) { pendingSubtodo = 0; while( item ) { KOTodoViewItem *todoItem = (KOTodoViewItem *)item; todoItem->setOpen( mDocPrefs->readBoolEntry( todoItem->todo()->uid() ) ); if( item->childCount() > 0 ) restoreItemState( item->firstChild() ); item = item->nextSibling(); } } QMap<Todo *,KOTodoViewItem *>::ConstIterator - KOTodoView::insertTodoItem(Todo *todo) +KOTodoView::insertTodoItem(Todo *todo) { -// kdDebug() << "KOTodoView::insertTodoItem(): " << todo->getSummary() << endl; - // TODO: Check, if dynmaic cast is necessary + // kdDebug() << "KOTodoView::insertTodoItem(): " << todo->getSummary() << endl; + // TODO: Check, if dynmaic cast is necessary pendingSubtodo = 0; - Incidence *incidence = todo->relatedTo(); - if (incidence && incidence->typeID() == todoID ) { - Todo *relatedTodo = static_cast<Todo *>(incidence); - -// kdDebug() << " has Related" << endl; - QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator; - itemIterator = mTodoMap.find(relatedTodo); - if (itemIterator == mTodoMap.end()) { -// kdDebug() << " related not yet in list" << endl; - itemIterator = insertTodoItem (relatedTodo); + Incidence *incidence = todo->relatedTo(); + while ( incidence && !incidence->calEnabled() ) + incidence = incidence->relatedTo(); + if (incidence && incidence->typeID() == todoID ) { + Todo *relatedTodo = static_cast<Todo *>(incidence); + + // kdDebug() << " has Related" << endl; + QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator; + itemIterator = mTodoMap.find(relatedTodo); + if (itemIterator == mTodoMap.end()) { + // kdDebug() << " related not yet in list" << endl; + itemIterator = insertTodoItem (relatedTodo); + } + // isn't this pretty stupid? We give one Todo to the KOTodoViewItem + // and one into the map. Sure finding is more easy but why? -zecke + KOTodoViewItem *todoItem = new KOTodoViewItem(*itemIterator,todo,this); + return mTodoMap.insert(todo,todoItem); + } else { + // kdDebug() << " no Related" << endl; + // see above -zecke + KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); + return mTodoMap.insert(todo,todoItem); } - // isn't this pretty stupid? We give one Todo to the KOTodoViewItem - // and one into the map. Sure finding is more easy but why? -zecke - KOTodoViewItem *todoItem = new KOTodoViewItem(*itemIterator,todo,this); - return mTodoMap.insert(todo,todoItem); - } else { -// kdDebug() << " no Related" << endl; - // see above -zecke - KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); - return mTodoMap.insert(todo,todoItem); - } } void KOTodoView::updateConfig() { updateView(); mTodoListView->repaintContents(); } QPtrList<Incidence> KOTodoView::selectedIncidences() { QPtrList<Incidence> selected; KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem()); // if (!item) item = mActiveItem; if (item) selected.append(item->todo()); |