author | umopapisdn <umopapisdn> | 2003-05-13 22:58:18 (UTC) |
---|---|---|
committer | umopapisdn <umopapisdn> | 2003-05-13 22:58:18 (UTC) |
commit | 1e0e2f57472538bd880967ebe061c8f39a7e270b (patch) (unidiff) | |
tree | fcc070d53148385f93c0dc6ab5443d5100be0d26 | |
parent | 45c0386de12b107e54e4d020d54eb05517a9efac (diff) | |
download | opie-1e0e2f57472538bd880967ebe061c8f39a7e270b.zip opie-1e0e2f57472538bd880967ebe061c8f39a7e270b.tar.gz opie-1e0e2f57472538bd880967ebe061c8f39a7e270b.tar.bz2 |
Bugfix: (Bug #0000902) Adding events in weekview shouldn't create them as events on the first day of the week but rather the last visited day.
-rw-r--r-- | core/pim/datebook/datebookweek.cpp | 47 | ||||
-rw-r--r-- | core/pim/datebook/datebookweek.h | 6 | ||||
-rw-r--r-- | core/pim/datebook/datebookweekheaderimpl.cpp | 26 | ||||
-rw-r--r-- | core/pim/datebook/datebookweekheaderimpl.h | 4 | ||||
-rw-r--r-- | core/pim/datebook/datebookweeklst.cpp | 76 | ||||
-rw-r--r-- | core/pim/datebook/datebookweeklst.h | 11 |
6 files changed, 66 insertions, 104 deletions
diff --git a/core/pim/datebook/datebookweek.cpp b/core/pim/datebook/datebookweek.cpp index 3ae4610..12f57a0 100644 --- a/core/pim/datebook/datebookweek.cpp +++ b/core/pim/datebook/datebookweek.cpp | |||
@@ -349,117 +349,110 @@ DateBookWeek::DateBookWeek( bool ap, bool startOnMonday, DateBookDB *newDB, | |||
349 | QWidget *parent, const char *name ) | 349 | QWidget *parent, const char *name ) |
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 ) ), this, SLOT( showDay( int ) ) ); | 370 | connect( view, SIGNAL( showDay( int ) ), this, SLOT( showDay( int ) ) ); |
371 | connect( view, SIGNAL(signalShowEvent(const EffectiveEvent&)), this, SLOT(slotShowEvent(const EffectiveEvent&)) ); | 371 | connect( view, SIGNAL(signalShowEvent(const EffectiveEvent&)), this, SLOT(slotShowEvent(const EffectiveEvent&)) ); |
372 | connect( view, SIGNAL(signalHideEvent()), this, SLOT(slotHideEvent()) ); | 372 | connect( view, SIGNAL(signalHideEvent()), this, SLOT(slotHideEvent()) ); |
373 | connect( header, SIGNAL( dateChanged( int, int ) ), this, SLOT( dateChanged( int, int ) ) ); | 373 | connect( header, SIGNAL( dateChanged( QDate &) ), this, SLOT( dateChanged( QDate &) ) ); |
374 | connect( tHide, SIGNAL( timeout() ), lblDesc, SLOT( hide() ) ); | 374 | connect( tHide, SIGNAL( timeout() ), lblDesc, SLOT( hide() ) ); |
375 | connect( qApp, SIGNAL(weekChanged(bool)), this, SLOT(slotWeekChanged(bool)) ); | 375 | connect( qApp, SIGNAL(weekChanged(bool)), this, SLOT(slotWeekChanged(bool)) ); |
376 | connect( qApp, SIGNAL(clockChanged(bool)), this, SLOT(slotClockChanged(bool))); | 376 | connect( qApp, SIGNAL(clockChanged(bool)), this, SLOT(slotClockChanged(bool))); |
377 | setDate(QDate::currentDate()); | 377 | setDate(QDate::currentDate()); |
378 | } | 378 | } |
379 | 379 | ||
380 | void DateBookWeek::keyPressEvent(QKeyEvent *e) | 380 | void DateBookWeek::keyPressEvent(QKeyEvent *e) |
381 | { | 381 | { |
382 | switch(e->key()) { | 382 | switch(e->key()) { |
383 | case Key_Up: | 383 | case Key_Up: |
384 | view->scrollBy(0, -20); | 384 | view->scrollBy(0, -20); |
385 | break; | 385 | break; |
386 | case Key_Down: | 386 | case Key_Down: |
387 | view->scrollBy(0, 20); | 387 | view->scrollBy(0, 20); |
388 | break; | 388 | break; |
389 | case Key_Left: | 389 | case Key_Left: |
390 | setDate(date().addDays(-7)); | 390 | setDate(date().addDays(-7)); |
391 | break; | 391 | break; |
392 | case Key_Right: | 392 | case Key_Right: |
393 | setDate(date().addDays(7)); | 393 | setDate(date().addDays(7)); |
394 | break; | 394 | break; |
395 | default: | 395 | default: |
396 | e->ignore(); | 396 | e->ignore(); |
397 | } | 397 | } |
398 | } | 398 | } |
399 | 399 | ||
400 | void DateBookWeek::showDay( int day ) | 400 | void DateBookWeek::showDay( int day ) |
401 | { | 401 | { |
402 | QDate d; | 402 | QDate d=bdate; |
403 | d = dateFromWeek( _week, year, bStartOnMonday ); | 403 | |
404 | // Calculate offset to first day of week. | ||
405 | int dayoffset=d.dayOfWeek(); | ||
406 | if(bStartOnMonday) dayoffset--; | ||
407 | |||
404 | day--; | 408 | day--; |
405 | d = d.addDays( day ); | 409 | d=d.addDays(day-dayoffset); |
406 | emit showDate( d.year(), d.month(), d.day() ); | 410 | emit showDate( d.year(), d.month(), d.day() ); |
411 | qDebug("%4d-%02d-%02d / Day %d\n",d.year(),d.month(),d.day(),day); | ||
407 | } | 412 | } |
408 | 413 | ||
409 | void DateBookWeek::setDate( int y, int m, int d ) | 414 | void DateBookWeek::setDate( int y, int m, int d ) |
410 | { | 415 | { |
411 | setDate(QDate(y, m, d)); | 416 | setDate(QDate(y, m, d)); |
412 | } | 417 | } |
413 | 418 | ||
414 | void DateBookWeek::setDate(QDate date) | 419 | void DateBookWeek::setDate(QDate newdate) |
415 | { | 420 | { |
416 | dow = date.dayOfWeek(); | 421 | bdate=newdate; |
417 | int w, y; | 422 | dow = newdate.dayOfWeek(); |
418 | calcWeek( date, w, y, bStartOnMonday ); | 423 | header->setDate( newdate ); |
419 | header->setDate( date ); | ||
420 | } | 424 | } |
421 | 425 | ||
422 | void DateBookWeek::dateChanged( int y, int w ) | 426 | void DateBookWeek::dateChanged( QDate &newdate ) |
423 | { | 427 | { |
424 | year = y; | 428 | bdate=newdate; |
425 | _week = w; | ||
426 | getEvents(); | 429 | getEvents(); |
427 | } | 430 | } |
428 | 431 | ||
429 | QDate DateBookWeek::date() const | 432 | QDate DateBookWeek::date() const |
430 | { | 433 | { |
431 | QDate d; | 434 | return bdate; |
432 | d = dateFromWeek( _week - 1, year, bStartOnMonday ); | ||
433 | if ( bStartOnMonday ) | ||
434 | d = d.addDays( 7 + dow - 1 ); | ||
435 | else { | ||
436 | if ( dow == 7 ) | ||
437 | d = d.addDays( dow ); | ||
438 | else | ||
439 | d = d.addDays( 7 + dow ); | ||
440 | } | ||
441 | return d; | ||
442 | } | 435 | } |
443 | 436 | ||
444 | void DateBookWeek::getEvents() | 437 | void DateBookWeek::getEvents() |
445 | { | 438 | { |
446 | QDate startWeek = weekDate(); | 439 | QDate startWeek = weekDate(); |
447 | 440 | ||
448 | QDate endWeek = startWeek.addDays( 6 ); | 441 | QDate endWeek = startWeek.addDays( 6 ); |
449 | QValueList<EffectiveEvent> eventList = db->getEffectiveEvents(startWeek, endWeek); | 442 | QValueList<EffectiveEvent> eventList = db->getEffectiveEvents(startWeek, endWeek); |
450 | view->showEvents( eventList ); | 443 | view->showEvents( eventList ); |
451 | view->moveToHour( startTime ); | 444 | view->moveToHour( startTime ); |
452 | } | 445 | } |
453 | 446 | ||
454 | void DateBookWeek::generateAllDayTooltext( QString& text ) { | 447 | void DateBookWeek::generateAllDayTooltext( QString& text ) { |
455 | text += "<b>" + tr("This is an all day event.") + "</b><br>"; | 448 | text += "<b>" + tr("This is an all day event.") + "</b><br>"; |
456 | } | 449 | } |
457 | 450 | ||
458 | void DateBookWeek::generateNormalTooltext( QString& str, const EffectiveEvent &ev ) { | 451 | void DateBookWeek::generateNormalTooltext( QString& str, const EffectiveEvent &ev ) { |
459 | str += "<b>" + QObject::tr("Start") + "</b>: "; | 452 | str += "<b>" + QObject::tr("Start") + "</b>: "; |
460 | str += TimeString::timeString( ev.event().start().time(), ampm, FALSE ); | 453 | str += TimeString::timeString( ev.event().start().time(), ampm, FALSE ); |
461 | if( ev.startDate()!=ev.endDate() ) { | 454 | if( ev.startDate()!=ev.endDate() ) { |
462 | str += " <i>" + TimeString::longDateString( ev.startDate() )+"</i>"; | 455 | str += " <i>" + TimeString::longDateString( ev.startDate() )+"</i>"; |
463 | } | 456 | } |
464 | str += "<br>"; | 457 | str += "<br>"; |
465 | str += "<b>" + QObject::tr("End") + "</b>: "; | 458 | str += "<b>" + QObject::tr("End") + "</b>: "; |
@@ -557,49 +550,55 @@ void DateBookWeek::slotYearChanged( int y ) | |||
557 | int throwAway; | 550 | int throwAway; |
558 | calcWeek( d, totWeek, throwAway, bStartOnMonday ); | 551 | calcWeek( d, totWeek, throwAway, bStartOnMonday ); |
559 | while ( totWeek == 1 ) { | 552 | while ( totWeek == 1 ) { |
560 | d = d.addDays( -1 ); | 553 | d = d.addDays( -1 ); |
561 | calcWeek( d, totWeek, throwAway, bStartOnMonday ); | 554 | calcWeek( d, totWeek, throwAway, bStartOnMonday ); |
562 | } | 555 | } |
563 | } | 556 | } |
564 | 557 | ||
565 | void DateBookWeek::slotWeekChanged( bool onMonday ) | 558 | void DateBookWeek::slotWeekChanged( bool onMonday ) |
566 | { | 559 | { |
567 | bStartOnMonday = onMonday; | 560 | bStartOnMonday = onMonday; |
568 | view->setStartOfWeek( bStartOnMonday ); | 561 | view->setStartOfWeek( bStartOnMonday ); |
569 | header->setStartOfWeek( bStartOnMonday ); | 562 | header->setStartOfWeek( bStartOnMonday ); |
570 | redraw(); | 563 | redraw(); |
571 | } | 564 | } |
572 | 565 | ||
573 | void DateBookWeek::slotClockChanged( bool ap ) | 566 | void DateBookWeek::slotClockChanged( bool ap ) |
574 | { | 567 | { |
575 | ampm = ap; | 568 | ampm = ap; |
576 | } | 569 | } |
577 | 570 | ||
578 | // return the date at the beginning of the week... | 571 | // return the date at the beginning of the week... |
579 | QDate DateBookWeek::weekDate() const | 572 | QDate DateBookWeek::weekDate() const |
580 | { | 573 | { |
581 | return dateFromWeek( _week, year, bStartOnMonday ); | 574 | QDate d=bdate; |
575 | |||
576 | // Calculate offset to first day of week. | ||
577 | int dayoffset=d.dayOfWeek(); | ||
578 | if(bStartOnMonday) dayoffset--; | ||
579 | |||
580 | return d.addDays(-dayoffset); | ||
582 | } | 581 | } |
583 | 582 | ||
584 | // this used to only be needed by datebook.cpp, but now we need it inside | 583 | // this used to only be needed by datebook.cpp, but now we need it inside |
585 | // week view since | 584 | // week view since |
586 | // we need to be able to figure out our total number of weeks on the fly... | 585 | // we need to be able to figure out our total number of weeks on the fly... |
587 | // this is probably the best place to put it.. | 586 | // this is probably the best place to put it.. |
588 | 587 | ||
589 | // For Weeks that start on Monday... (EASY!) | 588 | // For Weeks that start on Monday... (EASY!) |
590 | // At the moment we will use ISO 8601 method for computing | 589 | // At the moment we will use ISO 8601 method for computing |
591 | // the week. Granted, other countries use other methods, | 590 | // the week. Granted, other countries use other methods, |
592 | // bet we aren't doing any Locale stuff at the moment. So, | 591 | // bet we aren't doing any Locale stuff at the moment. So, |
593 | // this should pass. This Algorithim is public domain and | 592 | // this should pass. This Algorithim is public domain and |
594 | // available at: | 593 | // available at: |
595 | // http://personal.ecu.edu/mccartyr/ISOwdALG.txt | 594 | // http://personal.ecu.edu/mccartyr/ISOwdALG.txt |
596 | // the week number is return, and the year number is returned in year | 595 | // the week number is return, and the year number is returned in year |
597 | // for Instance 2001/12/31 is actually the first week in 2002. | 596 | // for Instance 2001/12/31 is actually the first week in 2002. |
598 | // There is a more mathematical definition, but I will implement it when | 597 | // There is a more mathematical definition, but I will implement it when |
599 | // we are pass our deadline. | 598 | // we are pass our deadline. |
600 | 599 | ||
601 | // For Weeks that start on Sunday... (ahh... home rolled) | 600 | // For Weeks that start on Sunday... (ahh... home rolled) |
602 | // okay, if Jan 1 is on Friday or Saturday, | 601 | // okay, if Jan 1 is on Friday or Saturday, |
603 | // it will go to the pervious | 602 | // it will go to the pervious |
604 | // week... | 603 | // week... |
605 | 604 | ||
diff --git a/core/pim/datebook/datebookweek.h b/core/pim/datebook/datebookweek.h index 8c5e06d..c273e30 100644 --- a/core/pim/datebook/datebookweek.h +++ b/core/pim/datebook/datebookweek.h | |||
@@ -103,64 +103,64 @@ public: | |||
103 | DateBookWeek( bool ampm, bool weekOnMonday, DateBookDB *newDB, | 103 | DateBookWeek( bool ampm, bool weekOnMonday, DateBookDB *newDB, |
104 | QWidget *parent = 0, const char *name = 0 ); | 104 | QWidget *parent = 0, const char *name = 0 ); |
105 | void setDate( int y, int m, int d ); | 105 | void setDate( int y, int m, int d ); |
106 | void setDate( QDate d ); | 106 | void setDate( QDate d ); |
107 | QDate date() const; | 107 | QDate date() const; |
108 | DateBookWeekView *weekView() const { return view; } | 108 | DateBookWeekView *weekView() const { return view; } |
109 | void setStartViewTime( int startHere ); | 109 | void setStartViewTime( int startHere ); |
110 | int startViewTime() const; | 110 | int startViewTime() const; |
111 | int week() const { return _week; }; | 111 | int week() const { return _week; }; |
112 | QDate weekDate() const; | 112 | QDate weekDate() const; |
113 | 113 | ||
114 | public slots: | 114 | public slots: |
115 | void redraw(); | 115 | void redraw(); |
116 | void slotWeekChanged( bool bStartOnMonday ); | 116 | void slotWeekChanged( bool bStartOnMonday ); |
117 | void slotClockChanged( bool a ); | 117 | void slotClockChanged( bool a ); |
118 | 118 | ||
119 | signals: | 119 | signals: |
120 | void showDate( int y, int m, int d ); | 120 | void showDate( int y, int m, int d ); |
121 | 121 | ||
122 | protected slots: | 122 | protected slots: |
123 | void keyPressEvent(QKeyEvent *); | 123 | void keyPressEvent(QKeyEvent *); |
124 | 124 | ||
125 | private slots: | 125 | private slots: |
126 | void showDay( int day ); | 126 | void showDay( int day ); |
127 | void dateChanged( int y, int w ); | 127 | void dateChanged( QDate &newdate ); |
128 | void slotShowEvent( const EffectiveEvent & ); | 128 | void slotShowEvent( const EffectiveEvent & ); |
129 | void slotHideEvent(); | 129 | void slotHideEvent(); |
130 | void slotYearChanged( int ); | 130 | void slotYearChanged( int ); |
131 | 131 | ||
132 | private: | 132 | private: |
133 | void getEvents(); | 133 | void getEvents(); |
134 | 134 | ||
135 | /** | 135 | /** |
136 | * Wow that's a hell lot of code duplication | 136 | * Wow that's a hell lot of code duplication |
137 | * in datebook. I vote for a common base class | 137 | * in datebook. I vote for a common base class |
138 | * but never the less. This add a note | 138 | * but never the less. This add a note |
139 | * that the Event is an all day event | 139 | * that the Event is an all day event |
140 | * | 140 | * |
141 | */ | 141 | */ |
142 | void generateAllDayTooltext( QString& text ); | 142 | void generateAllDayTooltext( QString& text ); |
143 | 143 | ||
144 | /** | 144 | /** |
145 | * This will add the times to the text | 145 | * This will add the times to the text |
146 | * It will be shown in the Tooltip bubble | 146 | * It will be shown in the Tooltip bubble |
147 | */ | 147 | */ |
148 | void generateNormalTooltext( QString& text, | 148 | void generateNormalTooltext( QString& text, |
149 | const EffectiveEvent &ev); | 149 | const EffectiveEvent &ev); |
150 | int year; | 150 | int year; |
151 | int _week; | 151 | int _week; |
152 | int dow; | 152 | int dow; |
153 | QDate bdate; | ||
153 | DateBookWeekHeader *header; | 154 | DateBookWeekHeader *header; |
154 | DateBookWeekView *view; | 155 | DateBookWeekView *view; |
155 | DateBookDB *db; | 156 | DateBookDB *db; |
156 | QLabel *lblDesc; | 157 | QLabel *lblDesc; |
157 | QTimer *tHide; | 158 | QTimer *tHide; |
158 | int startTime; | 159 | int startTime; |
159 | bool ampm; | 160 | bool ampm; |
160 | bool bStartOnMonday; | 161 | bool bStartOnMonday; |
161 | }; | 162 | }; |
162 | 163 | ||
163 | 164 | ||
164 | bool calcWeek( const QDate &d, int &week, int &year, | 165 | bool calcWeek( const QDate &d, int &week, int &year, bool startOnMonday = false ); |
165 | bool startOnMonday = false ); | ||
166 | #endif | 166 | #endif |
diff --git a/core/pim/datebook/datebookweekheaderimpl.cpp b/core/pim/datebook/datebookweekheaderimpl.cpp index fd792e2..ff7626f 100644 --- a/core/pim/datebook/datebookweekheaderimpl.cpp +++ b/core/pim/datebook/datebookweekheaderimpl.cpp | |||
@@ -84,56 +84,32 @@ void DateBookWeekHeader::prevWeek() | |||
84 | { | 84 | { |
85 | setDate(date.addDays(-7)); | 85 | setDate(date.addDays(-7)); |
86 | } | 86 | } |
87 | 87 | ||
88 | void DateBookWeekHeader::setDate( int y, int m, int d ) | 88 | void DateBookWeekHeader::setDate( int y, int m, int d ) |
89 | { | 89 | { |
90 | setDate(QDate(y,m,d)); | 90 | setDate(QDate(y,m,d)); |
91 | } | 91 | } |
92 | 92 | ||
93 | void DateBookWeekHeader::setDate(const QDate &d) { | 93 | void DateBookWeekHeader::setDate(const QDate &d) { |
94 | int year,week,dayofweek; | 94 | int year,week,dayofweek; |
95 | date=d; | 95 | date=d; |
96 | dayofweek=d.dayOfWeek(); | 96 | dayofweek=d.dayOfWeek(); |
97 | if(bStartOnMonday) dayofweek--; | 97 | if(bStartOnMonday) dayofweek--; |
98 | date=date.addDays(-dayofweek); | 98 | date=date.addDays(-dayofweek); |
99 | 99 | ||
100 | calcWeek(date,week,year,bStartOnMonday); | 100 | calcWeek(date,week,year,bStartOnMonday); |
101 | QDate start=date; | 101 | QDate start=date; |
102 | QDate stop=start.addDays(6); | 102 | QDate stop=start.addDays(6); |
103 | labelDate->setText( QString::number(start.day()) + "." + | 103 | labelDate->setText( QString::number(start.day()) + "." + |
104 | start.monthName(start.month()) + "-" + | 104 | start.monthName(start.month()) + "-" + |
105 | QString::number(stop.day()) + "." + | 105 | QString::number(stop.day()) + "." + |
106 | start.monthName(stop.month()) +" ("+ | 106 | start.monthName(stop.month()) +" ("+ |
107 | tr("w")+":"+QString::number( week ) +")"); | 107 | tr("w")+":"+QString::number( week ) +")"); |
108 | emit dateChanged(year,week); | 108 | emit dateChanged(date); |
109 | } | 109 | } |
110 | 110 | ||
111 | void DateBookWeekHeader::setStartOfWeek( bool onMonday ) | 111 | void DateBookWeekHeader::setStartOfWeek( bool onMonday ) |
112 | { | 112 | { |
113 | bStartOnMonday = onMonday; | 113 | bStartOnMonday = onMonday; |
114 | setDate( date ); | 114 | setDate( date ); |
115 | } | 115 | } |
116 | |||
117 | // dateFromWeek | ||
118 | // compute the date from the week in the year | ||
119 | QDate dateFromWeek( int week, int year, bool startOnMonday ) | ||
120 | { | ||
121 | QDate d; | ||
122 | d.setYMD( year, 1, 1 ); | ||
123 | int dayOfWeek = d.dayOfWeek(); | ||
124 | if ( startOnMonday ) { | ||
125 | if ( dayOfWeek <= 4 ) { | ||
126 | d = d.addDays( ( week - 1 ) * 7 - dayOfWeek + 1 ); | ||
127 | } else { | ||
128 | d = d.addDays( (week) * 7 - dayOfWeek + 1 ); | ||
129 | } | ||
130 | } else { | ||
131 | if ( dayOfWeek <= 4 || dayOfWeek == 7) { | ||
132 | d = d.addDays( ( week - 1 ) * 7 - dayOfWeek % 7 ); | ||
133 | } else { | ||
134 | d = d.addDays( ( week ) * 7 - dayOfWeek % 7 ); | ||
135 | } | ||
136 | } | ||
137 | return d; | ||
138 | } | ||
139 | |||
diff --git a/core/pim/datebook/datebookweekheaderimpl.h b/core/pim/datebook/datebookweekheaderimpl.h index 1ab1d52..d8dce90 100644 --- a/core/pim/datebook/datebookweekheaderimpl.h +++ b/core/pim/datebook/datebookweekheaderimpl.h | |||
@@ -15,45 +15,43 @@ | |||
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | #ifndef DATEBOOKDAYHEADER_H | 20 | #ifndef DATEBOOKDAYHEADER_H |
21 | #define DATEBOOKDAYHEADER_H | 21 | #define DATEBOOKDAYHEADER_H |
22 | #include <qdatetime.h> | 22 | #include <qdatetime.h> |
23 | #include "datebookweekheader.h" | 23 | #include "datebookweekheader.h" |
24 | 24 | ||
25 | 25 | ||
26 | class DateBookWeekHeader : public DateBookWeekHeaderBase | 26 | class DateBookWeekHeader : public DateBookWeekHeaderBase |
27 | { | 27 | { |
28 | Q_OBJECT | 28 | Q_OBJECT |
29 | 29 | ||
30 | public: | 30 | public: |
31 | DateBookWeekHeader( bool startOnMonday, QWidget* parent = 0, | 31 | DateBookWeekHeader( bool startOnMonday, QWidget* parent = 0, |
32 | const char* name = 0, WFlags fl = 0 ); | 32 | const char* name = 0, WFlags fl = 0 ); |
33 | ~DateBookWeekHeader(); | 33 | ~DateBookWeekHeader(); |
34 | 34 | ||
35 | void setDate(const QDate &d); | 35 | void setDate(const QDate &d); |
36 | void setStartOfWeek( bool onMonday ); | 36 | void setStartOfWeek( bool onMonday ); |
37 | 37 | ||
38 | signals: | 38 | signals: |
39 | void dateChanged( int y, int w ); | 39 | void dateChanged( QDate &date ); |
40 | 40 | ||
41 | public slots: | 41 | public slots: |
42 | void pickDate(); | 42 | void pickDate(); |
43 | void nextMonth(); | 43 | void nextMonth(); |
44 | void prevMonth(); | 44 | void prevMonth(); |
45 | void nextWeek(); | 45 | void nextWeek(); |
46 | void prevWeek(); | 46 | void prevWeek(); |
47 | void setDate( int y, int m, int d); | 47 | void setDate( int y, int m, int d); |
48 | 48 | ||
49 | protected slots: | 49 | protected slots: |
50 | void keyPressEvent(QKeyEvent *e) { e->ignore(); } | 50 | void keyPressEvent(QKeyEvent *e) { e->ignore(); } |
51 | 51 | ||
52 | private: | 52 | private: |
53 | QDate date; | 53 | QDate date; |
54 | bool bStartOnMonday; | 54 | bool bStartOnMonday; |
55 | }; | 55 | }; |
56 | 56 | ||
57 | QDate dateFromWeek( int week, int year, bool startOnMonday ); | ||
58 | |||
59 | #endif // DATEBOOKDAYHEADER_H | 57 | #endif // DATEBOOKDAYHEADER_H |
diff --git a/core/pim/datebook/datebookweeklst.cpp b/core/pim/datebook/datebookweeklst.cpp index a39ff40..7817042 100644 --- a/core/pim/datebook/datebookweeklst.cpp +++ b/core/pim/datebook/datebookweeklst.cpp | |||
@@ -51,94 +51,94 @@ DateBookWeekLstHeader::DateBookWeekLstHeader(bool onM, QWidget* parent, const ch | |||
51 | connect(backweek, SIGNAL(clicked()), this, SLOT(prevWeek())); | 51 | connect(backweek, SIGNAL(clicked()), this, SLOT(prevWeek())); |
52 | connect(forwardweek, SIGNAL(clicked()), this, SLOT(nextWeek())); | 52 | connect(forwardweek, SIGNAL(clicked()), this, SLOT(nextWeek())); |
53 | connect(forwardmonth, SIGNAL(clicked()), this, SLOT(nextMonth())); | 53 | connect(forwardmonth, SIGNAL(clicked()), this, SLOT(nextMonth())); |
54 | connect(labelDate, SIGNAL(clicked()), this, SLOT(pickDate())); | 54 | connect(labelDate, SIGNAL(clicked()), this, SLOT(pickDate())); |
55 | connect(dbl, SIGNAL(toggled(bool)), this, SIGNAL(setDbl(bool))); | 55 | connect(dbl, SIGNAL(toggled(bool)), this, SIGNAL(setDbl(bool))); |
56 | bStartOnMonday=onM; | 56 | bStartOnMonday=onM; |
57 | } | 57 | } |
58 | DateBookWeekLstHeader::~DateBookWeekLstHeader(){} | 58 | DateBookWeekLstHeader::~DateBookWeekLstHeader(){} |
59 | 59 | ||
60 | void DateBookWeekLstHeader::setDate(const QDate &d) { | 60 | void DateBookWeekLstHeader::setDate(const QDate &d) { |
61 | int year,week,dayofweek; | 61 | int year,week,dayofweek; |
62 | date=d; | 62 | date=d; |
63 | dayofweek=d.dayOfWeek(); | 63 | dayofweek=d.dayOfWeek(); |
64 | if(bStartOnMonday) dayofweek--; | 64 | if(bStartOnMonday) dayofweek--; |
65 | date=date.addDays(-dayofweek); | 65 | date=date.addDays(-dayofweek); |
66 | 66 | ||
67 | calcWeek(date,week,year,bStartOnMonday); | 67 | calcWeek(date,week,year,bStartOnMonday); |
68 | QDate start=date; | 68 | QDate start=date; |
69 | QDate stop=start.addDays(6); | 69 | QDate stop=start.addDays(6); |
70 | labelDate->setText( QString::number(start.day()) + "." + | 70 | labelDate->setText( QString::number(start.day()) + "." + |
71 | start.monthName(start.month()) + "-" + | 71 | start.monthName(start.month()) + "-" + |
72 | QString::number(stop.day()) + "." + | 72 | QString::number(stop.day()) + "." + |
73 | start.monthName(stop.month()) +" ("+ | 73 | start.monthName(stop.month()) +" ("+ |
74 | tr("w")+":"+QString::number( week ) +")"); | 74 | tr("w")+":"+QString::number( week ) +")"); |
75 | emit dateChanged(year,week); | 75 | emit dateChanged(date); |
76 | } | 76 | } |
77 | 77 | ||
78 | void DateBookWeekLstHeader::pickDate() { | 78 | void DateBookWeekLstHeader::pickDate() { |
79 | static QPopupMenu *m1 = 0; | 79 | static QPopupMenu *m1 = 0; |
80 | static DateBookMonth *picker = 0; | 80 | static DateBookMonth *picker = 0; |
81 | if ( !m1 ) { | 81 | if ( !m1 ) { |
82 | m1 = new QPopupMenu( this ); | 82 | m1 = new QPopupMenu( this ); |
83 | picker = new DateBookMonth( m1, 0, TRUE ); | 83 | picker = new DateBookMonth( m1, 0, TRUE ); |
84 | m1->insertItem( picker ); | 84 | m1->insertItem( picker ); |
85 | connect( picker, SIGNAL( dateClicked( int, int, int ) ),this, SLOT( setDate( int, int, int ) ) ); | 85 | connect( picker, SIGNAL( dateClicked( int, int, int ) ),this, SLOT( setDate( int, int, int ) ) ); |
86 | //connect( m1, SIGNAL( aboutToHide() ), | 86 | //connect( m1, SIGNAL( aboutToHide() ), |
87 | //this, SLOT( gotHide() ) ); | 87 | //this, SLOT( gotHide() ) ); |
88 | } | 88 | } |
89 | picker->setDate( date.year(), date.month(), date.day() ); | 89 | picker->setDate( date.year(), date.month(), date.day() ); |
90 | m1->popup(mapToGlobal(labelDate->pos()+QPoint(0,labelDate->height()))); | 90 | m1->popup(mapToGlobal(labelDate->pos()+QPoint(0,labelDate->height()))); |
91 | picker->setFocus(); | 91 | picker->setFocus(); |
92 | } | 92 | } |
93 | void DateBookWeekLstHeader::setDate(int y, int m, int d) { | 93 | void DateBookWeekLstHeader::setDate(int y, int m, int d) { |
94 | setDate(QDate(y,m,d)); | 94 | setDate(QDate(y,m,d)); |
95 | } | 95 | } |
96 | 96 | ||
97 | void DateBookWeekLstHeader::nextWeek() { | 97 | void DateBookWeekLstHeader::nextWeek() { |
98 | setDate(date.addDays(7)); | 98 | setDate(date.addDays(7)); |
99 | } | 99 | } |
100 | void DateBookWeekLstHeader::prevWeek() { | 100 | void DateBookWeekLstHeader::prevWeek() { |
101 | setDate(date.addDays(-7)); | 101 | setDate(date.addDays(-7)); |
102 | } | 102 | } |
103 | void DateBookWeekLstHeader::nextMonth() | 103 | void DateBookWeekLstHeader::nextMonth() |
104 | { | 104 | { |
105 | setDate(date.addDays(28)); | 105 | setDate(date.addDays(28)); |
106 | } | 106 | } |
107 | void DateBookWeekLstHeader::prevMonth() | 107 | void DateBookWeekLstHeader::prevMonth() |
108 | { | 108 | { |
109 | setDate(date.addDays(-28)); | 109 | setDate(date.addDays(-28)); |
110 | } | 110 | } |
111 | 111 | ||
112 | DateBookWeekLstDayHdr::DateBookWeekLstDayHdr(const QDate &d, bool /*onM*/, | 112 | DateBookWeekLstDayHdr::DateBookWeekLstDayHdr(const QDate &d, bool /* onM */, |
113 | QWidget* parent, | 113 | QWidget* parent, |
114 | const char* name, | 114 | const char* name, |
115 | WFlags fl ) | 115 | WFlags fl ) |
116 | : DateBookWeekLstDayHdrBase(parent, name, fl) { | 116 | : DateBookWeekLstDayHdrBase(parent, name, fl) { |
117 | 117 | ||
118 | date=d; | 118 | date=d; |
119 | 119 | ||
120 | static const char *wdays={"MTWTFSS"}; | 120 | static const char *wdays={"MTWTFSSM"}; |
121 | char day=wdays[d.dayOfWeek()-1]; | 121 | char day=wdays[d.dayOfWeek()-1]; |
122 | 122 | ||
123 | label->setText( QString(QObject::tr(QString(QChar(day)))) + " " +QString::number(d.day()) ); | 123 | label->setText( QString(QObject::tr(QString(QChar(day)))) + " " +QString::number(d.day()) ); |
124 | add->setText("+"); | 124 | add->setText("+"); |
125 | 125 | ||
126 | if (d == QDate::currentDate()) { | 126 | if (d == QDate::currentDate()) { |
127 | QPalette pal=label->palette(); | 127 | QPalette pal=label->palette(); |
128 | pal.setColor(QColorGroup::Foreground, QColor(0,0,255)); | 128 | pal.setColor(QColorGroup::Foreground, QColor(0,0,255)); |
129 | label->setPalette(pal); | 129 | label->setPalette(pal); |
130 | 130 | ||
131 | /* | 131 | /* |
132 | QFont f=label->font(); | 132 | QFont f=label->font(); |
133 | f.setItalic(true); | 133 | f.setItalic(true); |
134 | label->setFont(f); | 134 | label->setFont(f); |
135 | label->setPalette(QPalette(QColor(0,0,255),label->backgroundColor())); | 135 | label->setPalette(QPalette(QColor(0,0,255),label->backgroundColor())); |
136 | */ | 136 | */ |
137 | } else if (d.dayOfWeek() == 7) { // FIXME: Match any holiday | 137 | } else if (d.dayOfWeek() == 7) { // FIXME: Match any holiday |
138 | QPalette pal=label->palette(); | 138 | QPalette pal=label->palette(); |
139 | pal.setColor(QColorGroup::Foreground, QColor(255,0,0)); | 139 | pal.setColor(QColorGroup::Foreground, QColor(255,0,0)); |
140 | label->setPalette(pal); | 140 | label->setPalette(pal); |
141 | } | 141 | } |
142 | 142 | ||
143 | connect (label, SIGNAL(clicked()), this, SLOT(showDay())); | 143 | connect (label, SIGNAL(clicked()), this, SLOT(showDay())); |
144 | connect (add, SIGNAL(clicked()), this, SLOT(newEvent())); | 144 | connect (add, SIGNAL(clicked()), this, SLOT(newEvent())); |
@@ -213,186 +213,174 @@ DateBookWeekLstView::DateBookWeekLstView(QValueList<EffectiveEvent> &ev, | |||
213 | { | 213 | { |
214 | Config config("DateBook"); | 214 | Config config("DateBook"); |
215 | config.setGroup("Main"); | 215 | config.setGroup("Main"); |
216 | int weeklistviewconfig=config.readNumEntry("weeklistviewconfig", NORMAL); | 216 | int weeklistviewconfig=config.readNumEntry("weeklistviewconfig", NORMAL); |
217 | qDebug("Read weeklistviewconfig: %d",weeklistviewconfig); | 217 | qDebug("Read weeklistviewconfig: %d",weeklistviewconfig); |
218 | 218 | ||
219 | bStartOnMonday=onM; | 219 | bStartOnMonday=onM; |
220 | setPalette(white); | 220 | setPalette(white); |
221 | setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding)); | 221 | setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding)); |
222 | 222 | ||
223 | QVBoxLayout *layout = new QVBoxLayout( this ); | 223 | QVBoxLayout *layout = new QVBoxLayout( this ); |
224 | 224 | ||
225 | qBubbleSort(ev); | 225 | qBubbleSort(ev); |
226 | QValueListIterator<EffectiveEvent> it; | 226 | QValueListIterator<EffectiveEvent> it; |
227 | it=ev.begin(); | 227 | it=ev.begin(); |
228 | 228 | ||
229 | int dayOrder[7]; | 229 | int dayOrder[7]; |
230 | if (bStartOnMonday) { | 230 | if (bStartOnMonday) { |
231 | for (int d=0; d<7; d++) dayOrder[d]=d+1; | 231 | for (int d=0; d<7; d++) dayOrder[d]=d+1; |
232 | } else { | 232 | } else { |
233 | for (int d=0; d<7; d++) dayOrder[d]=d; | 233 | for (int d=0; d<7; d++) dayOrder[d]=d; |
234 | dayOrder[0]=7; | 234 | dayOrder[0]=7; |
235 | } | 235 | } |
236 | 236 | ||
237 | for (int i=0; i<7; i++) { | 237 | // Calculate offset to first day of week. |
238 | int dayoffset=d.dayOfWeek(); | ||
239 | if(bStartOnMonday) dayoffset--; | ||
240 | |||
241 | for (int i=0; i<7; i++) { | ||
238 | // Header | 242 | // Header |
239 | DateBookWeekLstDayHdr *hdr=new DateBookWeekLstDayHdr(d.addDays(i), bStartOnMonday,this); | 243 | DateBookWeekLstDayHdr *hdr=new DateBookWeekLstDayHdr(d.addDays(i-dayoffset), bStartOnMonday,this); |
240 | connect(hdr, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); | 244 | connect(hdr, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); |
241 | connect(hdr, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &)), | 245 | connect(hdr, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &)), |
242 | this, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &))); | 246 | this, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &))); |
243 | layout->addWidget(hdr); | 247 | layout->addWidget(hdr); |
244 | 248 | ||
245 | // Events | 249 | // Events |
246 | while ( (*it).date().dayOfWeek() == dayOrder[i] && it!=ev.end() ) { | 250 | while ( (*it).date().dayOfWeek() == dayOrder[i] && it!=ev.end() ) { |
247 | if(!(((*it).end().hour()==0) && ((*it).end().minute()==0) && ((*it).startDate()!=(*it).date()))) {// Skip events ending at 00:00 starting at another day. | 251 | if(!(((*it).end().hour()==0) && ((*it).end().minute()==0) && ((*it).startDate()!=(*it).date()))) {// Skip events ending at 00:00 starting at another day. |
248 | DateBookWeekLstEvent *l=new DateBookWeekLstEvent(*it,weeklistviewconfig,this); | 252 | DateBookWeekLstEvent *l=new DateBookWeekLstEvent(*it,weeklistviewconfig,this); |
249 | layout->addWidget(l); | 253 | layout->addWidget(l); |
250 | connect (l, SIGNAL(editEvent(const Event &)), this, SIGNAL(editEvent(const Event &))); | 254 | connect (l, SIGNAL(editEvent(const Event &)), this, SIGNAL(editEvent(const Event &))); |
255 | } | ||
256 | it++; | ||
251 | } | 257 | } |
252 | it++; | 258 | layout->addItem(new QSpacerItem(1,1, QSizePolicy::Minimum, QSizePolicy::Expanding)); |
253 | } | ||
254 | |||
255 | layout->addItem(new QSpacerItem(1,1, QSizePolicy::Minimum, QSizePolicy::Expanding)); | ||
256 | } | 259 | } |
257 | } | 260 | } |
258 | DateBookWeekLstView::~DateBookWeekLstView(){} | 261 | DateBookWeekLstView::~DateBookWeekLstView(){} |
259 | void DateBookWeekLstView::keyPressEvent(QKeyEvent *e) {e->ignore();} | 262 | void DateBookWeekLstView::keyPressEvent(QKeyEvent *e) {e->ignore();} |
260 | 263 | ||
261 | DateBookWeekLstDblView::DateBookWeekLstDblView(QValueList<EffectiveEvent> &ev1, | 264 | DateBookWeekLstDblView::DateBookWeekLstDblView(QValueList<EffectiveEvent> &ev1, |
262 | QValueList<EffectiveEvent> &ev2, | 265 | QValueList<EffectiveEvent> &ev2, |
263 | QDate &d, bool onM, | 266 | QDate &d, bool onM, |
264 | QWidget* parent, | 267 | QWidget* parent, |
265 | const char* name, WFlags fl) | 268 | const char* name, WFlags fl) |
266 | : QWidget( parent, name, fl ) | 269 | : QWidget( parent, name, fl ) |
267 | { | 270 | { |
268 | QHBoxLayout *layout = new QHBoxLayout( this ); | 271 | QHBoxLayout *layout = new QHBoxLayout( this ); |
269 | 272 | ||
270 | DateBookWeekLstView *w=new DateBookWeekLstView(ev1,d,onM,this); | 273 | DateBookWeekLstView *w=new DateBookWeekLstView(ev1,d,onM,this); |
271 | layout->addWidget(w); | 274 | layout->addWidget(w); |
272 | connect (w, SIGNAL(editEvent(const Event &)), this, SIGNAL(editEvent(const Event &))); | 275 | connect (w, SIGNAL(editEvent(const Event &)), this, SIGNAL(editEvent(const Event &))); |
273 | connect (w, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); | 276 | connect (w, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); |
274 | connect (w, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &,const QString &)), | 277 | connect (w, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &,const QString &)), |
275 | this, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &))); | 278 | this, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &))); |
276 | 279 | ||
277 | 280 | ||
278 | w=new DateBookWeekLstView(ev2,d.addDays(7),onM,this); | 281 | w=new DateBookWeekLstView(ev2,d.addDays(7),onM,this); |
279 | layout->addWidget(w); | 282 | layout->addWidget(w); |
280 | connect (w, SIGNAL(editEvent(const Event &)), this, SIGNAL(editEvent(const Event &))); | 283 | connect (w, SIGNAL(editEvent(const Event &)), this, SIGNAL(editEvent(const Event &))); |
281 | connect (w, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); | 284 | connect (w, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); |
282 | connect (w, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &)), | 285 | connect (w, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &)), |
283 | this, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &))); | 286 | this, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &))); |
284 | } | 287 | } |
285 | 288 | ||
286 | DateBookWeekLst::DateBookWeekLst( bool ap, bool onM, DateBookDB *newDB, | 289 | DateBookWeekLst::DateBookWeekLst( bool ap, bool onM, DateBookDB *newDB, |
287 | QWidget *parent, | 290 | QWidget *parent, |
288 | const char *name ) | 291 | const char *name ) |
289 | : QWidget( parent, name ), | 292 | : QWidget( parent, name ), |
290 | db( newDB ), | 293 | db( newDB ), |
291 | startTime( 0 ), | 294 | startTime( 0 ), |
292 | ampm( ap ), | 295 | ampm( ap ), |
293 | bStartOnMonday(onM) | 296 | bStartOnMonday(onM) |
294 | { | 297 | { |
295 | setFocusPolicy(StrongFocus); | 298 | setFocusPolicy(StrongFocus); |
296 | layout = new QVBoxLayout( this ); | 299 | layout = new QVBoxLayout( this ); |
297 | layout->setMargin(0); | 300 | layout->setMargin(0); |
298 | 301 | ||
299 | header=new DateBookWeekLstHeader(onM, this); | 302 | header=new DateBookWeekLstHeader(onM, this); |
300 | layout->addWidget( header ); | 303 | layout->addWidget( header ); |
301 | connect(header, SIGNAL(dateChanged(int,int)), this, SLOT(dateChanged(int,int))); | 304 | connect(header, SIGNAL(dateChanged(QDate &)), this, SLOT(dateChanged(QDate &))); |
302 | connect(header, SIGNAL(setDbl(bool)), this, SLOT(setDbl(bool))); | 305 | connect(header, SIGNAL(setDbl(bool)), this, SLOT(setDbl(bool))); |
303 | 306 | ||
304 | scroll=new QScrollView(this); | 307 | scroll=new QScrollView(this); |
305 | scroll->setResizePolicy(QScrollView::AutoOneFit); | 308 | scroll->setResizePolicy(QScrollView::AutoOneFit); |
306 | layout->addWidget(scroll); | 309 | layout->addWidget(scroll); |
307 | 310 | ||
308 | view=NULL; | 311 | view=NULL; |
309 | Config config("DateBook"); | 312 | Config config("DateBook"); |
310 | config.setGroup("Main"); | 313 | config.setGroup("Main"); |
311 | dbl=config.readBoolEntry("weeklst_dbl", false); | 314 | dbl=config.readBoolEntry("weeklst_dbl", false); |
312 | header->dbl->setOn(dbl); | 315 | header->dbl->setOn(dbl); |
313 | } | 316 | } |
314 | DateBookWeekLst::~DateBookWeekLst(){ | 317 | DateBookWeekLst::~DateBookWeekLst(){ |
315 | Config config("DateBook"); | 318 | Config config("DateBook"); |
316 | config.setGroup("Main"); | 319 | config.setGroup("Main"); |
317 | config.writeEntry("weeklst_dbl", dbl); | 320 | config.writeEntry("weeklst_dbl", dbl); |
318 | } | 321 | } |
319 | 322 | ||
320 | void DateBookWeekLst::setDate(const QDate &d) { | 323 | void DateBookWeekLst::setDate(const QDate &d) { |
321 | int w,y; | 324 | bdate=d; |
322 | calcWeek(d,w,y,bStartOnMonday); | 325 | header->setDate(d); |
323 | year=y; | ||
324 | _week=w; | ||
325 | header->setDate(date()); | ||
326 | } | 326 | } |
327 | |||
327 | void DateBookWeekLst::setDbl(bool on) { | 328 | void DateBookWeekLst::setDbl(bool on) { |
328 | dbl=on; | 329 | dbl=on; |
329 | redraw(); | 330 | redraw(); |
330 | } | 331 | } |
331 | void DateBookWeekLst::redraw() {getEvents();} | 332 | void DateBookWeekLst::redraw() {getEvents();} |
332 | 333 | ||
333 | QDate DateBookWeekLst::date() const { | 334 | QDate DateBookWeekLst::date() { |
334 | QDate d; | 335 | return bdate; |
335 | d.setYMD(year,1,1); | ||
336 | |||
337 | int dow= d.dayOfWeek(); | ||
338 | if (!bStartOnMonday) | ||
339 | if (dow==7) { | ||
340 | dow=1; | ||
341 | } else { | ||
342 | dow++; | ||
343 | } | ||
344 | |||
345 | d=d.addDays( (_week-1)*7 - dow + 1 ); | ||
346 | return d; | ||
347 | } | 336 | } |
348 | 337 | ||
349 | void DateBookWeekLst::getEvents() { | 338 | void DateBookWeekLst::getEvents() { |
350 | QDate start = date(); | 339 | QDate start = date(); |
351 | QDate stop = start.addDays(6); | 340 | QDate stop = start.addDays(6); |
352 | QValueList<EffectiveEvent> el = db->getEffectiveEvents(start, stop); | 341 | QValueList<EffectiveEvent> el = db->getEffectiveEvents(start, stop); |
353 | 342 | ||
354 | if (view) delete view; | 343 | if (view) delete view; |
355 | if (dbl) { | 344 | if (dbl) { |
356 | QDate start2=start.addDays(7); | 345 | QDate start2=start.addDays(7); |
357 | stop=start2.addDays(6); | 346 | stop=start2.addDays(6); |
358 | QValueList<EffectiveEvent> el2 = db->getEffectiveEvents(start2, stop); | 347 | QValueList<EffectiveEvent> el2 = db->getEffectiveEvents(start2, stop); |
359 | view=new DateBookWeekLstDblView(el,el2,start,bStartOnMonday,scroll); | 348 | view=new DateBookWeekLstDblView(el,el2,start,bStartOnMonday,scroll); |
360 | } else { | 349 | } else { |
361 | view=new DateBookWeekLstView(el,start,bStartOnMonday,scroll); | 350 | view=new DateBookWeekLstView(el,start,bStartOnMonday,scroll); |
362 | } | 351 | } |
363 | 352 | ||
364 | connect (view, SIGNAL(editEvent(const Event &)), this, SIGNAL(editEvent(const Event &))); | 353 | connect (view, SIGNAL(editEvent(const Event &)), this, SIGNAL(editEvent(const Event &))); |
365 | connect (view, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); | 354 | connect (view, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); |
366 | connect (view, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &)), | 355 | connect (view, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &)), |
367 | this, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &))); | 356 | this, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &))); |
368 | 357 | ||
369 | scroll->addChild(view); | 358 | scroll->addChild(view); |
370 | view->show(); | 359 | view->show(); |
371 | scroll->updateScrollBars(); | 360 | scroll->updateScrollBars(); |
372 | } | 361 | } |
373 | 362 | ||
374 | void DateBookWeekLst::dateChanged(int y, int w) { | 363 | void DateBookWeekLst::dateChanged(QDate &newdate) { |
375 | year=y; | 364 | bdate=newdate; |
376 | _week=w; | ||
377 | getEvents(); | 365 | getEvents(); |
378 | } | 366 | } |
379 | 367 | ||
380 | void DateBookWeekLst::keyPressEvent(QKeyEvent *e) | 368 | void DateBookWeekLst::keyPressEvent(QKeyEvent *e) |
381 | { | 369 | { |
382 | switch(e->key()) { | 370 | switch(e->key()) { |
383 | case Key_Up: | 371 | case Key_Up: |
384 | scroll->scrollBy(0, -20); | 372 | scroll->scrollBy(0, -20); |
385 | break; | 373 | break; |
386 | case Key_Down: | 374 | case Key_Down: |
387 | scroll->scrollBy(0, 20); | 375 | scroll->scrollBy(0, 20); |
388 | break; | 376 | break; |
389 | case Key_Left: | 377 | case Key_Left: |
390 | header->prevWeek(); | 378 | header->prevWeek(); |
391 | break; | 379 | break; |
392 | case Key_Right: | 380 | case Key_Right: |
393 | header->nextWeek(); | 381 | header->nextWeek(); |
394 | break; | 382 | break; |
395 | default: | 383 | default: |
396 | e->ignore(); | 384 | e->ignore(); |
397 | } | 385 | } |
398 | } \ No newline at end of file | 386 | } |
diff --git a/core/pim/datebook/datebookweeklst.h b/core/pim/datebook/datebookweeklst.h index f858c4f..0bfbcda 100644 --- a/core/pim/datebook/datebookweeklst.h +++ b/core/pim/datebook/datebookweeklst.h | |||
@@ -11,49 +11,49 @@ | |||
11 | #include "datebookweeklstdayhdr.h" | 11 | #include "datebookweeklstdayhdr.h" |
12 | 12 | ||
13 | #include <opie/oclickablelabel.h> | 13 | #include <opie/oclickablelabel.h> |
14 | 14 | ||
15 | class QDateTime; | 15 | class QDateTime; |
16 | class DateBookDB; | 16 | class DateBookDB; |
17 | 17 | ||
18 | class DateBookWeekLstHeader: public DateBookWeekLstHeaderBase | 18 | class DateBookWeekLstHeader: public DateBookWeekLstHeaderBase |
19 | { | 19 | { |
20 | Q_OBJECT | 20 | Q_OBJECT |
21 | public: | 21 | public: |
22 | DateBookWeekLstHeader(bool onM, QWidget* parent = 0, const char* name = 0, | 22 | DateBookWeekLstHeader(bool onM, QWidget* parent = 0, const char* name = 0, |
23 | WFlags fl = 0 ); | 23 | WFlags fl = 0 ); |
24 | ~DateBookWeekLstHeader(); | 24 | ~DateBookWeekLstHeader(); |
25 | void setDate(const QDate &d); | 25 | void setDate(const QDate &d); |
26 | 26 | ||
27 | public slots: | 27 | public slots: |
28 | void nextWeek(); | 28 | void nextWeek(); |
29 | void prevWeek(); | 29 | void prevWeek(); |
30 | void nextMonth(); | 30 | void nextMonth(); |
31 | void prevMonth(); | 31 | void prevMonth(); |
32 | void pickDate(); | 32 | void pickDate(); |
33 | void setDate(int y, int m, int d); | 33 | void setDate(int y, int m, int d); |
34 | signals: | 34 | signals: |
35 | void dateChanged(int y, int w); | 35 | void dateChanged(QDate &newdate); |
36 | void setDbl(bool on); | 36 | void setDbl(bool on); |
37 | private: | 37 | private: |
38 | QDate date; | 38 | QDate date; |
39 | //bool onMonday; | 39 | //bool onMonday; |
40 | bool bStartOnMonday; | 40 | bool bStartOnMonday; |
41 | }; | 41 | }; |
42 | 42 | ||
43 | class DateBookWeekLstDayHdr: public DateBookWeekLstDayHdrBase | 43 | class DateBookWeekLstDayHdr: public DateBookWeekLstDayHdrBase |
44 | { | 44 | { |
45 | Q_OBJECT | 45 | Q_OBJECT |
46 | public: | 46 | public: |
47 | DateBookWeekLstDayHdr(const QDate &d, bool onM, | 47 | DateBookWeekLstDayHdr(const QDate &d, bool onM, |
48 | QWidget* parent = 0, const char* name = 0, | 48 | QWidget* parent = 0, const char* name = 0, |
49 | WFlags fl = 0 ); | 49 | WFlags fl = 0 ); |
50 | public slots: | 50 | public slots: |
51 | void showDay(); | 51 | void showDay(); |
52 | void newEvent(); | 52 | void newEvent(); |
53 | signals: | 53 | signals: |
54 | void showDate(int y, int m, int d); | 54 | void showDate(int y, int m, int d); |
55 | void addEvent(const QDateTime &start, const QDateTime &stop, | 55 | void addEvent(const QDateTime &start, const QDateTime &stop, |
56 | const QString &str, const QString &location); | 56 | const QString &str, const QString &location); |
57 | private: | 57 | private: |
58 | QDate date; | 58 | QDate date; |
59 | }; | 59 | }; |
@@ -98,57 +98,58 @@ public: | |||
98 | DateBookWeekLstDblView(QValueList<EffectiveEvent> &ev1, | 98 | DateBookWeekLstDblView(QValueList<EffectiveEvent> &ev1, |
99 | QValueList<EffectiveEvent> &ev2, | 99 | QValueList<EffectiveEvent> &ev2, |
100 | QDate &d, bool onM, | 100 | QDate &d, bool onM, |
101 | QWidget* parent = 0, const char* name = 0, | 101 | QWidget* parent = 0, const char* name = 0, |
102 | WFlags fl = 0 ); | 102 | WFlags fl = 0 ); |
103 | signals: | 103 | signals: |
104 | void editEvent(const Event &e); | 104 | void editEvent(const Event &e); |
105 | void showDate(int y, int m, int d); | 105 | void showDate(int y, int m, int d); |
106 | void addEvent(const QDateTime &start, const QDateTime &stop, | 106 | void addEvent(const QDateTime &start, const QDateTime &stop, |
107 | const QString &str, const QString &location); | 107 | const QString &str, const QString &location); |
108 | }; | 108 | }; |
109 | 109 | ||
110 | class DateBookWeekLst : public QWidget | 110 | class DateBookWeekLst : public QWidget |
111 | { | 111 | { |
112 | Q_OBJECT | 112 | Q_OBJECT |
113 | 113 | ||
114 | public: | 114 | public: |
115 | DateBookWeekLst( bool ampm, bool onM, DateBookDB *newDB, | 115 | DateBookWeekLst( bool ampm, bool onM, DateBookDB *newDB, |
116 | QWidget *parent = 0, | 116 | QWidget *parent = 0, |
117 | const char *name = 0 ); | 117 | const char *name = 0 ); |
118 | ~DateBookWeekLst(); | 118 | ~DateBookWeekLst(); |
119 | void setDate( int y, int w ); | 119 | void setDate( int y, int w ); |
120 | void setDate(const QDate &d ); | 120 | void setDate(const QDate &d ); |
121 | int week() const { return _week; }; | 121 | int week() const { return _week; }; |
122 | QDate date() const; | 122 | QDate date(); |
123 | 123 | ||
124 | public slots: | 124 | public slots: |
125 | void redraw(); | 125 | void redraw(); |
126 | void dateChanged(int y, int w); | 126 | void dateChanged(QDate &date); |
127 | 127 | ||
128 | protected slots: | 128 | protected slots: |
129 | void keyPressEvent(QKeyEvent *); | 129 | void keyPressEvent(QKeyEvent *); |
130 | void setDbl(bool on); | 130 | void setDbl(bool on); |
131 | 131 | ||
132 | signals: | 132 | signals: |
133 | void showDate(int y, int m, int d); | 133 | void showDate(int y, int m, int d); |
134 | void addEvent(const QDateTime &start, const QDateTime &stop, | 134 | void addEvent(const QDateTime &start, const QDateTime &stop, |
135 | const QString &str, const QString &location); | 135 | const QString &str, const QString &location); |
136 | void editEvent(const Event &e); | 136 | void editEvent(const Event &e); |
137 | 137 | ||
138 | private: | 138 | private: |
139 | DateBookDB *db; | 139 | DateBookDB *db; |
140 | int startTime; | 140 | int startTime; |
141 | bool ampm; | 141 | bool ampm; |
142 | bool bStartOnMonday; | 142 | bool bStartOnMonday; |
143 | bool dbl; | 143 | bool dbl; |
144 | int year, _week; | 144 | QDate bdate; |
145 | int year, _week,dow; | ||
145 | DateBookWeekLstHeader *header; | 146 | DateBookWeekLstHeader *header; |
146 | QWidget *view; | 147 | QWidget *view; |
147 | QVBoxLayout *layout; | 148 | QVBoxLayout *layout; |
148 | QScrollView *scroll; | 149 | QScrollView *scroll; |
149 | 150 | ||
150 | void getEvents(); | 151 | void getEvents(); |
151 | }; | 152 | }; |
152 | 153 | ||
153 | #endif | 154 | #endif |
154 | 155 | ||