summaryrefslogtreecommitdiffabout
path: root/korganizer/kotodoview.cpp
Side-by-side diff
Diffstat (limited to 'korganizer/kotodoview.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/kotodoview.cpp52
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
@@ -680,52 +680,52 @@ void KOTodoView::updateView()
kdDebug() << " " << t->getSummary() << endl;
if (t->getRelatedTo()) {
kdDebug() << " (related to " << t->getRelatedTo()->getSummary() << ")" << endl;
}
QPtrList<Event> l = t->getRelations();
Event *c;
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();
}
for(todo = todoList.first(); todo; todo = todoList.next()) {
if (!mTodoMap.contains(todo) && checkTodo( todo ) )
{
insertTodoItem(todo);
}
}
// Restore opened/closed state
@@ -815,76 +815,78 @@ bool KOTodoView::checkTodo( Todo * todo )
if ( KOPrefs::instance()->mHideNonStartedTodos && mNavigator ) {
if ( todo->hasStartDate() )
if ( mNavigator->selectedDates().last() < todo->dtStart().date() )
return false;
if ( todo->hasDueDate() )
if ( mNavigator->selectedDates().first() > todo->dtDue().date() )
return false;
}
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());
return selected;
}
QPtrList<Todo> KOTodoView::selectedTodos()
{
QPtrList<Todo> selected;