author | zautrix <zautrix> | 2005-03-22 22:55:32 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-03-22 22:55:32 (UTC) |
commit | aa6d19015bc91ae3af021d766d37a473e125278f (patch) (unidiff) | |
tree | f7b1d6b45a3997013318107ca02fa63b4b76913e /korganizer | |
parent | 53ac6d1f931c50d89a44d9d46daceb7ed9d4ddc6 (diff) | |
download | kdepimpi-aa6d19015bc91ae3af021d766d37a473e125278f.zip kdepimpi-aa6d19015bc91ae3af021d766d37a473e125278f.tar.gz kdepimpi-aa6d19015bc91ae3af021d766d37a473e125278f.tar.bz2 |
fixes
-rw-r--r-- | korganizer/kodaymatrix.cpp | 34 | ||||
-rw-r--r-- | korganizer/kodaymatrix.h | 4 |
2 files changed, 26 insertions, 12 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 |
109 | KODayMatrix::KODayMatrix(QWidget *parent, Calendar* calendar, QDate date, const char *name) : | 109 | KODayMatrix::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 | ||
238 | KODayMatrix::~KODayMatrix() | 240 | KODayMatrix::~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 | /* |
248 | void KODayMatrix::setStartDate(QDate start) | 250 | void KODayMatrix::setStartDate(QDate start) |
249 | { | 251 | { |
250 | updateView(start); | 252 | updateView(start); |
251 | } | 253 | } |
252 | */ | 254 | */ |
253 | 255 | ||
254 | void KODayMatrix::addSelectedDaysTo(DateList& selDays) | 256 | void 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 | } |
304 | void KODayMatrix::clearSelection() | 306 | void KODayMatrix::clearSelection() |
305 | { | 307 | { |
306 | mSelEnd = mSelStart = NOSELECTION; | 308 | mSelEnd = mSelStart = NOSELECTION; |
307 | } | 309 | } |
308 | 310 | ||
309 | 311 | ||
310 | void KODayMatrix::recalculateToday() | 312 | void 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 | } |
386 | void KODayMatrix::updateView(QDate actdate) | 392 | void 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 | ||
455 | const QDate& KODayMatrix::getDate(int offset) | 464 | const 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 |
diff --git a/korganizer/kodaymatrix.h b/korganizer/kodaymatrix.h index 2a1959c..38a7f92 100644 --- a/korganizer/kodaymatrix.h +++ b/korganizer/kodaymatrix.h | |||
@@ -221,24 +221,26 @@ protected: | |||
221 | void dragMoveEvent(QDragMoveEvent *); | 221 | void dragMoveEvent(QDragMoveEvent *); |
222 | 222 | ||
223 | void dragLeaveEvent(QDragLeaveEvent *); | 223 | void dragLeaveEvent(QDragLeaveEvent *); |
224 | 224 | ||
225 | void dropEvent(QDropEvent *); | 225 | void dropEvent(QDropEvent *); |
226 | 226 | ||
227 | void resizeEvent(QResizeEvent *); | 227 | void resizeEvent(QResizeEvent *); |
228 | 228 | ||
229 | private: | 229 | private: |
230 | KODaymatrixWhatsThis* mKODaymatrixWhatsThis; | 230 | KODaymatrixWhatsThis* mKODaymatrixWhatsThis; |
231 | bool mouseDown; | 231 | bool mouseDown; |
232 | QBitArray bDays; | 232 | QBitArray bDays; |
233 | QBitArray hDays; | ||
234 | QBitArray eDays; | ||
233 | QPixmap myPix; | 235 | QPixmap myPix; |
234 | QTimer* mUpdateTimer; | 236 | QTimer* mUpdateTimer; |
235 | QTimer* mRepaintTimer; | 237 | QTimer* mRepaintTimer; |
236 | bool mDayChanged; | 238 | bool mDayChanged; |
237 | bool mPendingUpdateBeforeRepaint; | 239 | bool mPendingUpdateBeforeRepaint; |
238 | 240 | ||
239 | /** returns the index of the day located at the matrix's widget (x,y) position. | 241 | /** returns the index of the day located at the matrix's widget (x,y) position. |
240 | * | 242 | * |
241 | * @param x horizontal coordinate | 243 | * @param x horizontal coordinate |
242 | * @param y vertical coordinate | 244 | * @param y vertical coordinate |
243 | */ | 245 | */ |
244 | int getDayIndexFrom(int x, int y); | 246 | int getDayIndexFrom(int x, int y); |
@@ -261,25 +263,25 @@ private: | |||
261 | QDate startdate; | 263 | QDate startdate; |
262 | 264 | ||
263 | /** array of day labels to optimeize drawing performance. */ | 265 | /** array of day labels to optimeize drawing performance. */ |
264 | QString *daylbls; | 266 | QString *daylbls; |
265 | 267 | ||
266 | /** array of days displayed to reduce memory consumption by | 268 | /** array of days displayed to reduce memory consumption by |
267 | subsequently calling QDate::addDays(). */ | 269 | subsequently calling QDate::addDays(). */ |
268 | QDate *days; | 270 | QDate *days; |
269 | 271 | ||
270 | /** array of storing the number of events on a given day. | 272 | /** array of storing the number of events on a given day. |
271 | * used for drawing a bold font if there is at least one event on that day. | 273 | * used for drawing a bold font if there is at least one event on that day. |
272 | */ | 274 | */ |
273 | int *events; | 275 | //int *events; |
274 | 276 | ||
275 | /** stores holiday names of the days shown in the matrix. */ | 277 | /** stores holiday names of the days shown in the matrix. */ |
276 | QMap<int,QString> mHolidays; | 278 | QMap<int,QString> mHolidays; |
277 | 279 | ||
278 | /** indey of today or -1 if today is not visible in the matrix. */ | 280 | /** indey of today or -1 if today is not visible in the matrix. */ |
279 | int today; | 281 | int today; |
280 | 282 | ||
281 | /** index of day where dragged selection was initiated. | 283 | /** index of day where dragged selection was initiated. |
282 | used to detect "negative" timely selections */ | 284 | used to detect "negative" timely selections */ |
283 | int mSelInit; | 285 | int mSelInit; |
284 | 286 | ||
285 | /** if mSelStart has this value it indicates that there is no | 287 | /** if mSelStart has this value it indicates that there is no |