summaryrefslogtreecommitdiffabout
path: root/korganizer/kodaymatrix.cpp
Unidiff
Diffstat (limited to 'korganizer/kodaymatrix.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/kodaymatrix.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/korganizer/kodaymatrix.cpp b/korganizer/kodaymatrix.cpp
index 9baff20..493382d 100644
--- a/korganizer/kodaymatrix.cpp
+++ b/korganizer/kodaymatrix.cpp
@@ -366,98 +366,98 @@ void KODayMatrix::updateViewTimed()
366 //if it is a holy day then draw it red. Sundays are consider holidays, too 366 //if it is a holy day then draw it red. Sundays are consider holidays, too
367 if ( (KOGlobals::self()->calendarSystem()->dayOfWeek(days[i]) == KOGlobals::self()->calendarSystem()->weekDayOfPray()) || 367 if ( (KOGlobals::self()->calendarSystem()->dayOfWeek(days[i]) == KOGlobals::self()->calendarSystem()->weekDayOfPray()) ||
368 !holiStr.isEmpty()) { 368 !holiStr.isEmpty()) {
369 mHolidays[i] = holiStr; 369 mHolidays[i] = holiStr;
370 } else { 370 } else {
371 mHolidays[i] = QString::null; 371 mHolidays[i] = QString::null;
372 } 372 }
373 } 373 }
374 if ( ! mPendingUpdateBeforeRepaint ) 374 if ( ! mPendingUpdateBeforeRepaint )
375 repaint(false); 375 repaint(false);
376} 376}
377void KODayMatrix::updateView(QDate actdate) 377void KODayMatrix::updateView(QDate actdate)
378{ 378{
379 379
380 if ( ! actdate.isValid() ) { 380 if ( ! actdate.isValid() ) {
381 //qDebug("date not valid "); 381 //qDebug("date not valid ");
382 return; 382 return;
383 } 383 }
384 mDayChanged = false; 384 mDayChanged = false;
385 //flag to indicate if the starting day of the matrix has changed by this call 385 //flag to indicate if the starting day of the matrix has changed by this call
386 //mDayChanged = false; 386 //mDayChanged = false;
387 // if a new startdate is to be set then apply Cornelius's calculation 387 // if a new startdate is to be set then apply Cornelius's calculation
388 // of the first day to be shown 388 // of the first day to be shown
389 if (actdate != startdate) { 389 if (actdate != startdate) {
390 // reset index of selection according to shift of starting date from startdate to actdate 390 // reset index of selection according to shift of starting date from startdate to actdate
391 if (mSelStart != NOSELECTION) { 391 if (mSelStart != NOSELECTION) {
392 int tmp = actdate.daysTo(startdate); 392 int tmp = actdate.daysTo(startdate);
393 //kdDebug() << "Shift of Selection1: " << mSelStart << " - " << mSelEnd << " -> " << tmp << "(" << offset << ")" << endl; 393 //kdDebug() << "Shift of Selection1: " << mSelStart << " - " << mSelEnd << " -> " << tmp << "(" << offset << ")" << endl;
394 // shift selection if new one would be visible at least partly ! 394 // shift selection if new one would be visible at least partly !
395 395
396 if (mSelStart+tmp < NUMDAYS && mSelEnd+tmp >= 0) { 396 if (mSelStart+tmp < NUMDAYS && mSelEnd+tmp >= 0) {
397 // nested if is required for next X display pushed from a different month - correction required 397 // nested if is required for next X display pushed from a different month - correction required
398 // otherwise, for month forward and backward, it must be avoided 398 // otherwise, for month forward and backward, it must be avoided
399 if( mSelStart > NUMDAYS || mSelStart < 0 ) 399 if( mSelStart > NUMDAYS || mSelStart < 0 )
400 mSelStart = mSelStart + tmp; 400 mSelStart = mSelStart + tmp;
401 if( mSelEnd > NUMDAYS || mSelEnd < 0 ) 401 if( mSelEnd > NUMDAYS || mSelEnd < 0 )
402 mSelEnd = mSelEnd + tmp; 402 mSelEnd = mSelEnd + tmp;
403 } 403 }
404 } 404 }
405 startdate = actdate; 405 startdate = actdate;
406 mDayChanged = true; 406 mDayChanged = true;
407 recalculateToday(); 407 recalculateToday();
408 } 408 }
409 //qDebug("restart Timer %d vis: %d", mDayChanged, isVisible() ); 409 //qDebug("restart Timer %d vis: %d", mDayChanged, isVisible() );
410 if ( !isVisible() ) { 410 if ( !isVisible() ) {
411 mPendingUpdateBeforeRepaint = true; 411 mPendingUpdateBeforeRepaint = true;
412 } else { 412 } else {
413#ifdef DESKTOP_VERSION 413#ifdef DESKTOP_VERSION
414 //mRepaintTimer->start( 150 ); 414 //mRepaintTimer->start( 100 );
415 mUpdateTimer->start( 150 ); 415 mUpdateTimer->start( 100 );
416#else 416#else
417 mRepaintTimer->start( 350 ); 417 mRepaintTimer->start( 350 );
418 mUpdateTimer->start( 1200 ); 418 mUpdateTimer->start( 1200 );
419#endif 419#endif
420 } 420 }
421} 421}
422void KODayMatrix::updateEvents() 422void KODayMatrix::updateEvents()
423{ 423{
424 if ( !mCalendar ) return; 424 if ( !mCalendar ) return;
425 425
426 for( int i = 0; i < NUMDAYS; i++ ) { 426 for( int i = 0; i < NUMDAYS; i++ ) {
427 // if events are set for the day then remember to draw it bold 427 // if events are set for the day then remember to draw it bold
428 QPtrList<Event> eventlist = mCalendar->events( days[ i ] ); 428 QPtrList<Event> eventlist = mCalendar->events( days[ i ] );
429 int numEvents = eventlist.count(); 429 int numEvents = eventlist.count();
430 Event *event; 430 Event *event;
431 for( event = eventlist.first(); event != 0;event=eventlist.next()) { 431 for( event = eventlist.first(); event != 0;event=eventlist.next()) {
432 ushort recurType = event->doesRecur(); 432 ushort recurType = event->doesRecur();
433 433
434 if ( ( recurType == Recurrence::rDaily && 434 if ( ( recurType == Recurrence::rDaily &&
435 !KOPrefs::instance()->mDailyRecur ) || 435 !KOPrefs::instance()->mDailyRecur ) ||
436 ( recurType == Recurrence::rWeekly && 436 ( recurType == Recurrence::rWeekly &&
437 !KOPrefs::instance()->mWeeklyRecur ) ) { 437 !KOPrefs::instance()->mWeeklyRecur ) ) {
438 numEvents--; 438 numEvents--;
439 } 439 }
440 } 440 }
441 events[ i ] = numEvents; 441 events[ i ] = numEvents;
442 } 442 }
443} 443}
444 444
445const QDate& KODayMatrix::getDate(int offset) 445const QDate& KODayMatrix::getDate(int offset)
446{ 446{
447 if (offset < 0 || offset > NUMDAYS-1) { 447 if (offset < 0 || offset > NUMDAYS-1) {
448 qDebug("Wrong offset2 %d", offset); 448 qDebug("Wrong offset2 %d", offset);
449 return days[0]; 449 return days[0];
450 } 450 }
451 return days[offset]; 451 return days[offset];
452} 452}
453 453
454QString KODayMatrix::getHolidayLabel(int offset) 454QString KODayMatrix::getHolidayLabel(int offset)
455{ 455{
456 if (offset < 0 || offset > NUMDAYS-1) { 456 if (offset < 0 || offset > NUMDAYS-1) {
457 qDebug("Wrong offset1 %d", offset); 457 qDebug("Wrong offset1 %d", offset);
458 return QString(); 458 return QString();
459 } 459 }
460 return mHolidays[offset]; 460 return mHolidays[offset];
461} 461}
462 462
463int KODayMatrix::getDayIndexFrom(int x, int y) 463int KODayMatrix::getDayIndexFrom(int x, int y)
@@ -790,130 +790,134 @@ void KODayMatrix::paintEvent(QPaintEvent * pevent)
790 actcol = mDefaultTextColorShaded; 790 actcol = mDefaultTextColorShaded;
791 } 791 }
792 p.setPen(actcol); 792 p.setPen(actcol);
793 } 793 }
794 if (actcol == mDefaultTextColorShaded) { 794 if (actcol == mDefaultTextColorShaded) {
795 if ( ! mouseDown ) { 795 if ( ! mouseDown ) {
796 continue; 796 continue;
797 } 797 }
798 } 798 }
799 //Reset pen color after selected days block 799 //Reset pen color after selected days block
800 if (i == mSelEndT+1) { 800 if (i == mSelEndT+1) {
801 p.setPen(actcol); 801 p.setPen(actcol);
802 } 802 }
803 803
804 // if today then draw rectangle around day 804 // if today then draw rectangle around day
805 if (today == i) { 805 if (today == i) {
806 tmppen = p.pen(); 806 tmppen = p.pen();
807 QPen mTodayPen(p.pen()); 807 QPen mTodayPen(p.pen());
808 if ( daysize.width() < 20 ) 808 if ( daysize.width() < 20 )
809 mTodayPen.setWidth(1); 809 mTodayPen.setWidth(1);
810 else 810 else
811 mTodayPen.setWidth(mTodayMarginWidth); 811 mTodayPen.setWidth(mTodayMarginWidth);
812 //draw red rectangle for holidays 812 //draw red rectangle for holidays
813 if (!mHolidays[i].isNull()) { 813 if (!mHolidays[i].isNull()) {
814 if (actcol == mDefaultTextColor) { 814 if (actcol == mDefaultTextColor) {
815 mTodayPen.setColor(KOPrefs::instance()->mHolidayColor); 815 mTodayPen.setColor(KOPrefs::instance()->mHolidayColor);
816 } else { 816 } else {
817 mTodayPen.setColor(mHolidayColorShaded); 817 mTodayPen.setColor(mHolidayColorShaded);
818 } 818 }
819 } 819 }
820 //draw gray rectangle for today if in selection 820 //draw gray rectangle for today if in selection
821 if (i >= mSelStartT && i <= mSelEndT) { 821 if (i >= mSelStartT && i <= mSelEndT) {
822 QColor grey("grey"); 822 QColor grey("grey");
823 mTodayPen.setColor(grey); 823 mTodayPen.setColor(grey);
824 } 824 }
825 p.setPen(mTodayPen); 825 p.setPen(mTodayPen);
826 826
827 827
828 int addCol = 0; 828 int addCol = 0;
829 int addRow = 0; 829 int addRow = 0;
830 if (rowModulo) { 830 if (rowModulo) {
831 if ( row >= 6 - rowModulo ) 831 if ( row >= 6 - rowModulo )
832 addRow = row - 5 + rowModulo; 832 addRow = row - 5 + rowModulo;
833 } 833 }
834 if ( colModulo ) { 834 if ( colModulo ) {
835 if ( col >= 7 - colModulo ) 835 if ( col >= 7 - colModulo )
836 addCol = col - 6 + colModulo-1; 836 addCol = col - 6 + colModulo-1;
837 } 837 }
838 if ( col == 0 )
839 addCol = 1;
838 p.drawRect(col*dwidth+addCol, row*dheight+addRow, dwidth, dheight+1); 840 p.drawRect(col*dwidth+addCol, row*dheight+addRow, dwidth, dheight+1);
839 p.setPen(tmppen); 841 p.setPen(tmppen);
840 } 842 }
841 843
842 // if any events are on that day then draw it using a bold font 844 // if any events are on that day then draw it using a bold font
843 if (events[i] > 0) { 845 if (events[i] > 0) {
844 QFont myFont = font(); 846 QFont myFont = font();
845 myFont.setBold(true); 847 myFont.setBold(true);
846 p.setFont(myFont); 848 p.setFont(myFont);
847 } 849 }
848 850
849 // if it is a holiday then use the default holiday color 851 // if it is a holiday then use the default holiday color
850 if (!mHolidays[i].isNull()) { 852 if (!mHolidays[i].isNull()) {
851 if ( bDays.testBit(i) ) { 853 if ( bDays.testBit(i) ) {
852 p.setPen(Qt::green); 854 p.setPen(Qt::green);
853 } else { 855 } else {
854 if (actcol == mDefaultTextColor) { 856 if (actcol == mDefaultTextColor) {
855 p.setPen(KOPrefs::instance()->mHolidayColor); 857 p.setPen(KOPrefs::instance()->mHolidayColor);
856 } else { 858 } else {
857 p.setPen(mHolidayColorShaded); 859 p.setPen(mHolidayColorShaded);
858 } 860 }
859 } 861 }
860 } 862 }
861 863
862 // draw selected days with special color 864 // draw selected days with special color
863 // DO NOT specially highlight holidays in selection ! 865 // DO NOT specially highlight holidays in selection !
864 if (i >= mSelStartT && i <= mSelEndT) { 866 if (i >= mSelStartT && i <= mSelEndT) {
865 ;//p.setPen(mSelectedDaysColor); 867 ;//p.setPen(mSelectedDaysColor);
866 } 868 }
867 869
868 int addCol = 0; 870 int addCol = 0;
869 int addRow = 0; 871 int addRow = 0;
870 if ( colModulo ) { 872 if ( colModulo ) {
871 if ( col >= 7 - colModulo ) 873 if ( col >= 7 - colModulo )
872 addCol = col - 7 + colModulo; 874 addCol = col - 7 + colModulo;
873 } 875 }
874 if ( rowModulo ) { 876 if ( rowModulo ) {
875 if ( row >= 6 - rowModulo ) 877 if ( row >= 6 - rowModulo )
876 addRow = row - 5 + rowModulo; 878 addRow = row - 5 + rowModulo;
877 } 879 }
878 //qDebug("add %d %d -- %d %d ", col, addCol, row, addRow); 880 //qDebug("add %d %d -- %d %d ", col, addCol, row, addRow);
879 ++addCol;//++addCol; 881 ++addCol;//++addCol;
882 if ( row == 0)
883 addRow = 1;
880 p.drawText(col*dwidth+addCol, row*dheight+addRow, dwidth, dheight, 884 p.drawText(col*dwidth+addCol, row*dheight+addRow, dwidth, dheight,
881 Qt::AlignHCenter | Qt::AlignVCenter, daylbls[i]); 885 Qt::AlignHCenter | Qt::AlignVCenter, daylbls[i]);
882 886
883 // reset color to actual color 887 // reset color to actual color
884 if (!mHolidays[i].isNull()) { 888 if (!mHolidays[i].isNull()) {
885 p.setPen(actcol); 889 p.setPen(actcol);
886 } 890 }
887 // reset bold font to plain font 891 // reset bold font to plain font
888 if (events[i] > 0) { 892 if (events[i] > 0) {
889 QFont myFont = font(); 893 QFont myFont = font();
890 myFont.setBold(false); 894 myFont.setBold(false);
891 p.setFont(myFont); 895 p.setFont(myFont);
892 } 896 }
893 } 897 }
894 int off = xyOff; 898 int off = xyOff;
895 bitBlt (this, off, off, &myPix, 0 ,0,width(), height() ,CopyROP); 899 bitBlt (this, off, off, &myPix, 0 ,0,width(), height() ,CopyROP);
896 //qDebug("ffffffffff %d ", off); 900 //qDebug("ffffffffff %d ", off);
897} 901}
898 902
899// ---------------------------------------------------------------------------- 903// ----------------------------------------------------------------------------
900// R E SI Z E E V E N T H A N D L I N G 904// R E SI Z E E V E N T H A N D L I N G
901// ---------------------------------------------------------------------------- 905// ----------------------------------------------------------------------------
902 906
903void KODayMatrix::resizeEvent(QResizeEvent *) 907void KODayMatrix::resizeEvent(QResizeEvent *)
904{ 908{
905 QRect sz = frameRect(); 909 QRect sz = frameRect();
906 daysize.setHeight(sz.height()*7 / NUMDAYS); 910 daysize.setHeight(sz.height()*7 / NUMDAYS);
907 daysize.setWidth(sz.width() / 7); 911 daysize.setWidth(sz.width() / 7);
908} 912}
909 913
910QSize KODayMatrix::sizeHint() const 914QSize KODayMatrix::sizeHint() const
911{ 915{
912 916
913 QFontMetrics fm ( font() ); 917 QFontMetrics fm ( font() );
914 int wid = fm.width( "30") *7+3; 918 int wid = fm.width( "30") *7+3;
915 int hei = fm.height() * 6+3; 919 int hei = fm.height() * 6+3;
916 //qDebug("KODayMatrix::sizeHint()********************* %d %d", wid , hei); 920 //qDebug("KODayMatrix::sizeHint()********************* %d %d", wid , hei);
917 return QSize ( wid, hei ); 921 return QSize ( wid, hei );
918 922
919} 923}