-rw-r--r-- | korganizer/calendarview.cpp | 2 | ||||
-rw-r--r-- | korganizer/koviewmanager.cpp | 6 | ||||
-rw-r--r-- | korganizer/koviewmanager.h | 2 | ||||
-rw-r--r-- | korganizer/kowhatsnextview.cpp | 159 | ||||
-rw-r--r-- | libkcal/incidence.cpp | 8 | ||||
-rw-r--r-- | libkcal/incidencebase.cpp | 4 |
6 files changed, 104 insertions, 77 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp index ba0e6c6..bbed05b 100644 --- a/korganizer/calendarview.cpp +++ b/korganizer/calendarview.cpp | |||
@@ -1931,17 +1931,17 @@ void CalendarView::eventDeleted() | |||
1931 | } | 1931 | } |
1932 | void CalendarView::changeTodoDisplay(Todo *which, int action) | 1932 | void CalendarView::changeTodoDisplay(Todo *which, int action) |
1933 | { | 1933 | { |
1934 | changeIncidenceDisplay((Incidence *)which, action); | 1934 | changeIncidenceDisplay((Incidence *)which, action); |
1935 | mDateNavigator->updateView(); //LR | 1935 | mDateNavigator->updateView(); //LR |
1936 | //mDialogManager->updateSearchDialog(); | 1936 | //mDialogManager->updateSearchDialog(); |
1937 | 1937 | ||
1938 | if (which) { | 1938 | if (which) { |
1939 | //mViewManager->currentView()->updateView();//LR | 1939 | mViewManager->updateWNview(); |
1940 | //mTodoList->updateView(); | 1940 | //mTodoList->updateView(); |
1941 | } | 1941 | } |
1942 | 1942 | ||
1943 | } | 1943 | } |
1944 | 1944 | ||
1945 | void CalendarView::changeIncidenceDisplay(Incidence *which, int action) | 1945 | void CalendarView::changeIncidenceDisplay(Incidence *which, int action) |
1946 | { | 1946 | { |
1947 | updateUnmanagedViews(); | 1947 | updateUnmanagedViews(); |
diff --git a/korganizer/koviewmanager.cpp b/korganizer/koviewmanager.cpp index fc2bc77..ba77b45 100644 --- a/korganizer/koviewmanager.cpp +++ b/korganizer/koviewmanager.cpp | |||
@@ -218,16 +218,22 @@ void KOViewManager::updateView(const QDate &start, const QDate &end) | |||
218 | // kdDebug() << "KOViewManager::updateView()" << endl; | 218 | // kdDebug() << "KOViewManager::updateView()" << endl; |
219 | 219 | ||
220 | if (mCurrentView) mCurrentView->showDates(start, end); | 220 | if (mCurrentView) mCurrentView->showDates(start, end); |
221 | 221 | ||
222 | if (mTodoView) mTodoView->updateView(); | 222 | if (mTodoView) mTodoView->updateView(); |
223 | } | 223 | } |
224 | 224 | ||
225 | 225 | ||
226 | void KOViewManager::updateWNview() | ||
227 | { | ||
228 | if ( mCurrentView == mWhatsNextView && mWhatsNextView ) | ||
229 | mWhatsNextView->updateView(); | ||
230 | |||
231 | } | ||
226 | void KOViewManager::showWhatsNextView() | 232 | void KOViewManager::showWhatsNextView() |
227 | { | 233 | { |
228 | if (!mWhatsNextView) { | 234 | if (!mWhatsNextView) { |
229 | mWhatsNextView = new KOWhatsNextView(mMainView->calendar(),mMainView->viewStack(), | 235 | mWhatsNextView = new KOWhatsNextView(mMainView->calendar(),mMainView->viewStack(), |
230 | "KOViewManager::WhatsNextView"); | 236 | "KOViewManager::WhatsNextView"); |
231 | mWhatsNextView->setEventViewer( mMainView->getEventViewerDialog()); | 237 | mWhatsNextView->setEventViewer( mMainView->getEventViewerDialog()); |
232 | connect(mMainView, SIGNAL(configChanged()), mWhatsNextView, SLOT(updateConfig())); | 238 | connect(mMainView, SIGNAL(configChanged()), mWhatsNextView, SLOT(updateConfig())); |
233 | addView(mWhatsNextView); | 239 | addView(mWhatsNextView); |
diff --git a/korganizer/koviewmanager.h b/korganizer/koviewmanager.h index f814c36..26b22be 100644 --- a/korganizer/koviewmanager.h +++ b/korganizer/koviewmanager.h | |||
@@ -48,17 +48,17 @@ class KOViewManager : public QObject | |||
48 | { | 48 | { |
49 | Q_OBJECT | 49 | Q_OBJECT |
50 | public: | 50 | public: |
51 | KOViewManager( CalendarView * ); | 51 | KOViewManager( CalendarView * ); |
52 | virtual ~KOViewManager(); | 52 | virtual ~KOViewManager(); |
53 | 53 | ||
54 | /** changes the view to be the currently selected view */ | 54 | /** changes the view to be the currently selected view */ |
55 | void showView(KOrg::BaseView *, bool fullScreen = false ); | 55 | void showView(KOrg::BaseView *, bool fullScreen = false ); |
56 | 56 | void updateWNview(); | |
57 | void readSettings(KConfig *config); | 57 | void readSettings(KConfig *config); |
58 | void writeSettings(KConfig *config); | 58 | void writeSettings(KConfig *config); |
59 | bool showsNextDays(); | 59 | bool showsNextDays(); |
60 | /** Read which view was shown last from config file */ | 60 | /** Read which view was shown last from config file */ |
61 | void readCurrentView(KConfig *); | 61 | void readCurrentView(KConfig *); |
62 | /** Write which view is currently shown to config file */ | 62 | /** Write which view is currently shown to config file */ |
63 | void writeCurrentView(KConfig *); | 63 | void writeCurrentView(KConfig *); |
64 | 64 | ||
diff --git a/korganizer/kowhatsnextview.cpp b/korganizer/kowhatsnextview.cpp index b2001ec..2a8a7c1 100644 --- a/korganizer/kowhatsnextview.cpp +++ b/korganizer/kowhatsnextview.cpp | |||
@@ -258,61 +258,56 @@ void KOWhatsNextView::updateView() | |||
258 | Event *ev = events.first(); | 258 | Event *ev = events.first(); |
259 | while(ev) { | 259 | while(ev) { |
260 | Attendee *me = ev->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); | 260 | Attendee *me = ev->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); |
261 | if (me!=0) { | 261 | if (me!=0) { |
262 | if (me->status()==Attendee::NeedsAction && me->RSVP()) { | 262 | if (me->status()==Attendee::NeedsAction && me->RSVP()) { |
263 | if (replys == 0) { | 263 | if (replys == 0) { |
264 | mText += "<p></p>"; | 264 | mText += "<p></p>"; |
265 | // kil.loadIcon("reply",KIcon::NoGroup,22,KIcon::DefaultState,&ipath); | 265 | // kil.loadIcon("reply",KIcon::NoGroup,22,KIcon::DefaultState,&ipath); |
266 | mText += "<h2>"; | 266 | //mText += "<h2>"; |
267 | //<img src=\""; | 267 | //<img src=\""; |
268 | // mText += ipath; | 268 | // mText += ipath; |
269 | // mText += "\">"; | 269 | // mText += "\">"; |
270 | mText += i18n("Events and To-Dos that need a reply:") + "</h2>\n"; | 270 | //mText += i18n("Events and To-Dos that need a reply:") + "</h2>\n"; |
271 | mText +="<big><big><strong><em><font color=\"#000080\">" + i18n("Events and To-Dos that need a reply:") + "</font></em></strong></big></big>\n"; | ||
271 | mText += "<table>\n"; | 272 | mText += "<table>\n"; |
272 | } | 273 | } |
273 | replys++; | 274 | replys++; |
274 | appendEvent(ev,true); | 275 | appendEvent(ev,true); |
275 | } | 276 | } |
276 | } | 277 | } |
277 | ev = events.next(); | 278 | ev = events.next(); |
278 | } | 279 | } |
279 | } | 280 | } |
280 | todos = calendar()->todos(); | 281 | todos = calendar()->todos(); |
281 | if (todos.count() > 0) { | 282 | if (todos.count() > 0) { |
282 | Todo *to = todos.first(); | 283 | Todo *to = todos.first(); |
283 | while(to) { | 284 | while(to) { |
284 | Attendee *me = to->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); | 285 | if ( !to->isCompleted() ){ |
285 | if (me!=0) { | 286 | Attendee *me = to->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); |
286 | if (me->status()==Attendee::NeedsAction && me->RSVP()) { | 287 | if (me!=0) { |
287 | if (replys == 0) { | 288 | if (me->status()==Attendee::NeedsAction && me->RSVP()) { |
288 | mText += "<p></p>"; | 289 | if (replys == 0) { |
289 | // kil.loadIcon("reply",KIcon::NoGroup,22,KIcon::DefaultState,&ipath); | 290 | mText +="<big><big><strong><em><font color=\"#000080\">" + i18n("Events and To-Dos that need a reply:") + "</font></em></strong></big></big>\n"; |
290 | mText += "<h2>"; | 291 | mText += "<table>\n"; |
291 | //<img src=\""; | 292 | } |
292 | // mText += ipath; | 293 | replys++; |
293 | // mText += "\">"; | 294 | appendEvent(to, true); |
294 | mText += i18n("Events and To-Dos that need a reply:") + "</h2>\n"; | ||
295 | mText += "<table>\n"; | ||
296 | } | 295 | } |
297 | replys++; | ||
298 | appendEvent(to); | ||
299 | } | 296 | } |
300 | } | 297 | } |
301 | kdDebug () << "check for todo-replys..." << endl; | ||
302 | to = todos.next(); | 298 | to = todos.next(); |
303 | } | 299 | } |
304 | } | 300 | } |
305 | if (replys > 0 ) mText += "</table>\n"; | 301 | if (replys > 0 ) mText += "</table>\n"; |
306 | 302 | ||
307 | 303 | ||
308 | mText += "</td></tr>\n</table>\n"; | 304 | mText += "</td></tr>\n</table>\n"; |
309 | 305 | ||
310 | kdDebug() << "KOWhatsNextView::updateView: text: " << mText << endl; | ||
311 | mView->setText(mText); | 306 | mView->setText(mText); |
312 | mView->setFocus(); | 307 | mView->setFocus(); |
313 | 308 | ||
314 | // QPixmap bPix = SmallIcon( "back" ); | 309 | // QPixmap bPix = SmallIcon( "back" ); |
315 | // qDebug("xxxxxxxxxxxxxxxxxxxxx "); | 310 | // qDebug("xxxxxxxxxxxxxxxxxxxxx "); |
316 | // QWidget* test = new QWidget(); | 311 | // QWidget* test = new QWidget(); |
317 | // test->setBackgroundMode(FixedPixmap ); | 312 | // test->setBackgroundMode(FixedPixmap ); |
318 | // test->setBackgroundPixmap ( bPix ); | 313 | // test->setBackgroundPixmap ( bPix ); |
@@ -389,84 +384,106 @@ void KOWhatsNextView::changeEventDisplay(Event *, int action) | |||
389 | default: | 384 | default: |
390 | updateView(); | 385 | updateView(); |
391 | kdDebug() << "KOWhatsNextView::changeEventDisplay(): Illegal action " << action << endl; | 386 | kdDebug() << "KOWhatsNextView::changeEventDisplay(): Illegal action " << action << endl; |
392 | } | 387 | } |
393 | } | 388 | } |
394 | 389 | ||
395 | void KOWhatsNextView::appendEvent(Incidence *ev, bool reply, bool notRed ) | 390 | void KOWhatsNextView::appendEvent(Incidence *ev, bool reply, bool notRed ) |
396 | { | 391 | { |
397 | if ( !KOPrefs::instance()->mShowSyncEvents && ev->uid().left(21) == QString("last-syncEvent-device") ) | 392 | if ( !KOPrefs::instance()->mShowSyncEvents && ev->uid().left(15) == QString("last-syncEvent-") ) |
398 | return; | 393 | return; |
399 | QDateTime cdt = QDateTime::currentDateTime(); | 394 | QDateTime cdt = QDateTime::currentDateTime(); |
395 | QDateTime noc; | ||
396 | bool ok = true; | ||
397 | if ( reply ) { | ||
398 | noc = ev->getNextOccurence( cdt, &ok ); | ||
399 | if (! ok && ev->type() == "Event") | ||
400 | return; | ||
401 | } | ||
400 | mText += "<tr><td><b>"; | 402 | mText += "<tr><td><b>"; |
401 | if (ev->type()=="Event") { | 403 | if (ev->type()=="Event") { |
404 | if (reply) { | ||
405 | if (!ev->doesFloat()) | ||
406 | mText += KGlobal::locale()->formatDateTime( noc , KOPrefs::instance()->mShortDateInViewer) +": "; | ||
407 | else | ||
408 | mText += KGlobal::locale()->formatDate( noc.date() , KOPrefs::instance()->mShortDateInViewer) +": "; | ||
409 | |||
410 | } else { | ||
411 | if (!ev->doesFloat()) { | ||
412 | Event *event = static_cast<Event *>(ev); | ||
413 | QDateTime st,end; | ||
414 | if ( event->recurrence()->doesRecur() ) { | ||
415 | QDate recDate= mEventDate; | ||
416 | int days = event->dtStart().date().daysTo (event->dtEnd().date() ); | ||
417 | while ( ! event->recursOn( recDate ) ) { | ||
418 | recDate = recDate.addDays( -1 ); | ||
402 | 419 | ||
403 | if (!ev->doesFloat()) { | 420 | } |
404 | Event *event = static_cast<Event *>(ev); | 421 | st = QDateTime ( recDate, event->dtStart().time() ); |
405 | QDateTime st,end; | 422 | end = QDateTime ( recDate.addDays( days ), event->dtEnd().time() ); |
406 | if ( event->recurrence()->doesRecur() ) { | 423 | } |
407 | QDate recDate= mEventDate; | 424 | else { |
408 | int days = event->dtStart().date().daysTo (event->dtEnd().date() ); | 425 | st = event->dtStart(); |
409 | while ( ! event->recursOn( recDate ) ) { | 426 | end = event->dtEnd(); |
410 | recDate = recDate.addDays( -1 ); | ||
411 | |||
412 | } | 427 | } |
413 | st = QDateTime ( recDate, event->dtStart().time() ); | ||
414 | end = QDateTime ( recDate.addDays( days ), event->dtEnd().time() ); | ||
415 | } | ||
416 | else { | ||
417 | st = event->dtStart(); | ||
418 | end = event->dtEnd(); | ||
419 | } | ||
420 | 428 | ||
421 | if (reply) mText += "on " + event->dtStartDateStr() + ": "; | 429 | |
422 | QString dateText; | 430 | QString dateText; |
423 | // qDebug("%s %s %s %s ", mEventDate.toString().latin1(),event->summary().latin1(), st .toString().latin1(),end.toString().latin1() ); | 431 | // qDebug("%s %s %s %s ", mEventDate.toString().latin1(),event->summary().latin1(), st .toString().latin1(),end.toString().latin1() ); |
424 | if ( st.date() < mEventDate ) | 432 | if ( st.date() < mEventDate ) |
425 | dateText = "++:++-"; | 433 | dateText = "++:++-"; |
426 | else | 434 | else |
427 | dateText = event->dtStartTimeStr() + "-"; | 435 | dateText = event->dtStartTimeStr() + "-"; |
428 | if ( end.date() > mEventDate ) | 436 | if ( end.date() > mEventDate ) |
429 | dateText += "++:++"; | 437 | dateText += "++:++"; |
430 | else | ||
431 | dateText += event->dtEndTimeStr(); | ||
432 | if ( notRed ) | ||
433 | mText += dateText; | ||
434 | else { | ||
435 | if ( end < cdt ) | ||
436 | mText += "<font color=\"#F00000\">" + dateText + "</font>"; | ||
437 | else if ( st < cdt ) | ||
438 | mText += "<font color=\"#008000\">" + dateText + "</font>"; | ||
439 | else | 438 | else |
439 | dateText += event->dtEndTimeStr(); | ||
440 | if ( notRed ) | ||
440 | mText += dateText; | 441 | mText += dateText; |
441 | } | 442 | else { |
443 | if ( end < cdt ) | ||
444 | mText += "<font color=\"#F00000\">" + dateText + "</font>"; | ||
445 | else if ( st < cdt ) | ||
446 | mText += "<font color=\"#008000\">" + dateText + "</font>"; | ||
447 | else | ||
448 | mText += dateText; | ||
449 | |||
450 | } | ||
442 | 451 | ||
443 | } else { | 452 | } else { |
444 | mText += i18n("Allday:"); | 453 | mText += i18n("Allday:"); |
445 | 454 | ||
455 | } | ||
446 | } | 456 | } |
447 | } else { | 457 | } else { |
448 | mTodos.append( ev ); | 458 | mTodos.append( ev ); |
449 | mText += i18n("ToDo:"); | 459 | mText += i18n("ToDo:"); |
450 | if ( ((Todo*)ev)->dtDue().date() < QDate::currentDate() ) { | 460 | if (reply) { |
451 | // mText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>"; | 461 | mText += " "; |
452 | QString dfs = KGlobal::locale()->dateFormatShort(); | 462 | if ( noc != cdt ) { |
453 | KGlobal::locale()->setDateFormatShort("%d.%b"); | 463 | mText += KGlobal::locale()->formatDate( noc.date() , KOPrefs::instance()->mShortDateInViewer) +": "; |
454 | mText +="<font color=\"#F00000\">" + KGlobal::locale()->formatDate(((Todo*)ev)->dtDue().date(), true, KLocale::Userdefined) + "</font>"; | 464 | } |
455 | KGlobal::locale()->setDateFormatShort(dfs); | ||
456 | } else { | 465 | } else { |
457 | if (!ev->doesFloat() ) | 466 | if ( ((Todo*)ev)->dtDue().date() < QDate::currentDate() ) { |
458 | if( ( (Todo*)ev)->dtDue() < cdt ) { | 467 | // mText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>"; |
459 | mText +="<font color=\"#F00000\">" + ((Todo*)ev)->dtDueTimeStr() + "</font>"; | 468 | QString dfs = KGlobal::locale()->dateFormatShort(); |
460 | 469 | KGlobal::locale()->setDateFormatShort("%d.%b"); | |
461 | 470 | mText +="<font color=\"#F00000\">" + KGlobal::locale()->formatDate(((Todo*)ev)->dtDue().date(), true, KLocale::Userdefined) + "</font>"; | |
462 | } else | 471 | KGlobal::locale()->setDateFormatShort(dfs); |
463 | mText +=((Todo*)ev)->dtDueTimeStr(); | 472 | } else { |
464 | mTodos.append( ev ); | 473 | if (!ev->doesFloat() ) |
474 | if( ( (Todo*)ev)->dtDue() < cdt ) { | ||
475 | mText +="<font color=\"#F00000\">" + ((Todo*)ev)->dtDueTimeStr() + "</font>"; | ||
476 | |||
477 | |||
478 | } else | ||
479 | mText +=((Todo*)ev)->dtDueTimeStr(); | ||
480 | mTodos.append( ev ); | ||
481 | } | ||
465 | } | 482 | } |
466 | } | 483 | } |
467 | mText += "</b></td><td>"; | 484 | mText += "</b></td><td>"; |
468 | bool needClose = false; | 485 | bool needClose = false; |
469 | if ( ev->cancelled() ) { | 486 | if ( ev->cancelled() ) { |
470 | mText += "<font color=\"#F00000\">[c"; | 487 | mText += "<font color=\"#F00000\">[c"; |
471 | needClose =true; | 488 | needClose =true; |
472 | 489 | ||
diff --git a/libkcal/incidence.cpp b/libkcal/incidence.cpp index 56c9801..55ac6d4 100644 --- a/libkcal/incidence.cpp +++ b/libkcal/incidence.cpp | |||
@@ -585,15 +585,19 @@ QDateTime Incidence::getNextOccurence( const QDateTime& dt, bool* ok ) const | |||
585 | } | 585 | } |
586 | } | 586 | } |
587 | } else { | 587 | } else { |
588 | return QDateTime (); | 588 | return QDateTime (); |
589 | } | 589 | } |
590 | } else { | 590 | } else { |
591 | if ( hasStartDate () ) { | 591 | if ( hasStartDate () ) { |
592 | incidenceStart = dtStart(); | 592 | incidenceStart = dtStart(); |
593 | 593 | } | |
594 | } | 594 | if ( type() =="Todo" ) { |
595 | if ( ((Todo*)this)->hasDueDate() ) | ||
596 | incidenceStart = ((Todo*)this)->dtDue(); | ||
597 | |||
598 | } | ||
595 | } | 599 | } |
596 | if ( incidenceStart > dt ) | 600 | if ( incidenceStart > dt ) |
597 | *ok = true; | 601 | *ok = true; |
598 | return incidenceStart; | 602 | return incidenceStart; |
599 | } | 603 | } |
diff --git a/libkcal/incidencebase.cpp b/libkcal/incidencebase.cpp index 64a343c..b36dc1a 100644 --- a/libkcal/incidencebase.cpp +++ b/libkcal/incidencebase.cpp | |||
@@ -266,17 +266,17 @@ Attendee *IncidenceBase::getAttendee(const char *n) const | |||
266 | #endif | 266 | #endif |
267 | 267 | ||
268 | Attendee *IncidenceBase::attendeeByMail(const QString &email) | 268 | Attendee *IncidenceBase::attendeeByMail(const QString &email) |
269 | { | 269 | { |
270 | QPtrListIterator<Attendee> qli(mAttendees); | 270 | QPtrListIterator<Attendee> qli(mAttendees); |
271 | 271 | ||
272 | qli.toFirst(); | 272 | qli.toFirst(); |
273 | while (qli) { | 273 | while (qli) { |
274 | if (qli.current()->email() == email) | 274 | if (qli.current()->email().lower() == email.lower()) |
275 | return qli.current(); | 275 | return qli.current(); |
276 | ++qli; | 276 | ++qli; |
277 | } | 277 | } |
278 | return 0L; | 278 | return 0L; |
279 | } | 279 | } |
280 | 280 | ||
281 | Attendee *IncidenceBase::attendeeByMails(const QStringList &emails, const QString& email) | 281 | Attendee *IncidenceBase::attendeeByMails(const QStringList &emails, const QString& email) |
282 | { | 282 | { |
@@ -284,17 +284,17 @@ Attendee *IncidenceBase::attendeeByMails(const QStringList &emails, const QStrin | |||
284 | 284 | ||
285 | QStringList mails = emails; | 285 | QStringList mails = emails; |
286 | if (!email.isEmpty()) { | 286 | if (!email.isEmpty()) { |
287 | mails.append(email); | 287 | mails.append(email); |
288 | } | 288 | } |
289 | qli.toFirst(); | 289 | qli.toFirst(); |
290 | while (qli) { | 290 | while (qli) { |
291 | for ( QStringList::Iterator it = mails.begin(); it != mails.end(); ++it ) { | 291 | for ( QStringList::Iterator it = mails.begin(); it != mails.end(); ++it ) { |
292 | if (qli.current()->email() == *it) | 292 | if (qli.current()->email().lower() == (*it).lower()) |
293 | return qli.current(); | 293 | return qli.current(); |
294 | } | 294 | } |
295 | 295 | ||
296 | ++qli; | 296 | ++qli; |
297 | } | 297 | } |
298 | return 0L; | 298 | return 0L; |
299 | } | 299 | } |
300 | 300 | ||