From 86c0d35262454a31ed7d50d3e20cbdace954ebdf Mon Sep 17 00:00:00 2001 From: zautrix Date: Sat, 05 Feb 2005 11:26:35 +0000 Subject: another fixx --- diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt index 14dcdac..9ba4f3e 100644 --- a/bin/kdepim/WhatsNew.txt +++ b/bin/kdepim/WhatsNew.txt @@ -17,7 +17,9 @@ Now TAB key jumps to next cell with an event/todo. Scroll in cell with coursor keys, scroll in time (next week) with Shift/Control + coursorkeys. -Fixeg bug that the todo view flat mode was reset after first view update. +Fixed bug that the todo view flat mode was reset after first view update. + +If a todo is displayed closed in the todo view, it is now displayed in overdue/due today color depending on the subtodos overdue/due today properties. ********** VERSION 2.0.2 ************ diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp index 31c5659..cb519b2 100644 --- a/korganizer/komonthview.cpp +++ b/korganizer/komonthview.cpp @@ -1202,7 +1202,7 @@ void KOMonthView::updateView() break; invalid = true; //qDebug("invalid %s", event->summary().latin1()); - incidenceStart = QDateTime( mStartDate ); + incidenceStart = QDateTime( mStartDate ).addSecs( -2 );; } if ( last ) break; diff --git a/korganizer/kotodoviewitem.cpp b/korganizer/kotodoviewitem.cpp index 6bdee18..78d4027 100644 --- a/korganizer/kotodoviewitem.cpp +++ b/korganizer/kotodoviewitem.cpp @@ -328,21 +328,17 @@ void KOTodoViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, i colorToSet = *(KOPrefs::instance()->categoryColor(cat) ); } else setColor = false; - } - if (mTodo->hasDueDate()) { - if (mTodo->dtDue().date()==QDate::currentDate() && - !mTodo->isCompleted()) { - //_cg.setColor( role , KOPrefs::instance()->mTodoDueTodayColor); - colorToSet = KOPrefs::instance()->mTodoDueTodayColor; - setColor = true; - } - if (mTodo->dtDue().date() < QDate::currentDate() && - !mTodo->isCompleted()) { - //_cg.setColor( role, KOPrefs::instance()->mTodoOverdueColor); - colorToSet = KOPrefs::instance()->mTodoOverdueColor; - setColor = true; - } - } + } + + int odue = mTodo->hasDueSubTodo( !isOpen()); + if (odue == 2) { + colorToSet = KOPrefs::instance()->mTodoOverdueColor; + setColor = true; + } else if ( odue == 1 ) { + colorToSet = KOPrefs::instance()->mTodoDueTodayColor; + setColor = true; + } + if ( setColor ) { _cg.setColor(role,colorToSet ); diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp index a2c20a8..5bc8c00 100644 --- a/korganizer/mainwindow.cpp +++ b/korganizer/mainwindow.cpp @@ -1346,7 +1346,16 @@ void MainWindow::processIncidenceSelection( Incidence *incidence ) if ( incidence->dtStart().time() != incidence->dtEnd().time() ) startString = ": "+KGlobal::locale()->formatTime(incidence->dtStart().time())+ "-"+KGlobal::locale()->formatTime(incidence->dtEnd().time()); - startString +=" "+KGlobal::locale()->formatDate( incidence->dtStart().date(), true); + if ( incidence->categories().contains( i18n("Birthday") ) || incidence->categories().contains( i18n("Anniversary") ) ) { + bool ok; + QDateTime noc = incidence->getNextOccurence( mView->startDate().addDays(-1), &ok ); + if ( ok ) { + int years = noc.date().year() - incidence->dtStart().date().year(); + startString += i18n(" (%1 y.)"). arg( years ); + } + } + else + startString +=" "+KGlobal::locale()->formatDate( incidence->dtStart().date(), true); } } diff --git a/libkcal/incidence.h b/libkcal/incidence.h index 1807bc4..de2a381 100644 --- a/libkcal/incidence.h +++ b/libkcal/incidence.h @@ -266,6 +266,7 @@ class Incidence : public IncidenceBase protected: QPtrList mAlarms; + QPtrList mRelations; private: int mRevision; bool mCancelled; @@ -277,7 +278,6 @@ protected: QStringList mCategories; Incidence *mRelatedTo; QString mRelatedToUid; - QPtrList mRelations; DateList mExDates; QPtrList mAttachments; QStringList mResources; diff --git a/libkcal/todo.cpp b/libkcal/todo.cpp index 7f1de78..d81a68f 100644 --- a/libkcal/todo.cpp +++ b/libkcal/todo.cpp @@ -193,7 +193,37 @@ QString Todo::dtDueStr(bool shortfmt) const { return KGlobal::locale()->formatDateTime(mDtDue, shortfmt); } - +// retval 0 : no found +// 1 : due for date found +// 2 : overdue for date found +int Todo::hasDueSubTodoForDate( const QDate & date, bool checkSubtodos ) +{ + int retval = 0; + if ( isCompleted() ) + return 0; + if ( hasDueDate() ) { + if ( dtDue().date() < date ) + return 2; + // we do not return, because we may find an overdue sub todo + if ( dtDue().date() == date ) + retval = 1; + } + if ( checkSubtodos ) { + Incidence *aTodo; + for (aTodo = mRelations.first(); aTodo; aTodo = mRelations.next()) { + int ret = ((Todo*)aTodo)->hasDueSubTodoForDate( date ,checkSubtodos ); + if ( ret == 2 ) + return 2; + if ( ret == 1) + retval = 1; + } + } + return retval; +} +int Todo::hasDueSubTodo( bool checkSubtodos ) //= true +{ + return hasDueSubTodoForDate(QDate::currentDate(), checkSubtodos ); +} bool Todo::hasDueDate() const { return mHasDueDate; diff --git a/libkcal/todo.h b/libkcal/todo.h index 41f5841..137b252 100644 --- a/libkcal/todo.h +++ b/libkcal/todo.h @@ -62,6 +62,18 @@ class Todo : public Incidence /** sets the event's hasDueDate value. */ void setHasDueDate(bool f); + /* + Looks for a subtodo (including itself ) which is not complete and is + - overdue, or + - due today. + It returns 0 for nothing found, + 1 for found a todo which is due today and no overdue found + 2 for found a overdue todo + */ + int hasDueSubTodo( bool checkSubtodos = true ); + /* same as above, but a specific date can be specified*/ + int hasDueSubTodoForDate( const QDate & date, bool checkSubtodos ); + /** sets the event's status to the string specified. The string * must be a recognized value for the status field, i.e. a string -- cgit v0.9.0.2