summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--korganizer/koagendaview.cpp1
-rw-r--r--korganizer/kotodoview.cpp9
-rw-r--r--korganizer/kotodoviewitem.cpp18
-rw-r--r--libkcal/todo.cpp6
4 files changed, 27 insertions, 7 deletions
diff --git a/korganizer/koagendaview.cpp b/korganizer/koagendaview.cpp
index bbc43e4..42a6f7c 100644
--- a/korganizer/koagendaview.cpp
+++ b/korganizer/koagendaview.cpp
@@ -1161,7 +1161,6 @@ void KOAgendaView::fillAgenda()
fillIn = true;
if ( ! fillIn && !todo->hasCompletedDate() )
fillIn = ((todo->dtDue().date() == currentDate) && !overdue) || ((currentDate == today) && overdue);
- qDebug("refill todo ");
if ( fillIn ) {
if ( (todo->doesFloat() || overdue ) && !todo->hasCompletedDate() ) { // Todo has no due-time set or is already overdue
if ( KOPrefs::instance()->mShowTodoInAgenda )
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp
index 14e8b5c..902f3f4 100644
--- a/korganizer/kotodoview.cpp
+++ b/korganizer/kotodoview.cpp
@@ -858,6 +858,15 @@ void KOTodoView::setNewPriority(int index)
void KOTodoView::setNewPercentage(int index)
{
if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) {
+
+ if ( mPercentage[index] == 100 && !mActiveItem->isOn() ) {
+ mActiveItem->setOn( true );
+ return;
+ } else if ( mPercentage[index] != 100 && mActiveItem->isOn() ) {
+ KOTodoViewItem* par = (static_cast<KOTodoViewItem*>(mActiveItem->parent()));
+ if ( par && par->isOn() )
+ par->setOn( false );
+ }
if (mPercentage[index] == 100) {
mActiveItem->todo()->setCompleted(QDateTime::currentDateTime());
} else {
diff --git a/korganizer/kotodoviewitem.cpp b/korganizer/kotodoviewitem.cpp
index 2822237..1edddac 100644
--- a/korganizer/kotodoviewitem.cpp
+++ b/korganizer/kotodoviewitem.cpp
@@ -203,15 +203,16 @@ void KOTodoViewItem::stateChange(bool state)
// qDebug("KOTodoViewItem::stateChange ");
// do not change setting on startup
if ( m_init ) return;
- qDebug("KOTodoViewItem::stateChange ");
+ if (isOn()!=state) {
+ setOn(state);
+ //qDebug("SETON ");
+ return;
+ }
QString keyd = "==";
QString keyt = "==";
-
+ //qDebug("KOTodoViewItem::stateChange %s ", text(0).latin1());
mTodo->setCompleted(state);
if (state) mTodo->setCompleted(QDateTime::currentDateTime());
- if (isOn()!=state) {
- setOn(state);
- }
if (mTodo->hasDueDate()) {
setText(3, mTodo->dtDueDateStr());
@@ -240,13 +241,20 @@ void KOTodoViewItem::stateChange(bool state)
if (mTodo->isCompleted()) setSortKey(2,QString::number(999));
else setSortKey(2,QString::number(99));
}
+ if ( state ) {
QListViewItem * myChild = firstChild();
KOTodoViewItem *item;
while( myChild ) {
+ //qDebug("stateCH ");
item = static_cast<KOTodoViewItem*>(myChild);
item->stateChange(state);
myChild = myChild->nextSibling();
}
+ } else {
+ QListViewItem * myChild = parent();
+ if ( myChild )
+ (static_cast<KOTodoViewItem*>(myChild))->stateChange(state);
+ }
mTodoView->modified(true);
setMyPixmap();
mTodoView->setTodoModified( mTodo );
diff --git a/libkcal/todo.cpp b/libkcal/todo.cpp
index 7d04793..7f1de78 100644
--- a/libkcal/todo.cpp
+++ b/libkcal/todo.cpp
@@ -307,7 +307,11 @@ QString Todo::completedStr( bool shortF ) const
void Todo::setCompleted(const QDateTime &completed)
{
- qDebug("Todo::setCompleted ");
+ //qDebug("Todo::setCompleted ");
+ if ( mHasCompletedDate ) {
+ // qDebug("has completed data - return ");
+ return;
+ }
mHasCompletedDate = true;
mPercentComplete = 100;
mCompleted = getEvenTime(completed);