summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp8
-rw-r--r--korganizer/calendarview.h1
-rw-r--r--korganizer/koagendaitem.cpp6
-rw-r--r--korganizer/kofilterview.cpp4
-rw-r--r--korganizer/kofilterview.h1
-rw-r--r--korganizer/komonthview.cpp4
-rw-r--r--korganizer/kotodoview.cpp52
-rw-r--r--korganizer/kotodoviewitem.cpp2
-rw-r--r--korganizer/kowhatsnextview.cpp4
9 files changed, 49 insertions, 33 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 07ec459..6e60c56 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -338,256 +338,259 @@ private:
338 338
339 339
340CalendarView::CalendarView( CalendarResources *calendar, 340CalendarView::CalendarView( CalendarResources *calendar,
341 QWidget *parent, const char *name ) 341 QWidget *parent, const char *name )
342 : CalendarViewBase( parent, name ), 342 : CalendarViewBase( parent, name ),
343 mCalendar( calendar ), 343 mCalendar( calendar ),
344 mResourceManager( calendar->resourceManager() ) 344 mResourceManager( calendar->resourceManager() )
345{ 345{
346 346
347 mEventEditor = 0; 347 mEventEditor = 0;
348 mTodoEditor = 0; 348 mTodoEditor = 0;
349 349
350 init(); 350 init();
351} 351}
352 352
353CalendarView::CalendarView( Calendar *calendar, 353CalendarView::CalendarView( Calendar *calendar,
354 QWidget *parent, const char *name ) 354 QWidget *parent, const char *name )
355 : CalendarViewBase( parent, name ), 355 : CalendarViewBase( parent, name ),
356 mCalendar( calendar ), 356 mCalendar( calendar ),
357 mResourceManager( 0 ) 357 mResourceManager( 0 )
358{ 358{
359 359
360 mEventEditor = 0; 360 mEventEditor = 0;
361 mTodoEditor = 0; 361 mTodoEditor = 0;
362 init(); 362 init();
363} 363}
364 364
365void CalendarView::init() 365void CalendarView::init()
366{ 366{
367 mNextAlarmDateTime = QDateTime::currentDateTime(); 367 mNextAlarmDateTime = QDateTime::currentDateTime();
368 setFocusPolicy ( NoFocus ); 368 setFocusPolicy ( NoFocus );
369 mViewerCallerIsSearchDialog = false; 369 mViewerCallerIsSearchDialog = false;
370 mBlockShowDates = false; 370 mBlockShowDates = false;
371 beamDialog = new KOBeamPrefs(); 371 beamDialog = new KOBeamPrefs();
372 mDatePickerMode = 0; 372 mDatePickerMode = 0;
373 mCurrentSyncDevice = ""; 373 mCurrentSyncDevice = "";
374 writeLocale(); 374 writeLocale();
375 mViewManager = new KOViewManager( this ); 375 mViewManager = new KOViewManager( this );
376 mDialogManager = new KODialogManager( this ); 376 mDialogManager = new KODialogManager( this );
377 mEventViewerDialog = 0; 377 mEventViewerDialog = 0;
378 mModified = false; 378 mModified = false;
379 mReadOnly = false; 379 mReadOnly = false;
380 mSelectedIncidence = 0; 380 mSelectedIncidence = 0;
381 mCalPrinter = 0; 381 mCalPrinter = 0;
382 mFilters.setAutoDelete(true); 382 mFilters.setAutoDelete(true);
383 383
384 mCalendar->registerObserver( this ); 384 mCalendar->registerObserver( this );
385 // TODO: Make sure that view is updated, when calendar is changed. 385 // TODO: Make sure that view is updated, when calendar is changed.
386 386
387 mStorage = new FileStorage( mCalendar ); 387 mStorage = new FileStorage( mCalendar );
388 mNavigator = new DateNavigator( this, "datevav", mViewManager ); 388 mNavigator = new DateNavigator( this, "datevav", mViewManager );
389 389
390 QBoxLayout *topLayout = (QBoxLayout*)layout(); 390 QBoxLayout *topLayout = (QBoxLayout*)layout();
391#ifndef KORG_NOSPLITTER 391#ifndef KORG_NOSPLITTER
392 // create the main layout frames. 392 // create the main layout frames.
393 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner"); 393 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner");
394 topLayout->addWidget(mPanner); 394 topLayout->addWidget(mPanner);
395 395
396 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner, 396 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner,
397 "CalendarView::LeftFrame"); 397 "CalendarView::LeftFrame");
398 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize); 398 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize);
399 399
400 mDateNavigator = new DateNavigatorContainer( mLeftSplitter, 400 mDateNavigator = new DateNavigatorContainer( mLeftSplitter,
401 "CalendarView::DateNavigator" ); 401 "CalendarView::DateNavigator" );
402 402
403 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize); 403 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize);
404 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2"); 404 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2");
405 mTodoList->setNavigator( mNavigator ); 405 mTodoList->setNavigator( mNavigator );
406 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView"); 406 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView");
407 407
408#ifdef KORG_NORESOURCEVIEW 408#ifdef KORG_NORESOURCEVIEW
409 mResourceView = 0; 409 mResourceView = 0;
410#else 410#else
411 if ( mResourceManager ) { 411 if ( mResourceManager ) {
412 mResourceView = new ResourceView( mResourceManager, mLeftSplitter ); 412 mResourceView = new ResourceView( mResourceManager, mLeftSplitter );
413 mResourceView->updateView(); 413 mResourceView->updateView();
414 connect( mResourceView, SIGNAL( resourcesChanged() ), 414 connect( mResourceView, SIGNAL( resourcesChanged() ),
415 SLOT( updateView() ) ); 415 SLOT( updateView() ) );
416 } else { 416 } else {
417 mResourceView = 0; 417 mResourceView = 0;
418 } 418 }
419#endif 419#endif
420 QWidget *rightBox = new QWidget( mPanner ); 420 QWidget *rightBox = new QWidget( mPanner );
421 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 421 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
422 422
423 mRightFrame = new QWidgetStack( rightBox ); 423 mRightFrame = new QWidgetStack( rightBox );
424 rightLayout->addWidget( mRightFrame, 1 ); 424 rightLayout->addWidget( mRightFrame, 1 );
425 425
426 mLeftFrame = mLeftSplitter; 426 mLeftFrame = mLeftSplitter;
427#else 427#else
428 //QWidget *mainBox = new QWidget( this ); 428 //QWidget *mainBox = new QWidget( this );
429 //QWidget *leftFrame = new QWidget( mainBox ); 429 //QWidget *leftFrame = new QWidget( mainBox );
430 //QBoxLayout * mainBoxLayout; 430 //QBoxLayout * mainBoxLayout;
431 if ( KOPrefs::instance()->mVerticalScreen ) { 431 if ( KOPrefs::instance()->mVerticalScreen ) {
432 //mainBoxLayout = new QVBoxLayout(mainBox); 432 //mainBoxLayout = new QVBoxLayout(mainBox);
433 //leftFrameLayout = new QHBoxLayout(leftFrame ); 433 //leftFrameLayout = new QHBoxLayout(leftFrame );
434 mMainFrame = new KDGanttMinimizeSplitter( Qt::Vertical, this ); 434 mMainFrame = new KDGanttMinimizeSplitter( Qt::Vertical, this );
435 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up ); 435 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up );
436 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, mMainFrame);; 436 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, mMainFrame);;
437 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 437 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
438 } else { 438 } else {
439 //mainBoxLayout = new QHBoxLayout(mainBox); 439 //mainBoxLayout = new QHBoxLayout(mainBox);
440 //leftFrameLayout = new QVBoxLayout(leftFrame ); 440 //leftFrameLayout = new QVBoxLayout(leftFrame );
441 mMainFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 441 mMainFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
442 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Left); 442 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Left);
443 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Vertical, mMainFrame); 443 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Vertical, mMainFrame);
444 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up ); 444 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up );
445 } 445 }
446 mMainFrame->setSizePolicy( QSizePolicy (QSizePolicy::Expanding,QSizePolicy::Expanding) ); 446 mMainFrame->setSizePolicy( QSizePolicy (QSizePolicy::Expanding,QSizePolicy::Expanding) );
447 //QBoxLayout * leftFrameLayout; 447 //QBoxLayout * leftFrameLayout;
448 topLayout->addWidget( mMainFrame ); 448 topLayout->addWidget( mMainFrame );
449 //mainBoxLayout->addWidget (mLeftFrame); 449 //mainBoxLayout->addWidget (mLeftFrame);
450 mDateNavigator = new DateNavigatorContainer( mLeftFrame, 450 mDateNavigator = new DateNavigatorContainer( mLeftFrame,
451 "CalendarView::DateNavigator" ); 451 "CalendarView::DateNavigator" );
452#if 0 452#if 0
453 // FIXME 453 // FIXME
454 mDateNavigator = new KDateNavigator(mLeftFrame, mCalendar, TRUE, 454 mDateNavigator = new KDateNavigator(mLeftFrame, mCalendar, TRUE,
455 "CalendarView::DateNavigator", QDate::currentDate()); 455 "CalendarView::DateNavigator", QDate::currentDate());
456#endif 456#endif
457 // mDateNavigator->blockSignals( true ); 457 // mDateNavigator->blockSignals( true );
458 //leftFrameLayout->addWidget( mDateNavigator ); 458 //leftFrameLayout->addWidget( mDateNavigator );
459 mTodoList = new KOTodoView(mCalendar, mLeftFrame, "todolistsmall"); 459 mTodoList = new KOTodoView(mCalendar, mLeftFrame, "todolistsmall");
460 mFilterView = new KOFilterView(&mFilters,mLeftFrame,"CalendarView::FilterView"); 460 mFilterView = new KOFilterView(&mFilters,mLeftFrame,"CalendarView::FilterView");
461 mCalEditView = new KOCalEditView(mLeftFrame,"CalendarView::CaleditView"); 461 mCalEditView = new KOCalEditView(mLeftFrame,"CalendarView::CaleditView");
462 connect( mCalEditView, SIGNAL( calendarEnabled (int,bool) ),mCalendar, SLOT( setCalendarEnabled(int,bool)) ); 462 connect( mCalEditView, SIGNAL( calendarEnabled (int,bool) ),mCalendar, SLOT( setCalendarEnabled(int,bool)) );
463 connect( mCalEditView, SIGNAL( alarmEnabled(int,bool) ),mCalendar, SLOT( setAlarmEnabled(int,bool)) ); 463 connect( mCalEditView, SIGNAL( alarmEnabled(int,bool) ),mCalendar, SLOT( setAlarmEnabled(int,bool)) );
464 connect( mCalEditView, SIGNAL( calendarReadonly(int,bool) ),mCalendar, SLOT( setReadOnly(int,bool)) ); 464 connect( mCalEditView, SIGNAL( calendarReadonly(int,bool) ),mCalendar, SLOT( setReadOnly(int,bool)) );
465 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mCalendar, SLOT( setDefaultCalendar(int)) ); 465 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mCalendar, SLOT( setDefaultCalendar(int)) );
466 connect( mCalEditView, SIGNAL( removeCalendar(int) ),mCalendar, SLOT( setCalendarRemove(int)) );
467 connect( mCalEditView, SIGNAL( calendarAdded(int) ),this, SLOT( addCalendarId(int)) );
468 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateView()) );
466 mTodoList->setNavigator( mNavigator ); 469 mTodoList->setNavigator( mNavigator );
467#if 0 470#if 0
468 if ( QApplication::desktop()->width() < 480 ) { 471 if ( QApplication::desktop()->width() < 480 ) {
469 leftFrameLayout->addWidget(mFilterView); 472 leftFrameLayout->addWidget(mFilterView);
470 leftFrameLayout->addWidget(mTodoList, 2 ); 473 leftFrameLayout->addWidget(mTodoList, 2 );
471 474
472 } else { 475 } else {
473 leftFrameLayout->addWidget(mTodoList,2 ); 476 leftFrameLayout->addWidget(mTodoList,2 );
474 leftFrameLayout->addWidget(mFilterView ); 477 leftFrameLayout->addWidget(mFilterView );
475 } 478 }
476#endif 479#endif
477 mFilterView->hide(); 480 mFilterView->hide();
478 mCalEditView->hide(); 481 mCalEditView->hide();
479 QWidget *rightBox = new QWidget( mMainFrame ); 482 QWidget *rightBox = new QWidget( mMainFrame );
480 //mainBoxLayout->addWidget ( rightBox, 10 ); 483 //mainBoxLayout->addWidget ( rightBox, 10 );
481 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 484 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
482 mRightFrame = new QWidgetStack( rightBox ); 485 mRightFrame = new QWidgetStack( rightBox );
483 rightLayout->addWidget( mRightFrame, 10 ); 486 rightLayout->addWidget( mRightFrame, 10 );
484 487
485 //mLeftFrame = (QWidget *)leftFrame; 488 //mLeftFrame = (QWidget *)leftFrame;
486 if ( KOPrefs::instance()->mVerticalScreen ) { 489 if ( KOPrefs::instance()->mVerticalScreen ) {
487 //mDateNavigator->setFixedHeight( mDateNavigator->sizeHint().height() ); 490 //mDateNavigator->setFixedHeight( mDateNavigator->sizeHint().height() );
488 //mDateNavigator->setMinimumWidth( mDateNavigator->sizeHint().width() ); 491 //mDateNavigator->setMinimumWidth( mDateNavigator->sizeHint().width() );
489 //mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() ); 492 //mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() );
490 //leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() ); 493 //leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() );
491 } else { 494 } else {
492 //mDateNavigator->setFixedWidth( mDateNavigator->sizeHint().width() ); 495 //mDateNavigator->setFixedWidth( mDateNavigator->sizeHint().width() );
493 //mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() ); 496 //mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() );
494 //leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() ); 497 //leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() );
495 } 498 }
496 if ( !KOPrefs::instance()->mShowDateNavigator) 499 if ( !KOPrefs::instance()->mShowDateNavigator)
497 mDateNavigator->hide(); 500 mDateNavigator->hide();
498 //qDebug("Calendarview Size %d %d ", width(), height()); 501 //qDebug("Calendarview Size %d %d ", width(), height());
499#endif 502#endif
500 503
501 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 504 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
502 SLOT( showDates( const KCal::DateList & ) ) ); 505 SLOT( showDates( const KCal::DateList & ) ) );
503 506
504 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 507 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
505 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 508 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
506 509
507 510
508 511
509 connect( mDateNavigator, SIGNAL( showMonth( const QDate & ) ), 512 connect( mDateNavigator, SIGNAL( showMonth( const QDate & ) ),
510 mViewManager, SLOT( showMonth( const QDate & ) ) ); 513 mViewManager, SLOT( showMonth( const QDate & ) ) );
511 514
512 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ), 515 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ),
513 mNavigator, SLOT( selectWeek( const QDate & ) ) ); 516 mNavigator, SLOT( selectWeek( const QDate & ) ) );
514 517
515 connect( mDateNavigator, SIGNAL( goPrevYear() ), 518 connect( mDateNavigator, SIGNAL( goPrevYear() ),
516 mNavigator, SLOT( selectPreviousYear() ) ); 519 mNavigator, SLOT( selectPreviousYear() ) );
517 connect( mDateNavigator, SIGNAL( goNextYear() ), 520 connect( mDateNavigator, SIGNAL( goNextYear() ),
518 mNavigator, SLOT( selectNextYear() ) ); 521 mNavigator, SLOT( selectNextYear() ) );
519 connect( mDateNavigator, SIGNAL( goPrevMonth() ), 522 connect( mDateNavigator, SIGNAL( goPrevMonth() ),
520 mNavigator, SLOT( selectPreviousMonth() ) ); 523 mNavigator, SLOT( selectPreviousMonth() ) );
521 connect( mDateNavigator, SIGNAL( goNextMonth() ), 524 connect( mDateNavigator, SIGNAL( goNextMonth() ),
522 mNavigator, SLOT( selectNextMonth() ) ); 525 mNavigator, SLOT( selectNextMonth() ) );
523 526
524 connect( mDateNavigator, SIGNAL( goPrevious() ), 527 connect( mDateNavigator, SIGNAL( goPrevious() ),
525 mNavigator, SLOT( selectPrevious() ) ); 528 mNavigator, SLOT( selectPrevious() ) );
526 connect( mDateNavigator, SIGNAL( goNext() ), 529 connect( mDateNavigator, SIGNAL( goNext() ),
527 mNavigator, SLOT( selectNext() ) ); 530 mNavigator, SLOT( selectNext() ) );
528 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ), 531 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ),
529 mNavigator, SLOT( slotMonthSelect( int ) ) ); 532 mNavigator, SLOT( slotMonthSelect( int ) ) );
530 533
531 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 534 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
532 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 535 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
533#if 0 536#if 0
534 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ), 537 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ),
535 SLOT( incidenceAdded( Incidence *) ) ); 538 SLOT( incidenceAdded( Incidence *) ) );
536#endif 539#endif
537 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView())); 540 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView()));
538 541
539 connect( this, SIGNAL( configChanged() ), 542 connect( this, SIGNAL( configChanged() ),
540 mDateNavigator, SLOT( updateConfig() ) ); 543 mDateNavigator, SLOT( updateConfig() ) );
541 544
542 connect( mTodoList, SIGNAL( newTodoSignal() ), 545 connect( mTodoList, SIGNAL( newTodoSignal() ),
543 SLOT( newTodo() ) ); 546 SLOT( newTodo() ) );
544 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ), 547 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ),
545 SLOT( newSubTodo( Todo * ) ) ); 548 SLOT( newSubTodo( Todo * ) ) );
546 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ), 549 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ),
547 SLOT( editTodo( Todo * ) ) ); 550 SLOT( editTodo( Todo * ) ) );
548 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ), 551 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ),
549 SLOT( showTodo( Todo *) ) ); 552 SLOT( showTodo( Todo *) ) );
550 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ), 553 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ),
551 SLOT( deleteTodo( Todo *) ) ); 554 SLOT( deleteTodo( Todo *) ) );
552 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) ); 555 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) );
553 connect( mTodoList, SIGNAL( purgeCompletedSignal() ), 556 connect( mTodoList, SIGNAL( purgeCompletedSignal() ),
554 SLOT( purgeCompleted() ) ); 557 SLOT( purgeCompleted() ) );
555 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ), 558 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ),
556 SIGNAL( todoModified( Todo *, int ) ) ); 559 SIGNAL( todoModified( Todo *, int ) ) );
557 560
558 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ), 561 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ),
559 this, SLOT ( cloneIncidence( Incidence * ) ) ); 562 this, SLOT ( cloneIncidence( Incidence * ) ) );
560 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ), 563 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ),
561 this, SLOT (cancelIncidence( Incidence * ) ) ); 564 this, SLOT (cancelIncidence( Incidence * ) ) );
562 565
563 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ), 566 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ),
564 this, SLOT ( moveIncidence( Incidence * ) ) ); 567 this, SLOT ( moveIncidence( Incidence * ) ) );
565 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ), 568 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ),
566 this, SLOT ( beamIncidence( Incidence * ) ) ); 569 this, SLOT ( beamIncidence( Incidence * ) ) );
567 570
568 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ), 571 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ),
569 this, SLOT ( todo_unsub( Todo * ) ) ); 572 this, SLOT ( todo_unsub( Todo * ) ) );
570 573
571 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ), 574 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ),
572 this, SLOT ( todo_resub( Todo *,Todo * ) ) ); 575 this, SLOT ( todo_resub( Todo *,Todo * ) ) );
573 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList, 576 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList,
574 SLOT( updateTodo( Todo *, int ) ) ); 577 SLOT( updateTodo( Todo *, int ) ) );
575 connect( this, SIGNAL( todoModified( Todo *, int )), this, 578 connect( this, SIGNAL( todoModified( Todo *, int )), this,
576 SLOT( changeTodoDisplay( Todo *, int ) ) ); 579 SLOT( changeTodoDisplay( Todo *, int ) ) );
577 580
578 581
579 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) ); 582 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) );
580 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) ); 583 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) );
581 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) ); 584 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) );
582 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) ); 585 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) );
583 586
584 587
585 588
586 589
587 590
588 connect(QApplication::clipboard(),SIGNAL(dataChanged()), 591 connect(QApplication::clipboard(),SIGNAL(dataChanged()),
589 SLOT(checkClipboard())); 592 SLOT(checkClipboard()));
590 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ), 593 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ),
591 SLOT( processTodoListSelection( Incidence * ) ) ); 594 SLOT( processTodoListSelection( Incidence * ) ) );
592 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool))); 595 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool)));
593 596
@@ -1744,256 +1747,261 @@ bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a
1744 if ( a ) { 1747 if ( a ) {
1745 ev->addAttendee( a ); 1748 ev->addAttendee( a );
1746 } 1749 }
1747 QString kind; 1750 QString kind;
1748 if ( birthday ) { 1751 if ( birthday ) {
1749 kind = i18n( "Birthday" ); 1752 kind = i18n( "Birthday" );
1750 ev->setSummary( name + " (" + QString::number(date.year()) +")"); 1753 ev->setSummary( name + " (" + QString::number(date.year()) +")");
1751 } 1754 }
1752 else { 1755 else {
1753 kind = i18n( "Anniversary" ); 1756 kind = i18n( "Anniversary" );
1754 ev->setSummary( name + " (" + QString::number(date.year()) +") " + kind ); 1757 ev->setSummary( name + " (" + QString::number(date.year()) +") " + kind );
1755 } 1758 }
1756 ev->setCategories( kind ); 1759 ev->setCategories( kind );
1757 ev->setDtStart( QDateTime(date) ); 1760 ev->setDtStart( QDateTime(date) );
1758 ev->setDtEnd( QDateTime(date) ); 1761 ev->setDtEnd( QDateTime(date) );
1759 ev->setFloats( true ); 1762 ev->setFloats( true );
1760 Recurrence * rec = ev->recurrence(); 1763 Recurrence * rec = ev->recurrence();
1761 rec->setYearly(Recurrence::rYearlyMonth,1,-1); 1764 rec->setYearly(Recurrence::rYearlyMonth,1,-1);
1762 rec->addYearlyNum( date.month() ); 1765 rec->addYearlyNum( date.month() );
1763 if ( !mCalendar->addAnniversaryNoDup( ev ) ) { 1766 if ( !mCalendar->addAnniversaryNoDup( ev ) ) {
1764 delete ev; 1767 delete ev;
1765 return false; 1768 return false;
1766 } 1769 }
1767 return true; 1770 return true;
1768 1771
1769} 1772}
1770bool CalendarView::importQtopia( const QString &categories, 1773bool CalendarView::importQtopia( const QString &categories,
1771 const QString &datebook, 1774 const QString &datebook,
1772 const QString &todolist ) 1775 const QString &todolist )
1773{ 1776{
1774 1777
1775 QtopiaFormat qtopiaFormat; 1778 QtopiaFormat qtopiaFormat;
1776 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1779 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1777 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories ); 1780 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories );
1778 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook ); 1781 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook );
1779 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist ); 1782 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist );
1780 1783
1781 updateView(); 1784 updateView();
1782 return true; 1785 return true;
1783 1786
1784#if 0 1787#if 0
1785 mGlobalSyncMode = SYNC_MODE_QTOPIA; 1788 mGlobalSyncMode = SYNC_MODE_QTOPIA;
1786 mCurrentSyncDevice = "qtopia-XML"; 1789 mCurrentSyncDevice = "qtopia-XML";
1787 if ( mSyncManager->mAskForPreferences ) 1790 if ( mSyncManager->mAskForPreferences )
1788 edit_sync_options(); 1791 edit_sync_options();
1789 qApp->processEvents(); 1792 qApp->processEvents();
1790 CalendarLocal* calendar = new CalendarLocal(); 1793 CalendarLocal* calendar = new CalendarLocal();
1791 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1794 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1792 bool syncOK = false; 1795 bool syncOK = false;
1793 QtopiaFormat qtopiaFormat; 1796 QtopiaFormat qtopiaFormat;
1794 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1797 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1795 bool loadOk = true; 1798 bool loadOk = true;
1796 if ( !categories.isEmpty() ) 1799 if ( !categories.isEmpty() )
1797 loadOk = qtopiaFormat.load( calendar, categories ); 1800 loadOk = qtopiaFormat.load( calendar, categories );
1798 if ( loadOk && !datebook.isEmpty() ) 1801 if ( loadOk && !datebook.isEmpty() )
1799 loadOk = qtopiaFormat.load( calendar, datebook ); 1802 loadOk = qtopiaFormat.load( calendar, datebook );
1800 if ( loadOk && !todolist.isEmpty() ) 1803 if ( loadOk && !todolist.isEmpty() )
1801 loadOk = qtopiaFormat.load( calendar, todolist ); 1804 loadOk = qtopiaFormat.load( calendar, todolist );
1802 1805
1803 if ( loadOk ) { 1806 if ( loadOk ) {
1804 getEventViewerDialog()->setSyncMode( true ); 1807 getEventViewerDialog()->setSyncMode( true );
1805 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 1808 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
1806 getEventViewerDialog()->setSyncMode( false ); 1809 getEventViewerDialog()->setSyncMode( false );
1807 qApp->processEvents(); 1810 qApp->processEvents();
1808 if ( syncOK ) { 1811 if ( syncOK ) {
1809 if ( mSyncManager->mWriteBackFile ) 1812 if ( mSyncManager->mWriteBackFile )
1810 { 1813 {
1811 // write back XML file 1814 // write back XML file
1812 1815
1813 } 1816 }
1814 setModified( true ); 1817 setModified( true );
1815 } 1818 }
1816 } else { 1819 } else {
1817 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; 1820 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ;
1818 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), 1821 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"),
1819 question, i18n("Ok")) ; 1822 question, i18n("Ok")) ;
1820 } 1823 }
1821 delete calendar; 1824 delete calendar;
1822 updateView(); 1825 updateView();
1823 return syncOK; 1826 return syncOK;
1824 1827
1825 1828
1826#endif 1829#endif
1827 1830
1828} 1831}
1829 1832
1830void CalendarView::setSyncEventsReadOnly() 1833void CalendarView::setSyncEventsReadOnly()
1831{ 1834{
1832 Event * ev; 1835 Event * ev;
1833 QPtrList<Event> eL = mCalendar->rawEvents(); 1836 QPtrList<Event> eL = mCalendar->rawEvents();
1834 ev = eL.first(); 1837 ev = eL.first();
1835 while ( ev ) { 1838 while ( ev ) {
1836 if ( ev->uid().left(15) == QString("last-syncEvent-") ) 1839 if ( ev->uid().left(15) == QString("last-syncEvent-") )
1837 ev->setReadOnly( true ); 1840 ev->setReadOnly( true );
1838 ev = eL.next(); 1841 ev = eL.next();
1839 } 1842 }
1840} 1843}
1841 1844
1842bool CalendarView::loadCalendars() 1845bool CalendarView::loadCalendars()
1843{ 1846{
1844 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 1847 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
1845 KopiCalendarFile * cal = calendars.first(); 1848 KopiCalendarFile * cal = calendars.first();
1846 mCalendar->setDefaultCalendar( 1 ); 1849 mCalendar->setDefaultCalendar( 1 );
1847 openCalendar( MainWindow::defaultFileName(), false ); 1850 openCalendar( MainWindow::defaultFileName(), false );
1848 cal = calendars.next(); 1851 cal = calendars.next();
1849 while ( cal ) { 1852 while ( cal ) {
1850 addCalendar( cal ); 1853 addCalendar( cal );
1851 cal = calendars.next(); 1854 cal = calendars.next();
1852 } 1855 }
1853 restoreCalendarSettings(); 1856 restoreCalendarSettings();
1854 mCalendar->reInitAlarmSettings(); 1857 mCalendar->reInitAlarmSettings();
1855 setSyncEventsReadOnly(); 1858 setSyncEventsReadOnly();
1856 updateUnmanagedViews(); 1859 updateUnmanagedViews();
1857 updateView(); 1860 updateView();
1858} 1861}
1859bool CalendarView::restoreCalendarSettings() 1862bool CalendarView::restoreCalendarSettings()
1860{ 1863{
1861 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 1864 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
1862 KopiCalendarFile * cal = calendars.first(); 1865 KopiCalendarFile * cal = calendars.first();
1863 while ( cal ) { 1866 while ( cal ) {
1864 mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled ); 1867 mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled );
1865 mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled ); 1868 mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled );
1866 mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly ); 1869 mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly );
1867 if ( cal->isStandard ) 1870 if ( cal->isStandard )
1868 mCalendar->setDefaultCalendar( cal->mCalNumber ); 1871 mCalendar->setDefaultCalendar( cal->mCalNumber );
1869 cal = calendars.next(); 1872 cal = calendars.next();
1870 } 1873 }
1871} 1874}
1875void CalendarView::addCalendarId( int id )
1876{
1877 KopiCalendarFile * cal = KOPrefs::instance()->getCalendar( id );
1878 addCalendar( cal );
1879}
1872bool CalendarView::addCalendar( KopiCalendarFile * cal ) 1880bool CalendarView::addCalendar( KopiCalendarFile * cal )
1873{ 1881{
1874 1882
1875 if ( mCalendar->addCalendarFile( cal->mFileName, cal->mCalNumber )) 1883 if ( mCalendar->addCalendarFile( cal->mFileName, cal->mCalNumber ))
1876 return true; 1884 return true;
1877 qDebug("KO: Error adding calendar file %1 ",cal->mFileName.latin1() ); 1885 qDebug("KO: Error adding calendar file %1 ",cal->mFileName.latin1() );
1878 KMessageBox::error(this,i18n("Error loading calendar file\n%1.").arg(cal->mFileName)); 1886 KMessageBox::error(this,i18n("Error loading calendar file\n%1.").arg(cal->mFileName));
1879 return false; 1887 return false;
1880} 1888}
1881bool CalendarView::openCalendar(QString filename, bool merge) 1889bool CalendarView::openCalendar(QString filename, bool merge)
1882{ 1890{
1883 1891
1884 if (filename.isEmpty()) { 1892 if (filename.isEmpty()) {
1885 return false; 1893 return false;
1886 } 1894 }
1887 1895
1888 if (!QFile::exists(filename)) { 1896 if (!QFile::exists(filename)) {
1889 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); 1897 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename));
1890 return false; 1898 return false;
1891 } 1899 }
1892 1900
1893 globalFlagBlockAgenda = 1; 1901 globalFlagBlockAgenda = 1;
1894 clearAllViews(); 1902 clearAllViews();
1895 if (!merge) { 1903 if (!merge) {
1896 mViewManager->setDocumentId( filename ); 1904 mViewManager->setDocumentId( filename );
1897 mCalendar->close(); 1905 mCalendar->close();
1898 } 1906 }
1899 mStorage->setFileName( filename ); 1907 mStorage->setFileName( filename );
1900 1908
1901 if ( mStorage->load() ) { 1909 if ( mStorage->load() ) {
1902 if ( merge ) ;//setModified( true ); 1910 if ( merge ) ;//setModified( true );
1903 else { 1911 else {
1904 //setModified( true ); 1912 //setModified( true );
1905 mViewManager->setDocumentId( filename ); 1913 mViewManager->setDocumentId( filename );
1906 mDialogManager->setDocumentId( filename ); 1914 mDialogManager->setDocumentId( filename );
1907 mTodoList->setDocumentId( filename ); 1915 mTodoList->setDocumentId( filename );
1908 } 1916 }
1909 globalFlagBlockAgenda = 2; 1917 globalFlagBlockAgenda = 2;
1910 // if ( getLastSyncEvent() ) 1918 // if ( getLastSyncEvent() )
1911 // getLastSyncEvent()->setReadOnly( true ); 1919 // getLastSyncEvent()->setReadOnly( true );
1912 mCalendar->reInitAlarmSettings(); 1920 mCalendar->reInitAlarmSettings();
1913 setSyncEventsReadOnly(); 1921 setSyncEventsReadOnly();
1914 updateUnmanagedViews(); 1922 updateUnmanagedViews();
1915 updateView(); 1923 updateView();
1916 if ( filename != MainWindow::defaultFileName() ) { 1924 if ( filename != MainWindow::defaultFileName() ) {
1917 saveCalendar( MainWindow::defaultFileName() ); 1925 saveCalendar( MainWindow::defaultFileName() );
1918 } else { 1926 } else {
1919 QFileInfo finf ( MainWindow::defaultFileName()); 1927 QFileInfo finf ( MainWindow::defaultFileName());
1920 if ( finf.exists() ) { 1928 if ( finf.exists() ) {
1921 setLoadedFileVersion( finf.lastModified () ); 1929 setLoadedFileVersion( finf.lastModified () );
1922 } 1930 }
1923 } 1931 }
1924 return true; 1932 return true;
1925 } else { 1933 } else {
1926 // while failing to load, the calendar object could 1934 // while failing to load, the calendar object could
1927 // have become partially populated. Clear it out. 1935 // have become partially populated. Clear it out.
1928 if ( !merge ) { 1936 if ( !merge ) {
1929 mCalendar->close(); 1937 mCalendar->close();
1930 mViewManager->setDocumentId( filename ); 1938 mViewManager->setDocumentId( filename );
1931 mDialogManager->setDocumentId( filename ); 1939 mDialogManager->setDocumentId( filename );
1932 mTodoList->setDocumentId( filename ); 1940 mTodoList->setDocumentId( filename );
1933 } 1941 }
1934 1942
1935 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 1943 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
1936 1944
1937 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) ); 1945 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) );
1938 globalFlagBlockAgenda = 2; 1946 globalFlagBlockAgenda = 2;
1939 mCalendar->reInitAlarmSettings(); 1947 mCalendar->reInitAlarmSettings();
1940 setSyncEventsReadOnly(); 1948 setSyncEventsReadOnly();
1941 updateUnmanagedViews(); 1949 updateUnmanagedViews();
1942 updateView(); 1950 updateView();
1943 } 1951 }
1944 return false; 1952 return false;
1945} 1953}
1946void CalendarView::showOpenError() 1954void CalendarView::showOpenError()
1947{ 1955{
1948 KMessageBox::error(this,i18n("Couldn't load calendar\n.")); 1956 KMessageBox::error(this,i18n("Couldn't load calendar\n."));
1949} 1957}
1950void CalendarView::setLoadedFileVersion(QDateTime dt) 1958void CalendarView::setLoadedFileVersion(QDateTime dt)
1951{ 1959{
1952 loadedFileVersion = dt; 1960 loadedFileVersion = dt;
1953} 1961}
1954bool CalendarView::checkFileChanged(QString fn) 1962bool CalendarView::checkFileChanged(QString fn)
1955{ 1963{
1956 QFileInfo finf ( fn ); 1964 QFileInfo finf ( fn );
1957 if ( !finf.exists() ) 1965 if ( !finf.exists() )
1958 return true; 1966 return true;
1959 QDateTime dt = finf.lastModified (); 1967 QDateTime dt = finf.lastModified ();
1960 if ( dt <= loadedFileVersion ) 1968 if ( dt <= loadedFileVersion )
1961 return false; 1969 return false;
1962 return true; 1970 return true;
1963 1971
1964} 1972}
1965void CalendarView::watchSavedFile() 1973void CalendarView::watchSavedFile()
1966{ 1974{
1967 QFileInfo finf ( MainWindow::defaultFileName()); 1975 QFileInfo finf ( MainWindow::defaultFileName());
1968 if ( !finf.exists() ) 1976 if ( !finf.exists() )
1969 return; 1977 return;
1970 QDateTime dt = finf.lastModified (); 1978 QDateTime dt = finf.lastModified ();
1971 if ( dt < loadedFileVersion ) { 1979 if ( dt < loadedFileVersion ) {
1972 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1()); 1980 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1());
1973 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) ); 1981 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) );
1974 return; 1982 return;
1975 } 1983 }
1976 loadedFileVersion = dt; 1984 loadedFileVersion = dt;
1977} 1985}
1978 1986
1979bool CalendarView::checkFileVersion(QString fn) 1987bool CalendarView::checkFileVersion(QString fn)
1980{ 1988{
1981 QFileInfo finf ( fn ); 1989 QFileInfo finf ( fn );
1982 if ( !finf.exists() ) 1990 if ( !finf.exists() )
1983 return true; 1991 return true;
1984 QDateTime dt = finf.lastModified (); 1992 QDateTime dt = finf.lastModified ();
1985 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1()); 1993 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1());
1986 //qDebug("file on disk version %s",dt.toString().latin1()); 1994 //qDebug("file on disk version %s",dt.toString().latin1());
1987 if ( dt <= loadedFileVersion ) 1995 if ( dt <= loadedFileVersion )
1988 return true; 1996 return true;
1989 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) , 1997 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) ,
1990 i18n("KO/Pi Warning"),i18n("Overwrite"), 1998 i18n("KO/Pi Warning"),i18n("Overwrite"),
1991 i18n("Sync+save")); 1999 i18n("Sync+save"));
1992 2000
1993 if ( km == KMessageBox::Cancel ) 2001 if ( km == KMessageBox::Cancel )
1994 return false; 2002 return false;
1995 if ( km == KMessageBox::Yes ) 2003 if ( km == KMessageBox::Yes )
1996 return true; 2004 return true;
1997 2005
1998 setSyncDevice("deleteaftersync" ); 2006 setSyncDevice("deleteaftersync" );
1999 mSyncManager->mAskForPreferences = true; 2007 mSyncManager->mAskForPreferences = true;
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index 0144ba4..ec5b7ab 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -102,256 +102,257 @@ class MissedAlarmTextBrowser : public QTextBrowser {
102 102
103 103
104class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Observer, public KSyncInterface 104class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Observer, public KSyncInterface
105{ 105{
106 Q_OBJECT 106 Q_OBJECT
107 public: 107 public:
108 /** 108 /**
109 Constructs a new calendar view widget. 109 Constructs a new calendar view widget.
110 110
111 @param calendar calendar document 111 @param calendar calendar document
112 @param parent parent window 112 @param parent parent window
113 @param name Qt internal widget object name 113 @param name Qt internal widget object name
114 */ 114 */
115 CalendarView( CalendarResources *calendar, QWidget *parent = 0, 115 CalendarView( CalendarResources *calendar, QWidget *parent = 0,
116 const char *name = 0 ); 116 const char *name = 0 );
117 CalendarView( Calendar *calendar, QWidget *parent = 0, 117 CalendarView( Calendar *calendar, QWidget *parent = 0,
118 const char *name = 0 ); 118 const char *name = 0 );
119 virtual ~CalendarView(); 119 virtual ~CalendarView();
120 120
121 Calendar *calendar() { return mCalendar; } 121 Calendar *calendar() { return mCalendar; }
122 122
123 KOViewManager *viewManager(); 123 KOViewManager *viewManager();
124 KODialogManager *dialogManager(); 124 KODialogManager *dialogManager();
125 125
126 QDate startDate(); 126 QDate startDate();
127 QDate endDate(); 127 QDate endDate();
128 128
129 QWidgetStack *viewStack(); 129 QWidgetStack *viewStack();
130 QWidget *leftFrame(); 130 QWidget *leftFrame();
131 131
132 DateNavigator *dateNavigator(); 132 DateNavigator *dateNavigator();
133 KDateNavigator *dateNavigatorWidget(); 133 KDateNavigator *dateNavigatorWidget();
134 134
135 void addView(KOrg::BaseView *); 135 void addView(KOrg::BaseView *);
136 void showView(KOrg::BaseView *); 136 void showView(KOrg::BaseView *);
137 KOEventViewerDialog* getEventViewerDialog(); 137 KOEventViewerDialog* getEventViewerDialog();
138 Incidence *currentSelection(); 138 Incidence *currentSelection();
139 139
140 signals: 140 signals:
141 void save (); 141 void save ();
142 void saveStopTimer (); 142 void saveStopTimer ();
143 void tempDisableBR(bool); 143 void tempDisableBR(bool);
144 /** This todo has been modified */ 144 /** This todo has been modified */
145 void todoModified(Todo *, int); 145 void todoModified(Todo *, int);
146 146
147 /** when change is made to options dialog, the topwidget will catch this 147 /** when change is made to options dialog, the topwidget will catch this
148 * and emit this signal which notifies all widgets which have registered 148 * and emit this signal which notifies all widgets which have registered
149 * for notification to update their settings. */ 149 * for notification to update their settings. */
150 void configChanged(); 150 void configChanged();
151 /** emitted when the topwidget is closing down, so that any attached 151 /** emitted when the topwidget is closing down, so that any attached
152 child windows can also close. */ 152 child windows can also close. */
153 void closingDown(); 153 void closingDown();
154 /** emitted right before we die */ 154 /** emitted right before we die */
155 void closed(QWidget *); 155 void closed(QWidget *);
156 156
157 /** Emitted when state of modified flag changes */ 157 /** Emitted when state of modified flag changes */
158 void modifiedChanged(bool); 158 void modifiedChanged(bool);
159 void signalmodified(); 159 void signalmodified();
160 160
161 /** Emitted when state of read-only flag changes */ 161 /** Emitted when state of read-only flag changes */
162 void readOnlyChanged(bool); 162 void readOnlyChanged(bool);
163 163
164 /** Emitted when the unit of navigation changes */ 164 /** Emitted when the unit of navigation changes */
165 void changeNavStringPrev(const QString &); 165 void changeNavStringPrev(const QString &);
166 void changeNavStringNext(const QString &); 166 void changeNavStringNext(const QString &);
167 167
168 /** Emitted when state of events selection has changed and user is organizer*/ 168 /** Emitted when state of events selection has changed and user is organizer*/
169 void organizerEventsSelected(bool); 169 void organizerEventsSelected(bool);
170 /** Emitted when state of events selection has changed and user is attendee*/ 170 /** Emitted when state of events selection has changed and user is attendee*/
171 void groupEventsSelected(bool); 171 void groupEventsSelected(bool);
172 /** 172 /**
173 Emitted when an incidence gets selected. If the selection is cleared the 173 Emitted when an incidence gets selected. If the selection is cleared the
174 signal is emitted with 0 as argument. 174 signal is emitted with 0 as argument.
175 */ 175 */
176 void incidenceSelected( Incidence * ); 176 void incidenceSelected( Incidence * );
177 /** Emitted, when a todoitem is selected or deselected. */ 177 /** Emitted, when a todoitem is selected or deselected. */
178 void todoSelected( bool ); 178 void todoSelected( bool );
179 179
180 /** 180 /**
181 Emitted, when clipboard content changes. Parameter indicates if paste 181 Emitted, when clipboard content changes. Parameter indicates if paste
182 is possible or not. 182 is possible or not.
183 */ 183 */
184 void pasteEnabled(bool); 184 void pasteEnabled(bool);
185 185
186 /** Emitted, when the number of incoming messages has changed. */ 186 /** Emitted, when the number of incoming messages has changed. */
187 void numIncomingChanged(int); 187 void numIncomingChanged(int);
188 188
189 /** Emitted, when the number of outgoing messages has changed. */ 189 /** Emitted, when the number of outgoing messages has changed. */
190 void numOutgoingChanged(int); 190 void numOutgoingChanged(int);
191 191
192 /** Send status message, which can e.g. be displayed in the status bar. */ 192 /** Send status message, which can e.g. be displayed in the status bar. */
193 void statusMessage(const QString &); 193 void statusMessage(const QString &);
194 194
195 void calendarViewExpanded( bool ); 195 void calendarViewExpanded( bool );
196 void updateSearchDialog(); 196 void updateSearchDialog();
197 197
198 198
199 public slots: 199 public slots:
200 void checkAlarms(); 200 void checkAlarms();
201 void slotprintSelInc(); 201 void slotprintSelInc();
202 void showNextAlarms(); 202 void showNextAlarms();
203 void showOpenError(); 203 void showOpenError();
204 void watchSavedFile(); 204 void watchSavedFile();
205 void recheckTimerAlarm(); 205 void recheckTimerAlarm();
206 void checkNextTimerAlarm(); 206 void checkNextTimerAlarm();
207 void addAlarm(const QDateTime &qdt, const QString &noti ); 207 void addAlarm(const QDateTime &qdt, const QString &noti );
208 void addSuspendAlarm(const QDateTime &qdt, const QString &noti ); 208 void addSuspendAlarm(const QDateTime &qdt, const QString &noti );
209 void removeAlarm(const QDateTime &qdt, const QString &noti ); 209 void removeAlarm(const QDateTime &qdt, const QString &noti );
210 210
211 /** options dialog made a changed to the configuration. we catch this 211 /** options dialog made a changed to the configuration. we catch this
212 * and notify all widgets which need to update their configuration. */ 212 * and notify all widgets which need to update their configuration. */
213 void updateConfig(); 213 void updateConfig();
214 214
215 void insertBirthdays(const QString& uid, const QStringList& birthdayList, 215 void insertBirthdays(const QString& uid, const QStringList& birthdayList,
216 const QStringList& anniversaryList, const QStringList& realNameList, 216 const QStringList& anniversaryList, const QStringList& realNameList,
217 const QStringList& emailList, const QStringList& assembledNameList, 217 const QStringList& emailList, const QStringList& assembledNameList,
218 const QStringList& uidList); 218 const QStringList& uidList);
219 219
220 /** 220 /**
221 Load calendar from file \a filename. If \a merge is true, load 221 Load calendar from file \a filename. If \a merge is true, load
222 calendar into existing one, if it is false, clear calendar, before 222 calendar into existing one, if it is false, clear calendar, before
223 loading. Return true, if calendar could be successfully loaded. 223 loading. Return true, if calendar could be successfully loaded.
224 */ 224 */
225 bool openCalendar(QString filename, bool merge=false); 225 bool openCalendar(QString filename, bool merge=false);
226 bool loadCalendars(); 226 bool loadCalendars();
227 bool saveCalendars(); 227 bool saveCalendars();
228 bool restoreCalendarSettings(); 228 bool restoreCalendarSettings();
229 bool addCalendar( KopiCalendarFile * ); 229 bool addCalendar( KopiCalendarFile * );
230 void addCalendarId( int id );
230 bool syncCalendar(QString filename,int mode = 0 ); 231 bool syncCalendar(QString filename,int mode = 0 );
231 232
232 /** 233 /**
233 Save calendar data to file. Return true if calendar could be 234 Save calendar data to file. Return true if calendar could be
234 successfully saved. 235 successfully saved.
235 */ 236 */
236 bool saveCalendar(QString filename); 237 bool saveCalendar(QString filename);
237 238
238 /** 239 /**
239 Close calendar. Clear calendar data and reset views to display an empty 240 Close calendar. Clear calendar data and reset views to display an empty
240 calendar. 241 calendar.
241 */ 242 */
242 void closeCalendar(); 243 void closeCalendar();
243 244
244 /** Archive old events of calendar */ 245 /** Archive old events of calendar */
245 void archiveCalendar(); 246 void archiveCalendar();
246 247
247 void showIncidence(); 248 void showIncidence();
248 void editIncidence(); 249 void editIncidence();
249 void editIncidenceDescription(); 250 void editIncidenceDescription();
250 void deleteIncidence(); 251 void deleteIncidence();
251 void cloneIncidence(); 252 void cloneIncidence();
252 void moveIncidence(); 253 void moveIncidence();
253 void beamIncidence(); 254 void beamIncidence();
254 void toggleCancelIncidence(); 255 void toggleCancelIncidence();
255 256
256 /** create an editeventwin with supplied date/time, and if bool is true, 257 /** create an editeventwin with supplied date/time, and if bool is true,
257 * make the event take all day. */ 258 * make the event take all day. */
258 void newEvent(QDateTime, QDateTime, bool allDay ); 259 void newEvent(QDateTime, QDateTime, bool allDay );
259 void newEvent(QDateTime, QDateTime); 260 void newEvent(QDateTime, QDateTime);
260 void newEvent(QDateTime fh); 261 void newEvent(QDateTime fh);
261 void newEvent(QDate dt); 262 void newEvent(QDate dt);
262 /** create new event without having a date hint. Takes current date as 263 /** create new event without having a date hint. Takes current date as
263 default hint. */ 264 default hint. */
264 void newEvent(); 265 void newEvent();
265 void newFloatingEvent(); 266 void newFloatingEvent();
266 267
267 /** Create a read-only viewer dialog for the supplied incidence. It calls the correct showXXX method*/ 268 /** Create a read-only viewer dialog for the supplied incidence. It calls the correct showXXX method*/
268 void showIncidence(Incidence *); 269 void showIncidence(Incidence *);
269 void showIncidence(QString uid); 270 void showIncidence(QString uid);
270 /** Create an editor for the supplied incidence. It calls the correct editXXX method*/ 271 /** Create an editor for the supplied incidence. It calls the correct editXXX method*/
271 void editIncidence(Incidence *); 272 void editIncidence(Incidence *);
272 /** Delete the supplied incidence. It calls the correct deleteXXX method*/ 273 /** Delete the supplied incidence. It calls the correct deleteXXX method*/
273 void deleteIncidence(Incidence *); 274 void deleteIncidence(Incidence *);
274 void cloneIncidence(Incidence *); 275 void cloneIncidence(Incidence *);
275 void cancelIncidence(Incidence *); 276 void cancelIncidence(Incidence *);
276 /** Create an editor for the supplied event. */ 277 /** Create an editor for the supplied event. */
277 void editEvent(Event *); 278 void editEvent(Event *);
278 /** Delete the supplied event. */ 279 /** Delete the supplied event. */
279 void deleteEvent(Event *); 280 void deleteEvent(Event *);
280 /** Delete the event with the given unique ID. Returns false, if event wasn't 281 /** Delete the event with the given unique ID. Returns false, if event wasn't
281 found. */ 282 found. */
282 bool deleteEvent(const QString &uid); 283 bool deleteEvent(const QString &uid);
283 /** Create a read-only viewer dialog for the supplied event. */ 284 /** Create a read-only viewer dialog for the supplied event. */
284 void showEvent(Event *); 285 void showEvent(Event *);
285 286
286 void editJournal(Journal *); 287 void editJournal(Journal *);
287 void showJournal(Journal *); 288 void showJournal(Journal *);
288 void deleteJournal(Journal *); 289 void deleteJournal(Journal *);
289 /** Create an editor dialog for a todo */ 290 /** Create an editor dialog for a todo */
290 void editTodo(Todo *); 291 void editTodo(Todo *);
291 /** Create a read-only viewer dialog for the supplied todo */ 292 /** Create a read-only viewer dialog for the supplied todo */
292 void showTodo(Todo *); 293 void showTodo(Todo *);
293 /** create new todo */ 294 /** create new todo */
294 void newTodo(); 295 void newTodo();
295 void newTodoDateTime(QDateTime, bool allday); 296 void newTodoDateTime(QDateTime, bool allday);
296 /** create new todo with a parent todo */ 297 /** create new todo with a parent todo */
297 void newSubTodo(); 298 void newSubTodo();
298 /** create new todo with a parent todo */ 299 /** create new todo with a parent todo */
299 void newSubTodo(Todo *); 300 void newSubTodo(Todo *);
300 /** Delete todo */ 301 /** Delete todo */
301 void deleteTodo(Todo *); 302 void deleteTodo(Todo *);
302 303
303 304
304 /** Check if clipboard contains vCalendar event. The signal pasteEnabled() is 305 /** Check if clipboard contains vCalendar event. The signal pasteEnabled() is
305 * emitted as result. */ 306 * emitted as result. */
306 void checkClipboard(); 307 void checkClipboard();
307 308
308 /** using the KConfig associated with the kapp variable, read in the 309 /** using the KConfig associated with the kapp variable, read in the
309 * settings from the config file. 310 * settings from the config file.
310 */ 311 */
311 void readSettings(); 312 void readSettings();
312 313
313 /** write current state to config file. */ 314 /** write current state to config file. */
314 void writeSettings(); 315 void writeSettings();
315 316
316 /** read settings for calendar filters */ 317 /** read settings for calendar filters */
317 void readFilterSettings(KConfig *config); 318 void readFilterSettings(KConfig *config);
318 319
319 /** write settings for calendar filters */ 320 /** write settings for calendar filters */
320 void writeFilterSettings(KConfig *config); 321 void writeFilterSettings(KConfig *config);
321 322
322 /** passes on the message that an event has changed to the currently 323 /** passes on the message that an event has changed to the currently
323 * activated view so that it can make appropriate display changes. */ 324 * activated view so that it can make appropriate display changes. */
324 void changeEventDisplay(Event *, int); 325 void changeEventDisplay(Event *, int);
325 void changeIncidenceDisplay(Incidence *, int); 326 void changeIncidenceDisplay(Incidence *, int);
326 void changeTodoDisplay(Todo *, int); 327 void changeTodoDisplay(Todo *, int);
327 328
328 void eventAdded(Event *); 329 void eventAdded(Event *);
329 void eventChanged(Event *); 330 void eventChanged(Event *);
330 void eventToBeDeleted(Event *); 331 void eventToBeDeleted(Event *);
331 void eventDeleted(); 332 void eventDeleted();
332 333
333 void todoAdded(Todo *); 334 void todoAdded(Todo *);
334 void todoChanged(Todo *); 335 void todoChanged(Todo *);
335 void todoToBeDeleted(Todo *); 336 void todoToBeDeleted(Todo *);
336 void todoDeleted(); 337 void todoDeleted();
337 338
338 void updateView(const QDate &start, const QDate &end); 339 void updateView(const QDate &start, const QDate &end);
339 void updateView(); 340 void updateView();
340 void clearAllViews(); 341 void clearAllViews();
341 342
342 /** Full update of visible todo views */ 343 /** Full update of visible todo views */
343 void updateTodoViews(); 344 void updateTodoViews();
344 345
345 void updateUnmanagedViews(); 346 void updateUnmanagedViews();
346 347
347 /** cut the current appointment to the clipboard */ 348 /** cut the current appointment to the clipboard */
348 void edit_cut(); 349 void edit_cut();
349 350
350 /** copy the current appointment(s) to the clipboard */ 351 /** copy the current appointment(s) to the clipboard */
351 void edit_copy(); 352 void edit_copy();
352 353
353 /** paste the current vobject(s) in the clipboard buffer into calendar */ 354 /** paste the current vobject(s) in the clipboard buffer into calendar */
354 void edit_paste(); 355 void edit_paste();
355 356
356 /** edit viewing and configuration options. */ 357 /** edit viewing and configuration options. */
357 void edit_options(); 358 void edit_options();
diff --git a/korganizer/koagendaitem.cpp b/korganizer/koagendaitem.cpp
index 5a3c4d2..c7bc6eb 100644
--- a/korganizer/koagendaitem.cpp
+++ b/korganizer/koagendaitem.cpp
@@ -1,332 +1,332 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19 19
20#include <qlabel.h> 20#include <qlabel.h>
21#include <qlayout.h> 21#include <qlayout.h>
22#include <qhbox.h> 22#include <qhbox.h>
23#include <qvbox.h> 23#include <qvbox.h>
24#include <qtooltip.h> 24#include <qtooltip.h>
25#include <qwhatsthis.h> 25#include <qwhatsthis.h>
26#include <qdragobject.h> 26#include <qdragobject.h>
27#include <qdrawutil.h> 27#include <qdrawutil.h>
28#include <qpainter.h> 28#include <qpainter.h>
29 29
30#include <kiconloader.h> 30#include <kiconloader.h>
31#include <kdebug.h> 31#include <kdebug.h>
32#include <kglobal.h> 32#include <kglobal.h>
33#include <klocale.h> 33#include <klocale.h>
34#ifndef DESKTOP_VERSION 34#ifndef DESKTOP_VERSION
35#include <qpe/qpeapplication.h> 35#include <qpe/qpeapplication.h>
36#define AGENDA_ICON_SIZE 5 36#define AGENDA_ICON_SIZE 5
37#else 37#else
38#include <qapplication.h> 38#include <qapplication.h>
39#define AGENDA_ICON_SIZE 7 39#define AGENDA_ICON_SIZE 7
40#endif 40#endif
41#include <libkcal/icaldrag.h> 41#include <libkcal/icaldrag.h>
42#include <libkcal/vcaldrag.h> 42#include <libkcal/vcaldrag.h>
43#include <libkcal/kincidenceformatter.h> 43#include <libkcal/kincidenceformatter.h>
44extern int globalFlagBlockAgenda; 44extern int globalFlagBlockAgenda;
45extern int globalFlagBlockAgendaItemPaint; 45extern int globalFlagBlockAgendaItemPaint;
46extern int globalFlagBlockAgendaItemUpdate; 46extern int globalFlagBlockAgendaItemUpdate;
47 47
48#include "koprefs.h" 48#include "koprefs.h"
49 49
50#include "koagendaitem.h" 50#include "koagendaitem.h"
51//#include "koagendaitem.moc" 51//#include "koagendaitem.moc"
52 52
53 53
54//-------------------------------------------------------------------------- 54//--------------------------------------------------------------------------
55 55
56QToolTipGroup *KOAgendaItem::mToolTipGroup = 0; 56QToolTipGroup *KOAgendaItem::mToolTipGroup = 0;
57 57
58//-------------------------------------------------------------------------- 58//--------------------------------------------------------------------------
59 59
60class KOAgendaItemWhatsThis :public QWhatsThis 60class KOAgendaItemWhatsThis :public QWhatsThis
61{ 61{
62public: 62public:
63 KOAgendaItemWhatsThis( KOAgendaItem* view ) : QWhatsThis( view ),_view (view) { }; 63 KOAgendaItemWhatsThis( KOAgendaItem* view ) : QWhatsThis( view ),_view (view) { };
64 64
65protected: 65protected:
66 virtual QString text( const QPoint& ) 66 virtual QString text( const QPoint& )
67 { 67 {
68 return _view->getWhatsThisText() ; 68 return _view->getWhatsThisText() ;
69 } 69 }
70private: 70private:
71 KOAgendaItem * _view; 71 KOAgendaItem * _view;
72}; 72};
73 73
74KOAgendaItem::KOAgendaItem(Incidence *incidence, QDate qd, QWidget *parent,bool allday, 74KOAgendaItem::KOAgendaItem(Incidence *incidence, QDate qd, QWidget *parent,bool allday,
75 const char *name,WFlags) : 75 const char *name,WFlags) :
76 QWidget(parent, name), mIncidence(incidence), mDate(qd) 76 QWidget(parent, name), mIncidence(incidence), mDate(qd)
77{ 77{
78#ifndef DESKTOP_VERSION 78#ifndef DESKTOP_VERSION
79 //QPEApplication::setStylusOperation( this, QPEApplication::RightOnHold ); 79 //QPEApplication::setStylusOperation( this, QPEApplication::RightOnHold );
80#endif 80#endif
81 mKOAgendaItemWhatsThis = new KOAgendaItemWhatsThis(this); 81 mKOAgendaItemWhatsThis = new KOAgendaItemWhatsThis(this);
82 int wflags = getWFlags() |WRepaintNoErase;// WResizeNoErase 82 int wflags = getWFlags() |WRepaintNoErase;// WResizeNoErase
83 setWFlags ( wflags); 83 setWFlags ( wflags);
84 mAllDay = allday; 84 mAllDay = allday;
85 init ( incidence, qd ); 85 init ( incidence, qd );
86 //setMouseTracking(true); 86 //setMouseTracking(true);
87 //setAcceptDrops(true); 87 //setAcceptDrops(true);
88 xPaintCoord = -1; 88 xPaintCoord = -1;
89 yPaintCoord = -1; 89 yPaintCoord = -1;
90} 90}
91QString KOAgendaItem::getWhatsThisText() 91QString KOAgendaItem::getWhatsThisText()
92{ 92{
93 if ( mIncidence ) 93 if ( mIncidence )
94 return KIncidenceFormatter::instance()->getFormattedText( mIncidence, 94 return KIncidenceFormatter::instance()->getFormattedText( mIncidence,
95 KOPrefs::instance()->mWTshowDetails, 95 KOPrefs::instance()->mWTshowDetails,
96 KOPrefs::instance()->mWTshowCreated, 96 KOPrefs::instance()->mWTshowCreated,
97 KOPrefs::instance()->mWTshowChanged); 97 KOPrefs::instance()->mWTshowChanged);
98 return "KOAgendaItem::getWhatsThisText()::internal error"; 98 return "KOAgendaItem::getWhatsThisText()::internal error";
99} 99}
100void KOAgendaItem::init ( Incidence *incidence, QDate qd ) 100void KOAgendaItem::init ( Incidence *incidence, QDate qd )
101{ 101{
102 mIncidence = incidence; 102 mIncidence = incidence;
103 mDate = qd; 103 mDate = qd;
104 mFirstMultiItem = 0; 104 mFirstMultiItem = 0;
105 mNextMultiItem = 0; 105 mNextMultiItem = 0;
106 mLastMultiItem = 0; 106 mLastMultiItem = 0;
107 computeText(); 107 computeText();
108 108
109 if ( (incidence->typeID() == todoID ) && 109 if ( (incidence->typeID() == todoID ) &&
110 ( !((static_cast<Todo*>(incidence))->isCompleted()) && 110 ( !((static_cast<Todo*>(incidence))->isCompleted()) &&
111 ((static_cast<Todo*>(incidence))->dtDue().date() <= QDate::currentDate()) ) ) { 111 ((static_cast<Todo*>(incidence))->dtDue().date() <= QDate::currentDate()) ) ) {
112 if ( (static_cast<Todo*>(incidence))->dtDue() < QDateTime::currentDateTime().date()) 112 if ( (static_cast<Todo*>(incidence))->dtDue() < QDateTime::currentDateTime().date())
113 mBackgroundColor = KOPrefs::instance()->mTodoOverdueColor ; 113 mBackgroundColor = KOPrefs::instance()->mTodoOverdueColor ;
114 else 114 else
115 mBackgroundColor = KOPrefs::instance()->mTodoDueTodayColor; 115 mBackgroundColor = KOPrefs::instance()->mTodoDueTodayColor;
116 } 116 }
117 else { 117 else {
118 QStringList categories = mIncidence->categories(); 118 QStringList categories = mIncidence->categories();
119 QString cat = categories.first(); 119 QString cat = categories.first();
120 if (cat.isEmpty()) { 120 if (cat.isEmpty()) {
121 if ( (incidence->typeID() == todoID ) &&((static_cast<Todo*>(incidence))->isCompleted()) ) 121 if ( (incidence->typeID() == todoID ) &&((static_cast<Todo*>(incidence))->isCompleted()) )
122 mBackgroundColor =KOPrefs::instance()->mTodoDoneColor; 122 mBackgroundColor =KOPrefs::instance()->mTodoDoneColor;
123 else 123 else
124 mBackgroundColor =KOPrefs::instance()->mEventColor; 124 mBackgroundColor =KOPrefs::instance()->defaultColor( incidence->calID() );
125 } else { 125 } else {
126 mBackgroundColor = *KOPrefs::instance()->categoryColor(cat); 126 mBackgroundColor = *KOPrefs::instance()->categoryColor(cat);
127 if ( (incidence->typeID() == todoID ) &&((static_cast<Todo*>(incidence))->isCompleted()) ) { 127 if ( (incidence->typeID() == todoID ) &&((static_cast<Todo*>(incidence))->isCompleted()) ) {
128 if ( mBackgroundColor == KOPrefs::instance()->mEventColor ) 128 if ( mBackgroundColor == KOPrefs::instance()->mEventColor )
129 mBackgroundColor =KOPrefs::instance()->mTodoDoneColor; 129 mBackgroundColor = KOPrefs::instance()->mTodoDoneColor;
130 } 130 }
131 } 131 }
132 132
133 } 133 }
134 mColorGroup = QColorGroup( mBackgroundColor.light(), 134 mColorGroup = QColorGroup( mBackgroundColor.light(),
135 mBackgroundColor.dark(),mBackgroundColor.light(), 135 mBackgroundColor.dark(),mBackgroundColor.light(),
136 mBackgroundColor.dark(),mBackgroundColor, black, mBackgroundColor) ; 136 mBackgroundColor.dark(),mBackgroundColor, black, mBackgroundColor) ;
137 setBackgroundColor( mBackgroundColor ); 137 setBackgroundColor( mBackgroundColor );
138 138
139 mConflictItems.clear(); 139 mConflictItems.clear();
140 setCellXY(0,0,1); 140 setCellXY(0,0,1);
141 setCellXWidth(0); 141 setCellXWidth(0);
142 setSubCell(0); 142 setSubCell(0);
143 setSubCells(1); 143 setSubCells(1);
144 setMultiItem(0,0,0); 144 setMultiItem(0,0,0);
145 startMove(); 145 startMove();
146 mSelected = true; 146 mSelected = true;
147 select(false); 147 select(false);
148 QFontMetrics fontinf(KOPrefs::instance()->mAgendaViewFont); 148 QFontMetrics fontinf(KOPrefs::instance()->mAgendaViewFont);
149 mFontPixelSize = fontinf.height();; 149 mFontPixelSize = fontinf.height();;
150 hide(); 150 hide();
151 xPaintCoord = -1; 151 xPaintCoord = -1;
152 yPaintCoord = -1; 152 yPaintCoord = -1;
153} 153}
154 154
155 155
156KOAgendaItem::~KOAgendaItem() 156KOAgendaItem::~KOAgendaItem()
157{ 157{
158#if QT_VERSION >= 0x030000 158#if QT_VERSION >= 0x030000
159 159
160#else 160#else
161 delete mKOAgendaItemWhatsThis; 161 delete mKOAgendaItemWhatsThis;
162#endif 162#endif
163 163
164} 164}
165 165
166void KOAgendaItem::recreateIncidence() 166void KOAgendaItem::recreateIncidence()
167{ 167{
168#if 0 168#if 0
169 Incidence* newInc = mIncidence->clone(); 169 Incidence* newInc = mIncidence->clone();
170 newInc->recreate(); 170 newInc->recreate();
171 if ( mIncidence->doesRecur() ) { 171 if ( mIncidence->doesRecur() ) {
172 mIncidence->addExDate( mDate ); 172 mIncidence->addExDate( mDate );
173 newInc->recurrence()->unsetRecurs(); 173 newInc->recurrence()->unsetRecurs();
174 int len = mIncidence->dtStart().secsTo( ((Event*)mIncidence)->dtEnd()); 174 int len = mIncidence->dtStart().secsTo( ((Event*)mIncidence)->dtEnd());
175 QTime tim = mIncidence->dtStart().time(); 175 QTime tim = mIncidence->dtStart().time();
176 newInc->setDtStart( QDateTime(mDate, tim) ); 176 newInc->setDtStart( QDateTime(mDate, tim) );
177 ((Event*)newInc)->setDtEnd( newInc->dtStart().addSecs( len ) ); 177 ((Event*)newInc)->setDtEnd( newInc->dtStart().addSecs( len ) );
178 } 178 }
179#endif 179#endif
180 mIncidence = mIncidence->recreateCloneException( mDate ); 180 mIncidence = mIncidence->recreateCloneException( mDate );
181} 181}
182bool KOAgendaItem::updateIcons(QPainter * p, bool horLayout) 182bool KOAgendaItem::updateIcons(QPainter * p, bool horLayout)
183{ 183{
184 int size = AGENDA_ICON_SIZE; 184 int size = AGENDA_ICON_SIZE;
185 185
186 int yOff = 0; 186 int yOff = 0;
187 int xOff = 0; 187 int xOff = 0;
188 int x = pos().x() +3; 188 int x = pos().x() +3;
189 int y; 189 int y;
190 if ( mAllDay ) 190 if ( mAllDay )
191 y = pos().y()+3; 191 y = pos().y()+3;
192 else 192 else
193 y = mCellYTop * ( height() / cellHeight() ) +3; 193 y = mCellYTop * ( height() / cellHeight() ) +3;
194 if (mIncidence->cancelled()) { 194 if (mIncidence->cancelled()) {
195 int xpos = xOff*( 1 +AGENDA_ICON_SIZE )+x; 195 int xpos = xOff*( 1 +AGENDA_ICON_SIZE )+x;
196 int ypos = yOff*( 1 +AGENDA_ICON_SIZE)+y; 196 int ypos = yOff*( 1 +AGENDA_ICON_SIZE)+y;
197 p->drawLine( xpos, ypos, xpos+AGENDA_ICON_SIZE-1, ypos+AGENDA_ICON_SIZE-1 ); 197 p->drawLine( xpos, ypos, xpos+AGENDA_ICON_SIZE-1, ypos+AGENDA_ICON_SIZE-1 );
198 p->drawLine( xpos, ypos+AGENDA_ICON_SIZE-1, xpos+AGENDA_ICON_SIZE-1, ypos ); 198 p->drawLine( xpos, ypos+AGENDA_ICON_SIZE-1, xpos+AGENDA_ICON_SIZE-1, ypos );
199 if ( horLayout ) 199 if ( horLayout )
200 ++xOff; 200 ++xOff;
201 else 201 else
202 ++yOff; 202 ++yOff;
203 } 203 }
204 if (mIncidence->isAlarmEnabled()) { 204 if (mIncidence->isAlarmEnabled() && mIncidence->alarmEnabled()) {
205 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, red ); 205 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, red );
206 if ( horLayout ) 206 if ( horLayout )
207 ++xOff; 207 ++xOff;
208 else 208 else
209 ++yOff; 209 ++yOff;
210 } 210 }
211 if (mIncidence->recurrence()->doesRecur()) { 211 if (mIncidence->recurrence()->doesRecur()) {
212 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, blue ); 212 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, blue );
213 if ( horLayout ) 213 if ( horLayout )
214 ++xOff; 214 ++xOff;
215 else 215 else
216 ++yOff; 216 ++yOff;
217 } 217 }
218 if (mIncidence->description().length() > 0) { 218 if (mIncidence->description().length() > 0) {
219 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, darkGreen ); 219 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, darkGreen );
220 if ( horLayout ) 220 if ( horLayout )
221 ++xOff; 221 ++xOff;
222 else 222 else
223 ++yOff; 223 ++yOff;
224 } 224 }
225 if (mIncidence->isReadOnly()) { 225 if (mIncidence->isReadOnly()) {
226 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, white ); 226 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, white );
227 if ( horLayout ) 227 if ( horLayout )
228 ++xOff; 228 ++xOff;
229 else 229 else
230 ++yOff; 230 ++yOff;
231 } 231 }
232 232
233 if (mIncidence->attendeeCount()>0) { 233 if (mIncidence->attendeeCount()>0) {
234 234
235 if (mIncidence->organizer() == KOPrefs::instance()->email()) { 235 if (mIncidence->organizer() == KOPrefs::instance()->email()) {
236 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, black ); 236 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, black );
237 if ( horLayout ) 237 if ( horLayout )
238 ++xOff; 238 ++xOff;
239 else 239 else
240 ++yOff; 240 ++yOff;
241 } else { 241 } else {
242 Attendee *me = mIncidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 242 Attendee *me = mIncidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
243 if (me!=0) { 243 if (me!=0) {
244 244
245 245
246 } else { 246 } else {
247 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, yellow ); 247 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, yellow );
248 if ( horLayout ) 248 if ( horLayout )
249 ++xOff; 249 ++xOff;
250 else 250 else
251 ++yOff; 251 ++yOff;
252 252
253 } 253 }
254 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, darkYellow ); 254 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, darkYellow );
255 if ( horLayout ) 255 if ( horLayout )
256 ++xOff; 256 ++xOff;
257 else 257 else
258 ++yOff; 258 ++yOff;
259 259
260 } 260 }
261 261
262 } 262 }
263 return ( yOff || xOff ); 263 return ( yOff || xOff );
264} 264}
265 265
266 266
267void KOAgendaItem::select(bool selected) 267void KOAgendaItem::select(bool selected)
268{ 268{
269 //qDebug("select %d %d",firstMultiItem(), nextMultiItem() ); 269 //qDebug("select %d %d",firstMultiItem(), nextMultiItem() );
270 if (mSelected == selected) return; 270 if (mSelected == selected) return;
271 mSelected = selected; 271 mSelected = selected;
272 if ( ! isVisible() ) 272 if ( ! isVisible() )
273 return; 273 return;
274 if ( firstMultiItem() ) 274 if ( firstMultiItem() )
275 firstMultiItem()->select( selected ); 275 firstMultiItem()->select( selected );
276 if ( !firstMultiItem() && nextMultiItem() ) { 276 if ( !firstMultiItem() && nextMultiItem() ) {
277 KOAgendaItem * placeItem = nextMultiItem(); 277 KOAgendaItem * placeItem = nextMultiItem();
278 while ( placeItem ) { 278 while ( placeItem ) {
279 placeItem->select( selected ); 279 placeItem->select( selected );
280 placeItem = placeItem->nextMultiItem(); 280 placeItem = placeItem->nextMultiItem();
281 } 281 }
282 } 282 }
283 globalFlagBlockAgendaItemUpdate = 0; 283 globalFlagBlockAgendaItemUpdate = 0;
284 paintMe( selected ); 284 paintMe( selected );
285 globalFlagBlockAgendaItemUpdate = 1; 285 globalFlagBlockAgendaItemUpdate = 1;
286 repaint( false ); 286 repaint( false );
287} 287}
288 288
289 289
290/* 290/*
291 The eventFilter has to filter the mouse events of the agenda item childs. The 291 The eventFilter has to filter the mouse events of the agenda item childs. The
292 events are fed into the event handling method of KOAgendaItem. This allows the 292 events are fed into the event handling method of KOAgendaItem. This allows the
293 KOAgenda to handle the KOAgendaItems by using an eventFilter. 293 KOAgenda to handle the KOAgendaItems by using an eventFilter.
294*/ 294*/
295bool KOAgendaItem::eventFilter ( QObject *object, QEvent *e ) 295bool KOAgendaItem::eventFilter ( QObject *object, QEvent *e )
296{ 296{
297 if (e->type() == QEvent::MouseButtonPress || 297 if (e->type() == QEvent::MouseButtonPress ||
298 e->type() == QEvent::MouseButtonDblClick || 298 e->type() == QEvent::MouseButtonDblClick ||
299 e->type() == QEvent::MouseButtonRelease || 299 e->type() == QEvent::MouseButtonRelease ||
300 e->type() == QEvent::MouseMove) { 300 e->type() == QEvent::MouseMove) {
301 QMouseEvent *me = (QMouseEvent *)e; 301 QMouseEvent *me = (QMouseEvent *)e;
302 QPoint itemPos = this->mapFromGlobal(((QWidget *)object)-> 302 QPoint itemPos = this->mapFromGlobal(((QWidget *)object)->
303 mapToGlobal(me->pos())); 303 mapToGlobal(me->pos()));
304 QMouseEvent returnEvent (e->type(),itemPos,me->button(),me->state()); 304 QMouseEvent returnEvent (e->type(),itemPos,me->button(),me->state());
305 return event(&returnEvent); 305 return event(&returnEvent);
306 } else { 306 } else {
307 return false; 307 return false;
308 } 308 }
309} 309}
310void KOAgendaItem::repaintMe( ) 310void KOAgendaItem::repaintMe( )
311{ 311{
312 paintMe ( mSelected ); 312 paintMe ( mSelected );
313} 313}
314void KOAgendaItem::paintMe( bool selected, QPainter* paint ) 314void KOAgendaItem::paintMe( bool selected, QPainter* paint )
315{ 315{
316 if ( globalFlagBlockAgendaItemUpdate && ! selected) 316 if ( globalFlagBlockAgendaItemUpdate && ! selected)
317 return; 317 return;
318 QPainter pa; 318 QPainter pa;
319 319
320 if ( mSelected ) { 320 if ( mSelected ) {
321 pa.begin( paintPixSel() ); 321 pa.begin( paintPixSel() );
322 } else { 322 } else {
323 if ( mAllDay ) 323 if ( mAllDay )
324 pa.begin( paintPixAllday() ); 324 pa.begin( paintPixAllday() );
325 else 325 else
326 pa.begin( paintPix() ); 326 pa.begin( paintPix() );
327 } 327 }
328 int x, yy, w, h; 328 int x, yy, w, h;
329 float nfh = 7.0; 329 float nfh = 7.0;
330 x = pos().x(); w = width(); h = height (); 330 x = pos().x(); w = width(); h = height ();
331 if ( mAllDay ) 331 if ( mAllDay )
332 yy = y(); 332 yy = y();
diff --git a/korganizer/kofilterview.cpp b/korganizer/kofilterview.cpp
index 29a4393..2b16347 100644
--- a/korganizer/kofilterview.cpp
+++ b/korganizer/kofilterview.cpp
@@ -33,307 +33,311 @@
33 33
34#include "kofilterview.h" 34#include "kofilterview.h"
35#include "koprefs.h" 35#include "koprefs.h"
36#include <kiconloader.h> 36#include <kiconloader.h>
37#include <kglobal.h> 37#include <kglobal.h>
38#include <kcolorbutton.h> 38#include <kcolorbutton.h>
39#include <kmessagebox.h> 39#include <kmessagebox.h>
40 40
41 41
42#include <kurlrequester.h> 42#include <kurlrequester.h>
43#include <klineedit.h> 43#include <klineedit.h>
44 44
45class KONewCalPrefs : public QDialog 45class KONewCalPrefs : public QDialog
46{ 46{
47 public: 47 public:
48 KONewCalPrefs( QWidget *parent=0, const char *name=0 ) : 48 KONewCalPrefs( QWidget *parent=0, const char *name=0 ) :
49 QDialog( parent, name, true ) 49 QDialog( parent, name, true )
50 { 50 {
51 setCaption( i18n("Add new Calendar") ); 51 setCaption( i18n("Add new Calendar") );
52 QVBoxLayout* lay = new QVBoxLayout( this ); 52 QVBoxLayout* lay = new QVBoxLayout( this );
53 lay->setSpacing( 3 ); 53 lay->setSpacing( 3 );
54 lay->setMargin( 3 ); 54 lay->setMargin( 3 );
55 QLabel * lab = new QLabel( i18n("<b>Name of new calendar:</b>"), this ); 55 QLabel * lab = new QLabel( i18n("<b>Name of new calendar:</b>"), this );
56 lay->addWidget( lab ); 56 lay->addWidget( lab );
57 nameE = new KLineEdit( this ); 57 nameE = new KLineEdit( this );
58 lay->addWidget( nameE ); 58 lay->addWidget( nameE );
59 lab = new QLabel( i18n("Local ical (*.ics) file:"), this ); 59 lab = new QLabel( i18n("Local ical (*.ics) file:"), this );
60 lay->addWidget( lab ); 60 lay->addWidget( lab );
61 url = new KURLRequester ( this ); 61 url = new KURLRequester ( this );
62 lay->addWidget( url ); 62 lay->addWidget( url );
63 QPushButton * ok = new QPushButton( i18n("OK"), this ); 63 QPushButton * ok = new QPushButton( i18n("OK"), this );
64 lay->addWidget( ok ); 64 lay->addWidget( ok );
65 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 65 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
66 lay->addWidget( cancel ); 66 lay->addWidget( cancel );
67 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 67 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
68 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 68 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
69 //resize( 200, 200 ); 69 //resize( 200, 200 );
70 } 70 }
71 71
72 QString calName() { return nameE->text(); } 72 QString calName() { return nameE->text(); }
73 QString calFileName() { return url->url(); } 73 QString calFileName() { return url->url(); }
74private: 74private:
75 KLineEdit* nameE; 75 KLineEdit* nameE;
76 KURLRequester *url; 76 KURLRequester *url;
77}; 77};
78 78
79 79
80KOFilterView::KOFilterView(QPtrList<CalFilter> *filterList,QWidget* parent, 80KOFilterView::KOFilterView(QPtrList<CalFilter> *filterList,QWidget* parent,
81 const char* name,WFlags fl ) 81 const char* name,WFlags fl )
82 : KOFilterView_base(parent,name,fl) 82 : KOFilterView_base(parent,name,fl)
83{ 83{
84 mFilters = filterList; 84 mFilters = filterList;
85 85
86 connect(mSelectionCombo,SIGNAL(activated(int)),SIGNAL(filterChanged())); 86 connect(mSelectionCombo,SIGNAL(activated(int)),SIGNAL(filterChanged()));
87 connect(mEnabledCheck,SIGNAL(clicked()),SIGNAL(filterChanged())); 87 connect(mEnabledCheck,SIGNAL(clicked()),SIGNAL(filterChanged()));
88 connect(mEditButton,SIGNAL(clicked()),SIGNAL(editFilters())); 88 connect(mEditButton,SIGNAL(clicked()),SIGNAL(editFilters()));
89} 89}
90 90
91KOFilterView::~KOFilterView() 91KOFilterView::~KOFilterView()
92{ 92{
93 // no need to delete child widgets, Qt does it all for us 93 // no need to delete child widgets, Qt does it all for us
94} 94}
95 95
96bool KOFilterView::filtersEnabled() 96bool KOFilterView::filtersEnabled()
97{ 97{
98 return mEnabledCheck->isChecked(); 98 return mEnabledCheck->isChecked();
99} 99}
100 100
101void KOFilterView::setFiltersEnabled(bool set) 101void KOFilterView::setFiltersEnabled(bool set)
102{ 102{
103 mEnabledCheck->setChecked(set); 103 mEnabledCheck->setChecked(set);
104 emit filterChanged(); 104 emit filterChanged();
105} 105}
106 106
107 107
108void KOFilterView::updateFilters() 108void KOFilterView::updateFilters()
109{ 109{
110 mSelectionCombo->clear(); 110 mSelectionCombo->clear();
111 111
112 CalFilter *filter = mFilters->first(); 112 CalFilter *filter = mFilters->first();
113 while(filter) { 113 while(filter) {
114 mSelectionCombo->insertItem(filter->name()); 114 mSelectionCombo->insertItem(filter->name());
115 filter = mFilters->next(); 115 filter = mFilters->next();
116 } 116 }
117} 117}
118 118
119CalFilter *KOFilterView::selectedFilter() 119CalFilter *KOFilterView::selectedFilter()
120{ 120{
121 CalFilter *f = mFilters->at(mSelectionCombo->currentItem()); 121 CalFilter *f = mFilters->at(mSelectionCombo->currentItem());
122 return f; 122 return f;
123} 123}
124 124
125void KOFilterView::setSelectedFilter(QString filterName) 125void KOFilterView::setSelectedFilter(QString filterName)
126{ 126{
127 int filter_num = mSelectionCombo->count(); 127 int filter_num = mSelectionCombo->count();
128 int i; 128 int i;
129 for (i=0;i<filter_num;i++) { 129 for (i=0;i<filter_num;i++) {
130 if (mSelectionCombo->text(i)==filterName) 130 if (mSelectionCombo->text(i)==filterName)
131 mSelectionCombo->setCurrentItem(i); 131 mSelectionCombo->setCurrentItem(i);
132 } 132 }
133 emit filterChanged(); 133 emit filterChanged();
134} 134}
135void KOFilterView::setSelectedFilter( int fil ) 135void KOFilterView::setSelectedFilter( int fil )
136{ 136{
137 if ( fil >= mSelectionCombo->count() ) 137 if ( fil >= mSelectionCombo->count() )
138 return; 138 return;
139 mSelectionCombo->setCurrentItem( fil ); 139 mSelectionCombo->setCurrentItem( fil );
140 emit filterChanged(); 140 emit filterChanged();
141} 141}
142 142
143 143
144 144
145KOCalEditView::KOCalEditView(QWidget* parent, 145KOCalEditView::KOCalEditView(QWidget* parent,
146 const char* name ) 146 const char* name )
147 : QWidget(parent,name) 147 : QWidget(parent,name)
148{ 148{
149 mw = 0; 149 mw = 0;
150 ml = new QVBoxLayout ( this ); 150 ml = new QVBoxLayout ( this );
151} 151}
152 152
153KOCalEditView::~KOCalEditView() 153KOCalEditView::~KOCalEditView()
154{ 154{
155 // no need to delete child widgets, Qt does it all for us 155 // no need to delete child widgets, Qt does it all for us
156} 156}
157void KOCalEditView::selectCal(int id ,bool b) 157void KOCalEditView::selectCal(int id ,bool b)
158{ 158{
159 KOPrefs::instance()->getCalendar( id )->isEnabled = b; 159 KOPrefs::instance()->getCalendar( id )->isEnabled = b;
160 emit calendarEnabled ( id, b ); 160 emit calendarEnabled ( id, b );
161 emit needsUpdate();
161 162
162} 163}
163void KOCalEditView::selectStdCal( int id, bool b ) 164void KOCalEditView::selectStdCal( int id, bool b )
164{ 165{
165 166
166 if ( !b ) { 167 if ( !b ) {
167 KOCalCheckButton* it = (KOCalCheckButton*) sender(); 168 KOCalCheckButton* it = (KOCalCheckButton*) sender();
168 if ( it ) { 169 if ( it ) {
169 it->blockSignals( true ); 170 it->blockSignals( true );
170 it->setChecked( true ); 171 it->setChecked( true );
171 it->blockSignals( false ); 172 it->blockSignals( false );
172 return; 173 return;
173 } 174 }
174 return; 175 return;
175 } 176 }
176 KOCalCheckButton* sen = (KOCalCheckButton*) sender(); 177 KOCalCheckButton* sen = (KOCalCheckButton*) sender();
177 KOCalCheckButton* it = mStdandardB.first(); 178 KOCalCheckButton* it = mStdandardB.first();
178 while ( it ) { 179 while ( it ) {
179 if ( it->isChecked() ) { 180 if ( it->isChecked() ) {
180 if ( it != sen ) { 181 if ( it != sen ) {
181 it->blockSignals( true ); 182 it->blockSignals( true );
182 it->setChecked( false ); 183 it->setChecked( false );
183 it->blockSignals( false ); 184 it->blockSignals( false );
184 break; 185 break;
185 } 186 }
186 } 187 }
187 it = mStdandardB.next(); 188 it = mStdandardB.next();
188 } 189 }
189 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); 190 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
190 while ( kkf ) { 191 while ( kkf ) {
191 kkf->isStandard = false; 192 kkf->isStandard = false;
192 kkf = KOPrefs::instance()->mCalendars.next(); 193 kkf = KOPrefs::instance()->mCalendars.next();
193 } 194 }
194 KOPrefs::instance()->getCalendar( id )->isStandard = true; 195 KOPrefs::instance()->getCalendar( id )->isStandard = true;
195 emit setCalendarDefault ( id ); 196 emit setCalendarDefault ( id );
196} 197}
197 198
198void KOCalEditView::selectCalAlarm(int id ,bool b ) 199void KOCalEditView::selectCalAlarm(int id ,bool b )
199{ 200{
200 KOPrefs::instance()->getCalendar( id )->isAlarmEnabled = b; 201 KOPrefs::instance()->getCalendar( id )->isAlarmEnabled = b;
201 emit alarmEnabled ( id , b ); 202 emit alarmEnabled ( id , b );
203 emit needsUpdate();
202} 204}
203void KOCalEditView::selectReadOnly(int id ,bool b ) 205void KOCalEditView::selectReadOnly(int id ,bool b )
204{ 206{
205 KOPrefs::instance()->getCalendar( id )->isReadOnly = b; 207 KOPrefs::instance()->getCalendar( id )->isReadOnly = b;
206 emit calendarReadonly ( id , b ); 208 emit calendarReadonly ( id , b );
209 emit needsUpdate();
207 210
208} 211}
209void KOCalEditView::setColor( const QColor& c, int id ) 212void KOCalEditView::setColor( const QColor& c, int id )
210{ 213{
211 KOPrefs::instance()->getCalendar( id )->mDefaultColor = c; 214 KOPrefs::instance()->getCalendar( id )->mDefaultColor = c;
215 emit needsUpdate();
212} 216}
213void KOCalEditView::deleteCal( int id ) 217void KOCalEditView::deleteCal( int id )
214{ 218{
215 KopiCalendarFile * kkf = KOPrefs::instance()->getCalendar( id ); 219 KopiCalendarFile * kkf = KOPrefs::instance()->getCalendar( id );
216 QString name = kkf->mName; 220 QString name = kkf->mName;
217 QString file = kkf->mFileName; 221 QString file = kkf->mFileName;
218 if ( KMessageBox::warningContinueCancel( this, i18n("The calendar <b>%1</b> is displaying file <b>%2</b><tr> Do you want to remove this calendar from KO/Pi? (The file is not removed, of course!)").arg(name).arg(file) ) != KMessageBox::Continue ) return; 222 if ( KMessageBox::warningContinueCancel( this, i18n("The calendar <b>%1</b> is displaying file <b>%2</b><tr> Do you want to remove this calendar from KO/Pi? (The file is not removed, of course!)").arg(name).arg(file) ) != KMessageBox::Continue ) return;
219 emit removeCalendar ( id ); 223 emit removeCalendar ( id );
220 KOPrefs::instance()->mCalendars.remove ( kkf ); 224 KOPrefs::instance()->mCalendars.remove ( kkf );
221 readConfig(); 225 readConfig();
222} 226}
223void KOCalEditView::infoCal( int id ) 227void KOCalEditView::infoCal( int id )
224{ 228{
225 QString name = KOPrefs::instance()->getCalendar( id )->mName; 229 QString name = KOPrefs::instance()->getCalendar( id )->mName;
226 QString file = KOPrefs::instance()->getCalendar( id )->mFileName; 230 QString file = KOPrefs::instance()->getCalendar( id )->mFileName;
227 KMessageBox::information( this, i18n("The calendar <b>%1</b> is displaying file <b>%2</b>").arg(name).arg(file) ); 231 KMessageBox::information( this, i18n("The calendar <b>%1</b> is displaying file <b>%2</b>").arg(name).arg(file) );
228} 232}
229void KOCalEditView::readConfig() 233void KOCalEditView::readConfig()
230{ 234{
231 235
232 mStdandardB.clear(); 236 mStdandardB.clear();
233 mEnabledB.clear(); 237 mEnabledB.clear();
234 mAlarmB.clear(); 238 mAlarmB.clear();
235 mROB.clear(); 239 mROB.clear();
236 240
237 if ( mw ) delete mw; 241 if ( mw ) delete mw;
238 mw = new QWidget ( this ); 242 mw = new QWidget ( this );
239 ml->addWidget ( mw ); 243 ml->addWidget ( mw );
240 244
241 mainLayout = new QGridLayout ( mw , 2, 8 ); 245 mainLayout = new QGridLayout ( mw , 2, 8 );
242 //mainLayout->setSpacing( 3 ); 246 //mainLayout->setSpacing( 3 );
243 QPushButton * addBut = new QPushButton ( mw ); 247 QPushButton * addBut = new QPushButton ( mw );
244 mainLayout->addWidget( addBut,0,0 ); 248 mainLayout->addWidget( addBut,0,0 );
245 addBut->setPixmap ( SmallIcon("plus")); 249 addBut->setPixmap ( SmallIcon("plus"));
246 connect(addBut,SIGNAL(clicked()),SLOT(addCal())); 250 connect(addBut,SIGNAL(clicked()),SLOT(addCal()));
247 addBut->setMaximumWidth( addBut->sizeHint().height() ); 251 addBut->setMaximumWidth( addBut->sizeHint().height() );
248 252
249 addBut = new QPushButton ( mw ); 253 addBut = new QPushButton ( mw );
250 mainLayout->addWidget( addBut,0,1 ); 254 mainLayout->addWidget( addBut,0,1 );
251 addBut->setPixmap ( SmallIcon("eye")); 255 addBut->setPixmap ( SmallIcon("eye"));
252 connect(addBut,SIGNAL(clicked()),SLOT(enableAll())); 256 connect(addBut,SIGNAL(clicked()),SLOT(enableAll()));
253 addBut->setMaximumWidth( addBut->sizeHint().height() ); 257 addBut->setMaximumWidth( addBut->sizeHint().height() );
254 258
255 QLabel* lab = new QLabel ( " "+i18n("Calendar")+" ", mw ); 259 QLabel* lab = new QLabel ( " "+i18n("Calendar")+" ", mw );
256 mainLayout->addWidget( lab,0,2 ); 260 mainLayout->addWidget( lab,0,2 );
257 261
258 addBut = new QPushButton ( mw ); 262 addBut = new QPushButton ( mw );
259 mainLayout->addWidget( addBut,0,3 ); 263 mainLayout->addWidget( addBut,0,3 );
260 addBut->setPixmap ( SmallIcon("bell")); 264 addBut->setPixmap ( SmallIcon("bell"));
261 connect(addBut,SIGNAL(clicked()),SLOT(enableAlarm())); 265 connect(addBut,SIGNAL(clicked()),SLOT(enableAlarm()));
262 addBut->setMaximumWidth( addBut->sizeHint().height() ); 266 addBut->setMaximumWidth( addBut->sizeHint().height() );
263 267
264 addBut = new QPushButton ( mw ); 268 addBut = new QPushButton ( mw );
265 mainLayout->addWidget( addBut,0,4 ); 269 mainLayout->addWidget( addBut,0,4 );
266 addBut->setPixmap ( SmallIcon("pencil")); 270 addBut->setPixmap ( SmallIcon("pencil"));
267 connect(addBut,SIGNAL(clicked()),SLOT(disableRO())); 271 connect(addBut,SIGNAL(clicked()),SLOT(disableRO()));
268 addBut->setMaximumWidth( addBut->sizeHint().height() ); 272 addBut->setMaximumWidth( addBut->sizeHint().height() );
269 273
270 lab = new QLabel ( i18n(" Color "), mw ); 274 lab = new QLabel ( i18n(" Color "), mw );
271 mainLayout->addWidget( lab,0,5 ); 275 mainLayout->addWidget( lab,0,5 );
272#if 0 276#if 0
273 addBut = new QPushButton ( mw ); 277 addBut = new QPushButton ( mw );
274 mainLayout->addWidget( addBut,0,6 ); 278 mainLayout->addWidget( addBut,0,6 );
275 addBut->setPixmap ( SmallIcon("minus")); 279 addBut->setPixmap ( SmallIcon("minus"));
276 connect(addBut,SIGNAL(clicked()),SLOT(deleteAll())); 280 connect(addBut,SIGNAL(clicked()),SLOT(deleteAll()));
277 addBut->setMaximumWidth( addBut->sizeHint().height() ); 281 addBut->setMaximumWidth( addBut->sizeHint().height() );
278#endif 282#endif
279 283
280 284
281 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); 285 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
282 int row = 1; 286 int row = 1;
283 while ( kkf ) { 287 while ( kkf ) {
284 288
285 KOCalCheckButton* cb = new KOCalCheckButton( mw ); 289 KOCalCheckButton* cb = new KOCalCheckButton( mw );
286 mainLayout->addWidget( cb,row,0 );mStdandardB.append( cb ); 290 mainLayout->addWidget( cb,row,0 );mStdandardB.append( cb );
287 cb->setChecked( kkf->isStandard ); 291 cb->setChecked( kkf->isStandard );
288 cb->setNum( kkf->mCalNumber ); 292 cb->setNum( kkf->mCalNumber );
289 connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectStdCal(int,bool) ) ); 293 connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectStdCal(int,bool) ) );
290 cb = new KOCalCheckButton( mw ); 294 cb = new KOCalCheckButton( mw );
291 mainLayout->addWidget( cb,row,1 );mEnabledB.append( cb ); 295 mainLayout->addWidget( cb,row,1 );mEnabledB.append( cb );
292 cb->setChecked( kkf->isEnabled ); 296 cb->setChecked( kkf->isEnabled );
293 cb->setNum( kkf->mCalNumber ); 297 cb->setNum( kkf->mCalNumber );
294 connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectCal(int,bool) ) ); 298 connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectCal(int,bool) ) );
295 KOCalButton* name = new KOCalButton( mw ); 299 KOCalButton* name = new KOCalButton( mw );
296 name->setNum( kkf->mCalNumber ); 300 name->setNum( kkf->mCalNumber );
297 name->setText( kkf->mName ); 301 name->setText( kkf->mName );
298 mainLayout->addWidget( name,row,2 ); 302 mainLayout->addWidget( name,row,2 );
299 connect (name, SIGNAL (selectNum(int)), SLOT ( infoCal(int) ) ); 303 connect (name, SIGNAL (selectNum(int)), SLOT ( infoCal(int) ) );
300 cb = new KOCalCheckButton( mw ); 304 cb = new KOCalCheckButton( mw );
301 mainLayout->addWidget( cb,row,3 );mAlarmB.append( cb ); 305 mainLayout->addWidget( cb,row,3 );mAlarmB.append( cb );
302 cb->setChecked( kkf->isAlarmEnabled ); 306 cb->setChecked( kkf->isAlarmEnabled );
303 cb->setNum( kkf->mCalNumber ); 307 cb->setNum( kkf->mCalNumber );
304 connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectCalAlarm(int,bool) ) ); 308 connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectCalAlarm(int,bool) ) );
305 cb = new KOCalCheckButton( mw ); 309 cb = new KOCalCheckButton( mw );
306 mainLayout->addWidget( cb,row,4 );mROB.append( cb ); 310 mainLayout->addWidget( cb,row,4 );mROB.append( cb );
307 cb->setChecked( kkf->isReadOnly ); 311 cb->setChecked( kkf->isReadOnly );
308 cb->setNum( kkf->mCalNumber ); 312 cb->setNum( kkf->mCalNumber );
309 connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectReadOnly(int,bool) ) ); 313 connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectReadOnly(int,bool) ) );
310 KColorButton *colb = new KColorButton( mw ); 314 KColorButton *colb = new KColorButton( mw );
311 mainLayout->addWidget( colb,row,5 ); 315 mainLayout->addWidget( colb,row,5 );
312 colb->setID( kkf->mCalNumber ); 316 colb->setID( kkf->mCalNumber );
313 colb->setColor( kkf->mDefaultColor ); 317 colb->setColor( kkf->mDefaultColor );
314 connect (colb, SIGNAL (changedID(const QColor&, int )), SLOT ( setColor(const QColor&,int) ) ); 318 connect (colb, SIGNAL (changedID(const QColor&, int )), SLOT ( setColor(const QColor&,int) ) );
315 if ( row > 1) { 319 if ( row > 1) {
316 KOCalButton* calb = new KOCalButton( mw ); 320 KOCalButton* calb = new KOCalButton( mw );
317 mainLayout->addWidget( calb,row,6 ); 321 mainLayout->addWidget( calb,row,6 );
318 calb->setNum( kkf->mCalNumber ); 322 calb->setNum( kkf->mCalNumber );
319 calb->setPixmap ( SmallIcon("minus")); 323 calb->setPixmap ( SmallIcon("minus"));
320 connect (calb, SIGNAL (selectNum(int)), SLOT ( deleteCal(int) ) ); 324 connect (calb, SIGNAL (selectNum(int)), SLOT ( deleteCal(int) ) );
321 int hei = calb->sizeHint().height(); 325 int hei = calb->sizeHint().height();
322 //calb->setMaximumSize( hei*9/10, hei*9/10 ); 326 //calb->setMaximumSize( hei*9/10, hei*9/10 );
323 } 327 }
324 ++row; 328 ++row;
325 kkf = KOPrefs::instance()->mCalendars.next(); 329 kkf = KOPrefs::instance()->mCalendars.next();
326 } 330 }
327 lab = new QLabel ( "", mw ); 331 lab = new QLabel ( "", mw );
328 mainLayout->addWidget( lab,row,0 ); 332 mainLayout->addWidget( lab,row,0 );
329 mw->show(); 333 mw->show();
330 334
331} 335}
332void KOCalEditView::addCal() 336void KOCalEditView::addCal()
333{ 337{
334 qDebug("addcal "); 338 qDebug("addcal ");
335 KONewCalPrefs prefs ( this ); 339 KONewCalPrefs prefs ( this );
336 if ( ! prefs.exec() ) 340 if ( ! prefs.exec() )
337 return; 341 return;
338 QString name = prefs.calName(); 342 QString name = prefs.calName();
339 QString file = prefs.calFileName(); 343 QString file = prefs.calFileName();
diff --git a/korganizer/kofilterview.h b/korganizer/kofilterview.h
index aaf0eb6..4a0cd8a 100644
--- a/korganizer/kofilterview.h
+++ b/korganizer/kofilterview.h
@@ -13,143 +13,144 @@
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23#ifndef KOFILTERVIEW_H 23#ifndef KOFILTERVIEW_H
24#define KOFILTERVIEW_H 24#define KOFILTERVIEW_H
25 25
26#include <qstring.h> 26#include <qstring.h>
27#include <qcheckbox.h> 27#include <qcheckbox.h>
28#include <qpushbutton.h> 28#include <qpushbutton.h>
29#include <kconfig.h> 29#include <kconfig.h>
30#include "kofilterview_base.h" 30#include "kofilterview_base.h"
31 31
32#include <libkcal/calfilter.h> 32#include <libkcal/calfilter.h>
33 33
34class QGridLayout; 34class QGridLayout;
35 35
36using namespace KCal; 36using namespace KCal;
37class KOCalButton : public QPushButton 37class KOCalButton : public QPushButton
38{ 38{
39 Q_OBJECT 39 Q_OBJECT
40 public: 40 public:
41 KOCalButton( QWidget *parent=0, const char *name=0 ) : 41 KOCalButton( QWidget *parent=0, const char *name=0 ) :
42 QPushButton( parent, name) 42 QPushButton( parent, name)
43 { 43 {
44 connect( this, SIGNAL( clicked() ), 44 connect( this, SIGNAL( clicked() ),
45 SLOT( bottonClicked() )); 45 SLOT( bottonClicked() ));
46 mNumber = -1; 46 mNumber = -1;
47 } 47 }
48 void setNum ( int num ) {mNumber = num; } 48 void setNum ( int num ) {mNumber = num; }
49 signals: 49 signals:
50 void selectNum ( int ); 50 void selectNum ( int );
51private: 51private:
52 int mNumber; 52 int mNumber;
53 void keyPressEvent ( QKeyEvent * e ) 53 void keyPressEvent ( QKeyEvent * e )
54 { 54 {
55 e->ignore(); 55 e->ignore();
56 } 56 }
57 57
58private slots : 58private slots :
59 void bottonClicked() { if ( mNumber > 0 ) emit selectNum ( mNumber ); } 59 void bottonClicked() { if ( mNumber > 0 ) emit selectNum ( mNumber ); }
60}; 60};
61class KOCalCheckButton : public QCheckBox 61class KOCalCheckButton : public QCheckBox
62{ 62{
63 Q_OBJECT 63 Q_OBJECT
64 public: 64 public:
65 KOCalCheckButton( QWidget *parent=0, const char *name=0 ) : 65 KOCalCheckButton( QWidget *parent=0, const char *name=0 ) :
66 QCheckBox( parent, name) 66 QCheckBox( parent, name)
67 { 67 {
68 connect( this, SIGNAL( toggled ( bool ) ), 68 connect( this, SIGNAL( toggled ( bool ) ),
69 SLOT( bottonClicked( bool ) )); 69 SLOT( bottonClicked( bool ) ));
70 mNumber = -1; 70 mNumber = -1;
71 //setMaximumWidth( 10 ); 71 //setMaximumWidth( 10 );
72 72
73 } 73 }
74 void setNum ( int num ) {mNumber = num; } 74 void setNum ( int num ) {mNumber = num; }
75 signals: 75 signals:
76 void selectNum ( int, bool ); 76 void selectNum ( int, bool );
77private: 77private:
78 int mNumber; 78 int mNumber;
79 void keyPressEvent ( QKeyEvent * e ) 79 void keyPressEvent ( QKeyEvent * e )
80 { 80 {
81 e->ignore(); 81 e->ignore();
82 } 82 }
83 83
84private slots : 84private slots :
85 void bottonClicked( bool b) { if ( mNumber > 0 ) emit selectNum ( mNumber , b); } 85 void bottonClicked( bool b) { if ( mNumber > 0 ) emit selectNum ( mNumber , b); }
86}; 86};
87 87
88 88
89 89
90class KOFilterView : public KOFilterView_base 90class KOFilterView : public KOFilterView_base
91{ 91{
92 Q_OBJECT 92 Q_OBJECT
93 public: 93 public:
94 KOFilterView(QPtrList<CalFilter> *filterList,QWidget* parent=0,const char* name=0, WFlags fl=0); 94 KOFilterView(QPtrList<CalFilter> *filterList,QWidget* parent=0,const char* name=0, WFlags fl=0);
95 ~KOFilterView(); 95 ~KOFilterView();
96 96
97 void updateFilters(); 97 void updateFilters();
98 98
99 bool filtersEnabled(); 99 bool filtersEnabled();
100 void setFiltersEnabled(bool); 100 void setFiltersEnabled(bool);
101 CalFilter *selectedFilter(); 101 CalFilter *selectedFilter();
102 void setSelectedFilter(QString); 102 void setSelectedFilter(QString);
103 void setSelectedFilter( int ); 103 void setSelectedFilter( int );
104 104
105 signals: 105 signals:
106 void filterChanged(); 106 void filterChanged();
107 void editFilters(); 107 void editFilters();
108 108
109 private: 109 private:
110 QPtrList<CalFilter> *mFilters; 110 QPtrList<CalFilter> *mFilters;
111}; 111};
112 112
113class KOCalEditView : public QWidget 113class KOCalEditView : public QWidget
114{ 114{
115 Q_OBJECT 115 Q_OBJECT
116 public: 116 public:
117 KOCalEditView( QWidget* parent=0,const char* name=0); 117 KOCalEditView( QWidget* parent=0,const char* name=0);
118 ~KOCalEditView(); 118 ~KOCalEditView();
119 119
120 void readConfig(); 120 void readConfig();
121 public slots: 121 public slots:
122 void addCal(); 122 void addCal();
123 void enableAll(); 123 void enableAll();
124 void enableAlarm(); 124 void enableAlarm();
125 void disableRO(); 125 void disableRO();
126 void deleteAll(); 126 void deleteAll();
127 void selectStdCal(int,bool ); 127 void selectStdCal(int,bool );
128 void selectCal(int,bool ); 128 void selectCal(int,bool );
129 void selectCalAlarm(int,bool ); 129 void selectCalAlarm(int,bool );
130 void selectReadOnly(int,bool ); 130 void selectReadOnly(int,bool );
131 void setColor(const QColor &,int) ; 131 void setColor(const QColor &,int) ;
132 void deleteCal(int) ; 132 void deleteCal(int) ;
133 void infoCal(int) ; 133 void infoCal(int) ;
134 signals: 134 signals:
135 void alarmEnabled ( int cal, bool enable ); 135 void alarmEnabled ( int cal, bool enable );
136 void calendarEnabled ( int cal, bool enable ); 136 void calendarEnabled ( int cal, bool enable );
137 void calendarReadonly ( int cal, bool readonly ); 137 void calendarReadonly ( int cal, bool readonly );
138 void setCalendarDefault ( int cal ); 138 void setCalendarDefault ( int cal );
139 void removeCalendar ( int cal ); 139 void removeCalendar ( int cal );
140 void calendarAdded( int ); 140 void calendarAdded( int );
141 void needsUpdate();
141 142
142 private: 143 private:
143 QVBoxLayout* ml; 144 QVBoxLayout* ml;
144 QWidget *mw; 145 QWidget *mw;
145 void toggleList ( QPtrList<KOCalCheckButton> ); 146 void toggleList ( QPtrList<KOCalCheckButton> );
146 QPtrList<KOCalCheckButton> mStdandardB; 147 QPtrList<KOCalCheckButton> mStdandardB;
147 QPtrList<KOCalCheckButton> mEnabledB; 148 QPtrList<KOCalCheckButton> mEnabledB;
148 QPtrList<KOCalCheckButton> mAlarmB; 149 QPtrList<KOCalCheckButton> mAlarmB;
149 QPtrList<KOCalCheckButton> mROB; 150 QPtrList<KOCalCheckButton> mROB;
150 QGridLayout* mainLayout; 151 QGridLayout* mainLayout;
151}; 152};
152 153
153 154
154 155
155#endif // KOFILTERVIEW_H 156#endif // KOFILTERVIEW_H
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp
index c868270..96f2502 100644
--- a/korganizer/komonthview.cpp
+++ b/korganizer/komonthview.cpp
@@ -623,338 +623,338 @@ void MonthViewCell::startUpdateCell()
623 //clear(); 623 //clear();
624 while ( CurrentAvailItem ) { 624 while ( CurrentAvailItem ) {
625 MonthViewItem *item = CurrentAvailItem; 625 MonthViewItem *item = CurrentAvailItem;
626 CurrentAvailItem = (MonthViewItem *)item->next(); 626 CurrentAvailItem = (MonthViewItem *)item->next();
627 mAvailItemList.append( item ); 627 mAvailItemList.append( item );
628 takeItem ( item ); 628 takeItem ( item );
629 } 629 }
630 630
631#ifdef DESKTOP_VERSION 631#ifdef DESKTOP_VERSION
632 QToolTip::remove(this); 632 QToolTip::remove(this);
633#endif 633#endif
634 mToolTip.clear(); 634 mToolTip.clear();
635 //qApp->processEvents(); 635 //qApp->processEvents();
636#if 0 636#if 0
637 if ( !mHolidayString.isEmpty() ) { 637 if ( !mHolidayString.isEmpty() ) {
638 MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString ); 638 MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString );
639 item->setPalette( mHolidayPalette ); 639 item->setPalette( mHolidayPalette );
640 insertItem( item ); 640 insertItem( item );
641 mToolTip.append ( mHolidayString ); 641 mToolTip.append ( mHolidayString );
642 } 642 }
643#endif 643#endif
644} 644}
645 645
646int MonthViewCell::insertEvent(Event *event) 646int MonthViewCell::insertEvent(Event *event)
647{ 647{
648 bool useToolTips = true; 648 bool useToolTips = true;
649#ifndef DESKTOP_VERSION 649#ifndef DESKTOP_VERSION
650 useToolTips = false; 650 useToolTips = false;
651#endif 651#endif
652 QString mToolTipText; 652 QString mToolTipText;
653 setFocusPolicy(WheelFocus); 653 setFocusPolicy(WheelFocus);
654 if ( !(event->doesRecur() == Recurrence::rNone) ) { 654 if ( !(event->doesRecur() == Recurrence::rNone) ) {
655 if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily ) 655 if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily )
656 return mdayCount; 656 return mdayCount;
657 else 657 else
658 if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly ) 658 if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly )
659 return mdayCount; 659 return mdayCount;
660 } 660 }
661 661
662 if ( event->isHoliday()) { 662 if ( event->isHoliday()) {
663 setHoliday( true ); 663 setHoliday( true );
664 if ( mDate.dayOfWeek() == 7 ) 664 if ( mDate.dayOfWeek() == 7 )
665 setLineWidth( 3 ); 665 setLineWidth( 3 );
666 } 666 }
667 QString text; 667 QString text;
668 int multiday = 0;// 1 = start, 2 = midddle, 3 = end day 668 int multiday = 0;// 1 = start, 2 = midddle, 3 = end day
669 if (event->isMultiDay()) { 669 if (event->isMultiDay()) {
670 QString prefix = "<->";multiday = 2; 670 QString prefix = "<->";multiday = 2;
671 QString time; 671 QString time;
672 if ( event->doesRecur() ) { 672 if ( event->doesRecur() ) {
673 if ( event->recursOn( mDate) ) { 673 if ( event->recursOn( mDate) ) {
674 prefix ="->" ;multiday = 1; 674 prefix ="->" ;multiday = 1;
675 } 675 }
676 else { 676 else {
677 int days = event->dtStart().date().daysTo ( event->dtEnd().date() ); 677 int days = event->dtStart().date().daysTo ( event->dtEnd().date() );
678 if ( event->recursOn( mDate.addDays( -days)) ) { 678 if ( event->recursOn( mDate.addDays( -days)) ) {
679 prefix ="<-" ;multiday = 3; 679 prefix ="<-" ;multiday = 3;
680 } 680 }
681 } 681 }
682 682
683 } else { 683 } else {
684 if (mDate == event->dtStart().date()) { 684 if (mDate == event->dtStart().date()) {
685 prefix ="->" ;multiday = 1; 685 prefix ="->" ;multiday = 1;
686 } else if (mDate == event->dtEnd().date()) { 686 } else if (mDate == event->dtEnd().date()) {
687 prefix ="<-" ;multiday = 3; 687 prefix ="<-" ;multiday = 3;
688 } 688 }
689 } 689 }
690 if ( !event->doesFloat() ) { 690 if ( !event->doesFloat() ) {
691 if ( mDate == event->dtStart().date () ) 691 if ( mDate == event->dtStart().date () )
692 time = KGlobal::locale()->formatTime(event->dtStart().time())+" "; 692 time = KGlobal::locale()->formatTime(event->dtStart().time())+" ";
693 else if ( mDate == event->dtEnd().date () ) 693 else if ( mDate == event->dtEnd().date () )
694 time = KGlobal::locale()->formatTime(event->dtEnd().time())+" "; 694 time = KGlobal::locale()->formatTime(event->dtEnd().time())+" ";
695 695
696 } 696 }
697 text = time + event->summary(); 697 text = time + event->summary();
698 if ( useToolTips ) 698 if ( useToolTips )
699 mToolTipText += prefix + text; 699 mToolTipText += prefix + text;
700 } else { 700 } else {
701 if (event->doesFloat()) { 701 if (event->doesFloat()) {
702 text = event->summary(); 702 text = event->summary();
703 if ( useToolTips ) 703 if ( useToolTips )
704 mToolTipText += text; 704 mToolTipText += text;
705 } 705 }
706 else { 706 else {
707 text = KGlobal::locale()->formatTime(event->dtStart().time()); 707 text = KGlobal::locale()->formatTime(event->dtStart().time());
708 text += " " + event->summary(); 708 text += " " + event->summary();
709 if ( useToolTips ) 709 if ( useToolTips )
710 mToolTipText += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary(); 710 mToolTipText += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary();
711 } 711 }
712 } 712 }
713 if ( useToolTips && ! event->location().isEmpty() ) { 713 if ( useToolTips && ! event->location().isEmpty() ) {
714 mToolTipText += " (" + event->location() +")"; 714 mToolTipText += " (" + event->location() +")";
715 } 715 }
716 MonthViewItem *item ; 716 MonthViewItem *item ;
717 717
718 if ( mAvailItemList.count() ) { 718 if ( mAvailItemList.count() ) {
719 item = mAvailItemList.first(); 719 item = mAvailItemList.first();
720 mAvailItemList.remove( item ); 720 mAvailItemList.remove( item );
721 item->recycle( event, mDate, text ); 721 item->recycle( event, mDate, text );
722 } else { 722 } else {
723 item = new MonthViewItem( event, mDate, text ); 723 item = new MonthViewItem( event, mDate, text );
724 } 724 }
725 725
726 QPalette pal; 726 QPalette pal;
727 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { 727 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
728 QStringList categories = event->categories(); 728 QStringList categories = event->categories();
729 QString cat = categories.first(); 729 QString cat = categories.first();
730 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { 730 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
731 pal = getPalette(); 731 pal = getPalette();
732 if (cat.isEmpty()) { 732 if (cat.isEmpty()) {
733 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); 733 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor);
734 } else { 734 } else {
735 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); 735 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat)));
736 } 736 }
737 737
738 } else { 738 } else {
739 if (cat.isEmpty()) { 739 if (cat.isEmpty()) {
740 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); 740 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
741 } else { 741 } else {
742 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); 742 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
743 } 743 }
744 } 744 }
745 745
746 } else { 746 } else {
747 pal = mStandardPalette ; 747 pal = mStandardPalette ;
748 } 748 }
749 item->setPalette( pal ); 749 item->setPalette( pal );
750 item->setRecur( event->recurrence()->doesRecur() ); 750 item->setRecur( event->recurrence()->doesRecur() );
751 item->setAlarm( event->isAlarmEnabled() && multiday < 2 ); 751 item->setAlarm( event->isAlarmEnabled() && multiday < 2 && event->alarmEnabled() );
752 item->setMoreInfo( event->description().length() > 0 ); 752 item->setMoreInfo( event->description().length() > 0 );
753#ifdef DESKTOP_VERSION 753#ifdef DESKTOP_VERSION
754 Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails, 754 Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails,
755 KOPrefs::instance()->email()); 755 KOPrefs::instance()->email());
756 if ( me != 0 ) { 756 if ( me != 0 ) {
757 if ( me->status() == Attendee::NeedsAction && me->RSVP()) 757 if ( me->status() == Attendee::NeedsAction && me->RSVP())
758 item->setReply(true && multiday < 2); 758 item->setReply(true && multiday < 2);
759 else 759 else
760 item->setReply(false); 760 item->setReply(false);
761 } else 761 } else
762 item->setReply(false); 762 item->setReply(false);
763#endif 763#endif
764 item->setMultiDay( multiday ); 764 item->setMultiDay( multiday );
765 if ( multiday ) { 765 if ( multiday ) {
766 insertItem( item ,mdayCount); 766 insertItem( item ,mdayCount);
767 ++mdayCount; 767 ++mdayCount;
768 } else { 768 } else {
769 uint i; 769 uint i;
770 int pos = mdayCount; 770 int pos = mdayCount;
771 for ( i = mdayCount; i < count();++i ) { 771 for ( i = mdayCount; i < count();++i ) {
772 QListBoxItem* it = this->item ( i ); 772 QListBoxItem* it = this->item ( i );
773 if ( it && text < it->text() ) { 773 if ( it && text < it->text() ) {
774 pos = i; 774 pos = i;
775 break; 775 break;
776 } 776 }
777 ++pos; 777 ++pos;
778 } 778 }
779 insertItem( item ,pos); 779 insertItem( item ,pos);
780 } 780 }
781 if ( useToolTips ) { 781 if ( useToolTips ) {
782 mToolTip.append( mToolTipText ); 782 mToolTip.append( mToolTipText );
783 } 783 }
784 return mdayCount; 784 return mdayCount;
785} 785}
786void MonthViewCell::insertTodo(Todo *todo) 786void MonthViewCell::insertTodo(Todo *todo)
787{ 787{
788 setFocusPolicy(WheelFocus); 788 setFocusPolicy(WheelFocus);
789 QString text; 789 QString text;
790 if (todo->hasDueDate()) { 790 if (todo->hasDueDate()) {
791 if (!todo->doesFloat()) { 791 if (!todo->doesFloat()) {
792 text += KGlobal::locale()->formatTime(todo->dtDue().time()); 792 text += KGlobal::locale()->formatTime(todo->dtDue().time());
793 text += " "; 793 text += " ";
794 } 794 }
795 } 795 }
796 text += todo->summary(); 796 text += todo->summary();
797 MonthViewItem *item ; 797 MonthViewItem *item ;
798 if ( mAvailItemList.count() ) { 798 if ( mAvailItemList.count() ) {
799 item = mAvailItemList.first(); 799 item = mAvailItemList.first();
800 mAvailItemList.remove( item ); 800 mAvailItemList.remove( item );
801 item->recycle( todo, mDate, text ); 801 item->recycle( todo, mDate, text );
802 } else { 802 } else {
803 item = new MonthViewItem( todo, mDate, text ); 803 item = new MonthViewItem( todo, mDate, text );
804 } 804 }
805 //MonthViewItem *item = new MonthViewItem( todo, mDate, text ); 805 //MonthViewItem *item = new MonthViewItem( todo, mDate, text );
806 //item->setPalette( mStandardPalette ); 806 //item->setPalette( mStandardPalette );
807 QPalette pal; 807 QPalette pal;
808 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { 808 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
809 QStringList categories = todo->categories(); 809 QStringList categories = todo->categories();
810 QString cat = categories.first(); 810 QString cat = categories.first();
811 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { 811 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
812 pal = getPalette(); 812 pal = getPalette();
813 if (cat.isEmpty()) { 813 if (cat.isEmpty()) {
814 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); 814 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor);
815 } else { 815 } else {
816 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); 816 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat)));
817 } 817 }
818 818
819 } else { 819 } else {
820 if (cat.isEmpty()) { 820 if (cat.isEmpty()) {
821 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); 821 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
822 } else { 822 } else {
823 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); 823 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
824 } 824 }
825 } 825 }
826 826
827 } else { 827 } else {
828 pal = mStandardPalette ; 828 pal = mStandardPalette ;
829 } 829 }
830 item->setPalette( pal ); 830 item->setPalette( pal );
831 item->setRecur( todo->recurrence()->doesRecur() ); 831 item->setRecur( todo->recurrence()->doesRecur() );
832 item->setAlarm( todo->isAlarmEnabled() ); 832 item->setAlarm( todo->isAlarmEnabled() && todo->alarmEnabled() );
833 item->setMoreInfo( todo->description().length() > 0 ); 833 item->setMoreInfo( todo->description().length() > 0 );
834 insertItem( item , count()); 834 insertItem( item , count());
835#ifdef DESKTOP_VERSION 835#ifdef DESKTOP_VERSION
836 mToolTip.append( text ); 836 mToolTip.append( text );
837#endif 837#endif
838} 838}
839void MonthViewCell::repaintfinishUpdateCell() 839void MonthViewCell::repaintfinishUpdateCell()
840{ 840{
841 MonthViewItem *mitem = (MonthViewItem*) firstItem (); 841 MonthViewItem *mitem = (MonthViewItem*) firstItem ();
842 while ( mitem ) { 842 while ( mitem ) {
843 mitem->setBlockRepaint( false ); 843 mitem->setBlockRepaint( false );
844 updateItem ( mitem ); 844 updateItem ( mitem );
845 mitem = (MonthViewItem *)mitem->next(); 845 mitem = (MonthViewItem *)mitem->next();
846 } 846 }
847} 847}
848void MonthViewCell::finishUpdateCell() 848void MonthViewCell::finishUpdateCell()
849{ 849{
850 850
851 851
852 852
853#ifdef DESKTOP_VERSION 853#ifdef DESKTOP_VERSION
854 if (mToolTip.count() > 0 ) { 854 if (mToolTip.count() > 0 ) {
855 mToolTip.sort(); 855 mToolTip.sort();
856 QToolTip::add(this,mToolTip.join("\n"),toolTipGroup(),""); 856 QToolTip::add(this,mToolTip.join("\n"),toolTipGroup(),"");
857 } 857 }
858#endif 858#endif
859 //sort(); 859 //sort();
860 //setMyPalette(); 860 //setMyPalette();
861 setMyPalette(); 861 setMyPalette();
862 862
863 resizeEvent( 0 ); 863 resizeEvent( 0 );
864 864
865} 865}
866void MonthViewCell::updateCell() 866void MonthViewCell::updateCell()
867{ 867{
868 if ( !mMonthView->isUpdatePossible() ) 868 if ( !mMonthView->isUpdatePossible() )
869 return; 869 return;
870 startUpdateCell(); 870 startUpdateCell();
871 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2); 871 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2);
872 QPtrList<Event> events = mMonthView->calendar()->events( mDate, true ); 872 QPtrList<Event> events = mMonthView->calendar()->events( mDate, true );
873 Event *event; 873 Event *event;
874 for( event = events.first(); event; event = events.next() ) { // for event 874 for( event = events.first(); event; event = events.next() ) { // for event
875 insertEvent(event); 875 insertEvent(event);
876 } 876 }
877 // insert due todos 877 // insert due todos
878 QPtrList<Todo> todos = mMonthView->calendar()->todos( mDate ); 878 QPtrList<Todo> todos = mMonthView->calendar()->todos( mDate );
879 Todo *todo; 879 Todo *todo;
880 for(todo = todos.first(); todo; todo = todos.next()) { 880 for(todo = todos.first(); todo; todo = todos.next()) {
881 insertTodo( todo ); 881 insertTodo( todo );
882 } 882 }
883 finishUpdateCell(); 883 finishUpdateCell();
884 // if ( isVisible()) 884 // if ( isVisible())
885 //qApp->processEvents(); 885 //qApp->processEvents();
886} 886}
887 887
888void MonthViewCell::updateConfig( bool bigFont ) // = false 888void MonthViewCell::updateConfig( bool bigFont ) // = false
889{ 889{
890 890
891 if ( bigFont ) { 891 if ( bigFont ) {
892 QFont fo = KOPrefs::instance()->mMonthViewFont; 892 QFont fo = KOPrefs::instance()->mMonthViewFont;
893 int ps = fo.pointSize() + 2; 893 int ps = fo.pointSize() + 2;
894 if ( ps < 18 ) 894 if ( ps < 18 )
895 ps += 2; 895 ps += 2;
896 fo.setPointSize( ps ); 896 fo.setPointSize( ps );
897 setFont( fo ); 897 setFont( fo );
898 } else 898 } else
899 setFont( KOPrefs::instance()->mMonthViewFont ); 899 setFont( KOPrefs::instance()->mMonthViewFont );
900 900
901 QFontMetrics fm( font() ); 901 QFontMetrics fm( font() );
902 mLabelSize = fm.size( 0, "30" ) + QSize( 4, 2 ); 902 mLabelSize = fm.size( 0, "30" ) + QSize( 4, 2 );
903 mLabelBigSize = fm.size( 0, "Mag 30" ) + QSize( 2, 2 ); 903 mLabelBigSize = fm.size( 0, "Mag 30" ) + QSize( 2, 2 );
904 mHolidayPalette = mStandardPalette; 904 mHolidayPalette = mStandardPalette;
905 mPrimaryPalette = mStandardPalette; 905 mPrimaryPalette = mStandardPalette;
906 mNonPrimaryPalette = mStandardPalette; 906 mNonPrimaryPalette = mStandardPalette;
907 if ( KOPrefs::instance()->mMonthViewUsesDayColors ) { 907 if ( KOPrefs::instance()->mMonthViewUsesDayColors ) {
908 mHolidayPalette.setColor(QColorGroup::Base, KOPrefs::instance()->mMonthViewHolidayColor ); 908 mHolidayPalette.setColor(QColorGroup::Base, KOPrefs::instance()->mMonthViewHolidayColor );
909 mHolidayPalette.setColor(QColorGroup::Background, KOPrefs::instance()->mMonthViewHolidayColor ); 909 mHolidayPalette.setColor(QColorGroup::Background, KOPrefs::instance()->mMonthViewHolidayColor );
910 mHolidayPalette.setColor(QColorGroup::Foreground, KOPrefs::instance()->mMonthViewHolidayColor.dark()); 910 mHolidayPalette.setColor(QColorGroup::Foreground, KOPrefs::instance()->mMonthViewHolidayColor.dark());
911 mPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewOddColor.dark()); 911 mPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewOddColor.dark());
912 mPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewOddColor); 912 mPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewOddColor);
913 mPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewOddColor); 913 mPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewOddColor);
914 mNonPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewEvenColor.dark()); 914 mNonPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewEvenColor.dark());
915 mNonPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewEvenColor); 915 mNonPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewEvenColor);
916 mNonPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewEvenColor); 916 mNonPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewEvenColor);
917 } 917 }
918 //updateCell(); 918 //updateCell();
919} 919}
920 920
921void MonthViewCell::enableScrollBars( bool enabled ) 921void MonthViewCell::enableScrollBars( bool enabled )
922{ 922{
923 923
924 return; 924 return;
925 if ( enabled ) { 925 if ( enabled ) {
926 QListBoxItem *fi = firstItem (); 926 QListBoxItem *fi = firstItem ();
927 if (fi ) { 927 if (fi ) {
928 int ihei = fi->height( this ); 928 int ihei = fi->height( this );
929 int hei = numRows () * ihei; 929 int hei = numRows () * ihei;
930 if ( hei < height() - horizontalScrollBar()->height () ) { 930 if ( hei < height() - horizontalScrollBar()->height () ) {
931 setVScrollBarMode(QScrollView::AlwaysOff); 931 setVScrollBarMode(QScrollView::AlwaysOff);
932 } 932 }
933 else 933 else
934 setVScrollBarMode(QScrollView::Auto); 934 setVScrollBarMode(QScrollView::Auto);
935 if ( ihei *3 > height() ) { 935 if ( ihei *3 > height() ) {
936 setHScrollBarMode(QScrollView::AlwaysOff); 936 setHScrollBarMode(QScrollView::AlwaysOff);
937 } 937 }
938 else { 938 else {
939 setHScrollBarMode(QScrollView::Auto); 939 setHScrollBarMode(QScrollView::Auto);
940 } 940 }
941 } else { 941 } else {
942 setVScrollBarMode(QScrollView::Auto); 942 setVScrollBarMode(QScrollView::Auto);
943 setHScrollBarMode(QScrollView::Auto); 943 setHScrollBarMode(QScrollView::Auto);
944 } 944 }
945 } else { 945 } else {
946 setVScrollBarMode(QScrollView::AlwaysOff); 946 setVScrollBarMode(QScrollView::AlwaysOff);
947 setHScrollBarMode(QScrollView::AlwaysOff); 947 setHScrollBarMode(QScrollView::AlwaysOff);
948 } 948 }
949} 949}
950 950
951Incidence *MonthViewCell::selectedIncidence() 951Incidence *MonthViewCell::selectedIncidence()
952{ 952{
953 int index = currentItem(); 953 int index = currentItem();
954 if ( index < 0 ) return 0; 954 if ( index < 0 ) return 0;
955 955
956 MonthViewItem *mitem = 956 MonthViewItem *mitem =
957 static_cast<MonthViewItem *>( item( index ) ); 957 static_cast<MonthViewItem *>( item( index ) );
958 958
959 if ( !mitem ) return 0; 959 if ( !mitem ) return 0;
960 960
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp
index 2602487..35c2a9f 100644
--- a/korganizer/kotodoview.cpp
+++ b/korganizer/kotodoview.cpp
@@ -576,419 +576,421 @@ KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) :
576 connect(mTodoListView,SIGNAL(clicked(QListViewItem *)), 576 connect(mTodoListView,SIGNAL(clicked(QListViewItem *)),
577 SLOT(selectionChanged(QListViewItem *))); 577 SLOT(selectionChanged(QListViewItem *)));
578 connect(mTodoListView,SIGNAL(pressed(QListViewItem *)), 578 connect(mTodoListView,SIGNAL(pressed(QListViewItem *)),
579 SLOT(selectionChanged(QListViewItem *))); 579 SLOT(selectionChanged(QListViewItem *)));
580#endif 580#endif
581 581
582 connect( mTodoListView, SIGNAL(reparentTodoSignal( Todo *,Todo * ) ), SIGNAL(reparentTodoSignal( Todo *,Todo * ) )); 582 connect( mTodoListView, SIGNAL(reparentTodoSignal( Todo *,Todo * ) ), SIGNAL(reparentTodoSignal( Todo *,Todo * ) ));
583 connect( mTodoListView, SIGNAL(unparentTodoSignal(Todo *) ), SIGNAL(unparentTodoSignal(Todo *) )); 583 connect( mTodoListView, SIGNAL(unparentTodoSignal(Todo *) ), SIGNAL(unparentTodoSignal(Todo *) ));
584 connect( mTodoListView, SIGNAL( deleteTodo(Todo *) ), SIGNAL(deleteTodoSignal(Todo *) )); 584 connect( mTodoListView, SIGNAL( deleteTodo(Todo *) ), SIGNAL(deleteTodoSignal(Todo *) ));
585 585
586 connect( mTodoListView, SIGNAL(selectionChanged() ), 586 connect( mTodoListView, SIGNAL(selectionChanged() ),
587 SLOT( processSelectionChange() ) ); 587 SLOT( processSelectionChange() ) );
588 connect( mQuickAdd, SIGNAL( returnPressed () ), 588 connect( mQuickAdd, SIGNAL( returnPressed () ),
589 SLOT( addQuickTodo() ) ); 589 SLOT( addQuickTodo() ) );
590 590
591} 591}
592 592
593KOTodoView::~KOTodoView() 593KOTodoView::~KOTodoView()
594{ 594{
595 595
596#if QT_VERSION >= 0x030000 596#if QT_VERSION >= 0x030000
597 597
598#else 598#else
599 delete mKOTodoViewWhatsThis; 599 delete mKOTodoViewWhatsThis;
600#endif 600#endif
601 601
602 delete mDocPrefs; 602 delete mDocPrefs;
603} 603}
604QString KOTodoView::getWhatsThisText(QPoint p) 604QString KOTodoView::getWhatsThisText(QPoint p)
605{ 605{
606 KOTodoViewItem* item = ( KOTodoViewItem* ) mTodoListView->itemAt( p ); 606 KOTodoViewItem* item = ( KOTodoViewItem* ) mTodoListView->itemAt( p );
607 if ( item ) 607 if ( item )
608 return KIncidenceFormatter::instance()->getFormattedText( item->todo(), 608 return KIncidenceFormatter::instance()->getFormattedText( item->todo(),
609 KOPrefs::instance()->mWTshowDetails, 609 KOPrefs::instance()->mWTshowDetails,
610 KOPrefs::instance()->mWTshowCreated, 610 KOPrefs::instance()->mWTshowCreated,
611 KOPrefs::instance()->mWTshowChanged); 611 KOPrefs::instance()->mWTshowChanged);
612 return i18n("That is the todo view" ); 612 return i18n("That is the todo view" );
613 613
614} 614}
615 615
616void KOTodoView::jumpToDate () 616void KOTodoView::jumpToDate ()
617{ 617{
618 // if (mActiveItem) { 618 // if (mActiveItem) {
619// mActiveItem->todo()); 619// mActiveItem->todo());
620// if ( mActiveItem->todo()->hasDueDate() ) 620// if ( mActiveItem->todo()->hasDueDate() )
621// emit mActiveItem->todo()jumpToTime( mTodo->dtDue().date() ); 621// emit mActiveItem->todo()jumpToTime( mTodo->dtDue().date() );
622} 622}
623void KOTodoView::paintNeeded() 623void KOTodoView::paintNeeded()
624{ 624{
625 if ( mPendingUpdateBeforeRepaint ) { 625 if ( mPendingUpdateBeforeRepaint ) {
626 updateView(); 626 updateView();
627 mPendingUpdateBeforeRepaint = false; 627 mPendingUpdateBeforeRepaint = false;
628 } 628 }
629} 629}
630void KOTodoView::paintEvent(QPaintEvent * pevent) 630void KOTodoView::paintEvent(QPaintEvent * pevent)
631{ 631{
632 if ( mPendingUpdateBeforeRepaint ) { 632 if ( mPendingUpdateBeforeRepaint ) {
633 updateView(); 633 updateView();
634 mPendingUpdateBeforeRepaint = false; 634 mPendingUpdateBeforeRepaint = false;
635 } 635 }
636 KOrg::BaseView::paintEvent( pevent); 636 KOrg::BaseView::paintEvent( pevent);
637} 637}
638 638
639void KOTodoView::updateView() 639void KOTodoView::updateView()
640{ 640{
641 pendingSubtodo = 0; 641 pendingSubtodo = 0;
642 if ( mBlockUpdate ) { 642 if ( mBlockUpdate ) {
643 return; 643 return;
644 } 644 }
645 if ( !isVisible() ) { 645 if ( !isVisible() ) {
646 mPendingUpdateBeforeRepaint = true; 646 mPendingUpdateBeforeRepaint = true;
647 return; 647 return;
648 } 648 }
649 storeCurrentItem(); 649 storeCurrentItem();
650 //qDebug("KOTodoView::updateView() %x", this); 650 //qDebug("KOTodoView::updateView() %x", this);
651 if ( isFlatDisplay ) { 651 if ( isFlatDisplay ) {
652 displayAllFlat(); 652 displayAllFlat();
653 resetCurrentItem(); 653 resetCurrentItem();
654 return; 654 return;
655 } 655 }
656 //qDebug("update "); 656 //qDebug("update ");
657// kdDebug() << "KOTodoView::updateView()" << endl; 657// kdDebug() << "KOTodoView::updateView()" << endl;
658 QFont fo = KOPrefs::instance()->mTodoViewFont; 658 QFont fo = KOPrefs::instance()->mTodoViewFont;
659 659
660 660
661 mTodoListView->clear(); 661 mTodoListView->clear();
662 if ( mName == "todolistsmall" ) { 662 if ( mName == "todolistsmall" ) {
663 if ( KOPrefs::instance()->mTodoViewUsesSmallFont ) { 663 if ( KOPrefs::instance()->mTodoViewUsesSmallFont ) {
664 int ps = fo.pointSize() -2; 664 int ps = fo.pointSize() -2;
665 if ( ps > 12 ) 665 if ( ps > 12 )
666 ps -= 2; 666 ps -= 2;
667 fo.setPointSize( ps ); 667 fo.setPointSize( ps );
668 } 668 }
669 } 669 }
670 670
671 mTodoListView->setFont( fo ); 671 mTodoListView->setFont( fo );
672 // QFontMetrics fm ( KOPrefs::instance()->mTodoViewFont ); 672 // QFontMetrics fm ( KOPrefs::instance()->mTodoViewFont );
673 //mTodoListView->header()->setMaximumHeight(fm.height()); 673 //mTodoListView->header()->setMaximumHeight(fm.height());
674 QPtrList<Todo> todoList = calendar()->todos(); 674 QPtrList<Todo> todoList = calendar()->todos();
675 675
676/* 676/*
677 kdDebug() << "KOTodoView::updateView(): Todo List:" << endl; 677 kdDebug() << "KOTodoView::updateView(): Todo List:" << endl;
678 Event *t; 678 Event *t;
679 for(t = todoList.first(); t; t = todoList.next()) { 679 for(t = todoList.first(); t; t = todoList.next()) {
680 kdDebug() << " " << t->getSummary() << endl; 680 kdDebug() << " " << t->getSummary() << endl;
681 681
682 if (t->getRelatedTo()) { 682 if (t->getRelatedTo()) {
683 kdDebug() << " (related to " << t->getRelatedTo()->getSummary() << ")" << endl; 683 kdDebug() << " (related to " << t->getRelatedTo()->getSummary() << ")" << endl;
684 } 684 }
685 685
686 QPtrList<Event> l = t->getRelations(); 686 QPtrList<Event> l = t->getRelations();
687 Event *c; 687 Event *c;
688 for(c=l.first();c;c=l.next()) { 688 for(c=l.first();c;c=l.next()) {
689 kdDebug() << " - relation: " << c->getSummary() << endl; 689 kdDebug() << " - relation: " << c->getSummary() << endl;
690 } 690 }
691 } 691 }
692*/ 692*/
693 693
694 // Put for each Event a KOTodoViewItem in the list view. Don't rely on a 694 // Put for each Event a KOTodoViewItem in the list view. Don't rely on a
695 // specific order of events. That means that we have to generate parent items 695 // specific order of events. That means that we have to generate parent items
696 // recursively for proper hierarchical display of Todos. 696 // recursively for proper hierarchical display of Todos.
697 mTodoMap.clear(); 697 mTodoMap.clear();
698 Todo *todo; 698 Todo *todo;
699 todo = todoList.first();// todo; todo = todoList.next()) { 699 todo = todoList.first();// todo; todo = todoList.next()) {
700 while ( todo ) { 700 while ( todo ) {
701 bool next = true; 701 bool next = true;
702 // qDebug("todo %s ", todo->summary().latin1()); 702 // qDebug("todo %s ", todo->summary().latin1());
703 Incidence *incidence = todo->relatedTo(); 703 Incidence *incidence = todo->relatedTo();
704 while ( incidence ) { 704 while ( incidence ) {
705 if ( incidence->typeID() == todoID ) { 705 if ( incidence->typeID() == todoID ) {
706 //qDebug("related %s ",incidence->summary().latin1() ); 706 //qDebug("related %s ",incidence->summary().latin1() );
707 if ( !(todoList.contains ( ((Todo* )incidence ) ) )) { 707 if ( !(todoList.contains ( ((Todo* )incidence ) ) ) && incidence->calEnabled() ) {
708 //qDebug("related not found "); 708 //qDebug("related not found ");
709 todoList.remove( ); 709 todoList.remove( );
710 todo = todoList.current(); 710 todo = todoList.current();
711 next = false; 711 next = false;
712 incidence = 0; 712 incidence = 0;
713 713
714 } else { 714 } else {
715 //qDebug("related found "); 715 //qDebug("related found ");
716 incidence = incidence->relatedTo(); 716 incidence = incidence->relatedTo();
717 } 717 }
718 } else 718 } else
719 incidence = 0; 719 incidence = 0;
720 } 720 }
721 if ( next ) 721 if ( next )
722 todo = todoList.next(); 722 todo = todoList.next();
723 } 723 }
724 724
725 for(todo = todoList.first(); todo; todo = todoList.next()) { 725 for(todo = todoList.first(); todo; todo = todoList.next()) {
726 if (!mTodoMap.contains(todo) && checkTodo( todo ) ) 726 if (!mTodoMap.contains(todo) && checkTodo( todo ) )
727 { 727 {
728 insertTodoItem(todo); 728 insertTodoItem(todo);
729 } 729 }
730 } 730 }
731 // Restore opened/closed state 731 // Restore opened/closed state
732 mTodoListView->blockSignals( true ); 732 mTodoListView->blockSignals( true );
733 if( mDocPrefs ) restoreItemState( mTodoListView->firstChild() ); 733 if( mDocPrefs ) restoreItemState( mTodoListView->firstChild() );
734 mTodoListView->blockSignals( false ); 734 mTodoListView->blockSignals( false );
735 resetCurrentItem(); 735 resetCurrentItem();
736 processSelectionChange(); 736 processSelectionChange();
737} 737}
738 738
739void KOTodoView::storeCurrentItem() 739void KOTodoView::storeCurrentItem()
740{ 740{
741 mCurItem = 0; 741 mCurItem = 0;
742 mCurItemRootParent = 0; 742 mCurItemRootParent = 0;
743 mCurItemParent = 0; 743 mCurItemParent = 0;
744 mCurItemAbove = 0; 744 mCurItemAbove = 0;
745 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); 745 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem();
746 if (mActiveItem) { 746 if (mActiveItem) {
747 mCurItem = mActiveItem->todo(); 747 mCurItem = mActiveItem->todo();
748 KOTodoViewItem* activeItemAbove = (KOTodoViewItem*)mActiveItem->itemAbove (); 748 KOTodoViewItem* activeItemAbove = (KOTodoViewItem*)mActiveItem->itemAbove ();
749 if ( activeItemAbove ) 749 if ( activeItemAbove )
750 mCurItemAbove = activeItemAbove->todo(); 750 mCurItemAbove = activeItemAbove->todo();
751 mCurItemRootParent = mCurItem; 751 mCurItemRootParent = mCurItem;
752 mCurItemParent = mCurItemRootParent->relatedTo(); 752 mCurItemParent = mCurItemRootParent->relatedTo();
753 while ( mCurItemRootParent->relatedTo() != 0 ) 753 while ( mCurItemRootParent->relatedTo() != 0 )
754 mCurItemRootParent = mCurItemRootParent->relatedTo(); 754 mCurItemRootParent = mCurItemRootParent->relatedTo();
755 } 755 }
756 mActiveItem = 0; 756 mActiveItem = 0;
757} 757}
758 758
759void KOTodoView::resetCurrentItem() 759void KOTodoView::resetCurrentItem()
760{ 760{
761 mTodoListView->setFocus(); 761 mTodoListView->setFocus();
762 KOTodoViewItem* foundItem = 0; 762 KOTodoViewItem* foundItem = 0;
763 KOTodoViewItem* foundItemRoot = 0; 763 KOTodoViewItem* foundItemRoot = 0;
764 KOTodoViewItem* foundItemParent = 0; 764 KOTodoViewItem* foundItemParent = 0;
765 KOTodoViewItem* foundItemAbove = 0; 765 KOTodoViewItem* foundItemAbove = 0;
766 if ( mTodoListView->firstChild () ) { 766 if ( mTodoListView->firstChild () ) {
767 if ( mCurItem ) { 767 if ( mCurItem ) {
768 KOTodoViewItem* item = (KOTodoViewItem*)mTodoListView->firstChild (); 768 KOTodoViewItem* item = (KOTodoViewItem*)mTodoListView->firstChild ();
769 while ( item ) { 769 while ( item ) {
770 if ( item->todo() == mCurItem ) { 770 if ( item->todo() == mCurItem ) {
771 foundItem = item; 771 foundItem = item;
772 break; 772 break;
773 } else if ( item->todo() == mCurItemAbove ) { 773 } else if ( item->todo() == mCurItemAbove ) {
774 foundItemAbove = item; 774 foundItemAbove = item;
775 775
776 } 776 }
777 if ( item->todo() == mCurItemRootParent ) { 777 if ( item->todo() == mCurItemRootParent ) {
778 foundItemRoot = item; 778 foundItemRoot = item;
779 } 779 }
780 if ( item->todo() == mCurItemParent ) { 780 if ( item->todo() == mCurItemParent ) {
781 foundItemParent = item; 781 foundItemParent = item;
782 } 782 }
783 item = (KOTodoViewItem*)item->itemBelow(); 783 item = (KOTodoViewItem*)item->itemBelow();
784 } 784 }
785 if ( ! foundItem ) { 785 if ( ! foundItem ) {
786 if ( foundItemParent ) { 786 if ( foundItemParent ) {
787 foundItem = foundItemParent; 787 foundItem = foundItemParent;
788 } else { 788 } else {
789 if ( foundItemRoot ) 789 if ( foundItemRoot )
790 foundItem = foundItemRoot; 790 foundItem = foundItemRoot;
791 else 791 else
792 foundItem = foundItemAbove; 792 foundItem = foundItemAbove;
793 } 793 }
794 } 794 }
795 } 795 }
796 if ( foundItem ) { 796 if ( foundItem ) {
797 mTodoListView->setCurrentItem( foundItem ); 797 mTodoListView->setCurrentItem( foundItem );
798 mTodoListView->ensureItemVisible( foundItem ); 798 mTodoListView->ensureItemVisible( foundItem );
799 } else { 799 } else {
800 mTodoListView->setCurrentItem( mTodoListView->firstChild () ); 800 mTodoListView->setCurrentItem( mTodoListView->firstChild () );
801 } 801 }
802 } 802 }
803 mTodoListView->setFocus(); 803 mTodoListView->setFocus();
804} 804}
805//Incidence * mCurItem, *mCurItemRootParent,*mCurItemAbove; 805//Incidence * mCurItem, *mCurItemRootParent,*mCurItemAbove;
806bool KOTodoView::checkTodo( Todo * todo ) 806bool KOTodoView::checkTodo( Todo * todo )
807{ 807{
808 808
809 if ( !KOPrefs::instance()->mShowCompletedTodo && todo->isCompleted() ) 809 if ( !KOPrefs::instance()->mShowCompletedTodo && todo->isCompleted() )
810 return false; 810 return false;
811 if ( !todo->isCompleted() ) { 811 if ( !todo->isCompleted() ) {
812 if ( todo->hasDueDate() && todo->dtDue().date() <= QDate::currentDate() ) 812 if ( todo->hasDueDate() && todo->dtDue().date() <= QDate::currentDate() )
813 return true; 813 return true;
814 } 814 }
815 if ( KOPrefs::instance()->mHideNonStartedTodos && mNavigator ) { 815 if ( KOPrefs::instance()->mHideNonStartedTodos && mNavigator ) {
816 if ( todo->hasStartDate() ) 816 if ( todo->hasStartDate() )
817 if ( mNavigator->selectedDates().last() < todo->dtStart().date() ) 817 if ( mNavigator->selectedDates().last() < todo->dtStart().date() )
818 return false; 818 return false;
819 if ( todo->hasDueDate() ) 819 if ( todo->hasDueDate() )
820 if ( mNavigator->selectedDates().first() > todo->dtDue().date() ) 820 if ( mNavigator->selectedDates().first() > todo->dtDue().date() )
821 return false; 821 return false;
822 } 822 }
823 return true; 823 return true;
824} 824}
825 825
826void KOTodoView::restoreItemState( QListViewItem *item ) 826void KOTodoView::restoreItemState( QListViewItem *item )
827{ 827{
828 pendingSubtodo = 0; 828 pendingSubtodo = 0;
829 while( item ) { 829 while( item ) {
830 KOTodoViewItem *todoItem = (KOTodoViewItem *)item; 830 KOTodoViewItem *todoItem = (KOTodoViewItem *)item;
831 todoItem->setOpen( mDocPrefs->readBoolEntry( todoItem->todo()->uid() ) ); 831 todoItem->setOpen( mDocPrefs->readBoolEntry( todoItem->todo()->uid() ) );
832 if( item->childCount() > 0 ) restoreItemState( item->firstChild() ); 832 if( item->childCount() > 0 ) restoreItemState( item->firstChild() );
833 item = item->nextSibling(); 833 item = item->nextSibling();
834 } 834 }
835} 835}
836 836
837 837
838QMap<Todo *,KOTodoViewItem *>::ConstIterator 838QMap<Todo *,KOTodoViewItem *>::ConstIterator
839 KOTodoView::insertTodoItem(Todo *todo) 839KOTodoView::insertTodoItem(Todo *todo)
840{ 840{
841 841
842// kdDebug() << "KOTodoView::insertTodoItem(): " << todo->getSummary() << endl; 842 // kdDebug() << "KOTodoView::insertTodoItem(): " << todo->getSummary() << endl;
843 // TODO: Check, if dynmaic cast is necessary 843 // TODO: Check, if dynmaic cast is necessary
844 844
845 pendingSubtodo = 0; 845 pendingSubtodo = 0;
846 Incidence *incidence = todo->relatedTo(); 846 Incidence *incidence = todo->relatedTo();
847 if (incidence && incidence->typeID() == todoID ) { 847 while ( incidence && !incidence->calEnabled() )
848 Todo *relatedTodo = static_cast<Todo *>(incidence); 848 incidence = incidence->relatedTo();
849 849 if (incidence && incidence->typeID() == todoID ) {
850// kdDebug() << " has Related" << endl; 850 Todo *relatedTodo = static_cast<Todo *>(incidence);
851 QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator; 851
852 itemIterator = mTodoMap.find(relatedTodo); 852 // kdDebug() << " has Related" << endl;
853 if (itemIterator == mTodoMap.end()) { 853 QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator;
854// kdDebug() << " related not yet in list" << endl; 854 itemIterator = mTodoMap.find(relatedTodo);
855 itemIterator = insertTodoItem (relatedTodo); 855 if (itemIterator == mTodoMap.end()) {
856 // kdDebug() << " related not yet in list" << endl;
857 itemIterator = insertTodoItem (relatedTodo);
858 }
859 // isn't this pretty stupid? We give one Todo to the KOTodoViewItem
860 // and one into the map. Sure finding is more easy but why? -zecke
861 KOTodoViewItem *todoItem = new KOTodoViewItem(*itemIterator,todo,this);
862 return mTodoMap.insert(todo,todoItem);
863 } else {
864 // kdDebug() << " no Related" << endl;
865 // see above -zecke
866 KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this);
867 return mTodoMap.insert(todo,todoItem);
856 } 868 }
857 // isn't this pretty stupid? We give one Todo to the KOTodoViewItem
858 // and one into the map. Sure finding is more easy but why? -zecke
859 KOTodoViewItem *todoItem = new KOTodoViewItem(*itemIterator,todo,this);
860 return mTodoMap.insert(todo,todoItem);
861 } else {
862// kdDebug() << " no Related" << endl;
863 // see above -zecke
864 KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this);
865 return mTodoMap.insert(todo,todoItem);
866 }
867} 869}
868 870
869 871
870void KOTodoView::updateConfig() 872void KOTodoView::updateConfig()
871{ 873{
872 updateView(); 874 updateView();
873 mTodoListView->repaintContents(); 875 mTodoListView->repaintContents();
874} 876}
875 877
876QPtrList<Incidence> KOTodoView::selectedIncidences() 878QPtrList<Incidence> KOTodoView::selectedIncidences()
877{ 879{
878 QPtrList<Incidence> selected; 880 QPtrList<Incidence> selected;
879 881
880 KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem()); 882 KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem());
881// if (!item) item = mActiveItem; 883// if (!item) item = mActiveItem;
882 if (item) selected.append(item->todo()); 884 if (item) selected.append(item->todo());
883 885
884 return selected; 886 return selected;
885} 887}
886 888
887QPtrList<Todo> KOTodoView::selectedTodos() 889QPtrList<Todo> KOTodoView::selectedTodos()
888{ 890{
889 QPtrList<Todo> selected; 891 QPtrList<Todo> selected;
890 892
891 KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem()); 893 KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem());
892// if (!item) item = mActiveItem; 894// if (!item) item = mActiveItem;
893 if (item) selected.append(item->todo()); 895 if (item) selected.append(item->todo());
894 896
895 return selected; 897 return selected;
896} 898}
897 899
898void KOTodoView::changeEventDisplay(Event *, int) 900void KOTodoView::changeEventDisplay(Event *, int)
899{ 901{
900 updateView(); 902 updateView();
901} 903}
902 904
903void KOTodoView::showDates(const QDate &, const QDate &) 905void KOTodoView::showDates(const QDate &, const QDate &)
904{ 906{
905} 907}
906 908
907void KOTodoView::showEvents(QPtrList<Event>) 909void KOTodoView::showEvents(QPtrList<Event>)
908{ 910{
909 kdDebug() << "KOTodoView::selectEvents(): not yet implemented" << endl; 911 kdDebug() << "KOTodoView::selectEvents(): not yet implemented" << endl;
910} 912}
911 913
912void KOTodoView::printPreview(CalPrinter *calPrinter, const QDate &fd, 914void KOTodoView::printPreview(CalPrinter *calPrinter, const QDate &fd,
913 const QDate &td) 915 const QDate &td)
914{ 916{
915#ifndef KORG_NOPRINTER 917#ifndef KORG_NOPRINTER
916 calPrinter->preview(CalPrinter::Todolist, fd, td); 918 calPrinter->preview(CalPrinter::Todolist, fd, td);
917#endif 919#endif
918} 920}
919 921
920void KOTodoView::editItem(QListViewItem *item ) 922void KOTodoView::editItem(QListViewItem *item )
921{ 923{
922 emit editTodoSignal(((KOTodoViewItem *)item)->todo()); 924 emit editTodoSignal(((KOTodoViewItem *)item)->todo());
923} 925}
924 926
925void KOTodoView::showItem(QListViewItem *item,const QPoint &,int) 927void KOTodoView::showItem(QListViewItem *item,const QPoint &,int)
926{ 928{
927 emit showTodoSignal(((KOTodoViewItem *)item)->todo()); 929 emit showTodoSignal(((KOTodoViewItem *)item)->todo());
928} 930}
929 931
930void KOTodoView::popupMenu(QListViewItem *item,const QPoint &p,int column) 932void KOTodoView::popupMenu(QListViewItem *item,const QPoint &p,int column)
931{ 933{
932 pendingSubtodo = 0; 934 pendingSubtodo = 0;
933 mActiveItem = (KOTodoViewItem *)item; 935 mActiveItem = (KOTodoViewItem *)item;
934 if (item) { 936 if (item) {
935 switch (column){ 937 switch (column){
936 case 1: 938 case 1:
937 mPriorityPopupMenu->popup(QCursor::pos ()); break; 939 mPriorityPopupMenu->popup(QCursor::pos ()); break;
938 case 2: 940 case 2:
939 mPercentageCompletedPopupMenu->popup(QCursor::pos ()); break; 941 mPercentageCompletedPopupMenu->popup(QCursor::pos ()); break;
940 case 3: 942 case 3:
941 moveTodo(); 943 moveTodo();
942 break; 944 break;
943 case 8: 945 case 8:
944 getCategoryPopupMenu((KOTodoViewItem *)item)->popup(QCursor::pos ()); break; 946 getCategoryPopupMenu((KOTodoViewItem *)item)->popup(QCursor::pos ()); break;
945 default: 947 default:
946 mItemPopupMenu->popup(QCursor::pos()); 948 mItemPopupMenu->popup(QCursor::pos());
947 } 949 }
948 } else mPopupMenu->popup(QCursor::pos()); 950 } else mPopupMenu->popup(QCursor::pos());
949} 951}
950void KOTodoView::newTodo() 952void KOTodoView::newTodo()
951{ 953{
952 emit newTodoSignal(); 954 emit newTodoSignal();
953} 955}
954 956
955void KOTodoView::newSubTodo() 957void KOTodoView::newSubTodo()
956{ 958{
957 if (mActiveItem) { 959 if (mActiveItem) {
958 emit newSubTodoSignal(mActiveItem->todo()); 960 emit newSubTodoSignal(mActiveItem->todo());
959 } 961 }
960} 962}
961void KOTodoView::unparentTodo() 963void KOTodoView::unparentTodo()
962{ 964{
963 if (mActiveItem) { 965 if (mActiveItem) {
964 emit unparentTodoSignal(mActiveItem->todo()); 966 emit unparentTodoSignal(mActiveItem->todo());
965 } 967 }
966} 968}
967 969
968void KOTodoView::reparentTodo() 970void KOTodoView::reparentTodo()
969{ 971{
970 if (mActiveItem) { 972 if (mActiveItem) {
971 topLevelWidget()->setCaption(i18n("Click on new parent item")); 973 topLevelWidget()->setCaption(i18n("Click on new parent item"));
972 pendingSubtodo = mActiveItem; 974 pendingSubtodo = mActiveItem;
973 } 975 }
974} 976}
975void KOTodoView::editTodo() 977void KOTodoView::editTodo()
976{ 978{
977 if (mActiveItem) { 979 if (mActiveItem) {
978 emit editTodoSignal(mActiveItem->todo()); 980 emit editTodoSignal(mActiveItem->todo());
979 } 981 }
980} 982}
981void KOTodoView::cloneTodo() 983void KOTodoView::cloneTodo()
982{ 984{
983 if (mActiveItem) { 985 if (mActiveItem) {
984 emit cloneTodoSignal((Incidence*)mActiveItem->todo()); 986 emit cloneTodoSignal((Incidence*)mActiveItem->todo());
985 } 987 }
986} 988}
987void KOTodoView::cancelTodo() 989void KOTodoView::cancelTodo()
988{ 990{
989 if (mActiveItem) { 991 if (mActiveItem) {
990 emit cancelTodoSignal((Incidence*)mActiveItem->todo()); 992 emit cancelTodoSignal((Incidence*)mActiveItem->todo());
991 } 993 }
992} 994}
993void KOTodoView::moveTodo() 995void KOTodoView::moveTodo()
994{ 996{
diff --git a/korganizer/kotodoviewitem.cpp b/korganizer/kotodoviewitem.cpp
index 8cb6b83..f987b63 100644
--- a/korganizer/kotodoviewitem.cpp
+++ b/korganizer/kotodoviewitem.cpp
@@ -70,257 +70,257 @@ void KOTodoViewItem::paintBranches(QPainter *p,const QColorGroup & cg,int w,
70 int y,int h) 70 int y,int h)
71{ 71{
72 QListViewItem::paintBranches(p,cg,w,y,h); 72 QListViewItem::paintBranches(p,cg,w,y,h);
73} 73}
74#else 74#else
75#endif 75#endif
76 76
77void KOTodoViewItem::construct() 77void KOTodoViewItem::construct()
78{ 78{
79 // qDebug("KOTodoViewItem::construct() "); 79 // qDebug("KOTodoViewItem::construct() ");
80 m_init = true; 80 m_init = true;
81 QString keyd = "=="; 81 QString keyd = "==";
82 QString keyt = "=="; 82 QString keyt = "==";
83 QString skeyd = "=="; 83 QString skeyd = "==";
84 QString skeyt = "=="; 84 QString skeyt = "==";
85 85
86 setOn(mTodo->isCompleted()); 86 setOn(mTodo->isCompleted());
87 setText(0,mTodo->summary()); 87 setText(0,mTodo->summary());
88 setText(1,QString::number(mTodo->priority())); 88 setText(1,QString::number(mTodo->priority()));
89 setText(2,i18n("%1 %").arg(QString::number(mTodo->percentComplete()))); 89 setText(2,i18n("%1 %").arg(QString::number(mTodo->percentComplete())));
90 if (mTodo->percentComplete()<100) { 90 if (mTodo->percentComplete()<100) {
91 if (mTodo->isCompleted()) setSortKey(2,QString::number(999)); 91 if (mTodo->isCompleted()) setSortKey(2,QString::number(999));
92 else setSortKey(2,QString::number(mTodo->percentComplete())); 92 else setSortKey(2,QString::number(mTodo->percentComplete()));
93 } 93 }
94 else { 94 else {
95 if (mTodo->isCompleted()) setSortKey(2,QString::number(999)); 95 if (mTodo->isCompleted()) setSortKey(2,QString::number(999));
96 else setSortKey(2,QString::number(99)); 96 else setSortKey(2,QString::number(99));
97 } 97 }
98 if (mTodo->hasDueDate()) { 98 if (mTodo->hasDueDate()) {
99 setText(3, mTodo->dtDueDateStr()); 99 setText(3, mTodo->dtDueDateStr());
100 QDate d = mTodo->dtDue().date(); 100 QDate d = mTodo->dtDue().date();
101 keyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); 101 keyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day());
102 // setSortKey(3,keyd); 102 // setSortKey(3,keyd);
103 if (mTodo->doesFloat()) { 103 if (mTodo->doesFloat()) {
104 setText(4,""); 104 setText(4,"");
105 } 105 }
106 else { 106 else {
107 setText(4,mTodo->dtDueTimeStr()); 107 setText(4,mTodo->dtDueTimeStr());
108 QTime t = mTodo->dtDue().time(); 108 QTime t = mTodo->dtDue().time();
109 keyt.sprintf("%02d%02d",t.hour(),t.minute()); 109 keyt.sprintf("%02d%02d",t.hour(),t.minute());
110 //setSortKey(4,keyt); 110 //setSortKey(4,keyt);
111 } 111 }
112 } else { 112 } else {
113 setText(3,""); 113 setText(3,"");
114 setText(4,""); 114 setText(4,"");
115 } 115 }
116 setSortKey(3,keyd); 116 setSortKey(3,keyd);
117 setSortKey(4,keyt); 117 setSortKey(4,keyt);
118 118
119 if (mTodo->isCompleted()) setSortKey(1,"6" + QString::number(mTodo->priority())+keyd+keyt); 119 if (mTodo->isCompleted()) setSortKey(1,"6" + QString::number(mTodo->priority())+keyd+keyt);
120 else setSortKey(1,QString::number(mTodo->priority())+keyd+keyt); 120 else setSortKey(1,QString::number(mTodo->priority())+keyd+keyt);
121 121
122 122
123 123
124 keyd = ""; 124 keyd = "";
125 keyt = ""; 125 keyt = "";
126 126
127 if (mTodo->isRunning() ) { 127 if (mTodo->isRunning() ) {
128 QDate d = mTodo->runStart().date(); 128 QDate d = mTodo->runStart().date();
129 QTime t = mTodo->runStart().time(); 129 QTime t = mTodo->runStart().time();
130 skeyt.sprintf("%02d%02d",t.hour(),t.minute()); 130 skeyt.sprintf("%02d%02d",t.hour(),t.minute());
131 skeyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); 131 skeyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day());
132 keyd = KGlobal::locale()->formatDate( d , true); 132 keyd = KGlobal::locale()->formatDate( d , true);
133 keyt = KGlobal::locale()->formatTime( t ); 133 keyt = KGlobal::locale()->formatTime( t );
134 134
135 } else { 135 } else {
136 136
137 if (mTodo->hasStartDate()) { 137 if (mTodo->hasStartDate()) {
138 keyd = mTodo->dtStartDateStr(); 138 keyd = mTodo->dtStartDateStr();
139 QDate d = mTodo->dtStart().date(); 139 QDate d = mTodo->dtStart().date();
140 skeyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); 140 skeyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day());
141 141
142 if ( !mTodo->doesFloat()) { 142 if ( !mTodo->doesFloat()) {
143 keyt = mTodo->dtStartTimeStr(); 143 keyt = mTodo->dtStartTimeStr();
144 QTime t = mTodo->dtStart().time(); 144 QTime t = mTodo->dtStart().time();
145 skeyt.sprintf("%02d%02d",t.hour(),t.minute()); 145 skeyt.sprintf("%02d%02d",t.hour(),t.minute());
146 146
147 } 147 }
148 148
149 } 149 }
150 } 150 }
151 setText(5,keyd); 151 setText(5,keyd);
152 setText(6,keyt); 152 setText(6,keyt);
153 setSortKey(5,skeyd); 153 setSortKey(5,skeyd);
154 setSortKey(6,skeyt); 154 setSortKey(6,skeyt);
155 155
156 setText(7,mTodo->cancelled() ? i18n("Yes") : i18n("No")); 156 setText(7,mTodo->cancelled() ? i18n("Yes") : i18n("No"));
157 setText(8,mTodo->categoriesStr()); 157 setText(8,mTodo->categoriesStr());
158 158
159#if 0 159#if 0
160 // Find sort id in description. It's the text behind the last '#' character 160 // Find sort id in description. It's the text behind the last '#' character
161 // found in the description. White spaces are removed from beginning and end 161 // found in the description. White spaces are removed from beginning and end
162 // of sort id. 162 // of sort id.
163 int pos = mTodo->description().findRev('#'); 163 int pos = mTodo->description().findRev('#');
164 if (pos < 0) { 164 if (pos < 0) {
165 setText(6,""); 165 setText(6,"");
166 } else { 166 } else {
167 QString str = mTodo->description().mid(pos+1); 167 QString str = mTodo->description().mid(pos+1);
168 str.stripWhiteSpace(); 168 str.stripWhiteSpace();
169 setText(6,str); 169 setText(6,str);
170 } 170 }
171#endif 171#endif
172 172
173 m_known = false; 173 m_known = false;
174 m_init = false; 174 m_init = false;
175 175
176 setMyPixmap(); 176 setMyPixmap();
177 177
178} 178}
179void KOTodoViewItem::setMyPixmap() 179void KOTodoViewItem::setMyPixmap()
180{ 180{
181 int size = 5; 181 int size = 5;
182 QPixmap pixi = QPixmap( 1, 1 ); 182 QPixmap pixi = QPixmap( 1, 1 );
183 // if ( !mTodo->isCompleted() && mTodo->hasDueDate() && mTodo->dtDue() < QDateTime::currentDateTime() ) { 183 // if ( !mTodo->isCompleted() && mTodo->hasDueDate() && mTodo->dtDue() < QDateTime::currentDateTime() ) {
184// pixi = SmallIcon("redcross16"); 184// pixi = SmallIcon("redcross16");
185// } else { 185// } else {
186 QPainter p; 186 QPainter p;
187 187
188 int pixSize = 0; 188 int pixSize = 0;
189 QPixmap pPix = QPixmap( size, size ); 189 QPixmap pPix = QPixmap( size, size );
190 if ( mTodo->description().length() > 0 ) { 190 if ( mTodo->description().length() > 0 ) {
191 pixi.resize(size, pixSize+size); 191 pixi.resize(size, pixSize+size);
192 pPix.fill( Qt::darkGreen ); 192 pPix.fill( Qt::darkGreen );
193 p.begin( &pixi ); 193 p.begin( &pixi );
194 p. drawPixmap ( 0, pixSize, pPix); 194 p. drawPixmap ( 0, pixSize, pPix);
195 p.end(); 195 p.end();
196 pixSize += size; 196 pixSize += size;
197 } 197 }
198 if ( mTodo->isAlarmEnabled() ) { 198 if ( mTodo->isAlarmEnabled() && mTodo->alarmEnabled()) {
199 pixi.resize(size, pixSize+size); 199 pixi.resize(size, pixSize+size);
200 pPix.fill( Qt::red ); 200 pPix.fill( Qt::red );
201 p.begin( &pixi ); 201 p.begin( &pixi );
202 p. drawPixmap ( 0, pixSize, pPix); 202 p. drawPixmap ( 0, pixSize, pPix);
203 p.end(); 203 p.end();
204 pixSize += size; 204 pixSize += size;
205 } 205 }
206 if ( mTodo->doesRecur() ) { 206 if ( mTodo->doesRecur() ) {
207 pixi.resize(size, pixSize+size); 207 pixi.resize(size, pixSize+size);
208 pPix.fill( Qt::blue ); 208 pPix.fill( Qt::blue );
209 p.begin( &pixi ); 209 p.begin( &pixi );
210 p. drawPixmap ( 0, pixSize, pPix); 210 p. drawPixmap ( 0, pixSize, pPix);
211 p.end(); 211 p.end();
212 pixSize += size; 212 pixSize += size;
213 } 213 }
214 // } 214 // }
215 if ( pixi.width() > 1 ) { 215 if ( pixi.width() > 1 ) {
216 setPixmap ( 0,pixi ) ; 216 setPixmap ( 0,pixi ) ;
217 } else { 217 } else {
218 setPixmap ( 0,QPixmap() ) ; 218 setPixmap ( 0,QPixmap() ) ;
219 } 219 }
220} 220}
221void KOTodoViewItem::stateChange(bool state) 221void KOTodoViewItem::stateChange(bool state)
222{ 222{
223 // qDebug("KOTodoViewItem::stateChange %d ", state); 223 // qDebug("KOTodoViewItem::stateChange %d ", state);
224 // do not change setting on startup 224 // do not change setting on startup
225 if ( m_init ) return; 225 if ( m_init ) return;
226 if (isOn()!=state) { 226 if (isOn()!=state) {
227 setOn(state); 227 setOn(state);
228 //qDebug("SETON "); 228 //qDebug("SETON ");
229 return; 229 return;
230 } 230 }
231 if ( mTodo->isCompleted() == state ) { 231 if ( mTodo->isCompleted() == state ) {
232 //qDebug("STATECHANGE:nothing to do "); 232 //qDebug("STATECHANGE:nothing to do ");
233 return; 233 return;
234 } 234 }
235 QString keyd = "=="; 235 QString keyd = "==";
236 QString keyt = "=="; 236 QString keyt = "==";
237 //qDebug("KOTodoViewItem::stateChange %s ", text(0).latin1()); 237 //qDebug("KOTodoViewItem::stateChange %s ", text(0).latin1());
238 if ( mTodo->doesRecur() ){ 238 if ( mTodo->doesRecur() ){
239 QDateTime start = mTodo->dtStart(); 239 QDateTime start = mTodo->dtStart();
240 mTodo->setCompleted(state); 240 mTodo->setCompleted(state);
241 if ( start != mTodo->dtStart() ) { 241 if ( start != mTodo->dtStart() ) {
242 if ( state && !mTodo->isCompleted() ) { 242 if ( state && !mTodo->isCompleted() ) {
243 setOn( false ); 243 setOn( false );
244 state = false; 244 state = false;
245 } 245 }
246 } 246 }
247 } else 247 } else
248 mTodo->setCompleted(state); 248 mTodo->setCompleted(state);
249 249
250 if (state) mTodo->setCompleted(QDateTime::currentDateTime()); 250 if (state) mTodo->setCompleted(QDateTime::currentDateTime());
251 251
252 if (mTodo->hasDueDate()) { 252 if (mTodo->hasDueDate()) {
253 setText(3, mTodo->dtDueDateStr()); 253 setText(3, mTodo->dtDueDateStr());
254 QDate d = mTodo->dtDue().date(); 254 QDate d = mTodo->dtDue().date();
255 keyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); 255 keyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day());
256 setSortKey(3,keyd); 256 setSortKey(3,keyd);
257 if (mTodo->doesFloat()) { 257 if (mTodo->doesFloat()) {
258 setText(4,""); 258 setText(4,"");
259 } 259 }
260 else { 260 else {
261 setText(4,mTodo->dtDueTimeStr()); 261 setText(4,mTodo->dtDueTimeStr());
262 QTime t = mTodo->dtDue().time(); 262 QTime t = mTodo->dtDue().time();
263 keyt.sprintf("%02d%02d",t.hour(),t.minute()); 263 keyt.sprintf("%02d%02d",t.hour(),t.minute());
264 setSortKey(4,keyt); 264 setSortKey(4,keyt);
265 } 265 }
266 } 266 }
267 if (mTodo->hasStartDate()) { 267 if (mTodo->hasStartDate()) {
268 QString skeyt = "=="; 268 QString skeyt = "==";
269 QString skeyd = "=="; 269 QString skeyd = "==";
270 setText(5, mTodo->dtStartDateStr()); 270 setText(5, mTodo->dtStartDateStr());
271 QDate d = mTodo->dtStart().date(); 271 QDate d = mTodo->dtStart().date();
272 skeyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); 272 skeyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day());
273 273
274 if (mTodo->doesFloat()) { 274 if (mTodo->doesFloat()) {
275 setText(6,""); 275 setText(6,"");
276 } 276 }
277 else { 277 else {
278 setText(6,mTodo->dtStartTimeStr()); 278 setText(6,mTodo->dtStartTimeStr());
279 QTime t = mTodo->dtStart().time(); 279 QTime t = mTodo->dtStart().time();
280 skeyt.sprintf("%02d%02d",t.hour(),t.minute()); 280 skeyt.sprintf("%02d%02d",t.hour(),t.minute());
281 281
282 } 282 }
283 setSortKey(5,skeyd); 283 setSortKey(5,skeyd);
284 setSortKey(6,skeyt); 284 setSortKey(6,skeyt);
285 } 285 }
286 if (mTodo->isCompleted()) setSortKey(1,QString::number(9)+keyd+keyt); 286 if (mTodo->isCompleted()) setSortKey(1,QString::number(9)+keyd+keyt);
287 else setSortKey(1,QString::number(mTodo->priority())+keyd+keyt); 287 else setSortKey(1,QString::number(mTodo->priority())+keyd+keyt);
288 288
289 setText(2,i18n("%1 %").arg(QString::number(mTodo->percentComplete()))); 289 setText(2,i18n("%1 %").arg(QString::number(mTodo->percentComplete())));
290 if (mTodo->percentComplete()<100) { 290 if (mTodo->percentComplete()<100) {
291 if (mTodo->isCompleted()) setSortKey(2,QString::number(999)); 291 if (mTodo->isCompleted()) setSortKey(2,QString::number(999));
292 else setSortKey(2,QString::number(mTodo->percentComplete())); 292 else setSortKey(2,QString::number(mTodo->percentComplete()));
293 } 293 }
294 else { 294 else {
295 if (mTodo->isCompleted()) setSortKey(2,QString::number(999)); 295 if (mTodo->isCompleted()) setSortKey(2,QString::number(999));
296 else setSortKey(2,QString::number(99)); 296 else setSortKey(2,QString::number(99));
297 } 297 }
298 if ( state ) { 298 if ( state ) {
299 QListViewItem * myChild = firstChild(); 299 QListViewItem * myChild = firstChild();
300 KOTodoViewItem *item; 300 KOTodoViewItem *item;
301 while( myChild ) { 301 while( myChild ) {
302 //qDebug("stateCH "); 302 //qDebug("stateCH ");
303 item = static_cast<KOTodoViewItem*>(myChild); 303 item = static_cast<KOTodoViewItem*>(myChild);
304 item->stateChange(state); 304 item->stateChange(state);
305 myChild = myChild->nextSibling(); 305 myChild = myChild->nextSibling();
306 } 306 }
307 } else { 307 } else {
308 QListViewItem * myChild = parent(); 308 QListViewItem * myChild = parent();
309 if ( myChild ) 309 if ( myChild )
310 (static_cast<KOTodoViewItem*>(myChild))->stateChange(state); 310 (static_cast<KOTodoViewItem*>(myChild))->stateChange(state);
311 } 311 }
312 mTodoView->modified(true); 312 mTodoView->modified(true);
313 setMyPixmap(); 313 setMyPixmap();
314 mTodoView->setTodoModified( mTodo ); 314 mTodoView->setTodoModified( mTodo );
315} 315}
316 316
317bool KOTodoViewItem::isAlternate() 317bool KOTodoViewItem::isAlternate()
318{ 318{
319 319
320 KOTodoListView *lv = static_cast<KOTodoListView *>(listView()); 320 KOTodoListView *lv = static_cast<KOTodoListView *>(listView());
321 if (lv && lv->alternateBackground().isValid()) 321 if (lv && lv->alternateBackground().isValid())
322 { 322 {
323 KOTodoViewItem *above = 0; 323 KOTodoViewItem *above = 0;
324 above = static_cast<KOTodoViewItem *>(itemAbove()); 324 above = static_cast<KOTodoViewItem *>(itemAbove());
325 m_known = above ? above->m_known : true; 325 m_known = above ? above->m_known : true;
326 if (m_known) 326 if (m_known)
diff --git a/korganizer/kowhatsnextview.cpp b/korganizer/kowhatsnextview.cpp
index e8574a0..221debc 100644
--- a/korganizer/kowhatsnextview.cpp
+++ b/korganizer/kowhatsnextview.cpp
@@ -470,320 +470,320 @@ void KOWhatsNextView::changeEventDisplay(Event *, int action)
470 case KOGlobals::EVENTDELETED: 470 case KOGlobals::EVENTDELETED:
471 updateView(); 471 updateView();
472 break; 472 break;
473 default: 473 default:
474 updateView(); 474 updateView();
475 kdDebug() << "KOWhatsNextView::changeEventDisplay(): Illegal action " << action << endl; 475 kdDebug() << "KOWhatsNextView::changeEventDisplay(): Illegal action " << action << endl;
476 } 476 }
477} 477}
478 478
479bool KOWhatsNextView::appendEvent(Incidence *ev, bool reply, bool notRed, bool appendTable ) 479bool KOWhatsNextView::appendEvent(Incidence *ev, bool reply, bool notRed, bool appendTable )
480{ 480{
481 if ( !KOPrefs::instance()->mShowSyncEvents && ev->uid().left(15) == QString("last-syncEvent-") ) 481 if ( !KOPrefs::instance()->mShowSyncEvents && ev->uid().left(15) == QString("last-syncEvent-") )
482 return false; 482 return false;
483 QDateTime cdt = QDateTime::currentDateTime(); 483 QDateTime cdt = QDateTime::currentDateTime();
484 QDateTime noc; 484 QDateTime noc;
485 QString tempText; 485 QString tempText;
486 if ( appendTable && !notRed ) { 486 if ( appendTable && !notRed ) {
487 tempText = "<table>"; 487 tempText = "<table>";
488 } 488 }
489 bool ok = true; 489 bool ok = true;
490 if ( reply ) { 490 if ( reply ) {
491 noc = ev->getNextOccurence( cdt, &ok ); 491 noc = ev->getNextOccurence( cdt, &ok );
492 if (! ok && ev->typeID() == eventID) 492 if (! ok && ev->typeID() == eventID)
493 return false; 493 return false;
494 } 494 }
495 bool bDay = false; 495 bool bDay = false;
496 if ( ev->isBirthday() || ev->isAnniversary() ) 496 if ( ev->isBirthday() || ev->isAnniversary() )
497 bDay = true; 497 bDay = true;
498 tempText += "<tr><td><b>"; 498 tempText += "<tr><td><b>";
499 if (ev->typeID() == eventID ) { 499 if (ev->typeID() == eventID ) {
500 if (reply) { 500 if (reply) {
501 if (!ev->doesFloat()) 501 if (!ev->doesFloat())
502 tempText += KGlobal::locale()->formatDateTime( noc , KOPrefs::instance()->mShortDateInViewer) +": "; 502 tempText += KGlobal::locale()->formatDateTime( noc , KOPrefs::instance()->mShortDateInViewer) +": ";
503 else 503 else
504 tempText += KGlobal::locale()->formatDate( noc.date() , KOPrefs::instance()->mShortDateInViewer) +": "; 504 tempText += KGlobal::locale()->formatDate( noc.date() , KOPrefs::instance()->mShortDateInViewer) +": ";
505 505
506 } else { 506 } else {
507 if (!ev->doesFloat()) { 507 if (!ev->doesFloat()) {
508 Event *event = static_cast<Event *>(ev); 508 Event *event = static_cast<Event *>(ev);
509 QDateTime st,end; 509 QDateTime st,end;
510 if ( event->recurrence()->doesRecur() ) { 510 if ( event->recurrence()->doesRecur() ) {
511 QDate recDate= mEventDate; 511 QDate recDate= mEventDate;
512 int days = event->dtStart().date().daysTo (event->dtEnd().date() ); 512 int days = event->dtStart().date().daysTo (event->dtEnd().date() );
513 while ( ! event->recursOn( recDate ) ) { 513 while ( ! event->recursOn( recDate ) ) {
514 recDate = recDate.addDays( -1 ); 514 recDate = recDate.addDays( -1 );
515 515
516 } 516 }
517 st = QDateTime ( recDate, event->dtStart().time() ); 517 st = QDateTime ( recDate, event->dtStart().time() );
518 end = QDateTime ( recDate.addDays( days ), event->dtEnd().time() ); 518 end = QDateTime ( recDate.addDays( days ), event->dtEnd().time() );
519 } 519 }
520 else { 520 else {
521 st = event->dtStart(); 521 st = event->dtStart();
522 end = event->dtEnd(); 522 end = event->dtEnd();
523 } 523 }
524 524
525 525
526 QString dateText; 526 QString dateText;
527 // qDebug("%s %s %s %s ", mEventDate.toString().latin1(),event->summary().latin1(), st .toString().latin1(),end.toString().latin1() ); 527 // qDebug("%s %s %s %s ", mEventDate.toString().latin1(),event->summary().latin1(), st .toString().latin1(),end.toString().latin1() );
528 if ( st.date() < mEventDate ) 528 if ( st.date() < mEventDate )
529 dateText = "++:++-"; 529 dateText = "++:++-";
530 else 530 else
531 dateText = event->dtStartTimeStr() + "-"; 531 dateText = event->dtStartTimeStr() + "-";
532 if ( end.date() > mEventDate ) 532 if ( end.date() > mEventDate )
533 dateText += "++:++"; 533 dateText += "++:++";
534 else 534 else
535 dateText += event->dtEndTimeStr(); 535 dateText += event->dtEndTimeStr();
536 if ( notRed ) 536 if ( notRed )
537 tempText += dateText; 537 tempText += dateText;
538 else { 538 else {
539 if ( end < cdt ) { 539 if ( end < cdt ) {
540 if ( !KOPrefs::instance()->mWNViewShowsPast ) 540 if ( !KOPrefs::instance()->mWNViewShowsPast )
541 return false; 541 return false;
542 tempText += "<font color=\"#F00000\">" + dateText + "</font>"; 542 tempText += "<font color=\"#F00000\">" + dateText + "</font>";
543 } 543 }
544 else if ( st < cdt ) 544 else if ( st < cdt )
545 tempText += "<font color=\"#008000\">" + dateText + "</font>"; 545 tempText += "<font color=\"#008000\">" + dateText + "</font>";
546 else 546 else
547 tempText += dateText; 547 tempText += dateText;
548 548
549 } 549 }
550 550
551 } else { 551 } else {
552 if ( bDay ) { 552 if ( bDay ) {
553 553
554 if ( ev->isBirthday()) 554 if ( ev->isBirthday())
555 tempText += "<font color=\"#00B000\">" + i18n("Birthday") +":</font>"; 555 tempText += "<font color=\"#00B000\">" + i18n("Birthday") +":</font>";
556 else 556 else
557 tempText += "<font color=\"#00B0000\">" + i18n("Anniversary")+":</font>"; 557 tempText += "<font color=\"#00B0000\">" + i18n("Anniversary")+":</font>";
558 } else { 558 } else {
559 tempText += i18n("Allday:"); 559 tempText += i18n("Allday:");
560 } 560 }
561 561
562 } 562 }
563 } 563 }
564 } else { 564 } else {
565 mTodos.append( ev ); 565 mTodos.append( ev );
566 tempText += i18n("ToDo:"); 566 tempText += i18n("ToDo:");
567 if (reply) { 567 if (reply) {
568 tempText += " "; 568 tempText += " ";
569 if ( noc != cdt ) { 569 if ( noc != cdt ) {
570 tempText += KGlobal::locale()->formatDate( noc.date() , KOPrefs::instance()->mShortDateInViewer) +": "; 570 tempText += KGlobal::locale()->formatDate( noc.date() , KOPrefs::instance()->mShortDateInViewer) +": ";
571 } 571 }
572 } else { 572 } else {
573 if ( ((Todo*)ev)->dtDue().date() < QDate::currentDate() ) { 573 if ( ((Todo*)ev)->dtDue().date() < QDate::currentDate() ) {
574 // tempText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>"; 574 // tempText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>";
575 QString dfs = KGlobal::locale()->dateFormatShort(); 575 QString dfs = KGlobal::locale()->dateFormatShort();
576 KGlobal::locale()->setDateFormatShort("%d.%b"); 576 KGlobal::locale()->setDateFormatShort("%d.%b");
577 tempText +="<font color=\"#F00000\">" + KGlobal::locale()->formatDate(((Todo*)ev)->dtDue().date(), true, KLocale::Userdefined) + "</font>"; 577 tempText +="<font color=\"#F00000\">" + KGlobal::locale()->formatDate(((Todo*)ev)->dtDue().date(), true, KLocale::Userdefined) + "</font>";
578 KGlobal::locale()->setDateFormatShort(dfs); 578 KGlobal::locale()->setDateFormatShort(dfs);
579 } else { 579 } else {
580 if (!ev->doesFloat() ) 580 if (!ev->doesFloat() )
581 if( ( (Todo*)ev)->dtDue() < cdt ) { 581 if( ( (Todo*)ev)->dtDue() < cdt ) {
582 tempText +="<font color=\"#F00000\">" + ((Todo*)ev)->dtDueTimeStr() + "</font>"; 582 tempText +="<font color=\"#F00000\">" + ((Todo*)ev)->dtDueTimeStr() + "</font>";
583 583
584 584
585 } else 585 } else
586 tempText +=((Todo*)ev)->dtDueTimeStr(); 586 tempText +=((Todo*)ev)->dtDueTimeStr();
587 mTodos.append( ev ); 587 mTodos.append( ev );
588 } 588 }
589 } 589 }
590 } 590 }
591 tempText += "</b></td><td>"; 591 tempText += "</b></td><td>";
592 bool needClose = false; 592 bool needClose = false;
593 if ( ev->cancelled() ) { 593 if ( ev->cancelled() ) {
594 tempText += "<font color=\"#F00000\">[c"; 594 tempText += "<font color=\"#F00000\">[c";
595 needClose =true; 595 needClose =true;
596 596
597 } 597 }
598 if ( ev->isAlarmEnabled() ) { 598 if ( ev->isAlarmEnabled() && ev->alarmEnabled()) {
599 if ( !needClose) 599 if ( !needClose)
600 tempText +="["; 600 tempText +="[";
601 tempText += "a"; 601 tempText += "a";
602 needClose =true; 602 needClose =true;
603 603
604 } 604 }
605 if ( ev->description().length() > 0 ) { 605 if ( ev->description().length() > 0 ) {
606 if ( !needClose) 606 if ( !needClose)
607 tempText +="["; 607 tempText +="[";
608 tempText += "i"; 608 tempText += "i";
609 needClose =true; 609 needClose =true;
610 } 610 }
611 if ( ev->recurrence()->doesRecur() ) { 611 if ( ev->recurrence()->doesRecur() ) {
612 if ( !needClose) 612 if ( !needClose)
613 tempText +="["; 613 tempText +="[";
614 tempText += "r"; 614 tempText += "r";
615 needClose =true; 615 needClose =true;
616 } 616 }
617 if ( needClose ) { 617 if ( needClose ) {
618 tempText += "] "; 618 tempText += "] ";
619 } 619 }
620 if ( ev->cancelled() ) 620 if ( ev->cancelled() )
621 tempText += "</font>"; 621 tempText += "</font>";
622 tempText += "<a "; 622 tempText += "<a ";
623 if (ev->typeID() == eventID ) tempText += "href=\"event:"; 623 if (ev->typeID() == eventID ) tempText += "href=\"event:";
624 if (ev->typeID() == todoID ) tempText += "href=\"todo:"; 624 if (ev->typeID() == todoID ) tempText += "href=\"todo:";
625 tempText += ev->uid() + "\">"; 625 tempText += ev->uid() + "\">";
626 if ( ev->summary().length() > 0 ) 626 if ( ev->summary().length() > 0 )
627 tempText += ev->summary(); 627 tempText += ev->summary();
628 else 628 else
629 tempText += i18n("-no summary-"); 629 tempText += i18n("-no summary-");
630 if ( bDay ) { 630 if ( bDay ) {
631 noc = ev->getNextOccurence( cdt.addDays(-1), &ok ); 631 noc = ev->getNextOccurence( cdt.addDays(-1), &ok );
632 if ( ok ) { 632 if ( ok ) {
633 int years = 0; 633 int years = 0;
634 if ( ev->typeID() == todoID ) { 634 if ( ev->typeID() == todoID ) {
635 years = noc.date().year() -((Todo*)ev)->dtDue().date().year(); 635 years = noc.date().year() -((Todo*)ev)->dtDue().date().year();
636 } else 636 } else
637 years = noc.date().year() - ev->dtStart().date().year(); 637 years = noc.date().year() - ev->dtStart().date().year();
638 tempText += i18n(" (%1 y.)"). arg( years ); 638 tempText += i18n(" (%1 y.)"). arg( years );
639 } 639 }
640 } 640 }
641 641
642 tempText += "</a>"; 642 tempText += "</a>";
643 if ( KOPrefs::instance()->mWNViewShowLocation ) 643 if ( KOPrefs::instance()->mWNViewShowLocation )
644 if ( !ev->location().isEmpty() ) 644 if ( !ev->location().isEmpty() )
645 tempText += " ("+ev->location() +")"; 645 tempText += " ("+ev->location() +")";
646 if ( ev->relatedTo() && KOPrefs::instance()->mWNViewShowsParents) 646 if ( ev->relatedTo() && KOPrefs::instance()->mWNViewShowsParents)
647 tempText += " ["+ev->relatedTo()->summary() +"]"; 647 tempText += " ["+ev->relatedTo()->summary() +"]";
648 tempText += "</td></tr>\n"; 648 tempText += "</td></tr>\n";
649 mText += tempText; 649 mText += tempText;
650 return true; 650 return true;
651} 651}
652 652
653bool KOWhatsNextView::appendTodo(Incidence *ev, QString ind , bool isSub ) 653bool KOWhatsNextView::appendTodo(Incidence *ev, QString ind , bool isSub )
654{ 654{
655 if ( mTodos.find( ev ) != mTodos.end() ) return false; 655 if ( mTodos.find( ev ) != mTodos.end() ) return false;
656 656
657 mTodos.append( ev ); 657 mTodos.append( ev );
658 if ( !isSub ) 658 if ( !isSub )
659 mText += "<p>"; 659 mText += "<p>";
660 else 660 else
661 mText += "<li>"; 661 mText += "<li>";
662 mText += "[" +QString::number(ev->priority()) + "/" + QString::number(((Todo*)ev)->percentComplete())+"%] "; 662 mText += "[" +QString::number(ev->priority()) + "/" + QString::number(((Todo*)ev)->percentComplete())+"%] ";
663 663
664 664
665 mText += ind; 665 mText += ind;
666 bool needClose = false; 666 bool needClose = false;
667 if ( ev->cancelled() ) { 667 if ( ev->cancelled() ) {
668 mText += "<font color=\"#F00000\">[c"; 668 mText += "<font color=\"#F00000\">[c";
669 needClose =true; 669 needClose =true;
670 670
671 } 671 }
672 if ( ev->isAlarmEnabled() ) { 672 if ( ev->isAlarmEnabled() && ev->alarmEnabled() ) {
673 if ( !needClose) 673 if ( !needClose)
674 mText +="["; 674 mText +="[";
675 mText += "a"; 675 mText += "a";
676 needClose =true; 676 needClose =true;
677 677
678 } 678 }
679 679
680 if ( ev->description().length() > 0 ) { 680 if ( ev->description().length() > 0 ) {
681 if ( !needClose) 681 if ( !needClose)
682 mText +="["; 682 mText +="[";
683 mText += "i"; 683 mText += "i";
684 needClose =true; 684 needClose =true;
685 } 685 }
686 if ( ev->doesRecur() ) { 686 if ( ev->doesRecur() ) {
687 if ( !needClose) 687 if ( !needClose)
688 mText +="["; 688 mText +="[";
689 mText += "r"; 689 mText += "r";
690 needClose =true; 690 needClose =true;
691 } 691 }
692 // if ( ev->recurrence()->doesRecur() ) { 692 // if ( ev->recurrence()->doesRecur() ) {
693 // if ( !needClose) 693 // if ( !needClose)
694 // mText +="("; 694 // mText +="(";
695 // mText += "r"; 695 // mText += "r";
696 // needClose =true; 696 // needClose =true;
697 // } 697 // }
698 if ( needClose ) 698 if ( needClose )
699 mText += "] "; 699 mText += "] ";
700 if ( ev->cancelled() ) 700 if ( ev->cancelled() )
701 mText += "</font>"; 701 mText += "</font>";
702 mText += "<a href=\"todo:" + ev->uid() + "\">"; 702 mText += "<a href=\"todo:" + ev->uid() + "\">";
703 if ( ev->summary().length() > 0 ) 703 if ( ev->summary().length() > 0 )
704 mText += ev->summary(); 704 mText += ev->summary();
705 else 705 else
706 mText += i18n("-no summary-"); 706 mText += i18n("-no summary-");
707 mText += "</a>"; 707 mText += "</a>";
708 if ( ((Todo*)ev)->hasDueDate () ) { 708 if ( ((Todo*)ev)->hasDueDate () ) {
709 QString year = ""; 709 QString year = "";
710 int ye = ((Todo*)ev)->dtDue().date().year(); 710 int ye = ((Todo*)ev)->dtDue().date().year();
711 if ( QDateTime::currentDateTime().date().year() != ye ) 711 if ( QDateTime::currentDateTime().date().year() != ye )
712 year = QString::number( ye ); 712 year = QString::number( ye );
713 QString dfs = KGlobal::locale()->dateFormatShort(); 713 QString dfs = KGlobal::locale()->dateFormatShort();
714 KGlobal::locale()->setDateFormatShort("%d.%b"); 714 KGlobal::locale()->setDateFormatShort("%d.%b");
715 mText +="<font color=\"#00A000\"> [" + KGlobal::locale()->formatDate(((Todo*)ev)->dtDue().date(), true, KLocale::Userdefined) + "."+ year +"]</font>"; 715 mText +="<font color=\"#00A000\"> [" + KGlobal::locale()->formatDate(((Todo*)ev)->dtDue().date(), true, KLocale::Userdefined) + "."+ year +"]</font>";
716 KGlobal::locale()->setDateFormatShort(dfs); 716 KGlobal::locale()->setDateFormatShort(dfs);
717 } 717 }
718 if ( KOPrefs::instance()->mWNViewShowLocation ) 718 if ( KOPrefs::instance()->mWNViewShowLocation )
719 if ( !ev->location().isEmpty() ) 719 if ( !ev->location().isEmpty() )
720 mText += " ("+ev->location() +")"; 720 mText += " ("+ev->location() +")";
721 if ( !isSub ) { 721 if ( !isSub ) {
722 if ( ((Todo*)ev)->relatedTo()&& KOPrefs::instance()->mWNViewShowsParents) 722 if ( ((Todo*)ev)->relatedTo()&& KOPrefs::instance()->mWNViewShowsParents)
723 mText += " ["+ev->relatedTo()->summary() +"]"; 723 mText += " ["+ev->relatedTo()->summary() +"]";
724 mText += "</p>\n"; 724 mText += "</p>\n";
725 } 725 }
726 else { 726 else {
727 ind += "-"; 727 ind += "-";
728 mText += "</li>\n"; 728 mText += "</li>\n";
729 } 729 }
730 QPtrList<Incidence> Relations = ev->relations(); 730 QPtrList<Incidence> Relations = ev->relations();
731 Incidence *to; 731 Incidence *to;
732 for (to=Relations.first();to;to=Relations.next()) { 732 for (to=Relations.first();to;to=Relations.next()) {
733 if (!((Todo*)to)->isCompleted() && ((Todo*)to)->priority() <= mCurrentMaxPrio ) 733 if (!((Todo*)to)->isCompleted() && ((Todo*)to)->priority() <= mCurrentMaxPrio )
734 appendTodo( to, ind , true ); 734 appendTodo( to, ind , true );
735 } 735 }
736 736
737 return true; 737 return true;
738} 738}
739 739
740/* 740/*
741 void KOWhatsNextView::createEventViewer() 741 void KOWhatsNextView::createEventViewer()
742 { 742 {
743 if (!mEventViewer) { 743 if (!mEventViewer) {
744 744
745 mEventViewer = new KOEventViewerDialog(this); 745 mEventViewer = new KOEventViewerDialog(this);
746 } 746 }
747 } 747 }
748*/ 748*/
749void KOWhatsNextView::setEventViewer(KOEventViewerDialog* v ) 749void KOWhatsNextView::setEventViewer(KOEventViewerDialog* v )
750{ 750{
751 mEventViewer = v; 751 mEventViewer = v;
752} 752}
753 753
754// TODO: Create this function in CalendarView and remove it from here 754// TODO: Create this function in CalendarView and remove it from here
755void KOWhatsNextView::showIncidence(const QString &uid) 755void KOWhatsNextView::showIncidence(const QString &uid)
756{ 756{
757 757
758 if ( !mEventViewer ) { 758 if ( !mEventViewer ) {
759 qDebug("KOWhatsNextView::showIncidence::sorry, no event viewer set "); 759 qDebug("KOWhatsNextView::showIncidence::sorry, no event viewer set ");
760 return; 760 return;
761 } 761 }
762 //kdDebug() << "KOWhatsNextView::showIncidence(): " << uid << endl; 762 //kdDebug() << "KOWhatsNextView::showIncidence(): " << uid << endl;
763 //qDebug("KOWhatsNextView::showIncidence %s ", uid.latin1()); 763 //qDebug("KOWhatsNextView::showIncidence %s ", uid.latin1());
764 if (uid.startsWith("event:")) { 764 if (uid.startsWith("event:")) {
765#ifdef DESKTOP_VERSION 765#ifdef DESKTOP_VERSION
766 Event *event = calendar()->event(uid.mid(8)); 766 Event *event = calendar()->event(uid.mid(8));
767#else 767#else
768 Event *event = calendar()->event(uid.mid(6)); 768 Event *event = calendar()->event(uid.mid(6));
769#endif 769#endif
770 //qDebug("event %d uid %s ", event, uid.mid(6).latin1()); 770 //qDebug("event %d uid %s ", event, uid.mid(6).latin1());
771 if (!event) return; 771 if (!event) return;
772 //createEventViewer(); 772 //createEventViewer();
773 mEventViewer->setEvent(event); 773 mEventViewer->setEvent(event);
774 } else if (uid.startsWith("todo:")) { 774 } else if (uid.startsWith("todo:")) {
775#ifdef DESKTOP_VERSION 775#ifdef DESKTOP_VERSION
776 Todo *todo = calendar()->todo(uid.mid(7)); 776 Todo *todo = calendar()->todo(uid.mid(7));
777#else 777#else
778 Todo *todo = calendar()->todo(uid.mid(5)); 778 Todo *todo = calendar()->todo(uid.mid(5));
779#endif 779#endif
780 if (!todo) return; 780 if (!todo) return;
781 //createEventViewer(); 781 //createEventViewer();
782 mEventViewer->setTodo(todo); 782 mEventViewer->setTodo(todo);
783 } else { 783 } else {
784 return; 784 return;
785 785
786 } 786 }
787 mEventViewer->showMe(); 787 mEventViewer->showMe();
788 mEventViewer->raise(); 788 mEventViewer->raise();
789} 789}