summaryrefslogtreecommitdiffabout
path: root/korganizer/kodaymatrix.cpp
Unidiff
Diffstat (limited to 'korganizer/kodaymatrix.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/kodaymatrix.cpp34
1 files changed, 23 insertions, 11 deletions
diff --git a/korganizer/kodaymatrix.cpp b/korganizer/kodaymatrix.cpp
index 59618bf..d543aaf 100644
--- a/korganizer/kodaymatrix.cpp
+++ b/korganizer/kodaymatrix.cpp
@@ -106,27 +106,29 @@ KODayMatrix::KODayMatrix( QWidget *parent, const char *name )
106 : QFrame( parent, name , Qt::WRepaintNoErase ), mCalendar( 0 ) 106 : QFrame( parent, name , Qt::WRepaintNoErase ), mCalendar( 0 )
107 107
108#if 0 108#if 0
109KODayMatrix::KODayMatrix(QWidget *parent, Calendar* calendar, QDate date, const char *name) : 109KODayMatrix::KODayMatrix(QWidget *parent, Calendar* calendar, QDate date, const char *name) :
110 QFrame(parent, name) 110 QFrame(parent, name)
111#endif 111#endif
112{ 112{
113 mKODaymatrixWhatsThis = new KODaymatrixWhatsThis(this); 113 mKODaymatrixWhatsThis = new KODaymatrixWhatsThis(this);
114 mPendingUpdateBeforeRepaint = false; 114 mPendingUpdateBeforeRepaint = false;
115 mouseDown = false; 115 mouseDown = false;
116 // initialize dynamic arrays 116 // initialize dynamic arrays
117 bDays.resize ( NUMDAYS ); 117 bDays.resize ( NUMDAYS );
118 hDays.resize ( NUMDAYS );;
119 eDays.resize ( NUMDAYS );;
118 days = new QDate[NUMDAYS]; 120 days = new QDate[NUMDAYS];
119 daylbls = new QString[NUMDAYS]; 121 daylbls = new QString[NUMDAYS];
120 events = new int[NUMDAYS]; 122 //events = new int[NUMDAYS];
121 mToolTip = new DynamicTip(this); 123 mToolTip = new DynamicTip(this);
122 124
123 // set default values used for drawing the matrix 125 // set default values used for drawing the matrix
124 mDefaultBackColor = palette().active().base(); 126 mDefaultBackColor = palette().active().base();
125 mDefaultTextColor = palette().active().foreground(); 127 mDefaultTextColor = palette().active().foreground();
126 mDefaultTextColorShaded = getShadedColor(mDefaultTextColor); 128 mDefaultTextColorShaded = getShadedColor(mDefaultTextColor);
127 mHolidayColorShaded = getShadedColor(KOPrefs::instance()->mHolidayColor); 129 mHolidayColorShaded = getShadedColor(KOPrefs::instance()->mHolidayColor);
128 mSelectedDaysColor = QColor("white"); 130 mSelectedDaysColor = QColor("white");
129 mTodayMarginWidth = 2; 131 mTodayMarginWidth = 2;
130 mSelEnd = mSelStart = NOSELECTION; 132 mSelEnd = mSelStart = NOSELECTION;
131 133
132 setAcceptDrops(true); 134 setAcceptDrops(true);
@@ -231,25 +233,25 @@ QColor KODayMatrix::getShadedColor(QColor color)
231 s = s/4; 233 s = s/4;
232 v = 192+v/4; 234 v = 192+v/4;
233 shaded.setHsv(h,s,v); 235 shaded.setHsv(h,s,v);
234 236
235 return shaded; 237 return shaded;
236} 238}
237 239
238KODayMatrix::~KODayMatrix() 240KODayMatrix::~KODayMatrix()
239{ 241{
240 // delete mKODaymatrixWhatsThis; 242 // delete mKODaymatrixWhatsThis;
241 delete [] days; 243 delete [] days;
242 delete [] daylbls; 244 delete [] daylbls;
243 delete [] events; 245 //delete [] events;
244 delete mToolTip; 246 delete mToolTip;
245} 247}
246 248
247/* 249/*
248void KODayMatrix::setStartDate(QDate start) 250void KODayMatrix::setStartDate(QDate start)
249{ 251{
250 updateView(start); 252 updateView(start);
251} 253}
252*/ 254*/
253 255
254void KODayMatrix::addSelectedDaysTo(DateList& selDays) 256void KODayMatrix::addSelectedDaysTo(DateList& selDays)
255{ 257{
@@ -302,25 +304,25 @@ bool KODayMatrix::setSelectedDaysFrom(const QDate& start, const QDate& end)
302 return true; 304 return true;
303} 305}
304void KODayMatrix::clearSelection() 306void KODayMatrix::clearSelection()
305{ 307{
306 mSelEnd = mSelStart = NOSELECTION; 308 mSelEnd = mSelStart = NOSELECTION;
307} 309}
308 310
309 311
310void KODayMatrix::recalculateToday() 312void KODayMatrix::recalculateToday()
311{ 313{
312 today = -1; 314 today = -1;
313 for (int i=0; i<NUMDAYS; i++) { 315 for (int i=0; i<NUMDAYS; i++) {
314 events[i] = 0; 316 //events[i] = 0;
315 days[i] = startdate.addDays(i); 317 days[i] = startdate.addDays(i);
316 daylbls[i] = QString::number( KOGlobals::self()->calendarSystem()->day( days[i] )); 318 daylbls[i] = QString::number( KOGlobals::self()->calendarSystem()->day( days[i] ));
317 319
318 // if today is in the currently displayed month, hilight today 320 // if today is in the currently displayed month, hilight today
319 if (days[i].year() == QDate::currentDate().year() && 321 if (days[i].year() == QDate::currentDate().year() &&
320 days[i].month() == QDate::currentDate().month() && 322 days[i].month() == QDate::currentDate().month() &&
321 days[i].day() == QDate::currentDate().day()) { 323 days[i].day() == QDate::currentDate().day()) {
322 today = i; 324 today = i;
323 } 325 }
324 } 326 }
325 // qDebug(QString("Today is visible at %1.").arg(today)); 327 // qDebug(QString("Today is visible at %1.").arg(today));
326} 328}
@@ -340,47 +342,51 @@ void KODayMatrix::updateViewTimed()
340 if ( !mCalendar ) { 342 if ( !mCalendar ) {
341 qDebug("NOT CAL "); 343 qDebug("NOT CAL ");
342 return; 344 return;
343 } 345 }
344 //qDebug("KODayMatrix::updateViewTimed "); 346 //qDebug("KODayMatrix::updateViewTimed ");
345 for(int i = 0; i < NUMDAYS; i++) { 347 for(int i = 0; i < NUMDAYS; i++) {
346 // if events are set for the day then remember to draw it bold 348 // if events are set for the day then remember to draw it bold
347 QPtrList<Event> eventlist = mCalendar->events(days[i]); 349 QPtrList<Event> eventlist = mCalendar->events(days[i]);
348 Event *event; 350 Event *event;
349 int numEvents = eventlist.count(); 351 int numEvents = eventlist.count();
350 QString holiStr = ""; 352 QString holiStr = "";
351 bDays.clearBit(i); 353 bDays.clearBit(i);
354 hDays.clearBit(i);
355 eDays.clearBit(i);
352 for(event=eventlist.first();event != 0;event=eventlist.next()) { 356 for(event=eventlist.first();event != 0;event=eventlist.next()) {
353 ushort recurType = event->recurrence()->doesRecur(); 357 ushort recurType = event->recurrence()->doesRecur();
354 if ((recurType == Recurrence::rDaily && !KOPrefs::instance()->mDailyRecur) || 358 if ((recurType == Recurrence::rDaily && !KOPrefs::instance()->mDailyRecur) ||
355 (recurType == Recurrence::rWeekly && !KOPrefs::instance()->mWeeklyRecur)) { 359 (recurType == Recurrence::rWeekly && !KOPrefs::instance()->mWeeklyRecur)) {
356 numEvents--; 360 numEvents--;
357 } 361 }
358 if ( event->isHoliday()) { 362 if ( event->isHoliday()) {
363 hDays.setBit(i);
359 if ( !holiStr.isEmpty() ) 364 if ( !holiStr.isEmpty() )
360 holiStr += "\n"; 365 holiStr += "\n";
361 holiStr += event->summary(); 366 holiStr += event->summary();
362 if ( !event->location().isEmpty() ) 367 if ( !event->location().isEmpty() )
363 holiStr += " (" + event->location() + ")"; 368 holiStr += " (" + event->location() + ")";
364 } 369 }
365 if ( event->isBirthday()) { 370 if ( event->isBirthday()) {
366 if ( !holiStr.isEmpty() ) 371 if ( !holiStr.isEmpty() )
367 holiStr += "\n"; 372 holiStr += "\n";
368 holiStr += i18n("Birthday") + ": "+event->summary(); 373 holiStr += i18n("Birthday") + ": "+event->summary();
369 if ( !event->location().isEmpty() ) 374 if ( !event->location().isEmpty() )
370 holiStr += " (" + event->location() + ")"; 375 holiStr += " (" + event->location() + ")";
371 bDays.setBit(i); 376 bDays.setBit(i);
372 } 377 }
373 } 378 }
374 events[i] = numEvents; 379 if ( numEvents )
380 eDays.setBit(i);
375 //if it is a holy day then draw it red. Sundays are consider holidays, too 381 //if it is a holy day then draw it red. Sundays are consider holidays, too
376 if ( (KOGlobals::self()->calendarSystem()->dayOfWeek(days[i]) == KOGlobals::self()->calendarSystem()->weekDayOfPray()) || 382 if ( (KOGlobals::self()->calendarSystem()->dayOfWeek(days[i]) == KOGlobals::self()->calendarSystem()->weekDayOfPray()) ||
377 !holiStr.isEmpty()) { 383 !holiStr.isEmpty()) {
378 mHolidays[i] = holiStr; 384 mHolidays[i] = holiStr;
379 } else { 385 } else {
380 mHolidays[i] = QString::null; 386 mHolidays[i] = QString::null;
381 } 387 }
382 } 388 }
383 if ( ! mPendingUpdateBeforeRepaint ) 389 if ( ! mPendingUpdateBeforeRepaint )
384 repaint(false); 390 repaint(false);
385} 391}
386void KODayMatrix::updateView(QDate actdate) 392void KODayMatrix::updateView(QDate actdate)
@@ -438,26 +444,29 @@ void KODayMatrix::updateEvents()
438 QPtrList<Event> eventlist = mCalendar->events( days[ i ] ); 444 QPtrList<Event> eventlist = mCalendar->events( days[ i ] );
439 int numEvents = eventlist.count(); 445 int numEvents = eventlist.count();
440 Event *event; 446 Event *event;
441 for( event = eventlist.first(); event != 0;event=eventlist.next()) { 447 for( event = eventlist.first(); event != 0;event=eventlist.next()) {
442 ushort recurType = event->doesRecur(); 448 ushort recurType = event->doesRecur();
443 449
444 if ( ( recurType == Recurrence::rDaily && 450 if ( ( recurType == Recurrence::rDaily &&
445 !KOPrefs::instance()->mDailyRecur ) || 451 !KOPrefs::instance()->mDailyRecur ) ||
446 ( recurType == Recurrence::rWeekly && 452 ( recurType == Recurrence::rWeekly &&
447 !KOPrefs::instance()->mWeeklyRecur ) ) { 453 !KOPrefs::instance()->mWeeklyRecur ) ) {
448 numEvents--; 454 numEvents--;
449 } 455 }
450 } 456 }
451 events[ i ] = numEvents; 457 if ( numEvents )
458 eDays.setBit(i);
459 else
460 eDays.clearBit(i);
452 } 461 }
453} 462}
454 463
455const QDate& KODayMatrix::getDate(int offset) 464const QDate& KODayMatrix::getDate(int offset)
456{ 465{
457 if (offset < 0 || offset > NUMDAYS-1) { 466 if (offset < 0 || offset > NUMDAYS-1) {
458 qDebug("Wrong offset2 %d", offset); 467 qDebug("Wrong offset2 %d", offset);
459 return days[0]; 468 return days[0];
460 } 469 }
461 return days[offset]; 470 return days[offset];
462} 471}
463 472
@@ -853,36 +862,39 @@ void KODayMatrix::paintEvent(QPaintEvent * pevent)
853 } 862 }
854 if ( colModulo ) { 863 if ( colModulo ) {
855 if ( col >= 7 - colModulo ) 864 if ( col >= 7 - colModulo )
856 addCol = col - 6 + colModulo-1; 865 addCol = col - 6 + colModulo-1;
857 } 866 }
858 867
859 addCol += 1; 868 addCol += 1;
860 p.drawRect(col*dwidth+addCol, row*dheight+addRow, dwidth, dheight+1); 869 p.drawRect(col*dwidth+addCol, row*dheight+addRow, dwidth, dheight+1);
861 p.setPen(tmppen); 870 p.setPen(tmppen);
862 } 871 }
863 872
864 // if any events are on that day then draw it using a bold font 873 // if any events are on that day then draw it using a bold font
865 if (events[i] > 0) { 874 if ( eDays.testBit(i) ) {
866 QFont myFont = font(); 875 QFont myFont = font();
867 myFont.setBold(true); 876 myFont.setBold(true);
868 p.setFont(myFont); 877 p.setFont(myFont);
869 } 878 }
870 879
871 // if it is a holiday then use the default holiday color 880 // if it is a holiday then use the default holiday color
872 if (!mHolidays[i].isNull()) { 881 if ( !mHolidays[i].isNull()) {
873 if ( bDays.testBit(i) ) { 882 if ( bDays.testBit(i) ) {
874 p.setPen(Qt::green); 883 if ( hDays.testBit(i) )
884 p.setPen(QColor(Qt::green));
885 else
886 p.setPen(QColor(Qt::green).dark());
875 } else { 887 } else {
876 if (actcol == mDefaultTextColor) { 888 if (actcol == mDefaultTextColor ) {
877 p.setPen(KOPrefs::instance()->mHolidayColor); 889 p.setPen(KOPrefs::instance()->mHolidayColor);
878 } else { 890 } else {
879 p.setPen(mHolidayColorShaded); 891 p.setPen(mHolidayColorShaded);
880 } 892 }
881 } 893 }
882 } 894 }
883 895
884 // draw selected days with special color 896 // draw selected days with special color
885 // DO NOT specially highlight holidays in selection ! 897 // DO NOT specially highlight holidays in selection !
886 if (i >= mSelStartT && i <= mSelEndT) { 898 if (i >= mSelStartT && i <= mSelEndT) {
887 ;//p.setPen(mSelectedDaysColor); 899 ;//p.setPen(mSelectedDaysColor);
888 } 900 }
@@ -900,25 +912,25 @@ void KODayMatrix::paintEvent(QPaintEvent * pevent)
900 //qDebug("add %d %d -- %d %d ", col, addCol, row, addRow); 912 //qDebug("add %d %d -- %d %d ", col, addCol, row, addRow);
901 ++addCol;//++addCol; 913 ++addCol;//++addCol;
902 if ( row == 0) 914 if ( row == 0)
903 addRow = 1; 915 addRow = 1;
904 p.drawText(col*dwidth+addCol, row*dheight+addRow, dwidth, dheight, 916 p.drawText(col*dwidth+addCol, row*dheight+addRow, dwidth, dheight,
905 Qt::AlignHCenter | Qt::AlignVCenter, daylbls[i]); 917 Qt::AlignHCenter | Qt::AlignVCenter, daylbls[i]);
906 918
907 // reset color to actual color 919 // reset color to actual color
908 if (!mHolidays[i].isNull()) { 920 if (!mHolidays[i].isNull()) {
909 p.setPen(actcol); 921 p.setPen(actcol);
910 } 922 }
911 // reset bold font to plain font 923 // reset bold font to plain font
912 if (events[i] > 0) { 924 if ( eDays.testBit(i)) {
913 QFont myFont = font(); 925 QFont myFont = font();
914 myFont.setBold(false); 926 myFont.setBold(false);
915 p.setFont(myFont); 927 p.setFont(myFont);
916 } 928 }
917 } 929 }
918 int off = 0;//xyOff; 930 int off = 0;//xyOff;
919 bitBlt (this, off, off, &myPix, 0 ,0,width(), height() ,CopyROP); 931 bitBlt (this, off, off, &myPix, 0 ,0,width(), height() ,CopyROP);
920 //qDebug("ffffffffff %d ", off); 932 //qDebug("ffffffffff %d ", off);
921} 933}
922 934
923// ---------------------------------------------------------------------------- 935// ----------------------------------------------------------------------------
924// R E SI Z E E V E N T H A N D L I N G 936// R E SI Z E E V E N T H A N D L I N G