-rw-r--r-- | korganizer/komonthview.cpp | 91 |
1 files changed, 67 insertions, 24 deletions
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp index 2fe80af..f558084 100644 --- a/korganizer/komonthview.cpp +++ b/korganizer/komonthview.cpp @@ -219,12 +219,14 @@ void MonthViewItem::paint(QPainter *p) sel ? QColorGroup::Highlight : QColorGroup::Background ) ); p->eraseRect( 0, 0, listBox()->maxItemWidth(), height( listBox() ) ); } int x = 1; - int y = 3;//(height() - mRecurPixmap.height()) /2; + //int y = 3;//(height() - mRecurPixmap.height()) /2; int size = PIXMAP_SIZE; if ( QApplication::desktop()->width() < 300 ) size = 3; + int y = (height( listBox () ) - size -1 ) /2; + if ( KOPrefs::instance()->mMonthShowIcons ) { if ( mInfo ) { p->fillRect ( x, y,size,size, Qt::darkGreen ); x += size + 1; @@ -241,8 +243,38 @@ void MonthViewItem::paint(QPainter *p) p->fillRect ( x, y,size,size, Qt::yellow ); x += size + 1; } } + if ( mMultiday ) { + int yyy = y+(size/2); + int sizeM = size+2; + p->setBrush( QBrush::SolidPattern ); + p->drawLine ( x+sizeM/2, yyy, x +sizeM +sizeM/2-2, yyy ) ; + if ( mMultiday == 2 || mMultiday == 3 ) { + QPointArray pa ( 3 ); + pa.setPoint (0, x, yyy ); + pa.setPoint (1, x+sizeM/2, yyy+sizeM/2 ); + pa.setPoint (2, x+sizeM/2, yyy-sizeM/2 ); + p->drawPolygon( pa ); + } + if ( mMultiday == 2 || mMultiday == 1 ) { + QPointArray pa ( 3 ); + pa.setPoint (0, x+sizeM +sizeM/2, yyy ); + pa.setPoint (1, x+sizeM, yyy+sizeM/2 ); + pa.setPoint (2, x+sizeM, yyy-sizeM/2 ); + p->drawPolygon( pa ); + } + if ( mMultiday == 1 ) { + p->fillRect ( x, yyy-sizeM/2+1, sizeM/2, size, QBrush ( QBrush::SolidPattern ) ); + + } + if ( mMultiday == 3 ) { + p->fillRect ( x+sizeM, yyy-sizeM/2+1, sizeM/2, size, QBrush ( QBrush::SolidPattern ) ); + + } + x += sizeM/2 + 1; + x += sizeM + 1; + } QFontMetrics fm = p->fontMetrics(); int yPos; int pmheight = size; if( pmheight < fm.height() ) @@ -260,28 +292,35 @@ void MonthViewItem::paint(QPainter *p) } int MonthViewItem::height(const QListBox *lb) const { - return lb->fontMetrics().lineSpacing()+1; + if ( lb ) + return lb->fontMetrics().lineSpacing()+1; + return 10; } int MonthViewItem::width(const QListBox *lb) const { int size = PIXMAP_SIZE; if ( QApplication::desktop()->width() < 300 ) size = 3; int x = 1; - if ( mInfo ) { - x += size + 1; - } - if( mRecur ) { - x += size+1; - } - if( mAlarm ) { - x += size+1; + if ( KOPrefs::instance()->mMonthShowIcons ) { + if ( mInfo ) { + x += size + 1; + } + if( mRecur ) { + x += size+1; + } + if( mAlarm ) { + x += size+1; + } + if( mReply ) { + x += size+1; + } } - if( mReply ) { - x += size+1; + if( mMultiday ) { + x += size+1+2+size/2; } return( x + lb->fontMetrics().width( text() ) + 1 ); } @@ -463,35 +502,38 @@ void MonthViewCell::insertEvent(Event *event) if ( mDate.dayOfWeek() == 7 ) mItemList->setLineWidth( 3 ); } QString text; + int multiday = 0;// 1 = start, 2 = midddle, 3 = end day if (event->isMultiDay()) { - QString prefix = "<->"; + QString prefix = "<->";multiday = 2; + QString time; if ( event->doesRecur() ) { - if ( event->recursOn( mDate) ) - prefix ="->" ; + if ( event->recursOn( mDate) ) { + prefix ="->" ;multiday = 1; + } else { int days = event->dtStart().date().daysTo ( event->dtEnd().date() ); if ( event->recursOn( mDate.addDays( -days)) ) - prefix ="<-" ; + prefix ="<-" ;multiday = 3; } } else { if (mDate == event->dtStart().date()) { - prefix ="->" ; + prefix ="->" ;multiday = 1; } else if (mDate == event->dtEnd().date()) { - prefix ="<-" ; + prefix ="<-" ;multiday = 3; } } if ( !event->doesFloat() ) { if ( mDate == event->dtStart().date () ) - prefix += KGlobal::locale()->formatTime(event->dtStart().time())+" "; + time = KGlobal::locale()->formatTime(event->dtStart().time())+" "; else if ( mDate == event->dtEnd().date () ) - prefix += KGlobal::locale()->formatTime(event->dtEnd().time())+" "; + time = KGlobal::locale()->formatTime(event->dtEnd().time())+" "; } - text = prefix + event->summary(); - mToolTip += text; + text = time + event->summary(); + mToolTip += prefix + text; } else { if (event->doesFloat()) { text = event->summary(); mToolTip += text; @@ -528,21 +570,22 @@ void MonthViewCell::insertEvent(Event *event) pal = mStandardPalette ; } item->setPalette( pal ); item->setRecur( event->recurrence()->doesRecur() ); - item->setAlarm( event->isAlarmEnabled() ); + item->setAlarm( event->isAlarmEnabled() && multiday < 2 ); item->setMoreInfo( event->description().length() > 0 ); #ifdef DESKTOP_VERSION Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails, KOPrefs::instance()->email()); if ( me != 0 ) { if ( me->status() == Attendee::NeedsAction && me->RSVP()) - item->setReply(true); + item->setReply(true && multiday < 2); else item->setReply(false); } else item->setReply(false); #endif + item->setMultiDay( multiday ); mItemList->insertItem( item ); mToolTip += "\n"; } void MonthViewCell::insertTodo(Todo *todo) |