-rw-r--r-- | korganizer/komonthview.cpp | 57 |
1 files changed, 16 insertions, 41 deletions
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp index 00e5a6f..aeb3974 100644 --- a/korganizer/komonthview.cpp +++ b/korganizer/komonthview.cpp @@ -269,65 +269,44 @@ void KNoScrollListBox::keyReleaseEvent(QKeyEvent *e) } } void KNoScrollListBox::mousePressEvent(QMouseEvent *e) { QListBox::mousePressEvent(e); if(e->button() == RightButton) { emit rightClick(); } } -MonthViewItem::MonthViewItem( Incidence *incidence, QDate qd, const QString & s) +MonthViewItem::MonthViewItem( Incidence *incidence, const QString & s) : QListBoxItem() { - mDisplayHightlighted = false; mblockRepaint = true; - setText( s ); - mMultiday = 0; - mIncidence = incidence; - mDate = qd; - mRecur = false; - mAlarm = false; - mReply = false; - mInfo = false; - mdayPos = 0; isWeekItem = KOPrefs::instance()->mMonthViewWeek; + recycle( incidence, s ); } -void MonthViewItem::recycle( Incidence *incidence, QDate qd, const QString & s) +void MonthViewItem::recycle( Incidence *incidence, const QString & s) { mDisplayHightlighted = false; setText( s ); mMultiday = 0; mIncidence = incidence; - mDate = qd; - mRecur = false; - mAlarm = false; - mReply = false; - mInfo = false; - mdayPos = 0; -} -void MonthViewItem::clearData() -{ - mDisplayHightlighted = false; - setText( "" ); - mMultiday = 0; - mIncidence = 0; mRecur = false; mAlarm = false; mReply = false; mInfo = false; mdayPos = 0; } + bool MonthViewItem::setHighlightedFalse() { if ( !mDisplayHightlighted ) return false; mDisplayHightlighted = false; return true; } bool MonthViewItem::setHighlighted( Incidence * inc ) { if ( inc == mIncidence ) { if ( mDisplayHightlighted ) @@ -335,35 +314,35 @@ bool MonthViewItem::setHighlighted( Incidence * inc ) mDisplayHightlighted = true; return true; } else { if ( !mDisplayHightlighted ) return false; mDisplayHightlighted = false; return true; } return false; } void MonthViewItem::paint(QPainter *p) { - if ( mblockRepaint ) { + if ( mblockRepaint || !mIncidence ) { return; } #if QT_VERSION >= 0x030000 bool sel = isSelected(); #else bool sel = selected(); #endif int heihei = height( listBox () ); int x = 1; - if (KOPrefs::instance()->mMonthViewUsesCategoryColor || mDisplayHightlighted ) + if (KOPrefs::instance()->mMonthViewUsesCategoryColor || mDisplayHightlighted || sel ) { if ( mDisplayHightlighted ) sel = true; p->setBackgroundColor( palette().color( QPalette::Normal, \ sel ? QColorGroup::Highlight : QColorGroup::Background ) ); p->eraseRect( 0, 0, listBox()->maxItemWidth(), heihei ); } //int y = 3;//(height() - mRecurPixmap.height()) /2; int size = PIXMAP_SIZE; if ( QApplication::desktop()->width() < 300 ) size = 3; @@ -386,25 +365,25 @@ void MonthViewItem::paint(QPainter *p) if ( mAlarm ) { p->fillRect ( x, y,size,size, Qt::red ); x += size + 1; } if ( mReply ) { 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->setBrush( QBrush( p->pen().color() ) ); p->drawLine ( x+1, yyy, x +sizeM +sizeM/2-1, 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 ); @@ -425,25 +404,25 @@ void MonthViewItem::paint(QPainter *p) } if ( mIncidence->typeID() == todoID ){ Todo* td = ( Todo* ) mIncidence; if ( td->isCompleted() ) { int half = size/2; p->drawLine ( x, heihei/2, x +half , heihei/2 +half ) ; p->drawLine ( x +half , heihei/2 +half , x +half+half +2 , heihei/2 -2 ) ; x += half+half + 4; } else { int val = td->percentComplete()/20; - p->fillRect ( x+1, y-2, val ,size+4,Qt::black ); + p->fillRect ( x+1, y-2, val ,size+4,p->pen().color() ); p->drawRect ( x, y-2,7,size+4); x += size + 3; } } QFontMetrics fm = p->fontMetrics(); int yPos; int pmheight = size; if( pmheight < fm.height() ) yPos = fm.ascent() + fm.leading()/2; else yPos = pmheight/2 - fm.height()/2 + fm.ascent(); p->setPen( palette().color( QPalette::Normal, sel ? \ @@ -659,25 +638,25 @@ void MonthViewCell::startUpdateCell() setPrimary( mDate.month()%2 ); setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays); if ( mDate == QDate::currentDate() ) { setLineWidth( 3 ); } else { setLineWidth( 1 ); } MonthViewItem* CurrentAvailItem = (MonthViewItem*) firstItem (); //clear(); while ( CurrentAvailItem ) { MonthViewItem *item = CurrentAvailItem; //item->setHighlightedFalse(); - item->clearData(); + item->recycle( 0, ""); CurrentAvailItem = (MonthViewItem *)item->next(); mAvailItemList.append( item ); takeItem ( item ); } #ifdef DESKTOP_VERSION QToolTip::remove(this); #endif mToolTip.clear(); //qApp->processEvents(); #if 0 if ( !mHolidayString.isEmpty() ) { @@ -755,27 +734,27 @@ int MonthViewCell::insertEvent(Event *event) if ( useToolTips ) mToolTipText += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary(); } } if ( useToolTips && ! event->location().isEmpty() ) { mToolTipText += " (" + event->location() +")"; } MonthViewItem *item ; if ( mAvailItemList.count() ) { item = mAvailItemList.first(); mAvailItemList.remove( item ); - item->recycle( event, mDate, text ); + item->recycle( event, text ); } else { - item = new MonthViewItem( event, mDate, text ); + item = new MonthViewItem( event, text ); } QPalette pal; if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { QStringList categories = event->categories(); QString cat = categories.first(); if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { pal = getPalette(); if (cat.isEmpty()) { //pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->defaultColor( event->calID() )); } else { @@ -785,24 +764,25 @@ int MonthViewCell::insertEvent(Event *event) } else { if (cat.isEmpty()) { //pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); pal = QPalette( KOPrefs::instance()->defaultColor( event->calID() ), KOPrefs::instance()->defaultColor( event->calID() )); } else { pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); } } } else { pal = mStandardPalette ; } + pal.setColor(QColorGroup::Highlight, KOPrefs::instance()->mHighlightColor); item->setPalette( pal ); item->setRecur( event->recurrence()->doesRecur() ); item->setAlarm( event->isAlarmEnabled() && multiday < 2 && event->alarmEnabled() ); 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 && multiday < 2); else item->setReply(false); @@ -844,27 +824,27 @@ void MonthViewCell::insertTodo(Todo *todo) QString text; if (todo->hasDueDate()) { if (!todo->doesFloat()) { text += KGlobal::locale()->formatTime(todo->dtDue().time()); text += " "; } } text += todo->summary(); MonthViewItem *item ; if ( mAvailItemList.count() ) { item = mAvailItemList.first(); mAvailItemList.remove( item ); - item->recycle( todo, mDate, text ); + item->recycle( todo, text ); } else { - item = new MonthViewItem( todo, mDate, text ); + item = new MonthViewItem( todo, text ); } //MonthViewItem *item = new MonthViewItem( todo, mDate, text ); //item->setPalette( mStandardPalette ); QPalette pal; if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { QStringList categories = todo->categories(); QString cat = categories.first(); if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { pal = getPalette(); if (cat.isEmpty()) { //pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->defaultColor( todo->calID() )); @@ -875,24 +855,25 @@ void MonthViewCell::insertTodo(Todo *todo) } else { if (cat.isEmpty()) { //pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); pal = QPalette(KOPrefs::instance()->defaultColor( todo->calID() ), KOPrefs::instance()->defaultColor( todo->calID() )); } else { pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); } } } else { pal = mStandardPalette ; } + pal.setColor(QColorGroup::Highlight, KOPrefs::instance()->mHighlightColor); item->setPalette( pal ); item->setRecur( todo->recurrence()->doesRecur() ); item->setAlarm( todo->isAlarmEnabled() && todo->alarmEnabled() ); item->setMoreInfo( todo->description().length() > 0 ); insertItem( item , count()); #ifdef DESKTOP_VERSION mToolTip.append( text ); #endif } void MonthViewCell::repaintfinishUpdateCell() { MonthViewItem *mitem = (MonthViewItem*) firstItem (); @@ -1014,31 +995,25 @@ Incidence *MonthViewCell::selectedIncidence() static_cast<MonthViewItem *>( item( index ) ); if ( !mitem ) return 0; return mitem->incidence(); } QDate MonthViewCell::selectedIncidenceDate() { QDate qd; int index = currentItem(); if ( index < 0 ) return qd; - - MonthViewItem *mitem = - static_cast<MonthViewItem *>( item( index ) ); - - if ( !mitem ) return qd; - - return mitem->incidenceDate(); + return mDate; } void MonthViewCell::deselect() { clearSelection(); enableScrollBars( false ); // updateCell(); } void MonthViewCell::select() { ;// updateCell(); } |