summaryrefslogtreecommitdiff
path: root/core/pim/datebook/datebookweek.cpp
Unidiff
Diffstat (limited to 'core/pim/datebook/datebookweek.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/datebook/datebookweek.cpp179
1 files changed, 76 insertions, 103 deletions
diff --git a/core/pim/datebook/datebookweek.cpp b/core/pim/datebook/datebookweek.cpp
index 8241655..3ae4610 100644
--- a/core/pim/datebook/datebookweek.cpp
+++ b/core/pim/datebook/datebookweek.cpp
@@ -350,44 +350,34 @@ DateBookWeek::DateBookWeek( bool ap, bool startOnMonday, DateBookDB *newDB,
350 : QWidget( parent, name ), 350 : QWidget( parent, name ),
351 db( newDB ), 351 db( newDB ),
352 startTime( 0 ), 352 startTime( 0 ),
353 ampm( ap ), 353 ampm( ap ),
354 bStartOnMonday( startOnMonday ) 354 bStartOnMonday( startOnMonday )
355{ 355{
356 setFocusPolicy(StrongFocus); 356 setFocusPolicy(StrongFocus);
357 QVBoxLayout *vb = new QVBoxLayout( this ); 357 QVBoxLayout *vb = new QVBoxLayout( this );
358 header = new DateBookWeekHeader( bStartOnMonday, this ); 358 header = new DateBookWeekHeader( bStartOnMonday, this );
359 view = new DateBookWeekView( ampm, startOnMonday, this ); 359 view = new DateBookWeekView( ampm, startOnMonday, this );
360 vb->addWidget( header ); 360 vb->addWidget( header );
361 vb->addWidget( view ); 361 vb->addWidget( view );
362 362
363 lblDesc = new QLabel( this, "event label" ); 363 lblDesc = new QLabel( this, "event label" );
364 lblDesc->setFrameStyle( QFrame::Plain | QFrame::Box ); 364 lblDesc->setFrameStyle( QFrame::Plain | QFrame::Box );
365 lblDesc->setBackgroundColor( yellow ); 365 lblDesc->setBackgroundColor( yellow );
366 lblDesc->hide(); 366 lblDesc->hide();
367 367
368 tHide = new QTimer( this ); 368 tHide = new QTimer( this );
369 369
370 connect( view, SIGNAL( showDay( int ) ), 370 connect( view, SIGNAL( showDay( int ) ), this, SLOT( showDay( int ) ) );
371 this, SLOT( showDay( int ) ) ); 371 connect( view, SIGNAL(signalShowEvent(const EffectiveEvent&)), this, SLOT(slotShowEvent(const EffectiveEvent&)) );
372 connect( view, SIGNAL(signalShowEvent(const EffectiveEvent&)), 372 connect( view, SIGNAL(signalHideEvent()), this, SLOT(slotHideEvent()) );
373 this, SLOT(slotShowEvent(const EffectiveEvent&)) ); 373 connect( header, SIGNAL( dateChanged( int, int ) ), this, SLOT( dateChanged( int, int ) ) );
374 connect( view, SIGNAL(signalHideEvent()), 374 connect( tHide, SIGNAL( timeout() ), lblDesc, SLOT( hide() ) );
375 this, SLOT(slotHideEvent()) ); 375 connect( qApp, SIGNAL(weekChanged(bool)), this, SLOT(slotWeekChanged(bool)) );
376 connect( header, SIGNAL( dateChanged( int, int ) ), 376 connect( qApp, SIGNAL(clockChanged(bool)), this, SLOT(slotClockChanged(bool)));
377 this, SLOT( dateChanged( int, int ) ) ); 377 setDate(QDate::currentDate());
378 connect( tHide, SIGNAL( timeout() ),
379 lblDesc, SLOT( hide() ) );
380 connect( header->spinYear, SIGNAL(valueChanged(int)),
381 this, SLOT(slotYearChanged(int)) );
382 connect( qApp, SIGNAL(weekChanged(bool)),
383 this, SLOT(slotWeekChanged(bool)) );
384 connect( qApp, SIGNAL(clockChanged(bool)),
385 this, SLOT(slotClockChanged(bool)));
386 setDate(QDate::currentDate());
387
388} 378}
389 379
390void DateBookWeek::keyPressEvent(QKeyEvent *e) 380void DateBookWeek::keyPressEvent(QKeyEvent *e)
391{ 381{
392 switch(e->key()) { 382 switch(e->key()) {
393 case Key_Up: 383 case Key_Up:
@@ -406,84 +396,80 @@ void DateBookWeek::keyPressEvent(QKeyEvent *e)
406 e->ignore(); 396 e->ignore();
407 } 397 }
408} 398}
409 399
410void DateBookWeek::showDay( int day ) 400void DateBookWeek::showDay( int day )
411{ 401{
412 QDate d; 402 QDate d;
413 d = dateFromWeek( _week, year, bStartOnMonday ); 403 d = dateFromWeek( _week, year, bStartOnMonday );
414 day--; 404 day--;
415 d = d.addDays( day ); 405 d = d.addDays( day );
416 emit showDate( d.year(), d.month(), d.day() ); 406 emit showDate( d.year(), d.month(), d.day() );
417} 407}
418 408
419void DateBookWeek::setDate( int y, int m, int d ) 409void DateBookWeek::setDate( int y, int m, int d )
420{ 410{
421 QDate date; 411 setDate(QDate(y, m, d));
422 date.setYMD( y, m, d );
423 setDate(QDate(y, m, d));
424} 412}
425 413
426void DateBookWeek::setDate(QDate date) 414void DateBookWeek::setDate(QDate date)
427{ 415{
428 dow = date.dayOfWeek(); 416 dow = date.dayOfWeek();
429 int w, y; 417 int w, y;
430 calcWeek( date, w, y, bStartOnMonday ); 418 calcWeek( date, w, y, bStartOnMonday );
431 header->setDate( y, w ); 419 header->setDate( date );
432} 420}
433 421
434void DateBookWeek::dateChanged( int y, int w ) 422void DateBookWeek::dateChanged( int y, int w )
435{ 423{
436 year = y; 424 year = y;
437 _week = w; 425 _week = w;
438 getEvents(); 426 getEvents();
439} 427}
440 428
441QDate DateBookWeek::date() const 429QDate DateBookWeek::date() const
442{ 430{
443 QDate d; 431 QDate d;
444 d = dateFromWeek( _week - 1, year, bStartOnMonday ); 432 d = dateFromWeek( _week - 1, year, bStartOnMonday );
445 if ( bStartOnMonday ) 433 if ( bStartOnMonday )
446 d = d.addDays( 7 + dow - 1 ); 434 d = d.addDays( 7 + dow - 1 );
447 else { 435 else {
448 if ( dow == 7 ) 436 if ( dow == 7 )
449 d = d.addDays( dow ); 437 d = d.addDays( dow );
450 else 438 else
451 d = d.addDays( 7 + dow ); 439 d = d.addDays( 7 + dow );
452 } 440 }
453 return d; 441 return d;
454} 442}
455 443
456void DateBookWeek::getEvents() 444void DateBookWeek::getEvents()
457{ 445{
458 QDate startWeek = weekDate(); 446 QDate startWeek = weekDate();
459 447
460 QDate endWeek = startWeek.addDays( 6 ); 448 QDate endWeek = startWeek.addDays( 6 );
461 QValueList<EffectiveEvent> eventList = db->getEffectiveEvents(startWeek, 449 QValueList<EffectiveEvent> eventList = db->getEffectiveEvents(startWeek, endWeek);
462 endWeek); 450 view->showEvents( eventList );
463 view->showEvents( eventList ); 451 view->moveToHour( startTime );
464 view->moveToHour( startTime );
465} 452}
466 453
467void DateBookWeek::generateAllDayTooltext( QString& text ) { 454void DateBookWeek::generateAllDayTooltext( QString& text ) {
468 text += "<b>" + tr("This is an all day event.") + "</b><br>"; 455 text += "<b>" + tr("This is an all day event.") + "</b><br>";
469} 456}
470 457
471void DateBookWeek::generateNormalTooltext( QString& str, 458void DateBookWeek::generateNormalTooltext( QString& str, const EffectiveEvent &ev ) {
472 const EffectiveEvent &ev ) { 459 str += "<b>" + QObject::tr("Start") + "</b>: ";
473 str += "<b>" + QObject::tr("Start") + "</b>: "; 460 str += TimeString::timeString( ev.event().start().time(), ampm, FALSE );
474 str += TimeString::timeString( ev.event().start().time(), ampm, FALSE ); 461 if( ev.startDate()!=ev.endDate() ) {
475 if( ev.startDate()!=ev.endDate() ) { 462 str += " <i>" + TimeString::longDateString( ev.startDate() )+"</i>";
476 str += " <i>" + TimeString::longDateString( ev.startDate() )+"</i>"; 463 }
477 } 464 str += "<br>";
478 str += "<br>"; 465 str += "<b>" + QObject::tr("End") + "</b>: ";
479 str += "<b>" + QObject::tr("End") + "</b>: "; 466 str += TimeString::timeString( ev.event().end().time(), ampm, FALSE );
480 str += TimeString::timeString( ev.event().end().time(), ampm, FALSE ); 467 if( ev.startDate()!=ev.endDate() ) {
481 if( ev.startDate()!=ev.endDate() ) { 468 str += " <i>" + TimeString::longDateString( ev.endDate() ) + "</i>";
482 str += " <i>" + TimeString::longDateString( ev.endDate() ) + "</i>"; 469 }
483 }
484} 470}
485 471
486void DateBookWeek::slotShowEvent( const EffectiveEvent &ev ) 472void DateBookWeek::slotShowEvent( const EffectiveEvent &ev )
487{ 473{
488 if ( tHide->isActive() ) 474 if ( tHide->isActive() )
489 tHide->stop(); 475 tHide->stop();
@@ -563,46 +549,33 @@ void DateBookWeek::redraw()
563{ 549{
564 getEvents(); 550 getEvents();
565} 551}
566 552
567void DateBookWeek::slotYearChanged( int y ) 553void DateBookWeek::slotYearChanged( int y )
568{ 554{
569 int totWeek; 555 int totWeek;
570 QDate d( y, 12, 31 ); 556 QDate d( y, 12, 31 );
571 int throwAway; 557 int throwAway;
572 calcWeek( d, totWeek, throwAway, bStartOnMonday );
573 while ( totWeek == 1 ) {
574 d = d.addDays( -1 );
575 calcWeek( d, totWeek, throwAway, bStartOnMonday ); 558 calcWeek( d, totWeek, throwAway, bStartOnMonday );
576 } 559 while ( totWeek == 1 ) {
577 if ( totWeek != totalWeeks() ) 560 d = d.addDays( -1 );
578 setTotalWeeks( totWeek ); 561 calcWeek( d, totWeek, throwAway, bStartOnMonday );
579} 562 }
580
581
582void DateBookWeek::setTotalWeeks( int numWeeks )
583{
584 header->spinWeek->setMaxValue( numWeeks );
585}
586
587int DateBookWeek::totalWeeks() const
588{
589 return header->spinWeek->maxValue();
590} 563}
591 564
592void DateBookWeek::slotWeekChanged( bool onMonday ) 565void DateBookWeek::slotWeekChanged( bool onMonday )
593{ 566{
594 bStartOnMonday = onMonday; 567 bStartOnMonday = onMonday;
595 view->setStartOfWeek( bStartOnMonday ); 568 view->setStartOfWeek( bStartOnMonday );
596 header->setStartOfWeek( bStartOnMonday ); 569 header->setStartOfWeek( bStartOnMonday );
597 redraw(); 570 redraw();
598} 571}
599 572
600void DateBookWeek::slotClockChanged( bool ap ) 573void DateBookWeek::slotClockChanged( bool ap )
601{ 574{
602 ampm = ap; 575 ampm = ap;
603} 576}
604 577
605// return the date at the beginning of the week... 578// return the date at the beginning of the week...
606QDate DateBookWeek::weekDate() const 579QDate DateBookWeek::weekDate() const
607{ 580{
608 return dateFromWeek( _week, year, bStartOnMonday ); 581 return dateFromWeek( _week, year, bStartOnMonday );