summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/datebook/datebookweek.cpp35
1 files changed, 15 insertions, 20 deletions
diff --git a/core/pim/datebook/datebookweek.cpp b/core/pim/datebook/datebookweek.cpp
index ddd41af..e30c776 100644
--- a/core/pim/datebook/datebookweek.cpp
+++ b/core/pim/datebook/datebookweek.cpp
@@ -169,62 +169,65 @@ static inline int db_round30min( int m )
169 else if ( m < 45 ) 169 else if ( m < 45 )
170 m = 1; 170 m = 1;
171 else 171 else
172 m = 2; 172 m = 2;
173 173
174 return m; 174 return m;
175} 175}
176 176
177void DateBookWeekView::alterDay( int day ) 177void DateBookWeekView::alterDay( int day )
178{ 178{
179 if ( !bOnMonday ) { 179 if ( !bOnMonday ) {
180 day--; 180 day--;
181 } 181 }
182 emit showDay( day ); 182 emit showDay( day );
183} 183}
184 184
185void DateBookWeekView::positionItem( DateBookWeekItem *i ) 185void DateBookWeekView::positionItem( DateBookWeekItem *i )
186{ 186{
187 const int Width = 8; 187 const int Width = 8;
188 const EffectiveEvent ev = i->event(); 188 const EffectiveEvent ev = i->event();
189 189
190 // 30 minute intervals 190 // 30 minute intervals
191 int y = ev.start().hour() * 2; 191 int y = ev.start().hour() * 2;
192 y += db_round30min( ev.start().minute() ); 192 y += db_round30min( ev.start().minute() );
193 int y2 = ev.end().hour() * 2;
194 y2 += db_round30min( ev.end().minute() );
193 if ( y > 47 ) 195 if ( y > 47 )
194 y = 47; 196 y = 47;
197 if ( y2 > 48 )
198 y2 = 48;
195 y = y * rowHeight / 2; 199 y = y * rowHeight / 2;
200 y2 = y2 * rowHeight / 2;
196 201
197 int h; 202 int h;
198 if ( ev.event().type() == Event::AllDay ) { 203 if ( ev.event().type() == Event::AllDay ) {
199 h = 48; 204 h = 48 * rowHeight / 2;
200 y = 0; 205 y = 0;
201 } else { 206 } else {
202 h = ( ev.end().hour() - ev.start().hour() ) * 2; 207 h=y2-y;
203 h += db_round30min( ev.end().minute() - ev.start().minute() );
204 if ( h < 1 ) h = 1; 208 if ( h < 1 ) h = 1;
205 } 209 }
206 h = h * rowHeight / 2;
207 210
208 int dow = ev.date().dayOfWeek(); 211 int dow = ev.date().dayOfWeek();
209 if ( !bOnMonday ) { 212 if ( !bOnMonday ) {
210 if ( dow == 7 ) 213 if ( dow == 7 )
211 dow = 1; 214 dow = 1;
212 else 215 else
213 dow++; 216 dow++;
214 } 217 }
215 int x = header->sectionPos( dow ) - 1; 218 int x = header->sectionPos( dow ) - 1;
216 int xlim = header->sectionPos( dow ) + header->sectionSize( dow ); 219 int xlim = header->sectionPos( dow ) + header->sectionSize( dow );
217 DateBookWeekItem *isect = 0; 220 DateBookWeekItem *isect = 0;
218 do { 221 do {
219 i->setGeometry( x, y, Width, h ); 222 i->setGeometry( x, y, Width, h );
220 isect = intersects( i ); 223 isect = intersects( i );
221 x += Width - 1; 224 x += Width - 1;
222 } while ( isect && x < xlim ); 225 } while ( isect && x < xlim );
223} 226}
224 227
225DateBookWeekItem *DateBookWeekView::intersects( const DateBookWeekItem *item ) 228DateBookWeekItem *DateBookWeekView::intersects( const DateBookWeekItem *item )
226{ 229{
227 QRect geom = item->geometry(); 230 QRect geom = item->geometry();
228 231
229 // We allow the edges to overlap 232 // We allow the edges to overlap
230 geom.moveBy( 1, 1 ); 233 geom.moveBy( 1, 1 );
@@ -447,65 +450,57 @@ QDate DateBookWeek::date() const
447 else 450 else
448 d = d.addDays( 7 + dow ); 451 d = d.addDays( 7 + dow );
449 } 452 }
450 return d; 453 return d;
451} 454}
452 455
453void DateBookWeek::getEvents() 456void DateBookWeek::getEvents()
454{ 457{
455 QDate startWeek = weekDate(); 458 QDate startWeek = weekDate();
456 459
457 QDate endWeek = startWeek.addDays( 6 ); 460 QDate endWeek = startWeek.addDays( 6 );
458 QValueList<EffectiveEvent> eventList = db->getEffectiveEvents(startWeek, 461 QValueList<EffectiveEvent> eventList = db->getEffectiveEvents(startWeek,
459 endWeek); 462 endWeek);
460 view->showEvents( eventList ); 463 view->showEvents( eventList );
461 view->moveToHour( startTime ); 464 view->moveToHour( startTime );
462} 465}
463 466
464void DateBookWeek::generateAllDayTooltext( QString& text ) { 467void DateBookWeek::generateAllDayTooltext( QString& text ) {
465 text += "<b>" + tr("This is an all day event.") + "</b><br>"; 468 text += "<b>" + tr("This is an all day event.") + "</b><br>";
466} 469}
467 470
468void DateBookWeek::generateNormalTooltext( QString& str, 471void DateBookWeek::generateNormalTooltext( QString& str,
469 const EffectiveEvent &ev ) { 472 const EffectiveEvent &ev ) {
470 str += "<b>" + QObject::tr("Start") + "</b>: "; 473 str += "<b>" + QObject::tr("Start") + "</b>: ";
471 474 str += TimeString::timeString( ev.event().start().time(), ampm, FALSE );
472 if ( ev.startDate() != ev.date() ) { 475 if( ev.startDate()!=ev.endDate() ) {
473 // multi-day event. Show start date 476 str += " <i>" + TimeString::longDateString( ev.startDate() )+"</i>";
474 str += TimeString::longDateString( ev.startDate() );
475 } else {
476 // Show start time.
477 str += TimeString::timeString(ev.start(), ampm, FALSE );
478 } 477 }
479 478 str += "<br>";
480 479 str += "<b>" + QObject::tr("End") + "</b>: ";
481 str += "<br><b>" + QObject::tr("End") + "</b>: "; 480 str += TimeString::timeString( ev.event().end().time(), ampm, FALSE );
482 if ( ev.endDate() != ev.date() ) { 481 if( ev.startDate()!=ev.endDate() ) {
483 // multi-day event. Show end date 482 str += " <i>" + TimeString::longDateString( ev.endDate() ) + "</i>";
484 str += TimeString::longDateString( ev.endDate() );
485 } else {
486 // Show end time.
487 str += TimeString::timeString( ev.end(), ampm, FALSE );
488 } 483 }
489} 484}
490 485
491void DateBookWeek::slotShowEvent( const EffectiveEvent &ev ) 486void DateBookWeek::slotShowEvent( const EffectiveEvent &ev )
492{ 487{
493 if ( tHide->isActive() ) 488 if ( tHide->isActive() )
494 tHide->stop(); 489 tHide->stop();
495 490
496 // why would someone use "<"? Oh well, fix it up... 491 // why would someone use "<"? Oh well, fix it up...
497 // I wonder what other things may be messed up... 492 // I wonder what other things may be messed up...
498 QString strDesc = ev.description(); 493 QString strDesc = ev.description();
499 int where = strDesc.find( "<" ); 494 int where = strDesc.find( "<" );
500 while ( where != -1 ) { 495 while ( where != -1 ) {
501 strDesc.remove( where, 1 ); 496 strDesc.remove( where, 1 );
502 strDesc.insert( where, "&#60;" ); 497 strDesc.insert( where, "&#60;" );
503 where = strDesc.find( "<", where ); 498 where = strDesc.find( "<", where );
504 } 499 }
505 500
506 QString strCat; 501 QString strCat;
507 // ### FIX later... 502 // ### FIX later...
508// QString strCat = ev.category(); 503// QString strCat = ev.category();
509// where = strCat.find( "<" ); 504// where = strCat.find( "<" );
510// while ( where != -1 ) { 505// while ( where != -1 ) {
511 // strCat.remove( where, 1 ); 506 // strCat.remove( where, 1 );