summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/koagendaitem.cpp20
1 files changed, 12 insertions, 8 deletions
diff --git a/korganizer/koagendaitem.cpp b/korganizer/koagendaitem.cpp
index b416115..407424d 100644
--- a/korganizer/koagendaitem.cpp
+++ b/korganizer/koagendaitem.cpp
@@ -325,520 +325,524 @@ bool KOAgendaItem::eventFilter ( QObject *object, QEvent *e )
325 e->type() == QEvent::MouseButtonRelease || 325 e->type() == QEvent::MouseButtonRelease ||
326 e->type() == QEvent::MouseMove) { 326 e->type() == QEvent::MouseMove) {
327 QMouseEvent *me = (QMouseEvent *)e; 327 QMouseEvent *me = (QMouseEvent *)e;
328 QPoint itemPos = this->mapFromGlobal(((QWidget *)object)-> 328 QPoint itemPos = this->mapFromGlobal(((QWidget *)object)->
329 mapToGlobal(me->pos())); 329 mapToGlobal(me->pos()));
330 QMouseEvent returnEvent (e->type(),itemPos,me->button(),me->state()); 330 QMouseEvent returnEvent (e->type(),itemPos,me->button(),me->state());
331 return event(&returnEvent); 331 return event(&returnEvent);
332 } else { 332 } else {
333 return false; 333 return false;
334 } 334 }
335} 335}
336void KOAgendaItem::repaintMe( ) 336void KOAgendaItem::repaintMe( )
337{ 337{
338 paintMe ( mSelected ); 338 paintMe ( mSelected );
339} 339}
340void KOAgendaItem::paintMe( bool selected, QPainter* paint ) 340void KOAgendaItem::paintMe( bool selected, QPainter* paint )
341{ 341{
342 if ( globalFlagBlockAgendaItemUpdate && ! selected) 342 if ( globalFlagBlockAgendaItemUpdate && ! selected)
343 return; 343 return;
344 QPainter pa; 344 QPainter pa;
345 345
346 if ( mSelected ) { 346 if ( mSelected ) {
347 pa.begin( this ); 347 pa.begin( this );
348 } else { 348 } else {
349 if ( mAllDay ) 349 if ( mAllDay )
350 pa.begin( paintPixAllday() ); 350 pa.begin( paintPixAllday() );
351 else 351 else
352 pa.begin( paintPix() ); 352 pa.begin( paintPix() );
353 } 353 }
354 int x, yy, w, h; 354 int x, yy, w, h;
355 float nfh = 7.0; 355 float nfh = 7.0;
356 x = pos().x(); w = width(); h = height (); 356 x = pos().x(); w = width(); h = height ();
357 if ( mAllDay ) 357 if ( mAllDay )
358 yy = y(); 358 yy = y();
359 else 359 else
360 yy = mCellYTop * ( height() / cellHeight() ); 360 yy = mCellYTop * ( height() / cellHeight() );
361 if ( mSelected ) { 361 if ( mSelected ) {
362 pa.translate( -x, -yy ); 362 pa.translate( -x, -yy );
363 } 363 }
364 xPaintCoord= x; 364 xPaintCoord= x;
365 yPaintCoord = yy; 365 yPaintCoord = yy;
366 wPaintCoord = width(); 366 wPaintCoord = width();
367 hPaintCoord = height(); 367 hPaintCoord = height();
368 //qDebug("paintMe %s %d %d %d %d",incidence()->summary().latin1(), x, yy, width(), height()); 368 //qDebug("paintMe %s %d %d %d %d",incidence()->summary().latin1(), x, yy, width(), height());
369 if ( paint == 0 ) 369 if ( paint == 0 )
370 paint = &pa; 370 paint = &pa;
371 bool horLayout = ( w < h ); 371 bool horLayout = ( w < h );
372 int maxhei = mFontPixelSize+4; 372 int maxhei = mFontPixelSize+4;
373 if ( horLayout ) 373 if ( horLayout )
374 maxhei += AGENDA_ICON_SIZE -4; 374 maxhei += AGENDA_ICON_SIZE -4;
375 bool small = ( h < maxhei ); 375 bool small = ( h < maxhei );
376 if ( ! small ) 376 if ( ! small )
377 paint->setFont(KOPrefs::instance()->mAgendaViewFont); 377 paint->setFont(KOPrefs::instance()->mAgendaViewFont);
378 else { 378 else {
379 QFont f = KOPrefs::instance()->mAgendaViewFont; 379 QFont f = KOPrefs::instance()->mAgendaViewFont;
380 f.setBold( false ); 380 f.setBold( false );
381 int fh = f.pointSize(); 381 int fh = f.pointSize();
382 nfh = (((float)height())/(float)(mFontPixelSize+4))*fh; 382 nfh = (((float)height())/(float)(mFontPixelSize+4))*fh;
383 if ( nfh < 6 ) 383 if ( nfh < 6 )
384 nfh = 6; 384 nfh = 6;
385 f.setPointSize( nfh ); 385 f.setPointSize( nfh );
386 paint->setFont(f); 386 paint->setFont(f);
387 } 387 }
388 paint->fillRect ( x, yy, w, h, mBackgroundColor ); 388 paint->fillRect ( x, yy, w, h, mBackgroundColor );
389 static const QPixmap completedPxmp = SmallIcon("greenhook16"); 389 static const QPixmap completedPxmp = SmallIcon("greenhook16");
390 static const QPixmap overduePxmp = SmallIcon("redcross16"); 390 static const QPixmap overduePxmp = SmallIcon("redcross16");
391 if ( mIncidence->typeID() == todoID ) { 391 if ( mIncidence->typeID() == todoID ) {
392 Todo* tempTodo = static_cast<Todo*>(mIncidence); 392 Todo* tempTodo = static_cast<Todo*>(mIncidence);
393 int xx = pos().x()+(width()-completedPxmp.width()-3 ); 393 int xx = pos().x()+(width()-completedPxmp.width()-3 );
394 int yyy = yy+3; 394 int yyy = yy+3;
395 if ( tempTodo->isCompleted() ) 395 if ( tempTodo->isCompleted() )
396 paint->drawPixmap ( xx, yyy, completedPxmp ); 396 paint->drawPixmap ( xx, yyy, completedPxmp );
397 else { 397 else {
398 paint->drawPixmap ( xx, yyy, overduePxmp ); 398 paint->drawPixmap ( xx, yyy, overduePxmp );
399 399
400 } 400 }
401 } 401 }
402 bool addIcon = false; 402 bool addIcon = false;
403 if ( ! small || w > 3 * h || h > 3* w ) 403 if ( ! small || w > 3 * h || h > 3* w )
404 addIcon = updateIcons( paint, horLayout ); 404 addIcon = updateIcons( paint, horLayout );
405 405
406 //qDrawShadePanel (paint, x, yy, w, h, mColorGroup, selected , 2, 0); 406 //qDrawShadePanel (paint, x, yy, w, h, mColorGroup, selected , 2, 0);
407 qDrawWinPanel (paint, x, yy, w, h, mColorGroup, selected ,0); 407 qDrawWinPanel (paint, x, yy, w, h, mColorGroup, selected ,0);
408 //qDebug("draw rect %d %d %d %d ",x, yy, w, h ); 408 //qDebug("draw rect %d %d %d %d ",x, yy, w, h );
409 if ( ! small ) { 409 if ( ! small ) {
410 x += 3; yy += 3;w -= 6; h-= 5; 410 x += 3; yy += 3;w -= 6; h-= 5;
411 } else { 411 } else {
412 x += 2; yy += 1;w -= 4; h-= 4; 412 x += 2; yy += 1;w -= 4; h-= 4;
413 if ( nfh < 6.01 ) { 413 if ( nfh < 6.01 ) {
414 yy -= 2; 414 yy -= 2;
415 h += 4; 415 h += 4;
416 } 416 }
417 else 417 else
418 if ( nfh < h -2 ) 418 if ( nfh < h -2 )
419 ++yy; 419 ++yy;
420 } 420 }
421 int align; 421 int align;
422#ifndef DESKTOP_VERSION 422#ifndef DESKTOP_VERSION
423 align = ( AlignLeft|WordBreak|AlignTop); 423 align = ( AlignLeft|WordBreak|AlignTop);
424#else 424#else
425 align = ( AlignLeft|BreakAnywhere|WordBreak|AlignTop); 425 align = ( AlignLeft|BreakAnywhere|WordBreak|AlignTop);
426#endif 426#endif
427 if ( addIcon ) { 427 if ( addIcon ) {
428 if ( ! horLayout ) { 428 if ( ! horLayout ) {
429 x += AGENDA_ICON_SIZE+3; 429 x += AGENDA_ICON_SIZE+3;
430 w -= (AGENDA_ICON_SIZE+3); 430 w -= (AGENDA_ICON_SIZE+3);
431 } 431 }
432 else { 432 else {
433 yy+= AGENDA_ICON_SIZE+2; 433 yy+= AGENDA_ICON_SIZE+2;
434 h -=(AGENDA_ICON_SIZE+3); 434 h -=(AGENDA_ICON_SIZE+3);
435 } 435 }
436 } 436 }
437 if ( mWhiteText ) 437 if ( mWhiteText )
438 paint->setPen ( white); 438 paint->setPen ( white);
439 if ( x < 0 ) { 439 if ( x < 0 ) {
440 w = w+x-3; 440 w = w+x-3;
441 x = 3; 441 x = 3;
442 if ( !horLayout && addIcon ) 442 if ( !horLayout && addIcon )
443 x += AGENDA_ICON_SIZE+3; 443 x += AGENDA_ICON_SIZE+3;
444 if ( w > parentWidget()->width() ){ 444 if ( w > parentWidget()->width() ){
445 w = parentWidget()->width() - 6; 445 w = parentWidget()->width() - 6;
446#ifndef DESKTOP_VERSION 446#ifndef DESKTOP_VERSION
447 align = ( AlignHCenter|WordBreak|AlignTop); 447 align = ( AlignHCenter|WordBreak|AlignTop);
448#else 448#else
449 align = ( AlignHCenter|BreakAnywhere|WordBreak|AlignTop); 449 align = ( AlignHCenter|BreakAnywhere|WordBreak|AlignTop);
450#endif 450#endif
451 451
452 } 452 }
453 } 453 }
454 QRect dr; 454 QRect dr;
455 if ( w + x > parentWidget()->width() ) 455 if ( w + x > parentWidget()->width() )
456 w = parentWidget()->width()-x; 456 w = parentWidget()->width()-x;
457 paint->drawText ( x, yy, w, h, align, mDisplayedText, -1, &dr ); 457 paint->drawText ( x, yy, w, h, align, mDisplayedText, -1, &dr );
458 //qDebug("%d %d %d %d ", x, yy, w, h ); 458 //qDebug("%d %d %d %d ", x, yy, w, h );
459 if ( mIncidence->cancelled() ){ 459 if ( mIncidence->cancelled() ){
460 460
461 461
462 small = ( height() < 20 ); 462 small = ( height() < 20 );
463 463
464 if ( ! small ) { 464 if ( ! small ) {
465 QFontMetrics fm ( paint->font() ); 465 QFontMetrics fm ( paint->font() );
466 paint->drawLine(dr.left(), yy+fm.height()/2, dr.right()-2, yy+fm.height()/2); 466 paint->drawLine(dr.left(), yy+fm.height()/2, dr.right()-2, yy+fm.height()/2);
467 } 467 }
468 468
469 } 469 }
470 pa.end(); 470 pa.end();
471 471
472} 472}
473 473
474QPixmap * KOAgendaItem::paintPix() 474QPixmap * KOAgendaItem::paintPix()
475{ 475{
476 static QPixmap* mPaintPix = 0; 476 static QPixmap* mPaintPix = 0;
477 if ( ! mPaintPix ) { 477 if ( ! mPaintPix ) {
478 int w = QApplication::desktop()->width(); 478 int w = QApplication::desktop()->width();
479 int h = QApplication::desktop()->height(); 479 int h = QApplication::desktop()->height();
480 mPaintPix = new QPixmap(w,h); 480 mPaintPix = new QPixmap(w,h);
481 } 481 }
482 return mPaintPix ; 482 return mPaintPix ;
483} 483}
484QPixmap * KOAgendaItem::paintPixAllday() 484QPixmap * KOAgendaItem::paintPixAllday()
485{ 485{
486 static QPixmap* mPaintPixA = 0; 486 static QPixmap* mPaintPixA = 0;
487 if ( ! mPaintPixA ) { 487 if ( ! mPaintPixA ) {
488 int w = QApplication::desktop()->width(); 488 int w = QApplication::desktop()->width();
489 int h = QApplication::desktop()->height()/5; 489 int h = QApplication::desktop()->height()/5;
490 mPaintPixA = new QPixmap(w,h); 490 mPaintPixA = new QPixmap(w,h);
491 } 491 }
492 return mPaintPixA ; 492 return mPaintPixA ;
493} 493}
494 494
495void KOAgendaItem::repaintItem() 495void KOAgendaItem::repaintItem()
496{ 496{
497 globalFlagBlockAgendaItemPaint = 0; 497 globalFlagBlockAgendaItemPaint = 0;
498 globalFlagBlockAgenda = 0; 498 globalFlagBlockAgenda = 0;
499 repaint( false ); 499 repaint( false );
500} 500}
501void KOAgendaItem::paintEvent ( QPaintEvent *e ) 501void KOAgendaItem::paintEvent ( QPaintEvent *e )
502{ 502{
503 503
504 if ( globalFlagBlockAgendaItemPaint ) 504 if ( globalFlagBlockAgendaItemPaint )
505 return; 505 return;
506 if ( globalFlagBlockAgenda > 0 && globalFlagBlockAgenda < 5 ) 506 if ( globalFlagBlockAgenda > 0 && globalFlagBlockAgenda < 5 )
507 return; 507 return;
508 int yy; 508 int yy;
509 if ( mAllDay ) 509 if ( mAllDay )
510 yy = y(); 510 yy = y();
511 else 511 else
512 yy = mCellYTop * ( height() / cellHeight() ); 512 yy = mCellYTop * ( height() / cellHeight() );
513 int xx = x(); 513 int xx = x();
514 514
515 if ( xPaintCoord != xx || yPaintCoord != yy || 515 if ( xPaintCoord != xx || yPaintCoord != yy ||
516 wPaintCoord != width() || hPaintCoord != height()) { 516 wPaintCoord != width() || hPaintCoord != height()) {
517 xPaintCoord= xx; 517 xPaintCoord= xx;
518 yPaintCoord = yy; 518 yPaintCoord = yy;
519 wPaintCoord = width(); 519 wPaintCoord = width();
520 hPaintCoord = height(); 520 hPaintCoord = height();
521 globalFlagBlockAgendaItemUpdate = 0; 521 globalFlagBlockAgendaItemUpdate = 0;
522 paintMe( mSelected ); 522 paintMe( mSelected );
523 //qDebug("calling paintMe "); 523 //qDebug("calling paintMe ");
524 globalFlagBlockAgendaItemUpdate = 1; 524 globalFlagBlockAgendaItemUpdate = 1;
525 if ( mSelected ) 525 if ( mSelected )
526 return; 526 return;
527 } 527 }
528 int rx, ry, rw, rh; 528 int rx, ry, rw, rh;
529 rx = e->rect().x(); 529 rx = e->rect().x();
530 ry = e->rect().y(); 530 ry = e->rect().y();
531 rw = e->rect().width(); 531 rw = e->rect().width();
532 rh = e->rect().height(); 532 rh = e->rect().height();
533 //qDebug(" paintevent %s %d %d %d %d", mIncidence->summary().latin1(), x(), yy, width(), height()); 533 //qDebug(" paintevent %s %d %d %d %d", mIncidence->summary().latin1(), x(), yy, width(), height());
534 534
535 QPixmap* paintFrom ; 535 QPixmap* paintFrom ;
536 if ( mSelected ) { 536 if ( mSelected ) {
537 paintMe( mSelected ); 537 paintMe( mSelected );
538 return; 538 return;
539 } else { 539 } else {
540 if ( mAllDay ) 540 if ( mAllDay )
541 paintFrom = paintPixAllday(); 541 paintFrom = paintPixAllday();
542 else 542 else
543 paintFrom = paintPix(); 543 paintFrom = paintPix();
544 } 544 }
545 xx += rx; 545 xx += rx;
546 546
547 if ( xx < 0 ) { 547 if ( xx < 0 ) {
548 rw = rw + xx; 548 rw = rw + xx;
549 rx -= xx; 549 rx -= xx;
550 xx = 0; 550 xx = 0;
551 if ( rw <= 1 ) { 551 if ( rw <= 1 ) {
552 //qDebug("KOAgendaItem::Width1 <= 1 (%d). Returning. %s",rw,mDisplayedText.latin1()); 552 //qDebug("KOAgendaItem::Width1 <= 1 (%d). Returning. %s",rw,mDisplayedText.latin1());
553 return; 553 return;
554 } 554 }
555 } 555 }
556 if ( paintFrom->width() < xx+rw ) { 556 if ( paintFrom->width() < xx+rw ) {
557 rw = paintFrom->width() - xx; 557 rw = paintFrom->width() - xx;
558 if ( rw <= 1 ) { 558 if ( rw <= 1 ) {
559 //qDebug("KOAgendaItem::Width2 <= 1 (%d). Returning.%s ",rw,mDisplayedText.latin1() ); 559 //qDebug("KOAgendaItem::Width2 <= 1 (%d). Returning.%s ",rw,mDisplayedText.latin1() );
560 return; 560 return;
561 } 561 }
562 } 562 }
563 //qDebug("%d %d %d %d %d %d %d",rx, ry, paintFrom, xx ,yPaintCoord+ry, rw, rh); 563 //qDebug("%d %d %d %d %d %d %d",rx, ry, paintFrom, xx ,yPaintCoord+ry, rw, rh);
564 bitBlt (this, rx, ry, paintFrom, xx ,yPaintCoord+ry, rw, rh ,CopyROP); 564 bitBlt (this, rx, ry, paintFrom, xx ,yPaintCoord+ry, rw, rh ,CopyROP);
565} 565}
566void KOAgendaItem::computeText() 566void KOAgendaItem::computeText()
567{ 567{
568 mDisplayedText = mIncidence->summary(); 568 mDisplayedText = mIncidence->summary();
569 if ( (mIncidence->typeID() == todoID ) ) { 569 if ( (mIncidence->typeID() == todoID ) ) {
570 if ( static_cast<Todo*>(mIncidence)->hasDueDate() ) { 570 if ( static_cast<Todo*>(mIncidence)->hasDueDate() ) {
571 if ( static_cast<Todo*>(mIncidence)->dtDue().date() < QDate::currentDate() ) 571 if ( static_cast<Todo*>(mIncidence)->dtDue().date() < QDate::currentDate() )
572 mDisplayedText += i18n(" (") +KGlobal::locale()->formatDate((static_cast<Todo*>(mIncidence))->dtDue().date(), true)+")"; 572 mDisplayedText += i18n(" (") +KGlobal::locale()->formatDate((static_cast<Todo*>(mIncidence))->dtDue().date(), true)+")";
573 else if ( !(mIncidence->doesFloat())) 573 else if ( !(mIncidence->doesFloat()))
574 mDisplayedText += i18n(" (") +KGlobal::locale()->formatTime((static_cast<Todo*>(mIncidence))->dtDue().time())+")"; 574 mDisplayedText += i18n(" (") +KGlobal::locale()->formatTime((static_cast<Todo*>(mIncidence))->dtDue().time())+")";
575 } 575 }
576 } else { 576 } else {
577 if ( !(mIncidence->doesFloat()) && KOPrefs::instance()->mShowTimeInAgenda) 577 if ( !(mIncidence->doesFloat()) && KOPrefs::instance()->mShowTimeInAgenda)
578 mDisplayedText += ": " +KGlobal::locale()->formatTime((static_cast<Event*>(mIncidence))->dtStart().time()) + " - " + KGlobal::locale()->formatTime((static_cast<Event*>(mIncidence))->dtEnd().time()) ; 578 mDisplayedText += ": " +KGlobal::locale()->formatTime((static_cast<Event*>(mIncidence))->dtStart().time()) + " - " + KGlobal::locale()->formatTime((static_cast<Event*>(mIncidence))->dtEnd().time()) ;
579 579
580 if ( mAllDay ) { 580 if ( mAllDay ) {
581 if ( mIncidence->dtStart().date().addDays(3) < mIncidence->dtEnd().date() ) { 581 if ( (static_cast<Event*>(mIncidence))->isMultiDay() ) {
582 if ( mIncidence->doesRecur() ) { 582 int dur = 1+ (static_cast<Event*>(mIncidence))->dtStart().date().daysTo( (static_cast<Event*>(mIncidence))->dtEnd().date() );
583 mDisplayedText += " (" + mIncidence->recurrence()->recurrenceText() + ")"; 583 mDisplayedText += " ("+QString::number( dur )+i18n(" days") +")" ;
584 } else { 584
585 int dur = 1+ (static_cast<Event*>(mIncidence))->dtStart().date().daysTo( (static_cast<Event*>(mIncidence))->dtEnd().date() ); 585 if ( mIncidence->dtStart().date().addDays(3) < mIncidence->dtEnd().date() ) {
586 mDisplayedText += ": " +KGlobal::locale()->formatDate((static_cast<Event*>(mIncidence))->dtStart().date(), true) + " - " + KGlobal::locale()->formatDate((static_cast<Event*>(mIncidence))->dtEnd().date(), true) + " ("+QString::number( dur )+i18n(" days") +")" ; 586 if ( mIncidence->doesRecur() ) {
587 } 587 mDisplayedText += " (" + mIncidence->recurrence()->recurrenceText() + ")";
588 } 588 } else {
589 mDisplayedText += ": " +KGlobal::locale()->formatDate((static_cast<Event*>(mIncidence))->dtStart().date(), true) + " - " + KGlobal::locale()->formatDate((static_cast<Event*>(mIncidence))->dtEnd().date(), true);
590 }
591 }
592 }
589 } 593 }
590 } 594 }
591 if ( !mIncidence->location().isEmpty() ) { 595 if ( !mIncidence->location().isEmpty() ) {
592 if ( mAllDay ) 596 if ( mAllDay )
593 mDisplayedText += " ("; 597 mDisplayedText += " (";
594 else 598 else
595 mDisplayedText += "\n("; 599 mDisplayedText += "\n(";
596 mDisplayedText += mIncidence->location() +")"; 600 mDisplayedText += mIncidence->location() +")";
597 } 601 }
598#ifdef DESKTOP_VERSION 602#ifdef DESKTOP_VERSION
599 QString tipText = mIncidence->summary(); 603 QString tipText = mIncidence->summary();
600 if ( !mIncidence->doesFloat() ) { 604 if ( !mIncidence->doesFloat() ) {
601 if ( mIncidence->typeID() == eventID ) { 605 if ( mIncidence->typeID() == eventID ) {
602 if ( (static_cast<Event*>(mIncidence))->isMultiDay() ) { 606 if ( (static_cast<Event*>(mIncidence))->isMultiDay() ) {
603 tipText += "\n"+i18n("From: ")+mIncidence->dtStartStr(); 607 tipText += "\n"+i18n("From: ")+mIncidence->dtStartStr();
604 tipText += "\n"+i18n("To: ")+(static_cast<Event*>(mIncidence))->dtEndStr(); 608 tipText += "\n"+i18n("To: ")+(static_cast<Event*>(mIncidence))->dtEndStr();
605 } 609 }
606 else { 610 else {
607 tipText += "\n"+i18n("Time: ")+mIncidence->dtStartTimeStr(); 611 tipText += "\n"+i18n("Time: ")+mIncidence->dtStartTimeStr();
608 tipText += " - "+(static_cast<Event*>(mIncidence))->dtEndTimeStr(); 612 tipText += " - "+(static_cast<Event*>(mIncidence))->dtEndTimeStr();
609 } 613 }
610 } 614 }
611 else if ( mIncidence->typeID() == todoID ) { 615 else if ( mIncidence->typeID() == todoID ) {
612 if (mIncidence->hasStartDate()) 616 if (mIncidence->hasStartDate())
613 tipText += "\n"+i18n("Start: ")+ (static_cast<Todo*>(mIncidence))->dtStartStr(); 617 tipText += "\n"+i18n("Start: ")+ (static_cast<Todo*>(mIncidence))->dtStartStr();
614 if (((Todo*)mIncidence)->hasDueDate()) 618 if (((Todo*)mIncidence)->hasDueDate())
615 tipText += "\n"+i18n("Due: ")+ (static_cast<Todo*>(mIncidence))->dtDueStr(); 619 tipText += "\n"+i18n("Due: ")+ (static_cast<Todo*>(mIncidence))->dtDueStr();
616 } 620 }
617 } else if ( mIncidence->typeID() == todoID ) { 621 } else if ( mIncidence->typeID() == todoID ) {
618 if (mIncidence->hasStartDate()) 622 if (mIncidence->hasStartDate())
619 tipText += "\n"+i18n("Start: ")+ (static_cast<Todo*>(mIncidence))->dtStartDateStr(); 623 tipText += "\n"+i18n("Start: ")+ (static_cast<Todo*>(mIncidence))->dtStartDateStr();
620 if (((Todo*)mIncidence)->hasDueDate()) 624 if (((Todo*)mIncidence)->hasDueDate())
621 tipText += "\n"+i18n("Due: ")+ (static_cast<Todo*>(mIncidence))->dtDueDateStr(); 625 tipText += "\n"+i18n("Due: ")+ (static_cast<Todo*>(mIncidence))->dtDueDateStr();
622 } 626 }
623 627
624 if (!mIncidence->location().isEmpty()) { 628 if (!mIncidence->location().isEmpty()) {
625 tipText += "\n"+i18n("Location: ")+mIncidence->location(); 629 tipText += "\n"+i18n("Location: ")+mIncidence->location();
626 } 630 }
627 QToolTip::add(this,tipText,toolTipGroup(),""); 631 QToolTip::add(this,tipText,toolTipGroup(),"");
628#endif 632#endif
629} 633}
630void KOAgendaItem::updateItem() 634void KOAgendaItem::updateItem()
631{ 635{
632 computeText(); 636 computeText();
633 637
634 //qDebug("KOAgendaItem:: updateItem() %s %d %d ",incidence()->summary().latin1(), x(), y()); 638 //qDebug("KOAgendaItem:: updateItem() %s %d %d ",incidence()->summary().latin1(), x(), y());
635 paintMe( mSelected ); 639 paintMe( mSelected );
636 repaint( false); 640 repaint( false);
637} 641}
638 642
639void KOAgendaItem::resizeEvent ( QResizeEvent *ev ) 643void KOAgendaItem::resizeEvent ( QResizeEvent *ev )
640{ 644{
641 //qDebug("KOAgendaItem::resizeEvent %s ", mIncidence->summary().latin1()); 645 //qDebug("KOAgendaItem::resizeEvent %s ", mIncidence->summary().latin1());
642 paintMe( mSelected ); 646 paintMe( mSelected );
643 repaint( false ); 647 repaint( false );
644} 648}
645 649
646/* 650/*
647 Return height of item in units of agenda cells 651 Return height of item in units of agenda cells
648*/ 652*/
649int KOAgendaItem::cellHeight() 653int KOAgendaItem::cellHeight()
650{ 654{
651 int ret = mCellYBottom - mCellYTop + 1; 655 int ret = mCellYBottom - mCellYTop + 1;
652 if ( ret <= 0 ) { 656 if ( ret <= 0 ) {
653 ret = 1; 657 ret = 1;
654 mCellYBottom = 0; 658 mCellYBottom = 0;
655 mCellYTop = 0; 659 mCellYTop = 0;
656 } 660 }
657 return ret; 661 return ret;
658} 662}
659// it may be that allday agenda items have a needed width > 32000 663// it may be that allday agenda items have a needed width > 32000
660// this code is to fix this problem 664// this code is to fix this problem
661int KOAgendaItem::resizeMe( int grid, int wid, int hei, bool invalidWidth ) 665int KOAgendaItem::resizeMe( int grid, int wid, int hei, bool invalidWidth )
662{ 666{
663 int diff = 0; 667 int diff = 0;
664 if ( mCellX < -3 && mAllDay ) { 668 if ( mCellX < -3 && mAllDay ) {
665 diff = (mCellX + 3) * -grid; 669 diff = (mCellX + 3) * -grid;
666 //qDebug("%s: cellX %d diff %d wid %d grid %d ", mDisplayedText.latin1(), mCellX, diff, wid, grid); 670 //qDebug("%s: cellX %d diff %d wid %d grid %d ", mDisplayedText.latin1(), mCellX, diff, wid, grid);
667 if ( diff >= wid ) { 671 if ( diff >= wid ) {
668 // qDebug("KOAgendaItem::resizeMe: diff >= wid: diff %d wid %d ", diff, wid); 672 // qDebug("KOAgendaItem::resizeMe: diff >= wid: diff %d wid %d ", diff, wid);
669 //diff = 0; 673 //diff = 0;
670 } 674 }
671 } 675 }
672 if ( (!invalidWidth && wid == width() ) || diff >= wid ) 676 if ( (!invalidWidth && wid == width() ) || diff >= wid )
673 resize( wid, hei ); 677 resize( wid, hei );
674 else 678 else
675 resize( wid - diff, hei ); 679 resize( wid - diff, hei );
676 //qDebug("wid %d x %d ", width(), x()); 680 //qDebug("wid %d x %d ", width(), x());
677 return diff; 681 return diff;
678} 682}
679/* 683/*
680 Return height of item in units of agenda cells 684 Return height of item in units of agenda cells
681*/ 685*/
682int KOAgendaItem::cellWidth() 686int KOAgendaItem::cellWidth()
683{ 687{
684 return mCellXWidth - mCellX + 1; 688 return mCellXWidth - mCellX + 1;
685} 689}
686 690
687void KOAgendaItem::setItemDate(QDate qd) 691void KOAgendaItem::setItemDate(QDate qd)
688{ 692{
689 mDate = qd; 693 mDate = qd;
690} 694}
691 695
692void KOAgendaItem::setCellXY(int X, int YTop, int YBottom) 696void KOAgendaItem::setCellXY(int X, int YTop, int YBottom)
693{ 697{
694 mCellX = X; 698 mCellX = X;
695 mCellYTop = YTop; 699 mCellYTop = YTop;
696 mCellYBottom = YBottom; 700 mCellYBottom = YBottom;
697} 701}
698 702
699void KOAgendaItem::setCellXWidth(int xwidth) 703void KOAgendaItem::setCellXWidth(int xwidth)
700{ 704{
701 mCellXWidth = xwidth; 705 mCellXWidth = xwidth;
702} 706}
703 707
704void KOAgendaItem::setCellX(int XLeft, int XRight) 708void KOAgendaItem::setCellX(int XLeft, int XRight)
705{ 709{
706 mCellX = XLeft; 710 mCellX = XLeft;
707 mCellXWidth = XRight; 711 mCellXWidth = XRight;
708} 712}
709 713
710void KOAgendaItem::setCellY(int YTop, int YBottom) 714void KOAgendaItem::setCellY(int YTop, int YBottom)
711{ 715{
712 mCellYTop = YTop; 716 mCellYTop = YTop;
713 mCellYBottom = YBottom; 717 mCellYBottom = YBottom;
714} 718}
715 719
716void KOAgendaItem::setSubCell(int subCell) 720void KOAgendaItem::setSubCell(int subCell)
717{ 721{
718 mSubCell = subCell; 722 mSubCell = subCell;
719} 723}
720 724
721void KOAgendaItem::setSubCells(int subCells) 725void KOAgendaItem::setSubCells(int subCells)
722{ 726{
723 mSubCells = subCells; 727 mSubCells = subCells;
724} 728}
725 729
726void KOAgendaItem::setMultiItem(KOAgendaItem *first,KOAgendaItem *next, 730void KOAgendaItem::setMultiItem(KOAgendaItem *first,KOAgendaItem *next,
727 KOAgendaItem *last) 731 KOAgendaItem *last)
728{ 732{
729 mFirstMultiItem = first; 733 mFirstMultiItem = first;
730 mNextMultiItem = next; 734 mNextMultiItem = next;
731 mLastMultiItem = last; 735 mLastMultiItem = last;
732} 736}
733 737
734void KOAgendaItem::startMove() 738void KOAgendaItem::startMove()
735{ 739{
736 mStartCellX = mCellX; 740 mStartCellX = mCellX;
737 mStartCellXWidth = mCellXWidth; 741 mStartCellXWidth = mCellXWidth;
738 mStartCellYTop = mCellYTop; 742 mStartCellYTop = mCellYTop;
739 mStartCellYBottom = mCellYBottom; 743 mStartCellYBottom = mCellYBottom;
740} 744}
741 745
742void KOAgendaItem::resetMove() 746void KOAgendaItem::resetMove()
743{ 747{
744 mCellX = mStartCellX; 748 mCellX = mStartCellX;
745 mCellXWidth = mStartCellXWidth; 749 mCellXWidth = mStartCellXWidth;
746 mCellYTop = mStartCellYTop; 750 mCellYTop = mStartCellYTop;
747 mCellYBottom = mStartCellYBottom; 751 mCellYBottom = mStartCellYBottom;
748} 752}
749 753
750void KOAgendaItem::moveRelative(int dx, int dy) 754void KOAgendaItem::moveRelative(int dx, int dy)
751{ 755{
752 int newX = cellX() + dx; 756 int newX = cellX() + dx;
753 int newXWidth = cellXWidth() + dx; 757 int newXWidth = cellXWidth() + dx;
754 int newYTop = cellYTop() + dy; 758 int newYTop = cellYTop() + dy;
755 int newYBottom = cellYBottom() + dy; 759 int newYBottom = cellYBottom() + dy;
756 setCellXY(newX,newYTop,newYBottom); 760 setCellXY(newX,newYTop,newYBottom);
757 setCellXWidth(newXWidth); 761 setCellXWidth(newXWidth);
758} 762}
759 763
760void KOAgendaItem::expandTop(int dy) 764void KOAgendaItem::expandTop(int dy)
761{ 765{
762 int newYTop = cellYTop() + dy; 766 int newYTop = cellYTop() + dy;
763 int newYBottom = cellYBottom(); 767 int newYBottom = cellYBottom();
764 if (newYTop > newYBottom) newYTop = newYBottom; 768 if (newYTop > newYBottom) newYTop = newYBottom;
765 setCellY(newYTop, newYBottom); 769 setCellY(newYTop, newYBottom);
766} 770}
767 771
768void KOAgendaItem::expandBottom(int dy) 772void KOAgendaItem::expandBottom(int dy)
769{ 773{
770 int newYTop = cellYTop(); 774 int newYTop = cellYTop();
771 int newYBottom = cellYBottom() + dy; 775 int newYBottom = cellYBottom() + dy;
772 if (newYBottom < newYTop) newYBottom = newYTop; 776 if (newYBottom < newYTop) newYBottom = newYTop;
773 setCellY(newYTop, newYBottom); 777 setCellY(newYTop, newYBottom);
774} 778}
775 779
776void KOAgendaItem::expandLeft(int dx) 780void KOAgendaItem::expandLeft(int dx)
777{ 781{
778 int newX = cellX() + dx; 782 int newX = cellX() + dx;
779 int newXWidth = cellXWidth(); 783 int newXWidth = cellXWidth();
780 if (newX > newXWidth) newX = newXWidth; 784 if (newX > newXWidth) newX = newXWidth;
781 setCellX(newX,newXWidth); 785 setCellX(newX,newXWidth);
782} 786}
783 787
784void KOAgendaItem::expandRight(int dx) 788void KOAgendaItem::expandRight(int dx)
785{ 789{
786 int newX = cellX(); 790 int newX = cellX();
787 int newXWidth = cellXWidth() + dx; 791 int newXWidth = cellXWidth() + dx;
788 if (newXWidth < newX) newXWidth = newX; 792 if (newXWidth < newX) newXWidth = newX;
789 setCellX(newX,newXWidth); 793 setCellX(newX,newXWidth);
790} 794}
791 795
792QToolTipGroup *KOAgendaItem::toolTipGroup() 796QToolTipGroup *KOAgendaItem::toolTipGroup()
793{ 797{
794 if (!mToolTipGroup) mToolTipGroup = new QToolTipGroup(0); 798 if (!mToolTipGroup) mToolTipGroup = new QToolTipGroup(0);
795 return mToolTipGroup; 799 return mToolTipGroup;
796} 800}
797 801
798void KOAgendaItem::dragEnterEvent( QDragEnterEvent *e ) 802void KOAgendaItem::dragEnterEvent( QDragEnterEvent *e )
799{ 803{
800#ifndef KORG_NODND 804#ifndef KORG_NODND
801 if ( ICalDrag::canDecode( e ) || VCalDrag::canDecode( e ) || 805 if ( ICalDrag::canDecode( e ) || VCalDrag::canDecode( e ) ||
802 !QTextDrag::canDecode( e ) ) { 806 !QTextDrag::canDecode( e ) ) {
803 e->ignore(); 807 e->ignore();
804 return; 808 return;
805 } 809 }
806 e->accept(); 810 e->accept();
807#endif 811#endif
808} 812}
809 813
810void KOAgendaItem::dropEvent( QDropEvent *e ) 814void KOAgendaItem::dropEvent( QDropEvent *e )
811{ 815{
812#ifndef KORG_NODND 816#ifndef KORG_NODND
813 QString text; 817 QString text;
814 if(QTextDrag::decode(e,text)) 818 if(QTextDrag::decode(e,text))
815 { 819 {
816 kdDebug() << "Dropped : " << text << endl; 820 kdDebug() << "Dropped : " << text << endl;
817 QStringList emails = QStringList::split(",",text); 821 QStringList emails = QStringList::split(",",text);
818 for(QStringList::ConstIterator it = emails.begin();it!=emails.end();++it) { 822 for(QStringList::ConstIterator it = emails.begin();it!=emails.end();++it) {
819 kdDebug() << " Email: " << (*it) << endl; 823 kdDebug() << " Email: " << (*it) << endl;
820 int pos = (*it).find("<"); 824 int pos = (*it).find("<");
821 QString name = (*it).left(pos); 825 QString name = (*it).left(pos);
822 QString email = (*it).mid(pos); 826 QString email = (*it).mid(pos);
823 if (!email.isEmpty()) { 827 if (!email.isEmpty()) {
824 mIncidence->addAttendee(new Attendee(name,email)); 828 mIncidence->addAttendee(new Attendee(name,email));
825 } 829 }
826 } 830 }
827 } 831 }
828#endif 832#endif
829} 833}
830 834
831 835
832QPtrList<KOAgendaItem> KOAgendaItem::conflictItems() 836QPtrList<KOAgendaItem> KOAgendaItem::conflictItems()
833{ 837{
834 return mConflictItems; 838 return mConflictItems;
835} 839}
836 840
837void KOAgendaItem::setConflictItems(QPtrList<KOAgendaItem> ci) 841void KOAgendaItem::setConflictItems(QPtrList<KOAgendaItem> ci)
838{ 842{
839 mConflictItems = ci; 843 mConflictItems = ci;
840 KOAgendaItem *item; 844 KOAgendaItem *item;
841 for ( item=mConflictItems.first(); item != 0; 845 for ( item=mConflictItems.first(); item != 0;
842 item=mConflictItems.next() ) { 846 item=mConflictItems.next() ) {
843 item->addConflictItem(this); 847 item->addConflictItem(this);
844 } 848 }