summaryrefslogtreecommitdiffabout
path: root/korganizer
authorzautrix <zautrix>2005-02-01 17:51:26 (UTC)
committer zautrix <zautrix>2005-02-01 17:51:26 (UTC)
commit81991bbbc7f815c82b37db654528ee3b224435dc (patch) (unidiff)
tree7e556083803d359c3a598d3ecf724d1127703480 /korganizer
parentb699d9cf03b5b5bb92609bcd04eef2651fe0028b (diff)
downloadkdepimpi-81991bbbc7f815c82b37db654528ee3b224435dc.zip
kdepimpi-81991bbbc7f815c82b37db654528ee3b224435dc.tar.gz
kdepimpi-81991bbbc7f815c82b37db654528ee3b224435dc.tar.bz2
fff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/koagendaview.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/korganizer/koagendaview.cpp b/korganizer/koagendaview.cpp
index 8c27c43..d3db89a 100644
--- a/korganizer/koagendaview.cpp
+++ b/korganizer/koagendaview.cpp
@@ -434,760 +434,759 @@ KOAgendaView::KOAgendaView(Calendar *cal,QWidget *parent,const char *name) :
434 QGridLayout *agendaLayout = new QGridLayout(agendaFrame,3,3); 434 QGridLayout *agendaLayout = new QGridLayout(agendaFrame,3,3);
435 // QHBox *agendaFrame = new QHBox(splitterAgenda); 435 // QHBox *agendaFrame = new QHBox(splitterAgenda);
436 436
437 // create event indicator bars 437 // create event indicator bars
438 mEventIndicatorTop = new EventIndicator(EventIndicator::Top,agendaFrame); 438 mEventIndicatorTop = new EventIndicator(EventIndicator::Top,agendaFrame);
439 agendaLayout->addWidget(mEventIndicatorTop,0,1); 439 agendaLayout->addWidget(mEventIndicatorTop,0,1);
440 mEventIndicatorTop->setPaintWidget( mSplitterAgenda ); 440 mEventIndicatorTop->setPaintWidget( mSplitterAgenda );
441 mEventIndicatorBottom = new EventIndicator(EventIndicator::Bottom, 441 mEventIndicatorBottom = new EventIndicator(EventIndicator::Bottom,
442 agendaFrame); 442 agendaFrame);
443 agendaLayout->addWidget(mEventIndicatorBottom,2,1); 443 agendaLayout->addWidget(mEventIndicatorBottom,2,1);
444 QWidget *dummyAgendaRight = new QWidget(agendaFrame); 444 QWidget *dummyAgendaRight = new QWidget(agendaFrame);
445 agendaLayout->addWidget(dummyAgendaRight,0,2); 445 agendaLayout->addWidget(dummyAgendaRight,0,2);
446 446
447 // Create time labels 447 // Create time labels
448 mTimeLabels = new TimeLabels(24,agendaFrame); 448 mTimeLabels = new TimeLabels(24,agendaFrame);
449 agendaLayout->addWidget(mTimeLabels,1,0); 449 agendaLayout->addWidget(mTimeLabels,1,0);
450 connect(mTimeLabels,SIGNAL( scaleChanged()), 450 connect(mTimeLabels,SIGNAL( scaleChanged()),
451 this,SLOT(updateConfig())); 451 this,SLOT(updateConfig()));
452 452
453 // Create agenda 453 // Create agenda
454 mAgenda = new KOAgenda(1,96,KOPrefs::instance()->mHourSize,agendaFrame); 454 mAgenda = new KOAgenda(1,96,KOPrefs::instance()->mHourSize,agendaFrame);
455 agendaLayout->addMultiCellWidget(mAgenda,1,1,1,2); 455 agendaLayout->addMultiCellWidget(mAgenda,1,1,1,2);
456 agendaLayout->setColStretch(1,1); 456 agendaLayout->setColStretch(1,1);
457 mAgenda->setFocusPolicy(NoFocus); 457 mAgenda->setFocusPolicy(NoFocus);
458 // Create event context menu for agenda 458 // Create event context menu for agenda
459 mAgendaPopup = eventPopup(); 459 mAgendaPopup = eventPopup();
460 460
461 mAgendaPopup->addAdditionalItem(QIconSet(SmallIcon("bell")), 461 mAgendaPopup->addAdditionalItem(QIconSet(SmallIcon("bell")),
462 i18n("Toggle Alarm"),mAgenda, 462 i18n("Toggle Alarm"),mAgenda,
463 SLOT(popupAlarm()),true); 463 SLOT(popupAlarm()),true);
464 464
465 465
466 connect(mAgenda,SIGNAL(showIncidencePopupSignal(Incidence *)), 466 connect(mAgenda,SIGNAL(showIncidencePopupSignal(Incidence *)),
467 mAgendaPopup,SLOT(showIncidencePopup(Incidence *))); 467 mAgendaPopup,SLOT(showIncidencePopup(Incidence *)));
468 468
469 // make connections between dependent widgets 469 // make connections between dependent widgets
470 mTimeLabels->setAgenda(mAgenda); 470 mTimeLabels->setAgenda(mAgenda);
471 471
472 // Update widgets to reflect user preferences 472 // Update widgets to reflect user preferences
473 // updateConfig(); 473 // updateConfig();
474 474
475 // createDayLabels(); 475 // createDayLabels();
476 476
477 // these blank widgets make the All Day Event box line up with the agenda 477 // these blank widgets make the All Day Event box line up with the agenda
478 dummyAllDayRight->setFixedWidth(mAgenda->verticalScrollBar()->width()); 478 dummyAllDayRight->setFixedWidth(mAgenda->verticalScrollBar()->width());
479 dummyAgendaRight->setFixedWidth(mAgenda->verticalScrollBar()->width()); 479 dummyAgendaRight->setFixedWidth(mAgenda->verticalScrollBar()->width());
480 mDummyAllDayLeft->setFixedWidth(mTimeLabels->width()); 480 mDummyAllDayLeft->setFixedWidth(mTimeLabels->width());
481 481
482 // Scrolling 482 // Scrolling
483 connect(mAgenda->verticalScrollBar(),SIGNAL(valueChanged(int)), 483 connect(mAgenda->verticalScrollBar(),SIGNAL(valueChanged(int)),
484 mTimeLabels, SLOT(positionChanged())); 484 mTimeLabels, SLOT(positionChanged()));
485 connect(mTimeLabels->verticalScrollBar(),SIGNAL(valueChanged(int)), 485 connect(mTimeLabels->verticalScrollBar(),SIGNAL(valueChanged(int)),
486 SLOT(setContentsPos(int))); 486 SLOT(setContentsPos(int)));
487 487
488 connect(mAgenda,SIGNAL(showDateView( int, QDate )),SIGNAL(showDateView( int, QDate ))); 488 connect(mAgenda,SIGNAL(showDateView( int, QDate )),SIGNAL(showDateView( int, QDate )));
489 connect(mAllDayAgenda,SIGNAL(showDateView( int, QDate )),SIGNAL(showDateView( int, QDate ))); 489 connect(mAllDayAgenda,SIGNAL(showDateView( int, QDate )),SIGNAL(showDateView( int, QDate )));
490 490
491 // Create/Show/Edit/Delete Event 491 // Create/Show/Edit/Delete Event
492 connect(mAgenda,SIGNAL(newEventSignal(int,int)), 492 connect(mAgenda,SIGNAL(newEventSignal(int,int)),
493 SLOT(newEvent(int,int))); 493 SLOT(newEvent(int,int)));
494 connect(mAgenda,SIGNAL(newTodoSignal(int,int)), 494 connect(mAgenda,SIGNAL(newTodoSignal(int,int)),
495 SLOT(newTodo(int,int))); 495 SLOT(newTodo(int,int)));
496 connect(mAgenda,SIGNAL(newEventSignal(int,int,int,int)), 496 connect(mAgenda,SIGNAL(newEventSignal(int,int,int,int)),
497 SLOT(newEvent(int,int,int,int))); 497 SLOT(newEvent(int,int,int,int)));
498 connect(mAllDayAgenda,SIGNAL(newEventSignal(int,int)), 498 connect(mAllDayAgenda,SIGNAL(newEventSignal(int,int)),
499 SLOT(newEventAllDay(int,int))); 499 SLOT(newEventAllDay(int,int)));
500 connect(mAllDayAgenda,SIGNAL(newTodoSignal(int,int)), 500 connect(mAllDayAgenda,SIGNAL(newTodoSignal(int,int)),
501 SLOT(newTodoAllDay(int,int))); 501 SLOT(newTodoAllDay(int,int)));
502 connect(mAllDayAgenda,SIGNAL(newEventSignal(int,int,int,int)), 502 connect(mAllDayAgenda,SIGNAL(newEventSignal(int,int,int,int)),
503 SLOT(newEventAllDay(int,int))); 503 SLOT(newEventAllDay(int,int)));
504 connect(mAgenda,SIGNAL(newTimeSpanSignal(int,int,int,int)), 504 connect(mAgenda,SIGNAL(newTimeSpanSignal(int,int,int,int)),
505 SLOT(newTimeSpanSelected(int,int,int,int))); 505 SLOT(newTimeSpanSelected(int,int,int,int)));
506 connect(mAllDayAgenda,SIGNAL(newTimeSpanSignal(int,int,int,int)), 506 connect(mAllDayAgenda,SIGNAL(newTimeSpanSignal(int,int,int,int)),
507 SLOT(newTimeSpanSelectedAllDay(int,int,int,int))); 507 SLOT(newTimeSpanSelectedAllDay(int,int,int,int)));
508 connect(mAgenda,SIGNAL(newStartSelectSignal()),SLOT(updateView())); 508 connect(mAgenda,SIGNAL(newStartSelectSignal()),SLOT(updateView()));
509 connect(mAllDayAgenda,SIGNAL(newStartSelectSignal()),SLOT(updateView())); 509 connect(mAllDayAgenda,SIGNAL(newStartSelectSignal()),SLOT(updateView()));
510 510
511 connect(mAgenda,SIGNAL(editIncidenceSignal(Incidence *)), 511 connect(mAgenda,SIGNAL(editIncidenceSignal(Incidence *)),
512 SIGNAL(editIncidenceSignal(Incidence *))); 512 SIGNAL(editIncidenceSignal(Incidence *)));
513 connect(mAllDayAgenda,SIGNAL(editIncidenceSignal(Incidence *)), 513 connect(mAllDayAgenda,SIGNAL(editIncidenceSignal(Incidence *)),
514 SIGNAL(editIncidenceSignal(Incidence *))); 514 SIGNAL(editIncidenceSignal(Incidence *)));
515 connect(mAgenda,SIGNAL(showIncidenceSignal(Incidence *)), 515 connect(mAgenda,SIGNAL(showIncidenceSignal(Incidence *)),
516 SIGNAL(showIncidenceSignal(Incidence *))); 516 SIGNAL(showIncidenceSignal(Incidence *)));
517 connect(mAllDayAgenda,SIGNAL(showIncidenceSignal(Incidence *)), 517 connect(mAllDayAgenda,SIGNAL(showIncidenceSignal(Incidence *)),
518 SIGNAL(showIncidenceSignal(Incidence *))); 518 SIGNAL(showIncidenceSignal(Incidence *)));
519 connect(mAgenda,SIGNAL(deleteIncidenceSignal(Incidence *)), 519 connect(mAgenda,SIGNAL(deleteIncidenceSignal(Incidence *)),
520 SIGNAL(deleteIncidenceSignal(Incidence *))); 520 SIGNAL(deleteIncidenceSignal(Incidence *)));
521 connect(mAllDayAgenda,SIGNAL(deleteIncidenceSignal(Incidence *)), 521 connect(mAllDayAgenda,SIGNAL(deleteIncidenceSignal(Incidence *)),
522 SIGNAL(deleteIncidenceSignal(Incidence *))); 522 SIGNAL(deleteIncidenceSignal(Incidence *)));
523 523
524 connect(mAgenda,SIGNAL(itemModified(KOAgendaItem *, int )), 524 connect(mAgenda,SIGNAL(itemModified(KOAgendaItem *, int )),
525 SLOT(updateEventDates(KOAgendaItem *, int ))); 525 SLOT(updateEventDates(KOAgendaItem *, int )));
526 connect(mAllDayAgenda,SIGNAL(itemModified(KOAgendaItem *, int )), 526 connect(mAllDayAgenda,SIGNAL(itemModified(KOAgendaItem *, int )),
527 SLOT(updateEventDates(KOAgendaItem *, int))); 527 SLOT(updateEventDates(KOAgendaItem *, int)));
528 528
529 // event indicator update 529 // event indicator update
530 connect(mAgenda,SIGNAL(lowerYChanged(int)), 530 connect(mAgenda,SIGNAL(lowerYChanged(int)),
531 SLOT(updateEventIndicatorTop(int))); 531 SLOT(updateEventIndicatorTop(int)));
532 connect(mAgenda,SIGNAL(upperYChanged(int)), 532 connect(mAgenda,SIGNAL(upperYChanged(int)),
533 SLOT(updateEventIndicatorBottom(int))); 533 SLOT(updateEventIndicatorBottom(int)));
534 // drag signals 534 // drag signals
535 /* 535 /*
536 connect(mAgenda,SIGNAL(startDragSignal(Event *)), 536 connect(mAgenda,SIGNAL(startDragSignal(Event *)),
537 SLOT(startDrag(Event *))); 537 SLOT(startDrag(Event *)));
538 connect(mAllDayAgenda,SIGNAL(startDragSignal(Event *)), 538 connect(mAllDayAgenda,SIGNAL(startDragSignal(Event *)),
539 SLOT(startDrag(Event *))); 539 SLOT(startDrag(Event *)));
540 */ 540 */
541 // synchronize selections 541 // synchronize selections
542 connect( mAgenda, SIGNAL( incidenceSelected( Incidence * ) ), 542 connect( mAgenda, SIGNAL( incidenceSelected( Incidence * ) ),
543 mAllDayAgenda, SLOT( deselectItem() ) ); 543 mAllDayAgenda, SLOT( deselectItem() ) );
544 connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ), 544 connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ),
545 mAgenda, SLOT( deselectItem() ) ); 545 mAgenda, SLOT( deselectItem() ) );
546 connect( mAgenda, SIGNAL( incidenceSelected( Incidence * ) ), 546 connect( mAgenda, SIGNAL( incidenceSelected( Incidence * ) ),
547 SIGNAL( incidenceSelected( Incidence * ) ) ); 547 SIGNAL( incidenceSelected( Incidence * ) ) );
548 connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ), 548 connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ),
549 SIGNAL( incidenceSelected( Incidence * ) ) ); 549 SIGNAL( incidenceSelected( Incidence * ) ) );
550 connect( mAgenda, SIGNAL( resizedSignal() ), 550 connect( mAgenda, SIGNAL( resizedSignal() ),
551 SLOT( updateConfig( ) ) ); 551 SLOT( updateConfig( ) ) );
552 connect( mAgenda, SIGNAL( addToCalSignal(Incidence *, Incidence *) ), 552 connect( mAgenda, SIGNAL( addToCalSignal(Incidence *, Incidence *) ),
553 SLOT( addToCalSlot(Incidence *, Incidence * ) ) ); 553 SLOT( addToCalSlot(Incidence *, Incidence * ) ) );
554 connect( mAllDayAgenda, SIGNAL( addToCalSignal(Incidence * ,Incidence *) ), 554 connect( mAllDayAgenda, SIGNAL( addToCalSignal(Incidence * ,Incidence *) ),
555 SLOT( addToCalSlot(Incidence * , Incidence *) ) ); 555 SLOT( addToCalSlot(Incidence * , Incidence *) ) );
556 // connect( mAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) ); 556 // connect( mAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) );
557 //connect( mAllDayAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) ); 557 //connect( mAllDayAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) );
558 558
559 559
560} 560}
561 561
562void KOAgendaView::toggleAllDay() 562void KOAgendaView::toggleAllDay()
563{ 563{
564 if ( mSplitterAgenda->firstHandle() ) 564 if ( mSplitterAgenda->firstHandle() )
565 mSplitterAgenda->firstHandle()->toggle(); 565 mSplitterAgenda->firstHandle()->toggle();
566} 566}
567void KOAgendaView::addToCalSlot(Incidence * inc, Incidence * incOld ) 567void KOAgendaView::addToCalSlot(Incidence * inc, Incidence * incOld )
568{ 568{
569 calendar()->addIncidence( inc ); 569 calendar()->addIncidence( inc );
570 570
571 if ( incOld ) { 571 if ( incOld ) {
572 if ( incOld->type() == "Todo" ) 572 if ( incOld->type() == "Todo" )
573 emit todoMoved((Todo*)incOld, KOGlobals::EVENTEDITED ); 573 emit todoMoved((Todo*)incOld, KOGlobals::EVENTEDITED );
574 else 574 else
575 emit incidenceChanged(incOld, KOGlobals::EVENTEDITED); 575 emit incidenceChanged(incOld, KOGlobals::EVENTEDITED);
576 } 576 }
577 577
578} 578}
579 579
580KOAgendaView::~KOAgendaView() 580KOAgendaView::~KOAgendaView()
581{ 581{
582 delete mAgendaPopup; 582 delete mAgendaPopup;
583 delete mAllDayAgendaPopup; 583 delete mAllDayAgendaPopup;
584 delete KOAgendaItem::paintPix(); 584 delete KOAgendaItem::paintPix();
585 delete KOAgendaItem::paintPixSel(); 585 delete KOAgendaItem::paintPixSel();
586} 586}
587void KOAgendaView::resizeEvent( QResizeEvent* e ) 587void KOAgendaView::resizeEvent( QResizeEvent* e )
588{ 588{
589 //qDebug("KOAgendaView::resizeEvent( QResizeEvent* e ) %d ", e->size().width()); 589 //qDebug("KOAgendaView::resizeEvent( QResizeEvent* e ) %d ", e->size().width());
590 bool uc = false; 590 bool uc = false;
591 int ow = e->oldSize().width(); 591 int ow = e->oldSize().width();
592 int oh = e->oldSize().height(); 592 int oh = e->oldSize().height();
593 int w = e->size().width(); 593 int w = e->size().width();
594 int h = e->size().height(); 594 int h = e->size().height();
595 if ( (ow > oh && w< h ) || (ow < oh && w > h ) ) { 595 if ( (ow > oh && w< h ) || (ow < oh && w > h ) ) {
596 if ( ! mBlockUpdating && !globalFlagBlockStartup && !globalFlagBlockAgenda ) 596 if ( ! mBlockUpdating && !globalFlagBlockStartup && !globalFlagBlockAgenda )
597 uc = true; 597 uc = true;
598 //qDebug("view changed %d %d %d %d ", ow, oh , w , h); 598 //qDebug("view changed %d %d %d %d ", ow, oh , w , h);
599 } 599 }
600 mUpcomingWidth = e->size().width() ; 600 mUpcomingWidth = e->size().width() ;
601 if ( mBlockUpdating || uc ) { 601 if ( mBlockUpdating || uc ) {
602 mBlockUpdating = false; 602 mBlockUpdating = false;
603 //mAgenda->setMinimumSize(800 , 600 ); 603 //mAgenda->setMinimumSize(800 , 600 );
604 //qDebug("mAgenda->resize+++++++++++++++ "); 604 //qDebug("mAgenda->resize+++++++++++++++ ");
605 updateConfig(); 605 updateConfig();
606 //qDebug("KOAgendaView::Updating now possible "); 606 //qDebug("KOAgendaView::Updating now possible ");
607 } else 607 } else
608 createDayLabels(); 608 createDayLabels();
609 //qDebug("resizeEvent end "); 609 //qDebug("resizeEvent end ");
610 610
611} 611}
612void KOAgendaView::slotDaylabelClicked() 612void KOAgendaView::slotDaylabelClicked()
613{ 613{
614 QString cap = ((QPushButton*) sender() )->caption(); 614 QString cap = ((QPushButton*) sender() )->caption();
615 615
616 QDate firstDate = mSelectedDates.first(); 616 QDate firstDate = mSelectedDates.first();
617 if ( cap == "0" ) 617 if ( cap == "0" )
618 emit showDateView( 6, firstDate ); 618 emit showDateView( 6, firstDate );
619 else if ( cap != "last" ) { 619 else if ( cap != "last" ) {
620 if ( mSelectedDates.count() == 1) 620 if ( mSelectedDates.count() == 1)
621 emit showDateView( 9, firstDate.addDays( cap.toInt()-1 ) ); 621 emit showDateView( 9, firstDate.addDays( cap.toInt()-1 ) );
622 else 622 else
623 emit showDateView( 3, firstDate.addDays( cap.toInt()-1 ) ); 623 emit showDateView( 3, firstDate.addDays( cap.toInt()-1 ) );
624 } 624 }
625 else 625 else
626 showDateView( 10, firstDate.addDays(1 ) ); 626 showDateView( 10, firstDate.addDays(1) );
627} 627}
628 628
629QPushButton* KOAgendaView::getNewDaylabel() 629QPushButton* KOAgendaView::getNewDaylabel()
630{ 630{
631 631
632 QPushButton * dayLabel = new QPushButton(mDayLabels); 632 QPushButton * dayLabel = new QPushButton(mDayLabels);
633 dayLabel->setFlat( true ); 633 dayLabel->setFlat( true );
634 connect( dayLabel, SIGNAL( clicked() ), this, SLOT ( slotDaylabelClicked() ) ); 634 connect( dayLabel, SIGNAL( clicked() ), this, SLOT ( slotDaylabelClicked() ) );
635 dayLabel->setFocusPolicy(NoFocus); 635 dayLabel->setFocusPolicy(NoFocus);
636 dayLabel->setSizePolicy(QSizePolicy( QSizePolicy::Expanding ,QSizePolicy::Expanding )); 636 dayLabel->setSizePolicy(QSizePolicy( QSizePolicy::Expanding ,QSizePolicy::Expanding ));
637 mDayLabelsList.append( dayLabel ); 637 mDayLabelsList.append( dayLabel );
638 mLayoutDayLabels->addWidget(dayLabel); 638 mLayoutDayLabels->addWidget(dayLabel);
639 //mLayoutDayLabels->setStretchFactor(dayLabel, 100); 639 //mLayoutDayLabels->setStretchFactor(dayLabel, 100);
640 return dayLabel ; 640 return dayLabel ;
641} 641}
642 642
643void KOAgendaView::createDayLabels() 643void KOAgendaView::createDayLabels()
644{ 644{
645 645
646 if ( mBlockUpdating || globalFlagBlockLabel == 1) { 646 if ( mBlockUpdating || globalFlagBlockLabel == 1) {
647 // qDebug(" KOAgendaView::createDayLabels() blocked "); 647 // qDebug(" KOAgendaView::createDayLabels() blocked ");
648 return; 648 return;
649 649
650 } 650 }
651 int newHight; 651 int newHight;
652 652
653 // ### Before deleting and recreating we could check if mSelectedDates changed... 653 // ### Before deleting and recreating we could check if mSelectedDates changed...
654 // It would remove some flickering and gain speed (since this is called by 654 // It would remove some flickering and gain speed (since this is called by
655 // each updateView() call) 655 // each updateView() call)
656 656
657 int maxWid = mUpcomingWidth - mTimeLabels->width()- mAgenda->verticalScrollBar()->width() - 2; 657 int maxWid = mUpcomingWidth - mTimeLabels->width()- mAgenda->verticalScrollBar()->width() - 2;
658 mDayLabelsFrame->setMaximumWidth( mUpcomingWidth ); 658 mDayLabelsFrame->setMaximumWidth( mUpcomingWidth );
659 if ( maxWid < 0 ) 659 if ( maxWid < 0 )
660 maxWid = 20; 660 maxWid = 20;
661 661
662 QFont dlf = KOPrefs::instance()->mTimeLabelsFont; 662 QFont dlf = KOPrefs::instance()->mTimeLabelsFont;
663 QFontMetrics fm ( dlf ); 663 QFontMetrics fm ( dlf );
664 int selCount = mSelectedDates.count(); 664 int selCount = mSelectedDates.count();
665 QString dayTest = "Mon 20"; 665 QString dayTest = "Won 20";
666 //QString dayTest = "Mon 20";
666 int wid = fm.width( dayTest ); 667 int wid = fm.width( dayTest );
667 //maxWid -= ( selCount * 3 ); //working for QLabels 668 //maxWid -= ( selCount * 3 ); //working for QLabels
668 maxWid -= ( selCount * 5 ); //working for QPushButton 669 maxWid -= ( selCount * 5 ); //working for QPushButton
669 if ( maxWid < 0 ) 670 if ( maxWid < 0 )
670 maxWid = 20; 671 maxWid = 20;
671 int needWid = wid * selCount; 672 int needWid = wid * selCount;
672 //qDebug("++++++++Needed : %d MaxWidth: %d", needWid, maxWid ); 673 //qDebug("++++++++Needed : %d MaxWidth: %d", needWid, maxWid );
673 //if ( needWid > maxWid ) 674 //if ( needWid > maxWid )
674 // qDebug("DAYLABELS TOOOOOOO BIG "); 675 // qDebug("DAYLABELS TOOOOOOO BIG ");
675 while ( needWid > maxWid ) { 676 while ( needWid > maxWid ) {
676 dayTest = dayTest.left( dayTest.length() - 1 ); 677 dayTest = dayTest.left( dayTest.length() - 1 );
677 wid = fm.width( dayTest ); 678 wid = fm.width( dayTest )+1;
678 needWid = wid * selCount; 679 needWid = wid * selCount;
679 } 680 }
680 int maxLen = dayTest.length(); 681 int maxLen = dayTest.length();
681 int fontPoint = dlf.pointSize(); 682 int fontPoint = dlf.pointSize();
682 if ( maxLen < 2 ) { 683 if ( maxLen < 2 ) {
683 int fontPoint = dlf.pointSize(); 684 int fontPoint = dlf.pointSize();
684 while ( fontPoint > 4 ) { 685 while ( fontPoint > 4 ) {
685 --fontPoint; 686 --fontPoint;
686 dlf.setPointSize( fontPoint ); 687 dlf.setPointSize( fontPoint );
687 QFontMetrics f( dlf ); 688 QFontMetrics f( dlf );
688 wid = f.width( "20" )+2; 689 wid = f.width( "30" )+3;
689 needWid = wid * selCount; 690 needWid = wid * selCount;
690 if ( needWid < maxWid ) 691 if ( needWid < maxWid )
691 break; 692 break;
692 } 693 }
693 maxLen = 2; 694 maxLen = 2;
694 } 695 }
695 //qDebug("Max len %d ", dayTest.length() ); 696 //qDebug("Max len %d ", dayTest.length() );
696 697
697 QFontMetrics tempF( dlf ); 698 QFontMetrics tempF( dlf );
698 newHight = tempF.height(); 699 newHight = tempF.height();
699 mDayLabels->setFont( dlf ); 700 mDayLabels->setFont( dlf );
700 // mLayoutDayLabels = new QHBoxLayout(mDayLabels);; 701 // mLayoutDayLabels = new QHBoxLayout(mDayLabels);;
701 // mLayoutDayLabels->addSpacing(mTimeLabels->width()); 702 // mLayoutDayLabels->addSpacing(mTimeLabels->width());
702 //mLayoutDayLabels->addSpacing( 2 ); 703 //mLayoutDayLabels->addSpacing( 2 );
703 // QFont lFont = dlf; 704 // QFont lFont = dlf;
704 bool appendLabels = false; 705 bool appendLabels = false;
705 QPushButton *dayLabel; 706 QPushButton *dayLabel;
706 dayLabel = mDayLabelsList.first(); 707 dayLabel = mDayLabelsList.first();
707 if ( !dayLabel ) { 708 if ( !dayLabel ) {
708 appendLabels = true; 709 appendLabels = true;
709 dayLabel = getNewDaylabel(); 710 dayLabel = getNewDaylabel();
710 } 711 }
711 dayLabel->setFixedWidth( mTimeLabels->width()+2 ); 712 dayLabel->setFixedWidth( mTimeLabels->width()+2 );
712 dayLabel->setFont( dlf ); 713 dayLabel->setFont( dlf );
713 dayLabel->setCaption("0"); 714 dayLabel->setCaption("0");
714 //dayLabel->setAlignment(QLabel::AlignHCenter); 715 //dayLabel->setAlignment(QLabel::AlignHCenter);
715 dayLabel->setText( KOGlobals::self()->calendarSystem()->monthName( mSelectedDates.first(), true ) ); 716 dayLabel->setText( KOGlobals::self()->calendarSystem()->monthName( mSelectedDates.first(), true ) );
716 dayLabel->show(); 717 dayLabel->show();
717 DateList::ConstIterator dit; 718 DateList::ConstIterator dit;
718 bool oneday = (mSelectedDates.first() == mSelectedDates.last() ); 719 bool oneday = (mSelectedDates.first() == mSelectedDates.last() );
719 int counter = 0; 720 int counter = 0;
720 for( dit = mSelectedDates.begin(); dit != mSelectedDates.end(); ++dit ) { 721 for( dit = mSelectedDates.begin(); dit != mSelectedDates.end(); ++dit ) {
721 ++counter; 722 ++counter;
722 QDate date = *dit; 723 QDate date = *dit;
723 // QBoxLayout *dayLayout = new QVBoxLayout(mLayoutDayLabels); 724 // QBoxLayout *dayLayout = new QVBoxLayout(mLayoutDayLabels);
724 if ( ! appendLabels ) { 725 if ( ! appendLabels ) {
725 dayLabel = mDayLabelsList.next(); 726 dayLabel = mDayLabelsList.next();
726 if ( !dayLabel ) 727 if ( !dayLabel )
727 appendLabels = true; 728 appendLabels = true;
728 } 729 }
729 if ( appendLabels ) { 730 if ( appendLabels ) {
730 dayLabel = getNewDaylabel(); 731 dayLabel = getNewDaylabel();
731 } 732 }
732 dayLabel->setMinimumWidth( 1 ); 733 dayLabel->setMinimumWidth( 1 );
733 dayLabel->setMaximumWidth( 2048 ); 734 dayLabel->setMaximumWidth( 2048 );
734 dayLabel->setFont( dlf ); 735 dayLabel->setFont( dlf );
735 dayLabel->show(); 736 dayLabel->show();
736 dayLabel->setCaption(QString::number( counter )); 737 dayLabel->setCaption(QString::number( counter ));
737 QString str; 738 QString str;
738 int dW = KOGlobals::self()->calendarSystem()->dayOfWeek(date); 739 int dW = KOGlobals::self()->calendarSystem()->dayOfWeek(date);
739 QString dayName = KOGlobals::self()->calendarSystem()->weekDayName( dW, true ); 740 QString dayName = KOGlobals::self()->calendarSystem()->weekDayName( dW, true );
740 switch ( maxLen ) { 741 switch ( maxLen ) {
741 case 2: 742 case 2:
742 str = QString::number( date.day() ); 743 str = QString::number( date.day() );
743 break; 744 break;
744 745
745 case 3: 746 case 3:
746 str = dayName.left( 1 ) +QString::number( date.day()); 747 str = dayName.left( 1 ) +QString::number( date.day());
747 748
748 break; 749 break;
749 case 4: 750 case 4:
750 str = dayName.left( 1 ) + " " +QString::number( date.day()); 751 str = dayName.left( 1 ) + " " +QString::number( date.day());
751 752
752 break; 753 break;
753 case 5: 754 case 5:
754 str = dayName.left( 2 ) + " " +QString::number( date.day()); 755 str = dayName.left( 2 ) + " " +QString::number( date.day());
755 756
756 break; 757 break;
757 case 6: 758 case 6:
758 str = dayName.left( 3 ) + " " +QString::number( date.day()); 759 str = dayName.left( 3 ) + " " +QString::number( date.day());
759 break; 760 break;
760 761
761 default: 762 default:
762 break; 763 break;
763 } 764 }
764 if ( oneday ) { 765 if ( oneday ) {
765 QString addString; 766 QString addString;
766 if ( mSelectedDates.first() == QDateTime::currentDateTime().date() ) 767 if ( mSelectedDates.first() == QDateTime::currentDateTime().date() )
767 addString = i18n("Today"); 768 addString = i18n("Today");
768 else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(1) ) 769 else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(1) )
769 addString = i18n("Tomorrow"); 770 addString = i18n("Tomorrow");
770 else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(-1) ) 771 else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(-1) )
771 addString = i18n("Yesterday"); 772 addString = i18n("Yesterday");
772 else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(-2) ) 773 else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(-2) )
773 addString = i18n("Day before yesterday"); 774 addString = i18n("Day before yesterday");
774 else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(2) ) 775 else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(2) )
775 addString = i18n("Day after tomorrow"); 776 addString = i18n("Day after tomorrow");
776 if ( !addString.isEmpty() ) { 777 if ( !addString.isEmpty() ) {
777 str = addString+", " + str; 778 str = addString+", " + str;
778 } 779 }
779 } 780 }
780 dayLabel->setText(str); 781 dayLabel->setText(str);
781 //dayLabel->setAlignment(QLabel::AlignHCenter); 782 //dayLabel->setAlignment(QLabel::AlignHCenter);
782 if (date == QDate::currentDate()) { 783 if (date == QDate::currentDate()) {
783 QFont bFont = dlf; 784 QFont bFont = dlf;
784 bFont.setBold( true ); 785 bFont.setBold( true );
785 dayLabel->setFont(bFont); 786 dayLabel->setFont(bFont);
786 } 787 }
787 //dayLayout->addWidget(dayLabel); 788 //dayLayout->addWidget(dayLabel);
788 789
789#ifndef KORG_NOPLUGINS 790#ifndef KORG_NOPLUGINS
790 CalendarDecoration::List cds = KOCore::self()->calendarDecorations(); 791 CalendarDecoration::List cds = KOCore::self()->calendarDecorations();
791 CalendarDecoration *it; 792 CalendarDecoration *it;
792 for(it = cds.first(); it; it = cds.next()) { 793 for(it = cds.first(); it; it = cds.next()) {
793 QString text = it->shortText( date ); 794 QString text = it->shortText( date );
794 if ( !text.isEmpty() ) { 795 if ( !text.isEmpty() ) {
795 QLabel *label = new QLabel(text,mDayLabels); 796 QLabel *label = new QLabel(text,mDayLabels);
796 label->setAlignment(AlignCenter); 797 label->setAlignment(AlignCenter);
797 dayLayout->addWidget(label); 798 dayLayout->addWidget(label);
798 } 799 }
799 } 800 }
800 801
801 for(it = cds.first(); it; it = cds.next()) { 802 for(it = cds.first(); it; it = cds.next()) {
802 QWidget *wid = it->smallWidget(mDayLabels,date); 803 QWidget *wid = it->smallWidget(mDayLabels,date);
803 if ( wid ) { 804 if ( wid ) {
804 // wid->setHeight(20); 805 // wid->setHeight(20);
805 dayLayout->addWidget(wid); 806 dayLayout->addWidget(wid);
806 } 807 }
807 } 808 }
808#endif 809#endif
809 } 810 }
810 if ( ! appendLabels ) { 811 if ( ! appendLabels ) {
811 dayLabel = mDayLabelsList.next(); 812 dayLabel = mDayLabelsList.next();
812 if ( !dayLabel ) 813 if ( !dayLabel )
813 appendLabels = true; 814 appendLabels = true;
814 } 815 }
815 if ( appendLabels ) { 816 if ( appendLabels ) {
816 dayLabel = getNewDaylabel(); 817 dayLabel = getNewDaylabel();
817 } 818 }
818 //dayLabel->hide();//test only 819 //dayLabel->hide();//test only
819 820
820 int offset = (mAgenda->width() - mAgenda->verticalScrollBar()->width()-3 ) % mSelectedDates.count() ; 821 int offset = (mAgenda->width() - mAgenda->verticalScrollBar()->width()-3 ) % mSelectedDates.count() ;
821 if ( offset < 0 ) offset = 0; 822 if ( offset < 0 ) offset = 0;
822 //qDebug("mLayoutDayLabels->addSpacing %d ", mAgenda->verticalScrollBar()->width()+offset+2 ); 823 //qDebug("mLayoutDayLabels->addSpacing %d ", mAgenda->verticalScrollBar()->width()+offset+2 );
823 dayLabel->setText(">");//QString::number ( mSelectedDates.first().month() ) ); 824 dayLabel->setText(">");//QString::number ( mSelectedDates.first().month() ) );
824 dayLabel->setFont( dlf ); 825 dayLabel->setFont( dlf );
825 dayLabel->show(); 826 dayLabel->show();
826 dayLabel->setCaption("last"); 827 dayLabel->setCaption("last");
827 dayLabel->setFixedWidth( mAgenda->verticalScrollBar()->width()+ offset ); 828 dayLabel->setFixedWidth( mAgenda->verticalScrollBar()->width()+ offset );
828 //qDebug("setToFixed %d ", mAgenda->verticalScrollBar()->width()+ offset+2); 829 //qDebug("setToFixed %d ", mAgenda->verticalScrollBar()->width()+ offset+2);
829 //mLayoutDayLabels->addSpacing(mAgenda->verticalScrollBar()->width()+ offset+2); 830 //mLayoutDayLabels->addSpacing(mAgenda->verticalScrollBar()->width()+ offset+2);
830 if ( !appendLabels ) { 831 if ( !appendLabels ) {
831 dayLabel = mDayLabelsList.next(); 832 dayLabel = mDayLabelsList.next();
832 while ( dayLabel ) { 833 while ( dayLabel ) {
833 //qDebug("!dayLabel %d",dayLabel ); 834 //qDebug("!dayLabel %d",dayLabel );
834 dayLabel->hide(); 835 dayLabel->hide();
835 dayLabel = mDayLabelsList.next(); 836 dayLabel = mDayLabelsList.next();
836 } 837 }
837 } 838 }
838 //mDayLabelsFrame->show(); 839 //mDayLabelsFrame->show();
839 //mDayLabels->show(); 840 //mDayLabels->show();
840 //qDebug("heigt %d %d %d ",mDayLabelsFrame->height(), mDayLabelsFrame->sizeHint().height(), newHight); 841 //qDebug("heigt %d %d %d ",mDayLabelsFrame->height(), mDayLabelsFrame->sizeHint().height(), newHight);
841 //mDayLabelsFrame->resize( mAgenda->visibleWidth(), newHight ); 842 //mDayLabelsFrame->resize( mAgenda->visibleWidth(), newHight );
842 mDayLabelsFrame->setFixedHeight( newHight ); 843 mDayLabelsFrame->setFixedHeight( newHight );
843} 844}
844 845
845int KOAgendaView::maxDatesHint() 846int KOAgendaView::maxDatesHint()
846{ 847{
847 // Not sure about the max number of events, so return 0 for now. 848 // Not sure about the max number of events, so return 0 for now.
848 return 0; 849 return 0;
849} 850}
850 851
851int KOAgendaView::currentDateCount() 852int KOAgendaView::currentDateCount()
852{ 853{
853 return mSelectedDates.count(); 854 return mSelectedDates.count();
854} 855}
855 856
856QPtrList<Incidence> KOAgendaView::selectedIncidences() 857QPtrList<Incidence> KOAgendaView::selectedIncidences()
857{ 858{
858 QPtrList<Incidence> selected; 859 QPtrList<Incidence> selected;
859 Incidence *incidence; 860 Incidence *incidence;
860 861
861 incidence = mAgenda->selectedIncidence(); 862 incidence = mAgenda->selectedIncidence();
862 if (incidence) selected.append(incidence); 863 if (incidence) selected.append(incidence);
863 864
864 incidence = mAllDayAgenda->selectedIncidence(); 865 incidence = mAllDayAgenda->selectedIncidence();
865 if (incidence) selected.append(incidence); 866 if (incidence) selected.append(incidence);
866 867
867 return selected; 868 return selected;
868} 869}
869 870
870DateList KOAgendaView::selectedDates() 871DateList KOAgendaView::selectedDates()
871{ 872{
872 DateList selected; 873 DateList selected;
873 QDate qd; 874 QDate qd;
874 875
875 qd = mAgenda->selectedIncidenceDate(); 876 qd = mAgenda->selectedIncidenceDate();
876 if (qd.isValid()) selected.append(qd); 877 if (qd.isValid()) selected.append(qd);
877 878
878 qd = mAllDayAgenda->selectedIncidenceDate(); 879 qd = mAllDayAgenda->selectedIncidenceDate();
879 if (qd.isValid()) selected.append(qd); 880 if (qd.isValid()) selected.append(qd);
880 881
881 return selected; 882 return selected;
882} 883}
883 884
884 885
885void KOAgendaView::updateView() 886void KOAgendaView::updateView()
886{ 887{
887 if ( mBlockUpdating ) 888 if ( mBlockUpdating )
888 return; 889 return;
889 // kdDebug() << "KOAgendaView::updateView()" << endl; 890 // kdDebug() << "KOAgendaView::updateView()" << endl;
890 fillAgenda(); 891 fillAgenda();
891 892
892} 893}
893 894
894 895
895/* 896/*
896 Update configuration settings for the agenda view. This method is not 897 Update configuration settings for the agenda view. This method is not
897 complete. 898 complete.
898*/ 899*/
899void KOAgendaView::updateConfig() 900void KOAgendaView::updateConfig()
900{ 901{
901 if ( mBlockUpdating ) 902 if ( mBlockUpdating )
902 return; 903 return;
903 // kdDebug() << "KOAgendaView::updateConfig()" << endl; 904 // kdDebug() << "KOAgendaView::updateConfig()" << endl;
904 905
905 // update config for children 906 // update config for children
906 mTimeLabels->updateConfig(); 907 mTimeLabels->updateConfig();
907 mAgenda->storePosition(); 908 mAgenda->storePosition();
908 mAgenda->updateConfig(); 909 mAgenda->updateConfig();
909 mAllDayAgenda->updateConfig(); 910 mAllDayAgenda->updateConfig();
910 // widget synchronization 911 // widget synchronization
911 //TODO: find a better way, maybe signal/slot 912 //TODO: find a better way, maybe signal/slot
912 mTimeLabels->positionChanged(); 913 mTimeLabels->positionChanged();
913 914
914 // for some reason, this needs to be called explicitly 915 // for some reason, this needs to be called explicitly
915 mTimeLabels->repaint(); 916 mTimeLabels->repaint();
916 917
917 mDummyAllDayLeft->setFixedWidth(mTimeLabels->width()); 918 mDummyAllDayLeft->setFixedWidth(mTimeLabels->width());
918 919
919 // ToolTips displaying summary of events 920 // ToolTips displaying summary of events
920 KOAgendaItem::toolTipGroup()->setEnabled(KOPrefs::instance() 921 KOAgendaItem::toolTipGroup()->setEnabled(KOPrefs::instance()
921 ->mEnableToolTips); 922 ->mEnableToolTips);
922 923
923 //setHolidayMasks(); 924 //setHolidayMasks();
924 925
925 //createDayLabels(); called by via updateView(); 926 //createDayLabels(); called by via updateView();
926 mEventIndicatorTop->setXOffset(mTimeLabels->width() + mAgenda->frameWidth()); 927 mEventIndicatorTop->setXOffset(mTimeLabels->width() + mAgenda->frameWidth());
927 updateView(); 928 updateView();
928 mAgenda->restorePosition(); 929 mAgenda->restorePosition();
929} 930}
930 931
931 932
932void KOAgendaView::updateEventDates(KOAgendaItem *item, int type) 933void KOAgendaView::updateEventDates(KOAgendaItem *item, int type)
933{ 934{
934 // kdDebug() << "KOAgendaView::updateEventDates(): " << item->text() << endl; 935 // kdDebug() << "KOAgendaView::updateEventDates(): " << item->text() << endl;
935 //qDebug("KOAgendaView::updateEventDates "); 936 //qDebug("KOAgendaView::updateEventDates ");
936 QDateTime startDt,endDt; 937 QDateTime startDt,endDt;
937 QDate startDate; 938 QDate startDate;
938 int lenInSecs; 939 int lenInSecs;
939 // if ( type == KOAgenda::RESIZETOP ) 940 // if ( type == KOAgenda::RESIZETOP )
940 // qDebug("RESIZETOP "); 941 // qDebug("RESIZETOP ");
941 // if ( type == KOAgenda::RESIZEBOTTOM ) 942 // if ( type == KOAgenda::RESIZEBOTTOM )
942 // qDebug("RESIZEBOTTOM "); 943 // qDebug("RESIZEBOTTOM ");
943 // if ( type == KOAgenda::MOVE ) 944 // if ( type == KOAgenda::MOVE )
944 // qDebug("MOVE "); 945 // qDebug("MOVE ");
945 if ( item->incidence()->type() == "Event" ) { 946 if ( item->incidence()->type() == "Event" ) {
946 startDt =item->incidence()->dtStart(); 947 startDt =item->incidence()->dtStart();
947 endDt = item->incidence()->dtEnd(); 948 endDt = item->incidence()->dtEnd();
948 lenInSecs = startDt.secsTo( endDt ); 949 lenInSecs = startDt.secsTo( endDt );
949 } 950 }
950 951
951 // emit incidenceItemChanged( item->incidence(), KOGlobals::EVENTEDITED ); 952 // emit incidenceItemChanged( item->incidence(), KOGlobals::EVENTEDITED );
952 953
953 if ( item->incidence()->type()=="Todo" && item->mLastMoveXPos > 0 ) { 954 if ( item->incidence()->type()=="Todo" && item->mLastMoveXPos > 0 ) {
954 startDate = mSelectedDates[item->mLastMoveXPos]; 955 startDate = mSelectedDates[item->mLastMoveXPos];
955 } else { 956 } else {
956 if (item->cellX() < 0) { 957 if (item->cellX() < 0) {
957 startDate = (mSelectedDates.first()).addDays(item->cellX()); 958 startDate = (mSelectedDates.first()).addDays(item->cellX());
958 } else { 959 } else {
959 startDate = mSelectedDates[item->cellX()]; 960 startDate = mSelectedDates[item->cellX()];
960 } 961 }
961 } 962 }
962 startDt.setDate(startDate); 963 startDt.setDate(startDate);
963 964
964 if (item->incidence()->doesFloat()) { 965 if (item->incidence()->doesFloat()) {
965 endDt.setDate(startDate.addDays(item->cellWidth() - 1)); 966 endDt.setDate(startDate.addDays(item->cellWidth() - 1));
966 } else { 967 } else {
967 if ( type == KOAgenda::RESIZETOP || type == KOAgenda::MOVE ) 968 if ( type == KOAgenda::RESIZETOP || type == KOAgenda::MOVE )
968 startDt.setTime(mAgenda->gyToTime(item->cellYTop())); 969 startDt.setTime(mAgenda->gyToTime(item->cellYTop()));
969 if ( item->incidence()->type() == "Event" ) { 970 if ( item->incidence()->type() == "Event" ) {
970 if ( type == KOAgenda::MOVE ) { 971 if ( type == KOAgenda::MOVE ) {
971 endDt = startDt.addSecs(lenInSecs); 972 endDt = startDt.addSecs(lenInSecs);
972 973
973 } else if ( type == KOAgenda::RESIZEBOTTOM ) { 974 } else if ( type == KOAgenda::RESIZEBOTTOM ) {
974 if (item->lastMultiItem()) { 975 if (item->lastMultiItem()) {
975 endDt.setTime(mAgenda->gyToTime(item->lastMultiItem()->cellYBottom()+1)); 976 endDt.setTime(mAgenda->gyToTime(item->lastMultiItem()->cellYBottom()+1));
976 endDt.setDate(startDate. 977 endDt.setDate(startDate.
977 addDays(item->lastMultiItem()->cellX() - item->cellX())); 978 addDays(item->lastMultiItem()->cellX() - item->cellX()));
978 } else { 979 } else {
979 endDt.setTime(mAgenda->gyToTime(item->cellYBottom()+1)); 980 endDt.setTime(mAgenda->gyToTime(item->cellYBottom()+1));
980 endDt.setDate(startDate); 981 endDt.setDate(startDate);
981 } 982 }
982 } 983 }
983 } else { 984 } else {
984 // todo 985 // todo
985 qDebug("tooooodoooooo "); 986 qDebug("tooooodoooooo ");
986 if (item->lastMultiItem()) { 987 if (item->lastMultiItem()) {
987 endDt.setTime(mAgenda->gyToTime(item->lastMultiItem()->cellYBottom()+1)); 988 endDt.setTime(mAgenda->gyToTime(item->lastMultiItem()->cellYBottom()+1));
988 endDt.setDate(startDate. 989 endDt.setDate(startDate.
989 addDays(item->lastMultiItem()->cellX() - item->cellX())); 990 addDays(item->lastMultiItem()->cellX() - item->cellX()));
990 } else { 991 } else {
991 //qDebug("tem->cellYBottom() %d",item->cellYBottom() ); 992 //qDebug("tem->cellYBottom() %d",item->cellYBottom() );
992 if ( item->cellYBottom() > 0 ) 993 if ( item->cellYBottom() > 0 )
993 endDt.setTime(mAgenda->gyToTime(item->cellYBottom()+1)); 994 endDt.setTime(mAgenda->gyToTime(item->cellYBottom()+1));
994 else 995 else
995 endDt.setTime((static_cast<Todo*>(item->incidence()))->dtDue().time()); 996 endDt.setTime((static_cast<Todo*>(item->incidence()))->dtDue().time());
996 endDt.setDate(startDate); 997 endDt.setDate(startDate);
997 } 998 }
998 } 999 }
999 } 1000 }
1000
1001 qDebug("to888");
1002 if ( item->incidence()->type() == "Event" ) { 1001 if ( item->incidence()->type() == "Event" ) {
1003 item->incidence()->setDtStart(startDt); 1002 item->incidence()->setDtStart(startDt);
1004 (static_cast<Event*>(item->incidence()))->setDtEnd(endDt); 1003 (static_cast<Event*>(item->incidence()))->setDtEnd(endDt);
1005 } else if ( item->incidence()->type() == "Todo" ) { 1004 } else if ( item->incidence()->type() == "Todo" ) {
1006 (static_cast<Todo*>(item->incidence()))->setDtDue(endDt); 1005 (static_cast<Todo*>(item->incidence()))->setDtDue(endDt);
1007 } 1006 }
1008 //qDebug("KOAgendaView::updateEventDates stsart %s end %s ", startDt.toString().latin1(), endDt.toString().latin1() ); 1007 //qDebug("KOAgendaView::updateEventDates stsart %s end %s ", startDt.toString().latin1(), endDt.toString().latin1() );
1009 item->incidence()->setRevision(item->incidence()->revision()+1); 1008 item->incidence()->setRevision(item->incidence()->revision()+1);
1010 item->setItemDate(startDt.date()); 1009 item->setItemDate(startDt.date());
1011 //item->updateItem(); 1010 //item->updateItem();
1012 if ( item->incidence()->type() == "Todo" ) { 1011 if ( item->incidence()->type() == "Todo" ) {
1013 emit todoMoved((Todo*)item->incidence(), KOGlobals::EVENTEDITED ); 1012 emit todoMoved((Todo*)item->incidence(), KOGlobals::EVENTEDITED );
1014 1013
1015 } 1014 }
1016 else 1015 else
1017 emit incidenceChanged(item->incidence(), KOGlobals::EVENTEDITED); 1016 emit incidenceChanged(item->incidence(), KOGlobals::EVENTEDITED);
1018 item->updateItem(); 1017 item->updateItem();
1019} 1018}
1020 1019
1021void KOAgendaView::showDates( const QDate &start, const QDate &end ) 1020void KOAgendaView::showDates( const QDate &start, const QDate &end )
1022{ 1021{
1023 // kdDebug() << "KOAgendaView::selectDates" << endl; 1022 // kdDebug() << "KOAgendaView::selectDates" << endl;
1024 1023
1025 mSelectedDates.clear(); 1024 mSelectedDates.clear();
1026 // qDebug("KOAgendaView::showDates "); 1025 // qDebug("KOAgendaView::showDates ");
1027 QDate d = start; 1026 QDate d = start;
1028 while (d <= end) { 1027 while (d <= end) {
1029 mSelectedDates.append(d); 1028 mSelectedDates.append(d);
1030 d = d.addDays( 1 ); 1029 d = d.addDays( 1 );
1031 } 1030 }
1032 1031
1033 // and update the view 1032 // and update the view
1034 fillAgenda(); 1033 fillAgenda();
1035} 1034}
1036 1035
1037 1036
1038void KOAgendaView::showEvents(QPtrList<Event>) 1037void KOAgendaView::showEvents(QPtrList<Event>)
1039{ 1038{
1040 kdDebug() << "KOAgendaView::showEvents() is not yet implemented" << endl; 1039 kdDebug() << "KOAgendaView::showEvents() is not yet implemented" << endl;
1041} 1040}
1042 1041
1043void KOAgendaView::changeEventDisplay(Event *, int) 1042void KOAgendaView::changeEventDisplay(Event *, int)
1044{ 1043{
1045 // qDebug("KOAgendaView::changeEventDisplay "); 1044 // qDebug("KOAgendaView::changeEventDisplay ");
1046 // kdDebug() << "KOAgendaView::changeEventDisplay" << endl; 1045 // kdDebug() << "KOAgendaView::changeEventDisplay" << endl;
1047 // this should be re-written to be MUCH smarter. Right now we 1046 // this should be re-written to be MUCH smarter. Right now we
1048 // are just playing dumb. 1047 // are just playing dumb.
1049 fillAgenda(); 1048 fillAgenda();
1050} 1049}
1051 1050
1052void KOAgendaView::fillAgenda(const QDate &) 1051void KOAgendaView::fillAgenda(const QDate &)
1053{ 1052{
1054 // qDebug("KOAgendaView::fillAgenda "); 1053 // qDebug("KOAgendaView::fillAgenda ");
1055 fillAgenda(); 1054 fillAgenda();
1056} 1055}
1057 1056
1058void KOAgendaView::fillAgenda() 1057void KOAgendaView::fillAgenda()
1059{ 1058{
1060 if ( globalFlagBlockStartup ) 1059 if ( globalFlagBlockStartup )
1061 return; 1060 return;
1062 if ( globalFlagBlockAgenda == 1 ) 1061 if ( globalFlagBlockAgenda == 1 )
1063 return; 1062 return;
1064 //if ( globalFlagBlockAgenda == 2 ) 1063 //if ( globalFlagBlockAgenda == 2 )
1065 //globalFlagBlockAgenda = 0; 1064 //globalFlagBlockAgenda = 0;
1066 // globalFlagBlockPainting = false; 1065 // globalFlagBlockPainting = false;
1067 if ( globalFlagBlockAgenda == 0 ) 1066 if ( globalFlagBlockAgenda == 0 )
1068 globalFlagBlockAgenda = 1; 1067 globalFlagBlockAgenda = 1;
1069 // clearView(); 1068 // clearView();
1070 //qDebug("fillAgenda()++++ "); 1069 //qDebug("fillAgenda()++++ ");
1071 globalFlagBlockAgendaItemPaint = 1; 1070 globalFlagBlockAgendaItemPaint = 1;
1072 mAllDayAgenda->changeColumns(mSelectedDates.count()); 1071 mAllDayAgenda->changeColumns(mSelectedDates.count());
1073 mAgenda->changeColumns(mSelectedDates.count()); 1072 mAgenda->changeColumns(mSelectedDates.count());
1074 qApp->processEvents(); 1073 qApp->processEvents();
1075 mEventIndicatorTop->changeColumns(mSelectedDates.count()); 1074 mEventIndicatorTop->changeColumns(mSelectedDates.count());
1076 mEventIndicatorBottom->changeColumns(mSelectedDates.count()); 1075 mEventIndicatorBottom->changeColumns(mSelectedDates.count());
1077 setHolidayMasks(); 1076 setHolidayMasks();
1078 1077
1079 //mAgenda->hideUnused(); 1078 //mAgenda->hideUnused();
1080 //mAllDayAgenda->hideUnused(); 1079 //mAllDayAgenda->hideUnused();
1081 1080
1082 // mAgenda->blockNextRepaint( false ); 1081 // mAgenda->blockNextRepaint( false );
1083 // mAgenda->viewport()->repaint(); 1082 // mAgenda->viewport()->repaint();
1084 // mAgenda->blockNextRepaint( true ); 1083 // mAgenda->blockNextRepaint( true );
1085 mMinY.resize(mSelectedDates.count()); 1084 mMinY.resize(mSelectedDates.count());
1086 mMaxY.resize(mSelectedDates.count()); 1085 mMaxY.resize(mSelectedDates.count());
1087 1086
1088 QPtrList<Event> dayEvents; 1087 QPtrList<Event> dayEvents;
1089 1088
1090 // ToDo items shall be displayed for the day they are due, but only showed today if they are already overdue. 1089 // ToDo items shall be displayed for the day they are due, but only showed today if they are already overdue.
1091 // Therefore, gtodoset all of them. 1090 // Therefore, gtodoset all of them.
1092 QPtrList<Todo> todos = calendar()->todos(); 1091 QPtrList<Todo> todos = calendar()->todos();
1093 1092
1094 mAgenda->setDateList(mSelectedDates); 1093 mAgenda->setDateList(mSelectedDates);
1095 1094
1096 QDate today = QDate::currentDate(); 1095 QDate today = QDate::currentDate();
1097 1096
1098 DateList::ConstIterator dit; 1097 DateList::ConstIterator dit;
1099 int curCol = 0; 1098 int curCol = 0;
1100 for( dit = mSelectedDates.begin(); dit != mSelectedDates.end(); ++dit ) { 1099 for( dit = mSelectedDates.begin(); dit != mSelectedDates.end(); ++dit ) {
1101 QDate currentDate = *dit; 1100 QDate currentDate = *dit;
1102 // kdDebug() << "KOAgendaView::fillAgenda(): " << currentDate.toString() 1101 // kdDebug() << "KOAgendaView::fillAgenda(): " << currentDate.toString()
1103 // << endl; 1102 // << endl;
1104 1103
1105 dayEvents = calendar()->events(currentDate,true); 1104 dayEvents = calendar()->events(currentDate,true);
1106 1105
1107 // Default values, which can never be reached 1106 // Default values, which can never be reached
1108 mMinY[curCol] = mAgenda->timeToY(QTime(23,59)) + 1; 1107 mMinY[curCol] = mAgenda->timeToY(QTime(23,59)) + 1;
1109 mMaxY[curCol] = mAgenda->timeToY(QTime(0,0)) - 1; 1108 mMaxY[curCol] = mAgenda->timeToY(QTime(0,0)) - 1;
1110 1109
1111 unsigned int numEvent; 1110 unsigned int numEvent;
1112 for(numEvent=0;numEvent<dayEvents.count();++numEvent) { 1111 for(numEvent=0;numEvent<dayEvents.count();++numEvent) {
1113 Event *event = dayEvents.at(numEvent); 1112 Event *event = dayEvents.at(numEvent);
1114 if ( !KOPrefs::instance()->mShowSyncEvents && event->uid().left(2) == QString("la") ) 1113 if ( !KOPrefs::instance()->mShowSyncEvents && event->uid().left(2) == QString("la") )
1115 if ( event->uid().left(15) == QString("last-syncEvent-") ) 1114 if ( event->uid().left(15) == QString("last-syncEvent-") )
1116 continue; 1115 continue;
1117 // kdDebug() << " Event: " << event->summary() << endl; 1116 // kdDebug() << " Event: " << event->summary() << endl;
1118 1117
1119 int beginX = currentDate.daysTo(event->dtStart().date()) + curCol; 1118 int beginX = currentDate.daysTo(event->dtStart().date()) + curCol;
1120 int endX = currentDate.daysTo(event->dtEnd().date()) + curCol; 1119 int endX = currentDate.daysTo(event->dtEnd().date()) + curCol;
1121 1120
1122 // kdDebug() << " beginX: " << beginX << " endX: " << endX << endl; 1121 // kdDebug() << " beginX: " << beginX << " endX: " << endX << endl;
1123 1122
1124 if (event->doesFloat()) { 1123 if (event->doesFloat()) {
1125 if (event->recurrence()->doesRecur()) { 1124 if (event->recurrence()->doesRecur()) {
1126 mAllDayAgenda->insertAllDayItem(event,currentDate,curCol,curCol); 1125 mAllDayAgenda->insertAllDayItem(event,currentDate,curCol,curCol);
1127 } else { 1126 } else {
1128 if (beginX <= 0 && curCol == 0) { 1127 if (beginX <= 0 && curCol == 0) {
1129 mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX); 1128 mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX);
1130 } else if (beginX == curCol) { 1129 } else if (beginX == curCol) {
1131 mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX); 1130 mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX);
1132 } 1131 }
1133 } 1132 }
1134 } else if (event->isMultiDay()) { 1133 } else if (event->isMultiDay()) {
1135 if ( event->doesRecur () ) { 1134 if ( event->doesRecur () ) {
1136 QDate dateit = currentDate; 1135 QDate dateit = currentDate;
1137 int count = 0; 1136 int count = 0;
1138 int max = event->dtStart().daysTo( event->dtEnd() ) +2; 1137 int max = event->dtStart().daysTo( event->dtEnd() ) +2;
1139 while (! event->recursOn( dateit ) && count <= max ) { 1138 while (! event->recursOn( dateit ) && count <= max ) {
1140 ++count; 1139 ++count;
1141 dateit = dateit.addDays( -1 ); 1140 dateit = dateit.addDays( -1 );
1142 } 1141 }
1143 bool ok; 1142 bool ok;
1144 QDateTime nextOcstart = event->getNextOccurence( QDateTime(dateit) ,&ok ); 1143 QDateTime nextOcstart = event->getNextOccurence( QDateTime(dateit) ,&ok );
1145 if ( ok ) 1144 if ( ok )
1146 { 1145 {
1147 int secs = event->dtStart().secsTo( event->dtEnd() ); 1146 int secs = event->dtStart().secsTo( event->dtEnd() );
1148 QDateTime nextOcend =nextOcstart.addSecs( secs ); ; 1147 QDateTime nextOcend =nextOcstart.addSecs( secs ); ;
1149 beginX = currentDate.daysTo(nextOcstart.date()) + curCol; 1148 beginX = currentDate.daysTo(nextOcstart.date()) + curCol;
1150 endX = currentDate.daysTo(nextOcend.date()) + curCol; 1149 endX = currentDate.daysTo(nextOcend.date()) + curCol;
1151 1150
1152 } 1151 }
1153 } 1152 }
1154 int startY = mAgenda->timeToY(event->dtStart().time()); 1153 int startY = mAgenda->timeToY(event->dtStart().time());
1155 int endY = mAgenda->timeToY(event->dtEnd().time()) - 1; 1154 int endY = mAgenda->timeToY(event->dtEnd().time()) - 1;
1156 //qDebug("insert %d %d %d %d %d ",beginX,endX,startY,endY , curCol ); 1155 //qDebug("insert %d %d %d %d %d ",beginX,endX,startY,endY , curCol );
1157 if ((beginX <= 0 && curCol == 0) || beginX == curCol) { 1156 if ((beginX <= 0 && curCol == 0) || beginX == curCol) {
1158 //qDebug("insert!!! "); 1157 //qDebug("insert!!! ");
1159 mAgenda->insertMultiItem(event,currentDate,beginX,endX,startY,endY); 1158 mAgenda->insertMultiItem(event,currentDate,beginX,endX,startY,endY);
1160 } 1159 }
1161 if (beginX == curCol) { 1160 if (beginX == curCol) {
1162 mMaxY[curCol] = mAgenda->timeToY(QTime(23,59)); 1161 mMaxY[curCol] = mAgenda->timeToY(QTime(23,59));
1163 if (startY < mMinY[curCol]) mMinY[curCol] = startY; 1162 if (startY < mMinY[curCol]) mMinY[curCol] = startY;
1164 } else if (endX == curCol) { 1163 } else if (endX == curCol) {
1165 mMinY[curCol] = mAgenda->timeToY(QTime(0,0)); 1164 mMinY[curCol] = mAgenda->timeToY(QTime(0,0));
1166 if (endY > mMaxY[curCol]) mMaxY[curCol] = endY; 1165 if (endY > mMaxY[curCol]) mMaxY[curCol] = endY;
1167 } else { 1166 } else {
1168 mMinY[curCol] = mAgenda->timeToY(QTime(0,0)); 1167 mMinY[curCol] = mAgenda->timeToY(QTime(0,0));
1169 mMaxY[curCol] = mAgenda->timeToY(QTime(23,59)); 1168 mMaxY[curCol] = mAgenda->timeToY(QTime(23,59));
1170 } 1169 }
1171 } else { 1170 } else {
1172 int startY = mAgenda->timeToY(event->dtStart().time()); 1171 int startY = mAgenda->timeToY(event->dtStart().time());
1173 int endY = mAgenda->timeToY(event->dtEnd().time()) - 1; 1172 int endY = mAgenda->timeToY(event->dtEnd().time()) - 1;
1174 if (endY < startY) endY = startY; 1173 if (endY < startY) endY = startY;
1175 mAgenda->insertItem(event,currentDate,curCol,startY,endY); 1174 mAgenda->insertItem(event,currentDate,curCol,startY,endY);
1176 if (startY < mMinY[curCol]) mMinY[curCol] = startY; 1175 if (startY < mMinY[curCol]) mMinY[curCol] = startY;
1177 if (endY > mMaxY[curCol]) mMaxY[curCol] = endY; 1176 if (endY > mMaxY[curCol]) mMaxY[curCol] = endY;
1178 } 1177 }
1179 } 1178 }
1180 // ---------- [display Todos -------------- 1179 // ---------- [display Todos --------------
1181 unsigned int numTodo; 1180 unsigned int numTodo;
1182 for (numTodo = 0; numTodo < todos.count(); ++numTodo) { 1181 for (numTodo = 0; numTodo < todos.count(); ++numTodo) {
1183 Todo *todo = todos.at(numTodo); 1182 Todo *todo = todos.at(numTodo);
1184 1183
1185 if ( ! todo->hasDueDate() && !todo->hasCompletedDate()) continue; // todo shall not be displayed if it has no date 1184 if ( ! todo->hasDueDate() && !todo->hasCompletedDate()) continue; // todo shall not be displayed if it has no date
1186 1185
1187 // ToDo items shall be displayed for the day they are due, but only showed today if they are already overdue. 1186 // ToDo items shall be displayed for the day they are due, but only showed today if they are already overdue.
1188 // Already completed items can be displayed on their original due date 1187 // Already completed items can be displayed on their original due date
1189 //if not KOPrefs::instance()->mShowTodoInAgenda, show overdue in agenda 1188 //if not KOPrefs::instance()->mShowTodoInAgenda, show overdue in agenda
1190 bool overdue = (!todo->isCompleted()) && (todo->dtDue() < today) && KOPrefs::instance()->mShowTodoInAgenda; 1189 bool overdue = (!todo->isCompleted()) && (todo->dtDue() < today) && KOPrefs::instance()->mShowTodoInAgenda;
1191 bool fillIn = false; 1190 bool fillIn = false;
1192 if ( todo->hasCompletedDate() && todo->completed().date() == currentDate ) 1191 if ( todo->hasCompletedDate() && todo->completed().date() == currentDate )
1193 fillIn = true; 1192 fillIn = true;