void KOTodoView::copyTodoToDate( QDate date ) { QDateTime dt( date ); if ( mActiveItem && mChanger ) { Todo *newTodo = mActiveItem->todo()->clone(); newTodo->recreate(); newTodo->setHasDueDate( !date.isNull() ); newTodo->setDtDue( dt ); newTodo->setPercentComplete( 0 ); // avoid forking if ( newTodo->doesRecur() ) newTodo->recurrence()->unsetRecurs(); mChanger->addIncidence( newTodo, this ); } }
void KOTodoView::setNewPercentage( KOTodoViewItem *item, int percentage ) { kdDebug(5850) << "KOTodoView::setNewPercentage( " << percentage << "), item = " << item << endl; if ( !item || !mChanger ) return; Todo *todo = item->todo(); if ( !todo ) return; if ( !todo->isReadOnly () && mChanger->beginChange( todo ) ) { Todo *oldTodo = todo->clone(); /* Old code to make sub-items's percentage related to this one's: QListViewItem *myChild = firstChild(); KOTodoViewItem *item; while( myChild ) { item = static_cast<KOTodoViewItem*>(myChild); item->stateChange(state); myChild = myChild->nextSibling(); }*/ if ( percentage == 100 ) { todo->setCompleted( QDateTime::currentDateTime() ); // If the todo does recur, it doesn't get set as completed. However, the // item is still checked. Uncheck it again. if ( !todo->isCompleted() ) item->setState( QCheckListItem::Off ); else todo->setPercentComplete( percentage ); } else { todo->setCompleted( false ); todo->setPercentComplete( percentage ); } item->construct(); if ( todo->doesRecur() && percentage == 100 ) mChanger->changeIncidence( oldTodo, todo, KOGlobals::COMPLETION_MODIFIED_WITH_RECURRENCE ); else mChanger->changeIncidence( oldTodo, todo, KOGlobals::COMPLETION_MODIFIED ); mChanger->endChange( todo ); delete oldTodo; } else { item->construct(); kdDebug(5850) << "No active item, active item is read-only, or locking failed" << endl; } }