summaryrefslogtreecommitdiffabout
path: root/korganizer/koagendaview.cpp
authorzautrix <zautrix>2005-02-02 19:56:42 (UTC)
committer zautrix <zautrix>2005-02-02 19:56:42 (UTC)
commit20191b4c5acf30282436a7f7215719f7b2ec8b01 (patch) (unidiff)
treedd7ab3caab6d06a09200b3b45c37e98a977ccaff /korganizer/koagendaview.cpp
parentf94c5075fdd356c7a73b23150287034216ef0bdf (diff)
downloadkdepimpi-20191b4c5acf30282436a7f7215719f7b2ec8b01.zip
kdepimpi-20191b4c5acf30282436a7f7215719f7b2ec8b01.tar.gz
kdepimpi-20191b4c5acf30282436a7f7215719f7b2ec8b01.tar.bz2
ccc
Diffstat (limited to 'korganizer/koagendaview.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/koagendaview.cpp47
1 files changed, 44 insertions, 3 deletions
diff --git a/korganizer/koagendaview.cpp b/korganizer/koagendaview.cpp
index c018dc7..f8301f8 100644
--- a/korganizer/koagendaview.cpp
+++ b/korganizer/koagendaview.cpp
@@ -407,54 +407,54 @@ KOAgendaView::KOAgendaView(Calendar *cal,QWidget *parent,const char *name) :
407 agendaFrame->setFocusPolicy(NoFocus); 407 agendaFrame->setFocusPolicy(NoFocus);
408 408
409#endif 409#endif
410 410
411 // Create all-day agenda widget 411 // Create all-day agenda widget
412 mDummyAllDayLeft = new QVBox( mAllDayFrame ); 412 mDummyAllDayLeft = new QVBox( mAllDayFrame );
413 413
414 mExpandButton = new QPushButton(mDummyAllDayLeft); 414 mExpandButton = new QPushButton(mDummyAllDayLeft);
415 mExpandButton->setPixmap( mNotExpandedPixmap ); 415 mExpandButton->setPixmap( mNotExpandedPixmap );
416 int widebut = mExpandButton->sizeHint().width(); 416 int widebut = mExpandButton->sizeHint().width();
417 if ( QApplication::desktop()->width() < 480 ) 417 if ( QApplication::desktop()->width() < 480 )
418 widebut = widebut*2; 418 widebut = widebut*2;
419 else 419 else
420 widebut = (widebut*3) / 2; 420 widebut = (widebut*3) / 2;
421 //mExpandButton->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, 421 //mExpandButton->setSizePolicy( QSizePolicy( QSizePolicy::Fixed,
422 // QSizePolicy::Fixed ) ); 422 // QSizePolicy::Fixed ) );
423 mExpandButton->setFixedSize( widebut, widebut); 423 mExpandButton->setFixedSize( widebut, widebut);
424 connect( mExpandButton, SIGNAL( clicked() ), SIGNAL( toggleExpand() ) ); 424 connect( mExpandButton, SIGNAL( clicked() ), SIGNAL( toggleExpand() ) );
425 mExpandButton->setFocusPolicy(NoFocus); 425 mExpandButton->setFocusPolicy(NoFocus);
426 mAllDayAgenda = new KOAgenda(1,mAllDayFrame); 426 mAllDayAgenda = new KOAgenda(1,mAllDayFrame);
427 mAllDayAgenda->setFocusPolicy(NoFocus); 427 mAllDayAgenda->setFocusPolicy(NoFocus);
428 QVBox *dummyAllDayRight = new QVBox(mAllDayFrame); 428 QVBox *dummyAllDayRight = new QVBox(mAllDayFrame);
429 429
430 QPushButton *dummyAllDayRightB = new QPushButton(dummyAllDayRight); 430 QPushButton *dummyAllDayRightB = new QPushButton(dummyAllDayRight);
431 QLabel * dummyAllDayRightL = new QLabel ( dummyAllDayRight ); 431 mDummyAllDayRightL = new QLabel ( dummyAllDayRight );
432 432
433 dummyAllDayRightB->setFlat( true ); 433 dummyAllDayRightB->setFlat( true );
434 dummyAllDayRightB->setFocusPolicy(NoFocus); 434 dummyAllDayRightB->setFocusPolicy(NoFocus);
435 // dummyAllDayRightB->setSizePolicy(QSizePolicy( QSizePolicy::Expanding ,QSizePolicy::Expanding )); 435 // dummyAllDayRightB->setSizePolicy(QSizePolicy( QSizePolicy::Expanding ,QSizePolicy::Expanding ));
436 //dummyAllDayRightB->setFixedHeight( dummyAllDayRightB->sizeHint().height()/2 ); 436 dummyAllDayRightB->setFixedHeight( (dummyAllDayRightB->sizeHint().height()/4)*3 );
437 QPopupMenu * wpo = new QPopupMenu (this); 437 QPopupMenu * wpo = new QPopupMenu (this);
438 wpo->insertItem( i18n("W#"), 0 ); 438 wpo->insertItem( i18n("W#"), 0 );
439 int i; 439 int i;
440 for ( i = 1; i < 53; i++ ) 440 for ( i = 1; i < 53; i++ )
441 wpo->insertItem( QString::number( i ),i ); 441 wpo->insertItem( QString::number( i ),i );
442 //Qt bug - we must add some empty fields... 442 //Qt bug - we must add some empty fields...
443 for ( i = 53; i < 54; ++i ) { 443 for ( i = 53; i < 54; ++i ) {
444 wpo->insertItem( "", 52 ); 444 wpo->insertItem( "", 52 );
445 } 445 }
446 dummyAllDayRightB->setPopup( wpo ); 446 dummyAllDayRightB->setPopup( wpo );
447 447
448 connect( wpo, SIGNAL( activated(int) ), SIGNAL( selectWeekNum ( int ) ) ); 448 connect( wpo, SIGNAL( activated(int) ), SIGNAL( selectWeekNum ( int ) ) );
449 449
450 // Create event context menu for all day agenda 450 // Create event context menu for all day agenda
451 mAllDayAgendaPopup = eventPopup(); 451 mAllDayAgendaPopup = eventPopup();
452 connect(mAllDayAgenda,SIGNAL(showIncidencePopupSignal(Incidence *)), 452 connect(mAllDayAgenda,SIGNAL(showIncidencePopupSignal(Incidence *)),
453 mAllDayAgendaPopup,SLOT(showIncidencePopup(Incidence *))); 453 mAllDayAgendaPopup,SLOT(showIncidencePopup(Incidence *)));
454 454
455 // Create agenda frame 455 // Create agenda frame
456 QGridLayout *agendaLayout = new QGridLayout(agendaFrame,3,3); 456 QGridLayout *agendaLayout = new QGridLayout(agendaFrame,3,3);
457 // QHBox *agendaFrame = new QHBox(splitterAgenda); 457 // QHBox *agendaFrame = new QHBox(splitterAgenda);
458 458
459 // create event indicator bars 459 // create event indicator bars
460 mEventIndicatorTop = new EventIndicator(EventIndicator::Top,agendaFrame); 460 mEventIndicatorTop = new EventIndicator(EventIndicator::Top,agendaFrame);
@@ -557,48 +557,61 @@ KOAgendaView::KOAgendaView(Calendar *cal,QWidget *parent,const char *name) :
557 /* 557 /*
558 connect(mAgenda,SIGNAL(startDragSignal(Event *)), 558 connect(mAgenda,SIGNAL(startDragSignal(Event *)),
559 SLOT(startDrag(Event *))); 559 SLOT(startDrag(Event *)));
560 connect(mAllDayAgenda,SIGNAL(startDragSignal(Event *)), 560 connect(mAllDayAgenda,SIGNAL(startDragSignal(Event *)),
561 SLOT(startDrag(Event *))); 561 SLOT(startDrag(Event *)));
562 */ 562 */
563 // synchronize selections 563 // synchronize selections
564 connect( mAgenda, SIGNAL( incidenceSelected( Incidence * ) ), 564 connect( mAgenda, SIGNAL( incidenceSelected( Incidence * ) ),
565 mAllDayAgenda, SLOT( deselectItem() ) ); 565 mAllDayAgenda, SLOT( deselectItem() ) );
566 connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ), 566 connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ),
567 mAgenda, SLOT( deselectItem() ) ); 567 mAgenda, SLOT( deselectItem() ) );
568 connect( mAgenda, SIGNAL( incidenceSelected( Incidence * ) ), 568 connect( mAgenda, SIGNAL( incidenceSelected( Incidence * ) ),
569 SIGNAL( incidenceSelected( Incidence * ) ) ); 569 SIGNAL( incidenceSelected( Incidence * ) ) );
570 connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ), 570 connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ),
571 SIGNAL( incidenceSelected( Incidence * ) ) ); 571 SIGNAL( incidenceSelected( Incidence * ) ) );
572 connect( mAgenda, SIGNAL( resizedSignal() ), 572 connect( mAgenda, SIGNAL( resizedSignal() ),
573 SLOT( updateConfig( ) ) ); 573 SLOT( updateConfig( ) ) );
574 connect( mAgenda, SIGNAL( addToCalSignal(Incidence *, Incidence *) ), 574 connect( mAgenda, SIGNAL( addToCalSignal(Incidence *, Incidence *) ),
575 SLOT( addToCalSlot(Incidence *, Incidence * ) ) ); 575 SLOT( addToCalSlot(Incidence *, Incidence * ) ) );
576 connect( mAllDayAgenda, SIGNAL( addToCalSignal(Incidence * ,Incidence *) ), 576 connect( mAllDayAgenda, SIGNAL( addToCalSignal(Incidence * ,Incidence *) ),
577 SLOT( addToCalSlot(Incidence * , Incidence *) ) ); 577 SLOT( addToCalSlot(Incidence * , Incidence *) ) );
578 // connect( mAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) ); 578 // connect( mAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) );
579 //connect( mAllDayAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) ); 579 //connect( mAllDayAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) );
580 580
581 QFont dlf = KOPrefs::instance()->mTimeLabelsFont;
582 QFontMetrics fm ( dlf );
583 QString dayTest = "30";
584 int wid = fm.width( dayTest );
585 int maxWid = dummyAllDayRight->width();
586 int fontPoint = dlf.pointSize();
587 while ( wid > maxWid ) {
588 --fontPoint;
589 dlf.setPointSize( fontPoint );
590 QFontMetrics f( dlf );
591 wid = f.width( dayTest );
592 }
593 mDummyAllDayRightL->setFont( dlf );
581 594
582} 595}
583 596
584void KOAgendaView::toggleAllDay() 597void KOAgendaView::toggleAllDay()
585{ 598{
586 if ( mSplitterAgenda->firstHandle() ) 599 if ( mSplitterAgenda->firstHandle() )
587 mSplitterAgenda->firstHandle()->toggle(); 600 mSplitterAgenda->firstHandle()->toggle();
588} 601}
589void KOAgendaView::addToCalSlot(Incidence * inc, Incidence * incOld ) 602void KOAgendaView::addToCalSlot(Incidence * inc, Incidence * incOld )
590{ 603{
591 calendar()->addIncidence( inc ); 604 calendar()->addIncidence( inc );
592 605
593 if ( incOld ) { 606 if ( incOld ) {
594 if ( incOld->type() == "Todo" ) 607 if ( incOld->type() == "Todo" )
595 emit todoMoved((Todo*)incOld, KOGlobals::EVENTEDITED ); 608 emit todoMoved((Todo*)incOld, KOGlobals::EVENTEDITED );
596 else 609 else
597 emit incidenceChanged(incOld, KOGlobals::EVENTEDITED); 610 emit incidenceChanged(incOld, KOGlobals::EVENTEDITED);
598 } 611 }
599 612
600} 613}
601 614
602KOAgendaView::~KOAgendaView() 615KOAgendaView::~KOAgendaView()
603{ 616{
604 delete mAgendaPopup; 617 delete mAgendaPopup;
@@ -897,49 +910,50 @@ DateList KOAgendaView::selectedDates()
897 if (qd.isValid()) selected.append(qd); 910 if (qd.isValid()) selected.append(qd);
898 911
899 return selected; 912 return selected;
900} 913}
901 914
902 915
903void KOAgendaView::updateView() 916void KOAgendaView::updateView()
904{ 917{
905 if ( mBlockUpdating ) 918 if ( mBlockUpdating )
906 return; 919 return;
907 // kdDebug() << "KOAgendaView::updateView()" << endl; 920 // kdDebug() << "KOAgendaView::updateView()" << endl;
908 fillAgenda(); 921 fillAgenda();
909 922
910} 923}
911 924
912 925
913/* 926/*
914 Update configuration settings for the agenda view. This method is not 927 Update configuration settings for the agenda view. This method is not
915 complete. 928 complete.
916*/ 929*/
917void KOAgendaView::updateConfig() 930void KOAgendaView::updateConfig()
918{ 931{
919 if ( mBlockUpdating ) 932 if ( mBlockUpdating )
920 return; 933 return;
921 // kdDebug() << "KOAgendaView::updateConfig()" << endl; 934
935
922 936
923 // update config for children 937 // update config for children
924 mTimeLabels->updateConfig(); 938 mTimeLabels->updateConfig();
925 mAgenda->storePosition(); 939 mAgenda->storePosition();
926 mAgenda->updateConfig(); 940 mAgenda->updateConfig();
927 mAllDayAgenda->updateConfig(); 941 mAllDayAgenda->updateConfig();
928 // widget synchronization 942 // widget synchronization
929 //TODO: find a better way, maybe signal/slot 943 //TODO: find a better way, maybe signal/slot
930 mTimeLabels->positionChanged(); 944 mTimeLabels->positionChanged();
931 945
932 // for some reason, this needs to be called explicitly 946 // for some reason, this needs to be called explicitly
933 mTimeLabels->repaint(); 947 mTimeLabels->repaint();
934 948
935 mDummyAllDayLeft->setFixedWidth(mTimeLabels->width()); 949 mDummyAllDayLeft->setFixedWidth(mTimeLabels->width());
936 950
937 // ToolTips displaying summary of events 951 // ToolTips displaying summary of events
938 KOAgendaItem::toolTipGroup()->setEnabled(KOPrefs::instance() 952 KOAgendaItem::toolTipGroup()->setEnabled(KOPrefs::instance()
939 ->mEnableToolTips); 953 ->mEnableToolTips);
940 954
941 //setHolidayMasks(); 955 //setHolidayMasks();
942 956
943 //createDayLabels(); called by via updateView(); 957 //createDayLabels(); called by via updateView();
944 mEventIndicatorTop->setXOffset(mTimeLabels->width() + mAgenda->frameWidth()); 958 mEventIndicatorTop->setXOffset(mTimeLabels->width() + mAgenda->frameWidth());
945 updateView(); 959 updateView();
@@ -1063,48 +1077,75 @@ void KOAgendaView::changeEventDisplay(Event *, int)
1063 // are just playing dumb. 1077 // are just playing dumb.
1064 fillAgenda(); 1078 fillAgenda();
1065} 1079}
1066 1080
1067void KOAgendaView::fillAgenda(const QDate &) 1081void KOAgendaView::fillAgenda(const QDate &)
1068{ 1082{
1069 // qDebug("KOAgendaView::fillAgenda "); 1083 // qDebug("KOAgendaView::fillAgenda ");
1070 fillAgenda(); 1084 fillAgenda();
1071} 1085}
1072 1086
1073void KOAgendaView::fillAgenda() 1087void KOAgendaView::fillAgenda()
1074{ 1088{
1075 if ( globalFlagBlockStartup ) 1089 if ( globalFlagBlockStartup )
1076 return; 1090 return;
1077 if ( globalFlagBlockAgenda == 1 ) 1091 if ( globalFlagBlockAgenda == 1 )
1078 return; 1092 return;
1079 //if ( globalFlagBlockAgenda == 2 ) 1093 //if ( globalFlagBlockAgenda == 2 )
1080 //globalFlagBlockAgenda = 0; 1094 //globalFlagBlockAgenda = 0;
1081 // globalFlagBlockPainting = false; 1095 // globalFlagBlockPainting = false;
1082 if ( globalFlagBlockAgenda == 0 ) 1096 if ( globalFlagBlockAgenda == 0 )
1083 globalFlagBlockAgenda = 1; 1097 globalFlagBlockAgenda = 1;
1084 // clearView(); 1098 // clearView();
1085 //qDebug("fillAgenda()++++ "); 1099 //qDebug("fillAgenda()++++ ");
1086 globalFlagBlockAgendaItemPaint = 1; 1100 globalFlagBlockAgendaItemPaint = 1;
1101
1102 int weekNum = 0;
1103 QDate seda = mSelectedDates.first();
1104 QDate d = QDate ( seda.year(), 1,1);
1105 seda = seda.addDays( 1-seda.dayOfWeek() );//we are on monday
1106 if ( seda.addDays(6).year() != seda.year() ) {
1107 if ( seda.year() != d.year() ) {
1108 if ( d.dayOfWeek() > 4 )
1109 d = QDate ( seda.year(), 1,1);
1110 else
1111 weekNum = 1;
1112 } else {
1113 QDate dd( seda.year()+1, 1,1);
1114 if ( dd.dayOfWeek() <= 4 )
1115 weekNum = 1;
1116 }
1117 }
1118 if ( weekNum == 0 ){
1119 int dow = d.dayOfWeek();
1120 if ( dow <= 4 )
1121 d = d.addDays( 1-dow );
1122 else // 5,6,7
1123 d = d.addDays( 8-dow );
1124 // we have the first week of the year.we are on monday
1125 weekNum = d.daysTo( seda ) / 7 +1;
1126 }
1127 mDummyAllDayRightL->setText( QString::number( weekNum) );
1087 mAllDayAgenda->changeColumns(mSelectedDates.count()); 1128 mAllDayAgenda->changeColumns(mSelectedDates.count());
1088 mAgenda->changeColumns(mSelectedDates.count()); 1129 mAgenda->changeColumns(mSelectedDates.count());
1089 qApp->processEvents(); 1130 qApp->processEvents();
1090 mEventIndicatorTop->changeColumns(mSelectedDates.count()); 1131 mEventIndicatorTop->changeColumns(mSelectedDates.count());
1091 mEventIndicatorBottom->changeColumns(mSelectedDates.count()); 1132 mEventIndicatorBottom->changeColumns(mSelectedDates.count());
1092 setHolidayMasks(); 1133 setHolidayMasks();
1093 1134
1094 //mAgenda->hideUnused(); 1135 //mAgenda->hideUnused();
1095 //mAllDayAgenda->hideUnused(); 1136 //mAllDayAgenda->hideUnused();
1096 1137
1097 // mAgenda->blockNextRepaint( false ); 1138 // mAgenda->blockNextRepaint( false );
1098 // mAgenda->viewport()->repaint(); 1139 // mAgenda->viewport()->repaint();
1099 // mAgenda->blockNextRepaint( true ); 1140 // mAgenda->blockNextRepaint( true );
1100 mMinY.resize(mSelectedDates.count()); 1141 mMinY.resize(mSelectedDates.count());
1101 mMaxY.resize(mSelectedDates.count()); 1142 mMaxY.resize(mSelectedDates.count());
1102 1143
1103 QPtrList<Event> dayEvents; 1144 QPtrList<Event> dayEvents;
1104 1145
1105 // ToDo items shall be displayed for the day they are due, but only showed today if they are already overdue. 1146 // ToDo items shall be displayed for the day they are due, but only showed today if they are already overdue.
1106 // Therefore, gtodoset all of them. 1147 // Therefore, gtodoset all of them.
1107 QPtrList<Todo> todos = calendar()->todos(); 1148 QPtrList<Todo> todos = calendar()->todos();
1108 1149
1109 mAgenda->setDateList(mSelectedDates); 1150 mAgenda->setDateList(mSelectedDates);
1110 1151