summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/kdatenavigator.cpp3
-rw-r--r--korganizer/komonthview.cpp226
-rw-r--r--korganizer/komonthview.h14
-rw-r--r--korganizer/koviewmanager.cpp3
4 files changed, 175 insertions, 71 deletions
diff --git a/korganizer/kdatenavigator.cpp b/korganizer/kdatenavigator.cpp
index 6438c9a..0cb767f 100644
--- a/korganizer/kdatenavigator.cpp
+++ b/korganizer/kdatenavigator.cpp
@@ -116,13 +116,14 @@ KDateNavigator::KDateNavigator( QWidget *parent, const char *name )
116 // read settings from configuration file. 116 // read settings from configuration file.
117 updateConfig(); 117 updateConfig();
118 enableRollover(FollowMonth); 118 enableRollover(FollowMonth);
119 mySizeHint = sizeHintTwoButtons(); 119 mySizeHint = sizeHintTwoButtons();
120 myFullSizeHint = sizeHintTwoButtons( 4 ); 120 myFullSizeHint = sizeHintTwoButtons( 4 );
121 mFontChanged = false; 121 mFontChanged = false;
122 resize ( 0,0 ); 122 resize ( 3,3 );
123
123} 124}
124void KDateNavigator::changeFont ( QFont fo ) 125void KDateNavigator::changeFont ( QFont fo )
125{ 126{
126 setFont( fo ); 127 setFont( fo );
127 mNavigatorBar->resetFont( fo ); 128 mNavigatorBar->resetFont( fo );
128} 129}
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp
index 050bfb9..38cfda7 100644
--- a/korganizer/komonthview.cpp
+++ b/korganizer/komonthview.cpp
@@ -191,24 +191,43 @@ void KNoScrollListBox::mousePressEvent(QMouseEvent *e)
191 } 191 }
192} 192}
193 193
194MonthViewItem::MonthViewItem( Incidence *incidence, QDate qd, const QString & s) 194MonthViewItem::MonthViewItem( Incidence *incidence, QDate qd, const QString & s)
195 : QListBoxItem() 195 : QListBoxItem()
196{ 196{
197 mblockRepaint = true;
197 setText( s ); 198 setText( s );
198 mMultiday = 0; 199 mMultiday = 0;
199 mIncidence = incidence; 200 mIncidence = incidence;
200 mDate = qd; 201 mDate = qd;
201 mRecur = false; 202 mRecur = false;
202 mAlarm = false; 203 mAlarm = false;
203 mReply = false; 204 mReply = false;
204 mInfo = false; 205 mInfo = false;
206 //qDebug("NEWWWWWWWWWWWWW ");
207}
208void MonthViewItem::recycle( Incidence *incidence, QDate qd, const QString & s)
209{
210 setText( s );
211 mMultiday = 0;
212 mIncidence = incidence;
213 mDate = qd;
214 mRecur = false;
215 mAlarm = false;
216 mReply = false;
217 mInfo = false;
218 //qDebug("recucleeeeeeeeeeeeeeeee ");
205} 219}
206 220
207void MonthViewItem::paint(QPainter *p) 221void MonthViewItem::paint(QPainter *p)
208{ 222{
223 if ( mblockRepaint ) {
224 //qDebug("block ");
225 return;
226 }
227 //qDebug("NON block ");
209#if QT_VERSION >= 0x030000 228#if QT_VERSION >= 0x030000
210 bool sel = isSelected(); 229 bool sel = isSelected();
211#else 230#else
212 bool sel = selected(); 231 bool sel = selected();
213#endif 232#endif
214 233
@@ -350,49 +369,50 @@ int MonthViewItem::width(const QListBox *lb) const
350 //qDebug("ret wid %d ", lb->width()); 369 //qDebug("ret wid %d ", lb->width());
351 return lb->width(); 370 return lb->width();
352} 371}
353 372
354 373
355MonthViewCell::MonthViewCell( KOMonthView *parent,QWidget* par ) 374MonthViewCell::MonthViewCell( KOMonthView *parent,QWidget* par )
356 : QWidget( par ), 375 : KNoScrollListBox( par ),
357 mMonthView( parent ) 376 mMonthView( parent )
358{ 377{
359 378
379 mCurrentAvailItem = 0;
360 //QVBoxLayout *topLayout = new QVBoxLayout( this ); 380 //QVBoxLayout *topLayout = new QVBoxLayout( this );
361 381 currentPalette = 0;
362 // mLabel = new QLabel( this );QPushButton 382 // mLabel = new QLabel( this );QPushButton
363 mLabel = new QPushButton( this ); 383 mLabel = new QPushButton( this );
364 //mLabel->setFrameStyle( QFrame::Panel | QFrame::Plain ); 384 //mLabel->setFrameStyle( QFrame::Panel | QFrame::Plain );
365 //mLabel->setLineWidth( 1 ); 385 //mLabel->setLineWidth( 1 );
366 //mLabel->setAlignment( AlignCenter ); 386 //mLabel->setAlignment( AlignCenter );
367 mLabel->setFlat( true ); 387 mLabel->setFlat( true );
368 mLabel->setFocusPolicy(NoFocus); 388 mLabel->setFocusPolicy(NoFocus);
369 mItemList = new KNoScrollListBox( this ); 389 //mItemList = new KNoScrollListBox( this );
370 mItemList->setMinimumSize( 10, 10 ); 390 setMinimumSize( 10, 10 );
371 mItemList->setFrameStyle( QFrame::Panel | QFrame::Plain ); 391 setFrameStyle( QFrame::Panel | QFrame::Plain );
372 mItemList->setLineWidth( 1 ); 392 setLineWidth( 1 );
373 //topLayout->addWidget( mItemList ); 393 //topLayout->addWidget( mItemList );
374 mLabel->raise(); 394 mLabel->raise();
375 // QColor( 0,0,255 ) QColor( 160,1600,255 ) 395 // QColor( 0,0,255 ) QColor( 160,1600,255 )
376 mStandardPalette = palette(); 396 mStandardPalette = palette();
377 mStandardPalette.setColor(QColorGroup::Base, mStandardPalette.color( QPalette::Normal, QColorGroup::Background ) ); 397 mStandardPalette.setColor(QColorGroup::Base, mStandardPalette.color( QPalette::Normal, QColorGroup::Background ) );
378 398
379 enableScrollBars( false ); 399 enableScrollBars( false );
380 updateConfig(); 400 updateConfig();
381 //connect( mLabel, SIGNAL( clicked( )), SLOT( newEvent() )); 401 //connect( mLabel, SIGNAL( clicked( )), SLOT( newEvent() ));
382 connect( mLabel, SIGNAL( clicked( )), SLOT( showDay() )); 402 connect( mLabel, SIGNAL( clicked( )), SLOT( showDay() ));
383 connect( mItemList, SIGNAL( doubleClicked( QListBoxItem *) ), 403 connect( this , SIGNAL( doubleClicked( QListBoxItem *) ),
384 SLOT( defaultAction( QListBoxItem * ) ) ); 404 SLOT( defaultAction( QListBoxItem * ) ) );
385 connect( mItemList, SIGNAL( rightButtonPressed( QListBoxItem *, 405 connect( this, SIGNAL( rightButtonPressed( QListBoxItem *,
386 const QPoint &) ), 406 const QPoint &) ),
387 SLOT( contextMenu( QListBoxItem * ) ) ); 407 SLOT( contextMenu( QListBoxItem * ) ) );
388 connect( mItemList, SIGNAL( highlighted( QListBoxItem *) ), 408 connect( this, SIGNAL( highlighted( QListBoxItem *) ),
389 SLOT( selection( QListBoxItem * ) ) ); 409 SLOT( selection( QListBoxItem * ) ) );
390 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ), 410 connect( this, SIGNAL( clicked( QListBoxItem * ) ),
391 SLOT( cellClicked( QListBoxItem * ) ) ); 411 SLOT( cellClicked( QListBoxItem * ) ) );
392 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ), 412 connect( this, SIGNAL( clicked( QListBoxItem * ) ),
393 SLOT( selection( QListBoxItem * ) ) ); 413 SLOT( selection( QListBoxItem * ) ) );
394} 414}
395#ifdef DESKTOP_VERSION 415#ifdef DESKTOP_VERSION
396QToolTipGroup *MonthViewCell::toolTipGroup() 416QToolTipGroup *MonthViewCell::toolTipGroup()
397{ 417{
398 if (!mToolTipGroup) mToolTipGroup = new QToolTipGroup(0); 418 if (!mToolTipGroup) mToolTipGroup = new QToolTipGroup(0);
@@ -419,23 +439,34 @@ void MonthViewCell::setPrimary( bool primary )
419{ 439{
420 mPrimary = primary; 440 mPrimary = primary;
421 //setMyPalette(); 441 //setMyPalette();
422} 442}
423void MonthViewCell::setMyPalette() 443void MonthViewCell::setMyPalette()
424{ 444{
425 445
426 if ( mHoliday) { 446 if ( mHoliday) {
447 if ( currentPalette == 1 ) return;
427 mLabel->setPalette( QPalette ( mHolidayPalette.color( QPalette::Normal,QColorGroup::Base),mHolidayPalette.color(QPalette::Normal,QColorGroup::Base ) )); 448 mLabel->setPalette( QPalette ( mHolidayPalette.color( QPalette::Normal,QColorGroup::Base),mHolidayPalette.color(QPalette::Normal,QColorGroup::Base ) ));
428 mItemList->setPalette( mHolidayPalette ); 449 setPalette( mHolidayPalette );
450 //mLabel->setPalette( mHolidayPalette );
451 currentPalette = 1;
452
429 } else { 453 } else {
430 if ( mPrimary ) { 454 if ( mPrimary ) {
455 if ( currentPalette == 2 ) return;
431 mLabel->setPalette( QPalette ( mPrimaryPalette.color( QPalette::Normal,QColorGroup::Base),mPrimaryPalette.color(QPalette::Normal,QColorGroup::Base ) )); 456 mLabel->setPalette( QPalette ( mPrimaryPalette.color( QPalette::Normal,QColorGroup::Base),mPrimaryPalette.color(QPalette::Normal,QColorGroup::Base ) ));
432 mItemList->setPalette( mPrimaryPalette ); 457 //mLabel->setPalette( mPrimaryPalette );
458 setPalette( mPrimaryPalette );
459 currentPalette = 2;
460
433 } else { 461 } else {
434 mItemList->setPalette( mNonPrimaryPalette ); 462 if ( currentPalette == 3 ) return;
435 mLabel->setPalette( QPalette ( mNonPrimaryPalette.color( QPalette::Normal,QColorGroup::Base),mNonPrimaryPalette.color(QPalette::Normal,QColorGroup::Base ) )); 463 setPalette( mNonPrimaryPalette );
464 mLabel->setPalette( QPalette ( mNonPrimaryPalette.color( QPalette::Normal,QColorGroup::Base),mNonPrimaryPalette.color(QPalette::Normal,QColorGroup::Base ) ));
465 //mLabel->setPalette( mNonPrimaryPalette );;
466 currentPalette = 3;
436 } 467 }
437 } 468 }
438 //QPalette pal = palette(); 469 //QPalette pal = palette();
439 470
440 //mLabel->setPalette( QPalette ( pal.color( QPalette::Normal,QColorGroup::Base),pal.color(QPalette::Normal,QColorGroup::Base ) )); 471 //mLabel->setPalette( QPalette ( pal.color( QPalette::Normal,QColorGroup::Base),pal.color(QPalette::Normal,QColorGroup::Base ) ));
441} 472}
@@ -468,70 +499,72 @@ void MonthViewCell::setHoliday( const QString &holiday )
468 mHolidayString = holiday; 499 mHolidayString = holiday;
469 500
470 if ( !holiday.isEmpty() ) { 501 if ( !holiday.isEmpty() ) {
471 setHoliday( true ); 502 setHoliday( true );
472 } 503 }
473} 504}
474void MonthViewCell::keyPressEvent ( QKeyEvent * e )
475{
476
477 e->ignore();
478
479}
480 505
481void MonthViewCell::startUpdateCell() 506void MonthViewCell::startUpdateCell()
482{ 507{
483 508
484 mItemList->setFocusPolicy(NoFocus); 509 setFocusPolicy(NoFocus);
485 if ( !mMonthView->isUpdatePossible() ) 510 if ( !mMonthView->isUpdatePossible() )
486 return; 511 return;
487 512 MonthViewItem *mitem = (MonthViewItem*) firstItem ();
513 while ( mitem ) {
514 mitem->setBlockRepaint( true );
515 mitem = (MonthViewItem *)mitem->next();
516 }
488 /* 517 /*
489 if ( !isVisible() ){ 518 if ( !isVisible() ){
490 return; 519 return;
491 } 520 }
492 */ 521 */
493 // qDebug("MonthViewCell::updateCell() "); 522 // qDebug("MonthViewCell::updateCell() ");
494 setPrimary( mDate.month()%2 ); 523 setPrimary( mDate.month()%2 );
495 setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays); 524 setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays);
496 if ( mDate == QDate::currentDate() ) { 525 if ( mDate == QDate::currentDate() ) {
497 mItemList->setLineWidth( 3 ); 526 setLineWidth( 3 );
498 } else { 527 } else {
499 mItemList->setLineWidth( 1 ); 528 setLineWidth( 1 );
500 } 529 }
501 mItemList->clear(); 530 mCurrentAvailItem = (MonthViewItem*) firstItem ();
531 //clear();
502 532
503#ifdef DESKTOP_VERSION 533#ifdef DESKTOP_VERSION
504 QToolTip::remove(this); 534 QToolTip::remove(this);
505#endif 535#endif
506 mToolTip.clear(); 536 mToolTip.clear();
507 //qApp->processEvents(); 537 //qApp->processEvents();
538#if 0
508 if ( !mHolidayString.isEmpty() ) { 539 if ( !mHolidayString.isEmpty() ) {
509 MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString ); 540 MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString );
510 item->setPalette( mHolidayPalette ); 541 item->setPalette( mHolidayPalette );
511 mItemList->insertItem( item ); 542 insertItem( item );
512 mToolTip.append ( mHolidayString ); 543 mToolTip.append ( mHolidayString );
513 } 544 }
545#endif
514} 546}
515 547
516void MonthViewCell::insertEvent(Event *event) 548void MonthViewCell::insertEvent(Event *event)
517{ 549{
518 QString mToolTipText; 550 QString mToolTipText;
519 mItemList->setFocusPolicy(WheelFocus); 551 bool insertNewItem = false;
552 setFocusPolicy(WheelFocus);
520 if ( !(event->doesRecur() == Recurrence::rNone) ) { 553 if ( !(event->doesRecur() == Recurrence::rNone) ) {
521 if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily ) 554 if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily )
522 return; 555 return;
523 else 556 else
524 if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly ) 557 if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly )
525 return; 558 return;
526 } 559 }
527 560
528 if ( event->isHoliday()) { 561 if ( event->isHoliday()) {
529 setHoliday( true ); 562 setHoliday( true );
530 if ( mDate.dayOfWeek() == 7 ) 563 if ( mDate.dayOfWeek() == 7 )
531 mItemList->setLineWidth( 3 ); 564 setLineWidth( 3 );
532 } 565 }
533 QString text; 566 QString text;
534 int multiday = 0;// 1 = start, 2 = midddle, 3 = end day 567 int multiday = 0;// 1 = start, 2 = midddle, 3 = end day
535 if (event->isMultiDay()) { 568 if (event->isMultiDay()) {
536 QString prefix = "<->";multiday = 2; 569 QString prefix = "<->";multiday = 2;
537 QString time; 570 QString time;
@@ -570,14 +603,28 @@ void MonthViewCell::insertEvent(Event *event)
570 else { 603 else {
571 text = KGlobal::locale()->formatTime(event->dtStart().time()); 604 text = KGlobal::locale()->formatTime(event->dtStart().time());
572 text += " " + event->summary(); 605 text += " " + event->summary();
573 mToolTipText += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary(); 606 mToolTipText += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary();
574 } 607 }
575 } 608 }
576 609 MonthViewItem *item ;
577 MonthViewItem *item = new MonthViewItem( event, mDate, text ); 610 if ( mCurrentAvailItem ) {
611 item = mCurrentAvailItem;
612 mCurrentAvailItem = (MonthViewItem*) item->next();
613 item->recycle( event, mDate, text );
614 } else {
615 if ( mAvailItemList.count() ) {
616 item = mAvailItemList.first();
617 mAvailItemList.remove( item );
618 item->recycle( event, mDate, text );
619 insertNewItem = true;
620 } else {
621 insertNewItem = true;
622 item = new MonthViewItem( event, mDate, text );
623 }
624 }
578 QPalette pal; 625 QPalette pal;
579 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { 626 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
580 QStringList categories = event->categories(); 627 QStringList categories = event->categories();
581 QString cat = categories.first(); 628 QString cat = categories.first();
582 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { 629 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
583 pal = getPalette(); 630 pal = getPalette();
@@ -611,28 +658,45 @@ void MonthViewCell::insertEvent(Event *event)
611 else 658 else
612 item->setReply(false); 659 item->setReply(false);
613 } else 660 } else
614 item->setReply(false); 661 item->setReply(false);
615#endif 662#endif
616 item->setMultiDay( multiday ); 663 item->setMultiDay( multiday );
617 mItemList->insertItem( item ); 664 if ( insertNewItem)
665 insertItem( item );
618 mToolTip.append( mToolTipText ); 666 mToolTip.append( mToolTipText );
619} 667}
620void MonthViewCell::insertTodo(Todo *todo) 668void MonthViewCell::insertTodo(Todo *todo)
621{ 669{
622 mItemList->setFocusPolicy(WheelFocus); 670 bool insertNewItem = false;
671 setFocusPolicy(WheelFocus);
623 QString text; 672 QString text;
624 if (todo->hasDueDate()) { 673 if (todo->hasDueDate()) {
625 if (!todo->doesFloat()) { 674 if (!todo->doesFloat()) {
626 text += KGlobal::locale()->formatTime(todo->dtDue().time()); 675 text += KGlobal::locale()->formatTime(todo->dtDue().time());
627 text += " "; 676 text += " ";
628 } 677 }
629 } 678 }
630 text += todo->summary(); 679 text += todo->summary();
631 680 MonthViewItem *item ;
632 MonthViewItem *item = new MonthViewItem( todo, mDate, text ); 681 if ( mCurrentAvailItem ) {
682 item = mCurrentAvailItem;
683 mCurrentAvailItem = (MonthViewItem*) item->next();
684 item->recycle( todo, mDate, text );
685 } else {
686 if ( mAvailItemList.count() ) {
687 item = mAvailItemList.first();
688 mAvailItemList.remove( item );
689 item->recycle( todo, mDate, text );
690 insertNewItem = true;
691 } else {
692 insertNewItem = true;
693 item = new MonthViewItem( todo, mDate, text );
694 }
695 }
696 //MonthViewItem *item = new MonthViewItem( todo, mDate, text );
633 //item->setPalette( mStandardPalette ); 697 //item->setPalette( mStandardPalette );
634 QPalette pal; 698 QPalette pal;
635 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { 699 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
636 QStringList categories = todo->categories(); 700 QStringList categories = todo->categories();
637 QString cat = categories.first(); 701 QString cat = categories.first();
638 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { 702 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
@@ -655,24 +719,42 @@ void MonthViewCell::insertTodo(Todo *todo)
655 pal = mStandardPalette ; 719 pal = mStandardPalette ;
656 } 720 }
657 item->setPalette( pal ); 721 item->setPalette( pal );
658 item->setRecur( todo->recurrence()->doesRecur() ); 722 item->setRecur( todo->recurrence()->doesRecur() );
659 item->setAlarm( todo->isAlarmEnabled() ); 723 item->setAlarm( todo->isAlarmEnabled() );
660 item->setMoreInfo( todo->description().length() > 0 ); 724 item->setMoreInfo( todo->description().length() > 0 );
661 mItemList->insertItem( item ); 725 if ( insertNewItem)
726 insertItem( item );
662 mToolTip.append( text ); 727 mToolTip.append( text );
663} 728}
729void MonthViewCell::repaintfinishUpdateCell()
730{
731 MonthViewItem *mitem = (MonthViewItem*) firstItem ();
732 while ( mitem ) {
733 mitem->setBlockRepaint( false );
734 updateItem ( mitem );
735 mitem = (MonthViewItem *)mitem->next();
736 }
737}
664void MonthViewCell::finishUpdateCell() 738void MonthViewCell::finishUpdateCell()
665{ 739{
740 while ( mCurrentAvailItem ) {
741 MonthViewItem *item = mCurrentAvailItem;
742 mCurrentAvailItem = (MonthViewItem *)item->next();
743 mAvailItemList.append( item );
744 takeItem ( item );
745 }
746
747
666#ifdef DESKTOP_VERSION 748#ifdef DESKTOP_VERSION
667 if (mToolTip.count() > 0 ) { 749 if (mToolTip.count() > 0 ) {
668 mToolTip.sort(); 750 mToolTip.sort();
669 QToolTip::add(this,mToolTip.join("\n"),toolTipGroup(),""); 751 QToolTip::add(this,mToolTip.join("\n"),toolTipGroup(),"");
670 } 752 }
671#endif 753#endif
672 mItemList->sort(); 754 sort();
673 //setMyPalette(); 755 //setMyPalette();
674 setMyPalette(); 756 setMyPalette();
675 QString text; 757 QString text;
676 bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog; 758 bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog;
677 if ( KOPrefs::instance()->mMonthViewWeek || KOGlobals::self()->calendarSystem()->day( mDate ) == 1 || (mDate.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) { 759 if ( KOPrefs::instance()->mMonthViewWeek || KOGlobals::self()->calendarSystem()->day( mDate ) == 1 || (mDate.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) {
678 text = KOGlobals::self()->calendarSystem()->monthName( mDate, true ) + " "; 760 text = KOGlobals::self()->calendarSystem()->monthName( mDate, true ) + " ";
@@ -743,58 +825,65 @@ void MonthViewCell::updateConfig( bool bigFont ) // = false
743 //updateCell(); 825 //updateCell();
744} 826}
745 827
746void MonthViewCell::enableScrollBars( bool enabled ) 828void MonthViewCell::enableScrollBars( bool enabled )
747{ 829{
748 if ( enabled ) { 830 if ( enabled ) {
749 //mItemList->setVScrollBarMode(QScrollView::Auto); 831
750 mItemList->setHScrollBarMode(QScrollView::Auto); 832 QListBoxItem *fi = firstItem ();
751 QListBoxItem *fi = mItemList->firstItem ();
752 if (fi ) { 833 if (fi ) {
753 int hei = mItemList->numRows () * fi->height(mItemList); 834 int ihei = fi->height( this );
754 if ( hei < height() - mItemList->horizontalScrollBar()->height () ) 835 int hei = numRows () * ihei;
755 mItemList->setVScrollBarMode(QScrollView::AlwaysOff); 836 if ( hei < height() - horizontalScrollBar()->height () )
837 setVScrollBarMode(QScrollView::AlwaysOff);
756 else 838 else
757 mItemList->setVScrollBarMode(QScrollView::Auto); 839 setVScrollBarMode(QScrollView::Auto);
840 if ( ihei *3 > height() )
841 setHScrollBarMode(QScrollView::AlwaysOff);
842 else
843 setHScrollBarMode(QScrollView::Auto);
844 } else {
845 setVScrollBarMode(QScrollView::Auto);
846 setHScrollBarMode(QScrollView::Auto);
758 } 847 }
759 } else { 848 } else {
760 mItemList->setVScrollBarMode(QScrollView::AlwaysOff); 849 setVScrollBarMode(QScrollView::AlwaysOff);
761 mItemList->setHScrollBarMode(QScrollView::AlwaysOff); 850 setHScrollBarMode(QScrollView::AlwaysOff);
762 } 851 }
763} 852}
764 853
765Incidence *MonthViewCell::selectedIncidence() 854Incidence *MonthViewCell::selectedIncidence()
766{ 855{
767 int index = mItemList->currentItem(); 856 int index = currentItem();
768 if ( index < 0 ) return 0; 857 if ( index < 0 ) return 0;
769 858
770 MonthViewItem *item = 859 MonthViewItem *mitem =
771 static_cast<MonthViewItem *>( mItemList->item( index ) ); 860 static_cast<MonthViewItem *>( item( index ) );
772 861
773 if ( !item ) return 0; 862 if ( !mitem ) return 0;
774 863
775 return item->incidence(); 864 return mitem->incidence();
776} 865}
777 866
778QDate MonthViewCell::selectedIncidenceDate() 867QDate MonthViewCell::selectedIncidenceDate()
779{ 868{
780 QDate qd; 869 QDate qd;
781 int index = mItemList->currentItem(); 870 int index = currentItem();
782 if ( index < 0 ) return qd; 871 if ( index < 0 ) return qd;
783 872
784 MonthViewItem *item = 873 MonthViewItem *mitem =
785 static_cast<MonthViewItem *>( mItemList->item( index ) ); 874 static_cast<MonthViewItem *>( item( index ) );
786 875
787 if ( !item ) return qd; 876 if ( !mitem ) return qd;
788 877
789 return item->incidenceDate(); 878 return mitem->incidenceDate();
790} 879}
791 880
792void MonthViewCell::deselect() 881void MonthViewCell::deselect()
793{ 882{
794 mItemList->clearSelection(); 883 clearSelection();
795 enableScrollBars( false ); 884 enableScrollBars( false );
796 // updateCell(); 885 // updateCell();
797} 886}
798void MonthViewCell::select() 887void MonthViewCell::select()
799{ 888{
800 ;// updateCell(); 889 ;// updateCell();
@@ -803,22 +892,24 @@ void MonthViewCell::select()
803void MonthViewCell::resizeEvent ( QResizeEvent * e ) 892void MonthViewCell::resizeEvent ( QResizeEvent * e )
804{ 893{
805 if ( !mMonthView->isUpdatePossible() ) 894 if ( !mMonthView->isUpdatePossible() )
806 return; 895 return;
807 //qDebug("++++++++++++++MonthViewCell::resizeEvent %d %d ", width(), height()); 896 //qDebug("++++++++++++++MonthViewCell::resizeEvent %d %d ", width(), height());
808 deselect(); 897 deselect();
809 int size = height() - mLabel->height() - 2; 898 int size = height() - mLabel->height() - lineWidth()-1;
899 //qDebug("LW %d ", lineWidth());
810 if ( size > 0 ) 900 if ( size > 0 )
811 mItemList->verticalScrollBar()->setMaximumHeight( size ); 901 verticalScrollBar()->setMaximumHeight( size );
812 size = width() - mLabel->width() -2; 902 size = width() - mLabel->width() -lineWidth()-1;
813 if ( size > 0 ) 903 if ( size > 0 )
814 mItemList->horizontalScrollBar()->setMaximumWidth( size ); 904 horizontalScrollBar()->setMaximumWidth( size );
815 mLabel->move( width()-mItemList->lineWidth() - mLabel->width(), height()-mItemList->lineWidth() - mLabel->height() ); 905 mLabel->move( width()-lineWidth() - mLabel->width(), height()-lineWidth() - mLabel->height() );
816 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2); 906 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2);
817 mItemList->resize ( width(), height () ); 907 // mItemList->resize ( width(), height () );
818 908 if ( e )
909 KNoScrollListBox::resizeEvent ( e );
819} 910}
820 911
821void MonthViewCell::defaultAction( QListBoxItem *item ) 912void MonthViewCell::defaultAction( QListBoxItem *item )
822{ 913{
823 if ( !item ) return; 914 if ( !item ) return;
824 915
@@ -1257,12 +1348,13 @@ void KOMonthView::changeEventDisplay(Event *, int)
1257 1348
1258void KOMonthView::updateView() 1349void KOMonthView::updateView()
1259{ 1350{
1260 1351
1261 if ( !updatePossible ) 1352 if ( !updatePossible )
1262 return; 1353 return;
1354 //qDebug("UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU ");
1263 //QTime ti; 1355 //QTime ti;
1264 //ti.start(); 1356 //ti.start();
1265 clearSelection(); 1357 clearSelection();
1266 QPtrVector<MonthViewCell> *cells; 1358 QPtrVector<MonthViewCell> *cells;
1267 if ( mShowWeekView ) { 1359 if ( mShowWeekView ) {
1268 cells = &mCellsW; 1360 cells = &mCellsW;
@@ -1353,12 +1445,16 @@ void KOMonthView::updateView()
1353 } 1445 }
1354 1446
1355 for( i = 0; i < timeSpan+1; ++i ) { 1447 for( i = 0; i < timeSpan+1; ++i ) {
1356 (*cells)[i]->finishUpdateCell(); 1448 (*cells)[i]->finishUpdateCell();
1357 } 1449 }
1358 processSelectionChange(); 1450 processSelectionChange();
1451 qApp->processEvents();
1452 for( i = 0; i < timeSpan+1; ++i ) {
1453 (*cells)[i]->repaintfinishUpdateCell();
1454 }
1359 (*cells)[0]->setFocus(); 1455 (*cells)[0]->setFocus();
1360 1456
1361 1457
1362#else 1458#else
1363 // old code 1459 // old code
1364 //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ "); 1460 //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ");
diff --git a/korganizer/komonthview.h b/korganizer/komonthview.h
index 89912e0..b997c1a 100644
--- a/korganizer/komonthview.h
+++ b/korganizer/komonthview.h
@@ -90,18 +90,19 @@ class KNoScrollListBox: public QListBox
90 90
91 91
92class MonthViewItem: public QListBoxItem 92class MonthViewItem: public QListBoxItem
93{ 93{
94 public: 94 public:
95 MonthViewItem( Incidence *, QDate qd, const QString & title ); 95 MonthViewItem( Incidence *, QDate qd, const QString & title );
96 96 void recycle( Incidence *incidence, QDate qd, const QString & s);
97 void setRecur(bool on) { mRecur = on; } 97 void setRecur(bool on) { mRecur = on; }
98 void setAlarm(bool on) { mAlarm = on; } 98 void setAlarm(bool on) { mAlarm = on; }
99 void setReply(bool on) { mReply = on; } 99 void setReply(bool on) { mReply = on; }
100 void setMoreInfo(bool on) { mInfo = on; } 100 void setMoreInfo(bool on) { mInfo = on; }
101 void setMultiDay(int type) { mMultiday = type; } 101 void setMultiDay(int type) { mMultiday = type; }
102 void setBlockRepaint(bool on) { mblockRepaint = on; }
102 103
103 104
104 void setPalette(const QPalette &p) { mPalette = p; } 105 void setPalette(const QPalette &p) { mPalette = p; }
105 QPalette palette() const { return mPalette; } 106 QPalette palette() const { return mPalette; }
106 107
107 Incidence *incidence() const { return mIncidence; } 108 Incidence *incidence() const { return mIncidence; }
@@ -110,12 +111,13 @@ class MonthViewItem: public QListBoxItem
110 protected: 111 protected:
111 virtual void paint(QPainter *); 112 virtual void paint(QPainter *);
112 virtual int height(const QListBox *) const; 113 virtual int height(const QListBox *) const;
113 virtual int width(const QListBox *) const; 114 virtual int width(const QListBox *) const;
114 115
115 private: 116 private:
117 bool mblockRepaint;
116 int mMultiday; 118 int mMultiday;
117 bool mRecur; 119 bool mRecur;
118 bool mAlarm; 120 bool mAlarm;
119 bool mReply; 121 bool mReply;
120 bool mInfo; 122 bool mInfo;
121 123
@@ -125,17 +127,18 @@ class MonthViewItem: public QListBoxItem
125 Incidence *mIncidence; 127 Incidence *mIncidence;
126}; 128};
127 129
128 130
129class KOMonthView; 131class KOMonthView;
130 132
131class MonthViewCell : public QWidget 133class MonthViewCell : public KNoScrollListBox
132{ 134{
133 Q_OBJECT 135 Q_OBJECT
134 public: 136 public:
135 MonthViewCell(KOMonthView *,QWidget* ); 137 MonthViewCell(KOMonthView *,QWidget* );
138 ~MonthViewCell() {mAvailItemList.setAutoDelete( true );}
136 139
137 void setDate( const QDate & ); 140 void setDate( const QDate & );
138 QDate date() const; 141 QDate date() const;
139 142
140 void setPrimary( bool ); 143 void setPrimary( bool );
141 bool isPrimary() const; 144 bool isPrimary() const;
@@ -143,12 +146,13 @@ class MonthViewCell : public QWidget
143 void setHoliday( bool ); 146 void setHoliday( bool );
144 void setHoliday( const QString & ); 147 void setHoliday( const QString & );
145 148
146 void updateCell(); 149 void updateCell();
147 void startUpdateCell(); 150 void startUpdateCell();
148 void finishUpdateCell(); 151 void finishUpdateCell();
152 void repaintfinishUpdateCell();
149 void insertEvent(Event *); 153 void insertEvent(Event *);
150 void insertTodo(Todo *); 154 void insertTodo(Todo *);
151 155
152 void updateConfig( bool bigFont = false ); 156 void updateConfig( bool bigFont = false );
153 157
154 void enableScrollBars( bool ); 158 void enableScrollBars( bool );
@@ -180,34 +184,36 @@ public slots:
180 void contextMenu( QListBoxItem * ); 184 void contextMenu( QListBoxItem * );
181 void selection( QListBoxItem * ); 185 void selection( QListBoxItem * );
182 void cellClicked( QListBoxItem * ); 186 void cellClicked( QListBoxItem * );
183 void newEvent(); 187 void newEvent();
184 188
185 private: 189 private:
190 MonthViewItem* mCurrentAvailItem;
191 QPtrList <MonthViewItem> mAvailItemList;
186 KOMonthView *mMonthView; 192 KOMonthView *mMonthView;
193 int currentPalette;
187 194
188 QDate mDate; 195 QDate mDate;
189 bool mPrimary; 196 bool mPrimary;
190 bool mHoliday; 197 bool mHoliday;
191 QString mHolidayString; 198 QString mHolidayString;
192 199
193 //QLabel *mLabel; 200 //QLabel *mLabel;
194 QPushButton *mLabel; 201 QPushButton *mLabel;
195 QListBox *mItemList; 202 //QListBox *mItemList;
196#ifdef DESKTOP_VERSION 203#ifdef DESKTOP_VERSION
197 static QToolTipGroup *mToolTipGroup; 204 static QToolTipGroup *mToolTipGroup;
198#endif 205#endif
199 QSize mLabelSize; 206 QSize mLabelSize;
200 QSize mLabelBigSize; 207 QSize mLabelBigSize;
201 QPalette mHolidayPalette; 208 QPalette mHolidayPalette;
202 QPalette mStandardPalette; 209 QPalette mStandardPalette;
203 QPalette mPrimaryPalette; 210 QPalette mPrimaryPalette;
204 QPalette mNonPrimaryPalette; 211 QPalette mNonPrimaryPalette;
205 void setMyPalette(); 212 void setMyPalette();
206 QPalette getPalette (); 213 QPalette getPalette ();
207 void keyPressEvent ( QKeyEvent * ) ;
208 214
209}; 215};
210 216
211 217
212class KOMonthView: public KOEventView 218class KOMonthView: public KOEventView
213{ 219{
diff --git a/korganizer/koviewmanager.cpp b/korganizer/koviewmanager.cpp
index 94d74f1..c6e76c4 100644
--- a/korganizer/koviewmanager.cpp
+++ b/korganizer/koviewmanager.cpp
@@ -205,12 +205,13 @@ void KOViewManager::showView(KOrg::BaseView *view, bool fullScreen )
205 //if(view == mCurrentView) return; 205 //if(view == mCurrentView) return;
206 if ( view == 0 ) { 206 if ( view == 0 ) {
207 view = mCurrentView; 207 view = mCurrentView;
208 if ( view == 0 ) 208 if ( view == 0 )
209 return; 209 return;
210 } 210 }
211 bool callupdate = !(view == mCurrentView);
211 bool full = fullScreen; 212 bool full = fullScreen;
212 if(view == mCurrentView && view != mWhatsNextView ) { 213 if(view == mCurrentView && view != mWhatsNextView ) {
213 if ( mCurrentAgendaView < 0 ) 214 if ( mCurrentAgendaView < 0 )
214 return; 215 return;
215 if ( view != mMonthView ) 216 if ( view != mMonthView )
216 full = mMainView->leftFrame()->isVisible(); 217 full = mMainView->leftFrame()->isVisible();
@@ -226,13 +227,13 @@ void KOViewManager::showView(KOrg::BaseView *view, bool fullScreen )
226 full = false; 227 full = false;
227 } 228 }
228 if ( mAgendaView ) mAgendaView->deleteSelectedDateTime(); 229 if ( mAgendaView ) mAgendaView->deleteSelectedDateTime();
229 //raiseCurrentView( full ); 230 //raiseCurrentView( full );
230 mMainView->processIncidenceSelection( 0 ); 231 mMainView->processIncidenceSelection( 0 );
231 //mMainView->updateView(); 232 //mMainView->updateView();
232 raiseCurrentView( full, true ); 233 raiseCurrentView( full, callupdate );
233 mMainView->adaptNavigationUnits(); 234 mMainView->adaptNavigationUnits();
234} 235}
235 236
236void KOViewManager::raiseCurrentView( bool fullScreen, bool callUpdateView ) 237void KOViewManager::raiseCurrentView( bool fullScreen, bool callUpdateView )
237{ 238{
238 mCurrentAgendaView = 0; 239 mCurrentAgendaView = 0;