author | umopapisdn <umopapisdn> | 2003-05-13 22:58:18 (UTC) |
---|---|---|
committer | umopapisdn <umopapisdn> | 2003-05-13 22:58:18 (UTC) |
commit | 1e0e2f57472538bd880967ebe061c8f39a7e270b (patch) (side-by-side diff) | |
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 @@ -372,3 +372,3 @@ DateBookWeek::DateBookWeek( bool ap, bool startOnMonday, DateBookDB *newDB, connect( view, SIGNAL(signalHideEvent()), this, SLOT(slotHideEvent()) ); - connect( header, SIGNAL( dateChanged( int, int ) ), this, SLOT( dateChanged( int, int ) ) ); + connect( header, SIGNAL( dateChanged( QDate &) ), this, SLOT( dateChanged( QDate &) ) ); connect( tHide, SIGNAL( timeout() ), lblDesc, SLOT( hide() ) ); @@ -401,7 +401,12 @@ void DateBookWeek::showDay( int day ) { - QDate d; - d = dateFromWeek( _week, year, bStartOnMonday ); + QDate d=bdate; + + // Calculate offset to first day of week. + int dayoffset=d.dayOfWeek(); + if(bStartOnMonday) dayoffset--; + day--; - d = d.addDays( day ); + d=d.addDays(day-dayoffset); emit showDate( d.year(), d.month(), d.day() ); + qDebug("%4d-%02d-%02d / Day %d\n",d.year(),d.month(),d.day(),day); } @@ -413,14 +418,12 @@ void DateBookWeek::setDate( int y, int m, int d ) -void DateBookWeek::setDate(QDate date) +void DateBookWeek::setDate(QDate newdate) { - dow = date.dayOfWeek(); - int w, y; - calcWeek( date, w, y, bStartOnMonday ); - header->setDate( date ); + bdate=newdate; + dow = newdate.dayOfWeek(); + header->setDate( newdate ); } -void DateBookWeek::dateChanged( int y, int w ) +void DateBookWeek::dateChanged( QDate &newdate ) { - year = y; - _week = w; + bdate=newdate; getEvents(); @@ -430,13 +433,3 @@ QDate DateBookWeek::date() const { - QDate d; - d = dateFromWeek( _week - 1, year, bStartOnMonday ); - if ( bStartOnMonday ) - d = d.addDays( 7 + dow - 1 ); - else { - if ( dow == 7 ) - d = d.addDays( dow ); - else - d = d.addDays( 7 + dow ); - } - return d; + return bdate; } @@ -580,3 +573,9 @@ QDate DateBookWeek::weekDate() const { - return dateFromWeek( _week, year, bStartOnMonday ); + QDate d=bdate; + + // Calculate offset to first day of week. + int dayoffset=d.dayOfWeek(); + if(bStartOnMonday) dayoffset--; + + return d.addDays(-dayoffset); } 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 @@ -126,3 +126,3 @@ private slots: void showDay( int day ); - void dateChanged( int y, int w ); + void dateChanged( QDate &newdate ); void slotShowEvent( const EffectiveEvent & ); @@ -152,2 +152,3 @@ private: int dow; + QDate bdate; DateBookWeekHeader *header; @@ -163,4 +164,3 @@ private: -bool calcWeek( const QDate &d, int &week, int &year, - bool startOnMonday = false ); +bool calcWeek( const QDate &d, int &week, int &year, bool startOnMonday = false ); #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 @@ -107,3 +107,3 @@ void DateBookWeekHeader::setDate(const QDate &d) { tr("w")+":"+QString::number( week ) +")"); - emit dateChanged(year,week); + emit dateChanged(date); } @@ -115,25 +115 @@ void DateBookWeekHeader::setStartOfWeek( bool onMonday ) } - -// dateFromWeek -// compute the date from the week in the year -QDate dateFromWeek( int week, int year, bool startOnMonday ) -{ - QDate d; - d.setYMD( year, 1, 1 ); - int dayOfWeek = d.dayOfWeek(); - if ( startOnMonday ) { - if ( dayOfWeek <= 4 ) { - d = d.addDays( ( week - 1 ) * 7 - dayOfWeek + 1 ); - } else { - d = d.addDays( (week) * 7 - dayOfWeek + 1 ); - } - } else { - if ( dayOfWeek <= 4 || dayOfWeek == 7) { - d = d.addDays( ( week - 1 ) * 7 - dayOfWeek % 7 ); - } else { - d = d.addDays( ( week ) * 7 - dayOfWeek % 7 ); - } - } - return d; -} - 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 @@ -38,3 +38,3 @@ public: signals: - void dateChanged( int y, int w ); + void dateChanged( QDate &date ); @@ -56,4 +56,2 @@ private: -QDate dateFromWeek( int week, int year, bool startOnMonday ); - #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 @@ -74,3 +74,3 @@ void DateBookWeekLstHeader::setDate(const QDate &d) { tr("w")+":"+QString::number( week ) +")"); - emit dateChanged(year,week); + emit dateChanged(date); } @@ -111,3 +111,3 @@ void DateBookWeekLstHeader::prevMonth() -DateBookWeekLstDayHdr::DateBookWeekLstDayHdr(const QDate &d, bool /*onM*/, +DateBookWeekLstDayHdr::DateBookWeekLstDayHdr(const QDate &d, bool /* onM */, QWidget* parent, @@ -119,3 +119,3 @@ DateBookWeekLstDayHdr::DateBookWeekLstDayHdr(const QDate &d, bool /*onM*/, - static const char *wdays={"MTWTFSS"}; + static const char *wdays={"MTWTFSSM"}; char day=wdays[d.dayOfWeek()-1]; @@ -236,21 +236,24 @@ DateBookWeekLstView::DateBookWeekLstView(QValueList<EffectiveEvent> &ev, - for (int i=0; i<7; i++) { + // Calculate offset to first day of week. + int dayoffset=d.dayOfWeek(); + if(bStartOnMonday) dayoffset--; + + for (int i=0; i<7; i++) { // Header - DateBookWeekLstDayHdr *hdr=new DateBookWeekLstDayHdr(d.addDays(i), bStartOnMonday,this); - connect(hdr, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); - connect(hdr, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &)), - this, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &))); - layout->addWidget(hdr); - - // Events - while ( (*it).date().dayOfWeek() == dayOrder[i] && it!=ev.end() ) { - if(!(((*it).end().hour()==0) && ((*it).end().minute()==0) && ((*it).startDate()!=(*it).date()))) { // Skip events ending at 00:00 starting at another day. - DateBookWeekLstEvent *l=new DateBookWeekLstEvent(*it,weeklistviewconfig,this); - layout->addWidget(l); - connect (l, SIGNAL(editEvent(const Event &)), this, SIGNAL(editEvent(const Event &))); + DateBookWeekLstDayHdr *hdr=new DateBookWeekLstDayHdr(d.addDays(i-dayoffset), bStartOnMonday,this); + connect(hdr, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); + connect(hdr, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &)), + this, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &))); + layout->addWidget(hdr); + + // Events + while ( (*it).date().dayOfWeek() == dayOrder[i] && it!=ev.end() ) { + if(!(((*it).end().hour()==0) && ((*it).end().minute()==0) && ((*it).startDate()!=(*it).date()))) { // Skip events ending at 00:00 starting at another day. + DateBookWeekLstEvent *l=new DateBookWeekLstEvent(*it,weeklistviewconfig,this); + layout->addWidget(l); + connect (l, SIGNAL(editEvent(const Event &)), this, SIGNAL(editEvent(const Event &))); + } + it++; } - it++; - } - - layout->addItem(new QSpacerItem(1,1, QSizePolicy::Minimum, QSizePolicy::Expanding)); + layout->addItem(new QSpacerItem(1,1, QSizePolicy::Minimum, QSizePolicy::Expanding)); } @@ -300,3 +303,3 @@ DateBookWeekLst::DateBookWeekLst( bool ap, bool onM, DateBookDB *newDB, layout->addWidget( header ); - connect(header, SIGNAL(dateChanged(int,int)), this, SLOT(dateChanged(int,int))); + connect(header, SIGNAL(dateChanged(QDate &)), this, SLOT(dateChanged(QDate &))); connect(header, SIGNAL(setDbl(bool)), this, SLOT(setDbl(bool))); @@ -320,8 +323,6 @@ DateBookWeekLst::~DateBookWeekLst(){ void DateBookWeekLst::setDate(const QDate &d) { - int w,y; - calcWeek(d,w,y,bStartOnMonday); - year=y; - _week=w; - header->setDate(date()); + bdate=d; + header->setDate(d); } + void DateBookWeekLst::setDbl(bool on) { @@ -332,16 +333,4 @@ void DateBookWeekLst::redraw() {getEvents();} -QDate DateBookWeekLst::date() const { - QDate d; - d.setYMD(year,1,1); - - int dow= d.dayOfWeek(); - if (!bStartOnMonday) - if (dow==7) { - dow=1; - } else { - dow++; - } - - d=d.addDays( (_week-1)*7 - dow + 1 ); - return d; +QDate DateBookWeekLst::date() { + return bdate; } @@ -373,5 +362,4 @@ void DateBookWeekLst::getEvents() { -void DateBookWeekLst::dateChanged(int y, int w) { - year=y; - _week=w; +void DateBookWeekLst::dateChanged(QDate &newdate) { + bdate=newdate; getEvents(); @@ -397,2 +385,2 @@ void DateBookWeekLst::keyPressEvent(QKeyEvent *e) } -}
\ No newline at end of file +} 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 @@ -34,3 +34,3 @@ public slots: signals: - void dateChanged(int y, int w); + void dateChanged(QDate &newdate); void setDbl(bool on); @@ -121,3 +121,3 @@ public: int week() const { return _week; }; - QDate date() const; + QDate date(); @@ -125,3 +125,3 @@ public slots: void redraw(); - void dateChanged(int y, int w); + void dateChanged(QDate &date); @@ -143,3 +143,4 @@ private: bool dbl; - int year, _week; + QDate bdate; + int year, _week,dow; DateBookWeekLstHeader *header; @@ -148,3 +149,3 @@ private: QScrollView *scroll; - + void getEvents(); |