From 4858dcb045afc57ce98877cca787c4430146bea8 Mon Sep 17 00:00:00 2001 From: zautrix Date: Sat, 19 Feb 2005 15:39:43 +0000 Subject: multiday fixes in monthview --- diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp index 2fe80af..f558084 100644 --- a/korganizer/komonthview.cpp +++ b/korganizer/komonthview.cpp @@ -220,10 +220,12 @@ void MonthViewItem::paint(QPainter *p) 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 ); @@ -242,6 +244,36 @@ void MonthViewItem::paint(QPainter *p) 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; @@ -261,7 +293,9 @@ 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 @@ -270,17 +304,22 @@ int MonthViewItem::width(const QListBox *lb) const 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 ); @@ -464,33 +503,36 @@ void MonthViewCell::insertEvent(Event *event) 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(); @@ -529,19 +571,20 @@ void MonthViewCell::insertEvent(Event *event) } 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"; } diff --git a/korganizer/komonthview.h b/korganizer/komonthview.h index 2f6f5dc..b79a41f 100644 --- a/korganizer/komonthview.h +++ b/korganizer/komonthview.h @@ -97,6 +97,7 @@ class MonthViewItem: public QListBoxItem void setAlarm(bool on) { mAlarm = on; } void setReply(bool on) { mReply = on; } void setMoreInfo(bool on) { mInfo = on; } + void setMultiDay(int type) { mMultiday = type; } void setPalette(const QPalette &p) { mPalette = p; } @@ -111,6 +112,7 @@ class MonthViewItem: public QListBoxItem virtual int width(const QListBox *) const; private: + int mMultiday; bool mRecur; bool mAlarm; bool mReply; -- cgit v0.9.0.2