-rw-r--r-- | korganizer/komonthview.cpp | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp index 2150654..475bb4a 100644 --- a/korganizer/komonthview.cpp +++ b/korganizer/komonthview.cpp | |||
@@ -224,206 +224,213 @@ void KNoScrollListBox::keyPressEvent(QKeyEvent *e) | |||
224 | { | 224 | { |
225 | if ( currentItem() >= 0 ) { | 225 | if ( currentItem() >= 0 ) { |
226 | emit doubleClicked( item( currentItem() ) ); | 226 | emit doubleClicked( item( currentItem() ) ); |
227 | e->accept(); | 227 | e->accept(); |
228 | } else { | 228 | } else { |
229 | e->ignore(); | 229 | e->ignore(); |
230 | } | 230 | } |
231 | } | 231 | } |
232 | break; | 232 | break; |
233 | case Key_Shift: | 233 | case Key_Shift: |
234 | emit shiftDown(); | 234 | emit shiftDown(); |
235 | break; | 235 | break; |
236 | default: | 236 | default: |
237 | e->ignore(); | 237 | e->ignore(); |
238 | break; | 238 | break; |
239 | } | 239 | } |
240 | } | 240 | } |
241 | 241 | ||
242 | void KNoScrollListBox::oneDown() | 242 | void KNoScrollListBox::oneDown() |
243 | { | 243 | { |
244 | if ( count () ) { | 244 | if ( count () ) { |
245 | if ( currentItem()+1 == count () ) { | 245 | if ( currentItem()+1 == count () ) { |
246 | emit nextCell(); | 246 | emit nextCell(); |
247 | } else { | 247 | } else { |
248 | resetOnFocusIn = false; | 248 | resetOnFocusIn = false; |
249 | setCurrentItem((currentItem()+1)%count()); | 249 | setCurrentItem((currentItem()+1)%count()); |
250 | if(!itemVisible(currentItem())) { | 250 | if(!itemVisible(currentItem())) { |
251 | if(currentItem() == 0) { | 251 | if(currentItem() == 0) { |
252 | setTopItem(0); | 252 | setTopItem(0); |
253 | } else { | 253 | } else { |
254 | setTopItem(topItem()+1); | 254 | setTopItem(topItem()+1); |
255 | } | 255 | } |
256 | } | 256 | } |
257 | } | 257 | } |
258 | } | 258 | } |
259 | } | 259 | } |
260 | void KNoScrollListBox::keyReleaseEvent(QKeyEvent *e) | 260 | void KNoScrollListBox::keyReleaseEvent(QKeyEvent *e) |
261 | { | 261 | { |
262 | switch(e->key()) { | 262 | switch(e->key()) { |
263 | case Key_Shift: | 263 | case Key_Shift: |
264 | emit shiftUp(); | 264 | emit shiftUp(); |
265 | break; | 265 | break; |
266 | default: | 266 | default: |
267 | break; | 267 | break; |
268 | } | 268 | } |
269 | } | 269 | } |
270 | 270 | ||
271 | void KNoScrollListBox::mousePressEvent(QMouseEvent *e) | 271 | void KNoScrollListBox::mousePressEvent(QMouseEvent *e) |
272 | { | 272 | { |
273 | QListBox::mousePressEvent(e); | 273 | QListBox::mousePressEvent(e); |
274 | 274 | ||
275 | if(e->button() == RightButton) { | 275 | if(e->button() == RightButton) { |
276 | emit rightClick(); | 276 | emit rightClick(); |
277 | } | 277 | } |
278 | } | 278 | } |
279 | 279 | ||
280 | MonthViewItem::MonthViewItem( Incidence *incidence, QDate qd, const QString & s) | 280 | MonthViewItem::MonthViewItem( Incidence *incidence, QDate qd, const QString & s) |
281 | : QListBoxItem() | 281 | : QListBoxItem() |
282 | { | 282 | { |
283 | mblockRepaint = true; | 283 | mblockRepaint = true; |
284 | setText( s ); | 284 | setText( s ); |
285 | mMultiday = 0; | 285 | mMultiday = 0; |
286 | mIncidence = incidence; | 286 | mIncidence = incidence; |
287 | mDate = qd; | 287 | mDate = qd; |
288 | mRecur = false; | 288 | mRecur = false; |
289 | mAlarm = false; | 289 | mAlarm = false; |
290 | mReply = false; | 290 | mReply = false; |
291 | mInfo = false; | 291 | mInfo = false; |
292 | mdayPos = 0; | 292 | mdayPos = 0; |
293 | isWeekItem = KOPrefs::instance()->mMonthViewWeek; | 293 | isWeekItem = KOPrefs::instance()->mMonthViewWeek; |
294 | } | 294 | } |
295 | void MonthViewItem::recycle( Incidence *incidence, QDate qd, const QString & s) | 295 | void MonthViewItem::recycle( Incidence *incidence, QDate qd, const QString & s) |
296 | { | 296 | { |
297 | setText( s ); | 297 | setText( s ); |
298 | mMultiday = 0; | 298 | mMultiday = 0; |
299 | mIncidence = incidence; | 299 | mIncidence = incidence; |
300 | mDate = qd; | 300 | mDate = qd; |
301 | mRecur = false; | 301 | mRecur = false; |
302 | mAlarm = false; | 302 | mAlarm = false; |
303 | mReply = false; | 303 | mReply = false; |
304 | mInfo = false; | 304 | mInfo = false; |
305 | mdayPos = 0; | 305 | mdayPos = 0; |
306 | } | 306 | } |
307 | 307 | ||
308 | void MonthViewItem::paint(QPainter *p) | 308 | void MonthViewItem::paint(QPainter *p) |
309 | { | 309 | { |
310 | if ( mblockRepaint ) { | 310 | if ( mblockRepaint ) { |
311 | return; | 311 | return; |
312 | } | 312 | } |
313 | #if QT_VERSION >= 0x030000 | 313 | #if QT_VERSION >= 0x030000 |
314 | bool sel = isSelected(); | 314 | bool sel = isSelected(); |
315 | #else | 315 | #else |
316 | bool sel = selected(); | 316 | bool sel = selected(); |
317 | #endif | 317 | #endif |
318 | 318 | ||
319 | 319 | ||
320 | int heihei = height( listBox () ); | ||
321 | int x = 1; | ||
320 | if (KOPrefs::instance()->mMonthViewUsesCategoryColor) | 322 | if (KOPrefs::instance()->mMonthViewUsesCategoryColor) |
321 | { | 323 | { |
322 | p->setBackgroundColor( palette().color( QPalette::Normal, \ | 324 | p->setBackgroundColor( palette().color( QPalette::Normal, \ |
323 | sel ? QColorGroup::Highlight : QColorGroup::Background ) ); | 325 | sel ? QColorGroup::Highlight : QColorGroup::Background ) ); |
324 | p->eraseRect( 0, 0, listBox()->maxItemWidth(), height( listBox() ) ); | 326 | p->eraseRect( 0, 0, listBox()->maxItemWidth(), heihei ); |
325 | } | 327 | } |
326 | int x = 1; | 328 | |
327 | //int y = 3;//(height() - mRecurPixmap.height()) /2; | 329 | //int y = 3;//(height() - mRecurPixmap.height()) /2; |
328 | int size = PIXMAP_SIZE; | 330 | int size = PIXMAP_SIZE; |
329 | if ( QApplication::desktop()->width() < 300 ) | 331 | if ( QApplication::desktop()->width() < 300 ) |
330 | size = 3; | 332 | size = 3; |
331 | int heihei = height( listBox () ); | ||
332 | int y = (heihei - size -1 ) /2; | 333 | int y = (heihei - size -1 ) /2; |
333 | 334 | ||
335 | if ( mIncidence->calID() > 1 ) { | ||
336 | p->fillRect ( x, y-2,size,size+4, KOPrefs::instance()->defaultColor( mIncidence->calID() ) ); | ||
337 | p->drawRect ( x, y-2,size,size+4); | ||
338 | x += size + 1; | ||
339 | } | ||
340 | |||
334 | if ( KOPrefs::instance()->mMonthShowIcons ) { | 341 | if ( KOPrefs::instance()->mMonthShowIcons ) { |
335 | if ( mInfo ) { | 342 | if ( mInfo ) { |
336 | p->fillRect ( x, y,size,size, Qt::darkGreen ); | 343 | p->fillRect ( x, y,size,size, Qt::darkGreen ); |
337 | x += size + 1; | 344 | x += size + 1; |
338 | } | 345 | } |
339 | if ( mRecur ) { | 346 | if ( mRecur ) { |
340 | p->fillRect ( x, y,size,size, Qt::blue ); | 347 | p->fillRect ( x, y,size,size, Qt::blue ); |
341 | x += size + 1; | 348 | x += size + 1; |
342 | } | 349 | } |
343 | if ( mAlarm ) { | 350 | if ( mAlarm ) { |
344 | p->fillRect ( x, y,size,size, Qt::red ); | 351 | p->fillRect ( x, y,size,size, Qt::red ); |
345 | x += size + 1; | 352 | x += size + 1; |
346 | } | 353 | } |
347 | if ( mReply ) { | 354 | if ( mReply ) { |
348 | p->fillRect ( x, y,size,size, Qt::yellow ); | 355 | p->fillRect ( x, y,size,size, Qt::yellow ); |
349 | x += size + 1; | 356 | x += size + 1; |
350 | } | 357 | } |
351 | } | 358 | } |
352 | if ( mMultiday ) { | 359 | if ( mMultiday ) { |
353 | int yyy = y+(size/2); | 360 | int yyy = y+(size/2); |
354 | int sizeM = size+2; | 361 | int sizeM = size+2; |
355 | p->setBrush( QBrush::SolidPattern ); | 362 | p->setBrush( QBrush::SolidPattern ); |
356 | p->drawLine ( x+1, yyy, x +sizeM +sizeM/2-1, yyy ) ; | 363 | p->drawLine ( x+1, yyy, x +sizeM +sizeM/2-1, yyy ) ; |
357 | if ( mMultiday == 2 || mMultiday == 3 ) { | 364 | if ( mMultiday == 2 || mMultiday == 3 ) { |
358 | QPointArray pa ( 3 ); | 365 | QPointArray pa ( 3 ); |
359 | pa.setPoint (0, x, yyy ); | 366 | pa.setPoint (0, x, yyy ); |
360 | pa.setPoint (1, x+sizeM/2, yyy+sizeM/2 ); | 367 | pa.setPoint (1, x+sizeM/2, yyy+sizeM/2 ); |
361 | pa.setPoint (2, x+sizeM/2, yyy-sizeM/2 ); | 368 | pa.setPoint (2, x+sizeM/2, yyy-sizeM/2 ); |
362 | p->drawPolygon( pa ); | 369 | p->drawPolygon( pa ); |
363 | } | 370 | } |
364 | if ( mMultiday == 2 || mMultiday == 1 ) { | 371 | if ( mMultiday == 2 || mMultiday == 1 ) { |
365 | QPointArray pa ( 3 ); | 372 | QPointArray pa ( 3 ); |
366 | pa.setPoint (0, x+sizeM +sizeM/2, yyy ); | 373 | pa.setPoint (0, x+sizeM +sizeM/2, yyy ); |
367 | pa.setPoint (1, x+sizeM, yyy+sizeM/2 ); | 374 | pa.setPoint (1, x+sizeM, yyy+sizeM/2 ); |
368 | pa.setPoint (2, x+sizeM, yyy-sizeM/2 ); | 375 | pa.setPoint (2, x+sizeM, yyy-sizeM/2 ); |
369 | p->drawPolygon( pa ); | 376 | p->drawPolygon( pa ); |
370 | } | 377 | } |
371 | if ( mMultiday == 1 ) { | 378 | if ( mMultiday == 1 ) { |
372 | // p->fillRect ( x, yyy-sizeM/2+1, sizeM/2, size, QBrush ( QBrush::SolidPattern ) ); | 379 | // p->fillRect ( x, yyy-sizeM/2+1, sizeM/2, size, QBrush ( QBrush::SolidPattern ) ); |
373 | 380 | ||
374 | p->drawLine ( x+1, yyy-sizeM/2, x+1, yyy+sizeM/2 ); | 381 | p->drawLine ( x+1, yyy-sizeM/2, x+1, yyy+sizeM/2 ); |
375 | } | 382 | } |
376 | if ( mMultiday == 3 ) { | 383 | if ( mMultiday == 3 ) { |
377 | // p->fillRect ( x+sizeM, yyy-sizeM/2+1, sizeM/2, size, QBrush ( QBrush::SolidPattern ) ); | 384 | // p->fillRect ( x+sizeM, yyy-sizeM/2+1, sizeM/2, size, QBrush ( QBrush::SolidPattern ) ); |
378 | p->drawLine ( x+sizeM +sizeM/2-1, yyy-sizeM/2, x+sizeM +sizeM/2-1, yyy+sizeM/2 ); | 385 | p->drawLine ( x+sizeM +sizeM/2-1, yyy-sizeM/2, x+sizeM +sizeM/2-1, yyy+sizeM/2 ); |
379 | 386 | ||
380 | } | 387 | } |
381 | x += sizeM/2 + 1; | 388 | x += sizeM/2 + 1; |
382 | x += sizeM + 1; | 389 | x += sizeM + 1; |
383 | } | 390 | } |
384 | 391 | ||
385 | if ( mIncidence->typeID() == todoID ){ | 392 | if ( mIncidence->typeID() == todoID ){ |
386 | Todo* td = ( Todo* ) mIncidence; | 393 | Todo* td = ( Todo* ) mIncidence; |
387 | if ( td->isCompleted() ) { | 394 | if ( td->isCompleted() ) { |
388 | int half = size/2; | 395 | int half = size/2; |
389 | p->drawLine ( x, heihei/2, x +half , heihei/2 +half ) ; | 396 | p->drawLine ( x, heihei/2, x +half , heihei/2 +half ) ; |
390 | p->drawLine ( x +half , heihei/2 +half , x +half+half +2 , heihei/2 -2 ) ; | 397 | p->drawLine ( x +half , heihei/2 +half , x +half+half +2 , heihei/2 -2 ) ; |
391 | x += half+half + 4; | 398 | x += half+half + 4; |
392 | 399 | ||
393 | } else { | 400 | } else { |
394 | int val = td->percentComplete()/20; | 401 | int val = td->percentComplete()/20; |
395 | p->fillRect ( x+1, y-2, val ,size+4,Qt::black ); | 402 | p->fillRect ( x+1, y-2, val ,size+4,Qt::black ); |
396 | p->drawRect ( x, y-2,7,size+4); | 403 | p->drawRect ( x, y-2,7,size+4); |
397 | x += size + 3; | 404 | x += size + 3; |
398 | } | 405 | } |
399 | } | 406 | } |
400 | QFontMetrics fm = p->fontMetrics(); | 407 | QFontMetrics fm = p->fontMetrics(); |
401 | int yPos; | 408 | int yPos; |
402 | int pmheight = size; | 409 | int pmheight = size; |
403 | if( pmheight < fm.height() ) | 410 | if( pmheight < fm.height() ) |
404 | yPos = fm.ascent() + fm.leading()/2; | 411 | yPos = fm.ascent() + fm.leading()/2; |
405 | else | 412 | else |
406 | yPos = pmheight/2 - fm.height()/2 + fm.ascent(); | 413 | yPos = pmheight/2 - fm.height()/2 + fm.ascent(); |
407 | p->setPen( palette().color( QPalette::Normal, sel ? \ | 414 | p->setPen( palette().color( QPalette::Normal, sel ? \ |
408 | QColorGroup::HighlightedText : QColorGroup::Foreground ) ); | 415 | QColorGroup::HighlightedText : QColorGroup::Foreground ) ); |
409 | if ( KOPrefs::instance()->mMonthShowTimes || isWeekItem) { | 416 | if ( KOPrefs::instance()->mMonthShowTimes || isWeekItem) { |
410 | p->drawText( x, yPos, text() ); | 417 | p->drawText( x, yPos, text() ); |
411 | if ( mIncidence->cancelled() ) { | 418 | if ( mIncidence->cancelled() ) { |
412 | int wid = fm.width( text() ); | 419 | int wid = fm.width( text() ); |
413 | p->drawLine( x, heihei/2 ,x+wid, heihei/2 ); | 420 | p->drawLine( x, heihei/2 ,x+wid, heihei/2 ); |
414 | } | 421 | } |
415 | } else { | 422 | } else { |
416 | QString pText = text(); | 423 | QString pText = text(); |
417 | if( pText.mid(2,1) == ":" ) | 424 | if( pText.mid(2,1) == ":" ) |
418 | pText = pText.mid( 6 ); | 425 | pText = pText.mid( 6 ); |
419 | p->drawText( x, yPos, pText ); | 426 | p->drawText( x, yPos, pText ); |
420 | if ( mIncidence->cancelled() ) { | 427 | if ( mIncidence->cancelled() ) { |
421 | int wid = fm.width( pText ); | 428 | int wid = fm.width( pText ); |
422 | p->drawLine( x, heihei/2 ,x+wid, heihei/2 ); | 429 | p->drawLine( x, heihei/2 ,x+wid, heihei/2 ); |
423 | } | 430 | } |
424 | } | 431 | } |
425 | } | 432 | } |
426 | 433 | ||
427 | int MonthViewItem::height(const QListBox *lb) const | 434 | int MonthViewItem::height(const QListBox *lb) const |
428 | { | 435 | { |
429 | int ret = 10; | 436 | int ret = 10; |
@@ -517,353 +524,361 @@ void MonthViewCell::setDate( const QDate &date ) | |||
517 | // kdDebug() << "MonthViewCell::setDate(): " << date.toString() << endl; | 524 | // kdDebug() << "MonthViewCell::setDate(): " << date.toString() << endl; |
518 | mDate = date; | 525 | mDate = date; |
519 | 526 | ||
520 | 527 | ||
521 | 528 | ||
522 | //resizeEvent( 0 ); | 529 | //resizeEvent( 0 ); |
523 | } | 530 | } |
524 | 531 | ||
525 | QDate MonthViewCell::date() const | 532 | QDate MonthViewCell::date() const |
526 | { | 533 | { |
527 | return mDate; | 534 | return mDate; |
528 | } | 535 | } |
529 | 536 | ||
530 | void MonthViewCell::setPrimary( bool primary ) | 537 | void MonthViewCell::setPrimary( bool primary ) |
531 | { | 538 | { |
532 | mPrimary = primary; | 539 | mPrimary = primary; |
533 | //setMyPalette(); | 540 | //setMyPalette(); |
534 | } | 541 | } |
535 | void MonthViewCell::setMyPalette() | 542 | void MonthViewCell::setMyPalette() |
536 | { | 543 | { |
537 | 544 | ||
538 | if ( mHoliday) { | 545 | if ( mHoliday) { |
539 | if ( currentPalette == 1 ) return; | 546 | if ( currentPalette == 1 ) return; |
540 | mLabel->setPalette( QPalette ( mHolidayPalette.color( QPalette::Normal,QColorGroup::Base),mHolidayPalette.color(QPalette::Normal,QColorGroup::Base ) )); | 547 | mLabel->setPalette( QPalette ( mHolidayPalette.color( QPalette::Normal,QColorGroup::Base),mHolidayPalette.color(QPalette::Normal,QColorGroup::Base ) )); |
541 | setPalette( mHolidayPalette ); | 548 | setPalette( mHolidayPalette ); |
542 | //mLabel->setPalette( mHolidayPalette ); | 549 | //mLabel->setPalette( mHolidayPalette ); |
543 | currentPalette = 1; | 550 | currentPalette = 1; |
544 | 551 | ||
545 | } else { | 552 | } else { |
546 | if ( mPrimary ) { | 553 | if ( mPrimary ) { |
547 | if ( currentPalette == 2 ) return; | 554 | if ( currentPalette == 2 ) return; |
548 | mLabel->setPalette( QPalette ( mPrimaryPalette.color( QPalette::Normal,QColorGroup::Base),mPrimaryPalette.color(QPalette::Normal,QColorGroup::Base ) )); | 555 | mLabel->setPalette( QPalette ( mPrimaryPalette.color( QPalette::Normal,QColorGroup::Base),mPrimaryPalette.color(QPalette::Normal,QColorGroup::Base ) )); |
549 | //mLabel->setPalette( mPrimaryPalette ); | 556 | //mLabel->setPalette( mPrimaryPalette ); |
550 | setPalette( mPrimaryPalette ); | 557 | setPalette( mPrimaryPalette ); |
551 | currentPalette = 2; | 558 | currentPalette = 2; |
552 | 559 | ||
553 | } else { | 560 | } else { |
554 | if ( currentPalette == 3 ) return; | 561 | if ( currentPalette == 3 ) return; |
555 | setPalette( mNonPrimaryPalette ); | 562 | setPalette( mNonPrimaryPalette ); |
556 | mLabel->setPalette( QPalette ( mNonPrimaryPalette.color( QPalette::Normal,QColorGroup::Base),mNonPrimaryPalette.color(QPalette::Normal,QColorGroup::Base ) )); | 563 | mLabel->setPalette( QPalette ( mNonPrimaryPalette.color( QPalette::Normal,QColorGroup::Base),mNonPrimaryPalette.color(QPalette::Normal,QColorGroup::Base ) )); |
557 | //mLabel->setPalette( mNonPrimaryPalette );; | 564 | //mLabel->setPalette( mNonPrimaryPalette );; |
558 | currentPalette = 3; | 565 | currentPalette = 3; |
559 | } | 566 | } |
560 | } | 567 | } |
561 | //QPalette pal = palette(); | 568 | //QPalette pal = palette(); |
562 | 569 | ||
563 | //mLabel->setPalette( QPalette ( pal.color( QPalette::Normal,QColorGroup::Base),pal.color(QPalette::Normal,QColorGroup::Base ) )); | 570 | //mLabel->setPalette( QPalette ( pal.color( QPalette::Normal,QColorGroup::Base),pal.color(QPalette::Normal,QColorGroup::Base ) )); |
564 | } | 571 | } |
565 | QPalette MonthViewCell::getPalette () | 572 | QPalette MonthViewCell::getPalette () |
566 | { | 573 | { |
567 | if ( !KOPrefs::instance()->mMonthViewUsesDayColors ) | 574 | if ( !KOPrefs::instance()->mMonthViewUsesDayColors ) |
568 | return mStandardPalette; | 575 | return mStandardPalette; |
569 | if ( mHoliday) { | 576 | if ( mHoliday) { |
570 | return mHolidayPalette ; | 577 | return mHolidayPalette ; |
571 | } else { | 578 | } else { |
572 | if ( mPrimary ) { | 579 | if ( mPrimary ) { |
573 | return mPrimaryPalette ; | 580 | return mPrimaryPalette ; |
574 | } | 581 | } |
575 | } | 582 | } |
576 | return mNonPrimaryPalette; | 583 | return mNonPrimaryPalette; |
577 | } | 584 | } |
578 | bool MonthViewCell::isPrimary() const | 585 | bool MonthViewCell::isPrimary() const |
579 | { | 586 | { |
580 | return mPrimary; | 587 | return mPrimary; |
581 | } | 588 | } |
582 | 589 | ||
583 | void MonthViewCell::setHoliday( bool holiday ) | 590 | void MonthViewCell::setHoliday( bool holiday ) |
584 | { | 591 | { |
585 | mHoliday = holiday; | 592 | mHoliday = holiday; |
586 | //setMyPalette(); | 593 | //setMyPalette(); |
587 | } | 594 | } |
588 | 595 | ||
589 | void MonthViewCell::setHoliday( const QString &holiday ) | 596 | void MonthViewCell::setHoliday( const QString &holiday ) |
590 | { | 597 | { |
591 | mHolidayString = holiday; | 598 | mHolidayString = holiday; |
592 | 599 | ||
593 | if ( !holiday.isEmpty() ) { | 600 | if ( !holiday.isEmpty() ) { |
594 | setHoliday( true ); | 601 | setHoliday( true ); |
595 | } | 602 | } |
596 | } | 603 | } |
597 | 604 | ||
598 | void MonthViewCell::startUpdateCell() | 605 | void MonthViewCell::startUpdateCell() |
599 | { | 606 | { |
600 | mdayCount = 0; | 607 | mdayCount = 0; |
601 | setFocusPolicy(NoFocus); | 608 | setFocusPolicy(NoFocus); |
602 | if ( !mMonthView->isUpdatePossible() ) | 609 | if ( !mMonthView->isUpdatePossible() ) |
603 | return; | 610 | return; |
604 | MonthViewItem *mitem = (MonthViewItem*) firstItem (); | 611 | MonthViewItem *mitem = (MonthViewItem*) firstItem (); |
605 | while ( mitem ) { | 612 | while ( mitem ) { |
606 | mitem->setBlockRepaint( true ); | 613 | mitem->setBlockRepaint( true ); |
607 | mitem = (MonthViewItem *)mitem->next(); | 614 | mitem = (MonthViewItem *)mitem->next(); |
608 | } | 615 | } |
609 | if ( mAvailItemList.count() > 20 ) { | 616 | if ( mAvailItemList.count() > 20 ) { |
610 | mAvailItemList.setAutoDelete( true ); | 617 | mAvailItemList.setAutoDelete( true ); |
611 | mAvailItemList.clear(); | 618 | mAvailItemList.clear(); |
612 | mAvailItemList.setAutoDelete( false ); | 619 | mAvailItemList.setAutoDelete( false ); |
620 | clear(); | ||
613 | } | 621 | } |
614 | 622 | ||
615 | setPrimary( mDate.month()%2 ); | 623 | setPrimary( mDate.month()%2 ); |
616 | setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays); | 624 | setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays); |
617 | if ( mDate == QDate::currentDate() ) { | 625 | if ( mDate == QDate::currentDate() ) { |
618 | setLineWidth( 3 ); | 626 | setLineWidth( 3 ); |
619 | } else { | 627 | } else { |
620 | setLineWidth( 1 ); | 628 | setLineWidth( 1 ); |
621 | } | 629 | } |
622 | MonthViewItem* CurrentAvailItem = (MonthViewItem*) firstItem (); | 630 | MonthViewItem* CurrentAvailItem = (MonthViewItem*) firstItem (); |
623 | //clear(); | 631 | //clear(); |
624 | while ( CurrentAvailItem ) { | 632 | while ( CurrentAvailItem ) { |
625 | MonthViewItem *item = CurrentAvailItem; | 633 | MonthViewItem *item = CurrentAvailItem; |
626 | CurrentAvailItem = (MonthViewItem *)item->next(); | 634 | CurrentAvailItem = (MonthViewItem *)item->next(); |
627 | mAvailItemList.append( item ); | 635 | mAvailItemList.append( item ); |
628 | takeItem ( item ); | 636 | takeItem ( item ); |
629 | } | 637 | } |
630 | 638 | ||
631 | #ifdef DESKTOP_VERSION | 639 | #ifdef DESKTOP_VERSION |
632 | QToolTip::remove(this); | 640 | QToolTip::remove(this); |
633 | #endif | 641 | #endif |
634 | mToolTip.clear(); | 642 | mToolTip.clear(); |
635 | //qApp->processEvents(); | 643 | //qApp->processEvents(); |
636 | #if 0 | 644 | #if 0 |
637 | if ( !mHolidayString.isEmpty() ) { | 645 | if ( !mHolidayString.isEmpty() ) { |
638 | MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString ); | 646 | MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString ); |
639 | item->setPalette( mHolidayPalette ); | 647 | item->setPalette( mHolidayPalette ); |
640 | insertItem( item ); | 648 | insertItem( item ); |
641 | mToolTip.append ( mHolidayString ); | 649 | mToolTip.append ( mHolidayString ); |
642 | } | 650 | } |
643 | #endif | 651 | #endif |
644 | } | 652 | } |
645 | 653 | ||
646 | int MonthViewCell::insertEvent(Event *event) | 654 | int MonthViewCell::insertEvent(Event *event) |
647 | { | 655 | { |
648 | bool useToolTips = true; | 656 | bool useToolTips = true; |
649 | #ifndef DESKTOP_VERSION | 657 | #ifndef DESKTOP_VERSION |
650 | useToolTips = false; | 658 | useToolTips = false; |
651 | #endif | 659 | #endif |
652 | QString mToolTipText; | 660 | QString mToolTipText; |
653 | setFocusPolicy(WheelFocus); | 661 | setFocusPolicy(WheelFocus); |
654 | if ( !(event->doesRecur() == Recurrence::rNone) ) { | 662 | if ( !(event->doesRecur() == Recurrence::rNone) ) { |
655 | if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily ) | 663 | if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily ) |
656 | return mdayCount; | 664 | return mdayCount; |
657 | else | 665 | else |
658 | if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly ) | 666 | if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly ) |
659 | return mdayCount; | 667 | return mdayCount; |
660 | } | 668 | } |
661 | 669 | ||
662 | if ( event->isHoliday()) { | 670 | if ( event->isHoliday()) { |
663 | setHoliday( true ); | 671 | setHoliday( true ); |
664 | if ( mDate.dayOfWeek() == 7 ) | 672 | if ( mDate.dayOfWeek() == 7 ) |
665 | setLineWidth( 3 ); | 673 | setLineWidth( 3 ); |
666 | } | 674 | } |
667 | QString text; | 675 | QString text; |
668 | int multiday = 0;// 1 = start, 2 = midddle, 3 = end day | 676 | int multiday = 0;// 1 = start, 2 = midddle, 3 = end day |
669 | if (event->isMultiDay()) { | 677 | if (event->isMultiDay()) { |
670 | QString prefix = "<->";multiday = 2; | 678 | QString prefix = "<->";multiday = 2; |
671 | QString time; | 679 | QString time; |
672 | if ( event->doesRecur() ) { | 680 | if ( event->doesRecur() ) { |
673 | if ( event->recursOn( mDate) ) { | 681 | if ( event->recursOn( mDate) ) { |
674 | prefix ="->" ;multiday = 1; | 682 | prefix ="->" ;multiday = 1; |
675 | } | 683 | } |
676 | else { | 684 | else { |
677 | int days = event->dtStart().date().daysTo ( event->dtEnd().date() ); | 685 | int days = event->dtStart().date().daysTo ( event->dtEnd().date() ); |
678 | if ( event->recursOn( mDate.addDays( -days)) ) { | 686 | if ( event->recursOn( mDate.addDays( -days)) ) { |
679 | prefix ="<-" ;multiday = 3; | 687 | prefix ="<-" ;multiday = 3; |
680 | } | 688 | } |
681 | } | 689 | } |
682 | 690 | ||
683 | } else { | 691 | } else { |
684 | if (mDate == event->dtStart().date()) { | 692 | if (mDate == event->dtStart().date()) { |
685 | prefix ="->" ;multiday = 1; | 693 | prefix ="->" ;multiday = 1; |
686 | } else if (mDate == event->dtEnd().date()) { | 694 | } else if (mDate == event->dtEnd().date()) { |
687 | prefix ="<-" ;multiday = 3; | 695 | prefix ="<-" ;multiday = 3; |
688 | } | 696 | } |
689 | } | 697 | } |
690 | if ( !event->doesFloat() ) { | 698 | if ( !event->doesFloat() ) { |
691 | if ( mDate == event->dtStart().date () ) | 699 | if ( mDate == event->dtStart().date () ) |
692 | time = KGlobal::locale()->formatTime(event->dtStart().time())+" "; | 700 | time = KGlobal::locale()->formatTime(event->dtStart().time())+" "; |
693 | else if ( mDate == event->dtEnd().date () ) | 701 | else if ( mDate == event->dtEnd().date () ) |
694 | time = KGlobal::locale()->formatTime(event->dtEnd().time())+" "; | 702 | time = KGlobal::locale()->formatTime(event->dtEnd().time())+" "; |
695 | 703 | ||
696 | } | 704 | } |
697 | text = time + event->summary(); | 705 | text = time + event->summary(); |
698 | if ( useToolTips ) | 706 | if ( useToolTips ) |
699 | mToolTipText += prefix + text; | 707 | mToolTipText += prefix + text; |
700 | } else { | 708 | } else { |
701 | if (event->doesFloat()) { | 709 | if (event->doesFloat()) { |
702 | text = event->summary(); | 710 | text = event->summary(); |
703 | if ( useToolTips ) | 711 | if ( useToolTips ) |
704 | mToolTipText += text; | 712 | mToolTipText += text; |
705 | } | 713 | } |
706 | else { | 714 | else { |
707 | text = KGlobal::locale()->formatTime(event->dtStart().time()); | 715 | text = KGlobal::locale()->formatTime(event->dtStart().time()); |
708 | text += " " + event->summary(); | 716 | text += " " + event->summary(); |
709 | if ( useToolTips ) | 717 | if ( useToolTips ) |
710 | mToolTipText += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary(); | 718 | mToolTipText += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary(); |
711 | } | 719 | } |
712 | } | 720 | } |
713 | if ( useToolTips && ! event->location().isEmpty() ) { | 721 | if ( useToolTips && ! event->location().isEmpty() ) { |
714 | mToolTipText += " (" + event->location() +")"; | 722 | mToolTipText += " (" + event->location() +")"; |
715 | } | 723 | } |
716 | MonthViewItem *item ; | 724 | MonthViewItem *item ; |
717 | 725 | ||
718 | if ( mAvailItemList.count() ) { | 726 | if ( mAvailItemList.count() ) { |
719 | item = mAvailItemList.first(); | 727 | item = mAvailItemList.first(); |
720 | mAvailItemList.remove( item ); | 728 | mAvailItemList.remove( item ); |
721 | item->recycle( event, mDate, text ); | 729 | item->recycle( event, mDate, text ); |
722 | } else { | 730 | } else { |
723 | item = new MonthViewItem( event, mDate, text ); | 731 | item = new MonthViewItem( event, mDate, text ); |
724 | } | 732 | } |
725 | 733 | ||
726 | QPalette pal; | 734 | QPalette pal; |
727 | if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { | 735 | if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { |
728 | QStringList categories = event->categories(); | 736 | QStringList categories = event->categories(); |
729 | QString cat = categories.first(); | 737 | QString cat = categories.first(); |
730 | if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { | 738 | if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { |
731 | pal = getPalette(); | 739 | pal = getPalette(); |
732 | if (cat.isEmpty()) { | 740 | if (cat.isEmpty()) { |
733 | //pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); | 741 | //pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); |
734 | pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->defaultColor( event->calID() )); | 742 | pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->defaultColor( event->calID() )); |
735 | } else { | 743 | } else { |
736 | pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); | 744 | pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); |
737 | } | 745 | } |
738 | 746 | ||
739 | } else { | 747 | } else { |
740 | if (cat.isEmpty()) { | 748 | if (cat.isEmpty()) { |
741 | //pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); | 749 | //pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); |
742 | pal = QPalette( KOPrefs::instance()->defaultColor( event->calID() ), KOPrefs::instance()->defaultColor( event->calID() )); | 750 | pal = QPalette( KOPrefs::instance()->defaultColor( event->calID() ), KOPrefs::instance()->defaultColor( event->calID() )); |
743 | } else { | 751 | } else { |
744 | pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); | 752 | pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); |
745 | } | 753 | } |
746 | } | 754 | } |
747 | 755 | ||
748 | } else { | 756 | } else { |
749 | pal = mStandardPalette ; | 757 | pal = mStandardPalette ; |
750 | } | 758 | } |
751 | item->setPalette( pal ); | 759 | item->setPalette( pal ); |
752 | item->setRecur( event->recurrence()->doesRecur() ); | 760 | item->setRecur( event->recurrence()->doesRecur() ); |
753 | item->setAlarm( event->isAlarmEnabled() && multiday < 2 && event->alarmEnabled() ); | 761 | item->setAlarm( event->isAlarmEnabled() && multiday < 2 && event->alarmEnabled() ); |
754 | item->setMoreInfo( event->description().length() > 0 ); | 762 | item->setMoreInfo( event->description().length() > 0 ); |
755 | #ifdef DESKTOP_VERSION | 763 | #ifdef DESKTOP_VERSION |
756 | Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails, | 764 | Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails, |
757 | KOPrefs::instance()->email()); | 765 | KOPrefs::instance()->email()); |
758 | if ( me != 0 ) { | 766 | if ( me != 0 ) { |
759 | if ( me->status() == Attendee::NeedsAction && me->RSVP()) | 767 | if ( me->status() == Attendee::NeedsAction && me->RSVP()) |
760 | item->setReply(true && multiday < 2); | 768 | item->setReply(true && multiday < 2); |
761 | else | 769 | else |
762 | item->setReply(false); | 770 | item->setReply(false); |
763 | } else | 771 | } else |
764 | item->setReply(false); | 772 | item->setReply(false); |
765 | #endif | 773 | #endif |
774 | |||
766 | item->setMultiDay( multiday ); | 775 | item->setMultiDay( multiday ); |
767 | if ( multiday ) { | 776 | if ( multiday ) { |
768 | insertItem( item ,mdayCount); | 777 | insertItem( item ,mdayCount); |
769 | ++mdayCount; | 778 | ++mdayCount; |
770 | } else { | 779 | } else { |
771 | uint i; | 780 | uint i = mdayCount; |
772 | int pos = mdayCount; | 781 | uint pos = mdayCount; |
773 | for ( i = mdayCount; i < count();++i ) { | 782 | uint itcount = count(); |
783 | if ( itcount > 1000 ) { | ||
784 | qDebug("KO: Bug in MonthViewCell::insertEvent %u ", itcount); | ||
785 | itcount = 0; | ||
786 | } | ||
787 | for ( i = pos; i < itcount;++i ) { | ||
788 | // qDebug("i %d mday %u count %d ",i,itcount,mdayCount ); | ||
774 | QListBoxItem* it = this->item ( i ); | 789 | QListBoxItem* it = this->item ( i ); |
775 | if ( it && text < it->text() ) { | 790 | if ( it && text < it->text() ) { |
776 | pos = i; | 791 | pos = i; |
777 | break; | 792 | break; |
778 | } | 793 | } |
779 | ++pos; | 794 | ++pos; |
780 | } | 795 | } |
781 | insertItem( item ,pos); | 796 | insertItem( item ,pos); |
782 | } | 797 | } |
783 | if ( useToolTips ) { | 798 | if ( useToolTips ) { |
784 | mToolTip.append( mToolTipText ); | 799 | mToolTip.append( mToolTipText ); |
785 | } | 800 | } |
786 | return mdayCount; | 801 | return mdayCount; |
787 | } | 802 | } |
788 | void MonthViewCell::insertTodo(Todo *todo) | 803 | void MonthViewCell::insertTodo(Todo *todo) |
789 | { | 804 | { |
790 | setFocusPolicy(WheelFocus); | 805 | setFocusPolicy(WheelFocus); |
791 | QString text; | 806 | QString text; |
792 | if (todo->hasDueDate()) { | 807 | if (todo->hasDueDate()) { |
793 | if (!todo->doesFloat()) { | 808 | if (!todo->doesFloat()) { |
794 | text += KGlobal::locale()->formatTime(todo->dtDue().time()); | 809 | text += KGlobal::locale()->formatTime(todo->dtDue().time()); |
795 | text += " "; | 810 | text += " "; |
796 | } | 811 | } |
797 | } | 812 | } |
798 | text += todo->summary(); | 813 | text += todo->summary(); |
799 | MonthViewItem *item ; | 814 | MonthViewItem *item ; |
800 | if ( mAvailItemList.count() ) { | 815 | if ( mAvailItemList.count() ) { |
801 | item = mAvailItemList.first(); | 816 | item = mAvailItemList.first(); |
802 | mAvailItemList.remove( item ); | 817 | mAvailItemList.remove( item ); |
803 | item->recycle( todo, mDate, text ); | 818 | item->recycle( todo, mDate, text ); |
804 | } else { | 819 | } else { |
805 | item = new MonthViewItem( todo, mDate, text ); | 820 | item = new MonthViewItem( todo, mDate, text ); |
806 | } | 821 | } |
807 | //MonthViewItem *item = new MonthViewItem( todo, mDate, text ); | 822 | //MonthViewItem *item = new MonthViewItem( todo, mDate, text ); |
808 | //item->setPalette( mStandardPalette ); | 823 | //item->setPalette( mStandardPalette ); |
809 | QPalette pal; | 824 | QPalette pal; |
810 | if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { | 825 | if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { |
811 | QStringList categories = todo->categories(); | 826 | QStringList categories = todo->categories(); |
812 | QString cat = categories.first(); | 827 | QString cat = categories.first(); |
813 | if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { | 828 | if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { |
814 | pal = getPalette(); | 829 | pal = getPalette(); |
815 | if (cat.isEmpty()) { | 830 | if (cat.isEmpty()) { |
816 | //pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); | 831 | //pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); |
817 | pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->defaultColor( todo->calID() )); | 832 | pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->defaultColor( todo->calID() )); |
818 | } else { | 833 | } else { |
819 | pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); | 834 | pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); |
820 | } | 835 | } |
821 | 836 | ||
822 | } else { | 837 | } else { |
823 | if (cat.isEmpty()) { | 838 | if (cat.isEmpty()) { |
824 | //pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); | 839 | //pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); |
825 | pal = QPalette(KOPrefs::instance()->defaultColor( todo->calID() ), KOPrefs::instance()->defaultColor( todo->calID() )); | 840 | pal = QPalette(KOPrefs::instance()->defaultColor( todo->calID() ), KOPrefs::instance()->defaultColor( todo->calID() )); |
826 | } else { | 841 | } else { |
827 | pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); | 842 | pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); |
828 | } | 843 | } |
829 | } | 844 | } |
830 | 845 | ||
831 | } else { | 846 | } else { |
832 | pal = mStandardPalette ; | 847 | pal = mStandardPalette ; |
833 | } | 848 | } |
834 | item->setPalette( pal ); | 849 | item->setPalette( pal ); |
835 | item->setRecur( todo->recurrence()->doesRecur() ); | 850 | item->setRecur( todo->recurrence()->doesRecur() ); |
836 | item->setAlarm( todo->isAlarmEnabled() && todo->alarmEnabled() ); | 851 | item->setAlarm( todo->isAlarmEnabled() && todo->alarmEnabled() ); |
837 | item->setMoreInfo( todo->description().length() > 0 ); | 852 | item->setMoreInfo( todo->description().length() > 0 ); |
838 | insertItem( item , count()); | 853 | insertItem( item , count()); |
839 | #ifdef DESKTOP_VERSION | 854 | #ifdef DESKTOP_VERSION |
840 | mToolTip.append( text ); | 855 | mToolTip.append( text ); |
841 | #endif | 856 | #endif |
842 | } | 857 | } |
843 | void MonthViewCell::repaintfinishUpdateCell() | 858 | void MonthViewCell::repaintfinishUpdateCell() |
844 | { | 859 | { |
845 | MonthViewItem *mitem = (MonthViewItem*) firstItem (); | 860 | MonthViewItem *mitem = (MonthViewItem*) firstItem (); |
846 | while ( mitem ) { | 861 | while ( mitem ) { |
847 | mitem->setBlockRepaint( false ); | 862 | mitem->setBlockRepaint( false ); |
848 | updateItem ( mitem ); | 863 | updateItem ( mitem ); |
849 | mitem = (MonthViewItem *)mitem->next(); | 864 | mitem = (MonthViewItem *)mitem->next(); |
850 | } | 865 | } |
851 | } | 866 | } |
852 | void MonthViewCell::finishUpdateCell() | 867 | void MonthViewCell::finishUpdateCell() |
853 | { | 868 | { |
854 | 869 | ||
855 | 870 | ||
856 | 871 | ||
857 | #ifdef DESKTOP_VERSION | 872 | #ifdef DESKTOP_VERSION |
858 | if (mToolTip.count() > 0 ) { | 873 | if (mToolTip.count() > 0 ) { |
859 | mToolTip.sort(); | 874 | mToolTip.sort(); |
860 | QToolTip::add(this,mToolTip.join("\n"),toolTipGroup(),""); | 875 | QToolTip::add(this,mToolTip.join("\n"),toolTipGroup(),""); |
861 | } | 876 | } |
862 | #endif | 877 | #endif |
863 | //sort(); | 878 | //sort(); |
864 | //setMyPalette(); | 879 | //setMyPalette(); |
865 | setMyPalette(); | 880 | setMyPalette(); |
866 | 881 | ||
867 | resizeEvent( 0 ); | 882 | resizeEvent( 0 ); |
868 | 883 | ||
869 | } | 884 | } |