summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/pim/datebook/datebookweek.cpp47
-rw-r--r--core/pim/datebook/datebookweek.h6
-rw-r--r--core/pim/datebook/datebookweekheaderimpl.cpp26
-rw-r--r--core/pim/datebook/datebookweekheaderimpl.h4
-rw-r--r--core/pim/datebook/datebookweeklst.cpp42
-rw-r--r--core/pim/datebook/datebookweeklst.h9
6 files changed, 48 insertions, 86 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
@@ -369,9 +369,9 @@ DateBookWeek::DateBookWeek( bool ap, bool startOnMonday, DateBookDB *newDB,
connect( view, SIGNAL( showDay( int ) ), this, SLOT( showDay( int ) ) );
connect( view, SIGNAL(signalShowEvent(const EffectiveEvent&)), this, SLOT(slotShowEvent(const EffectiveEvent&)) );
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() ) );
connect( qApp, SIGNAL(weekChanged(bool)), this, SLOT(slotWeekChanged(bool)) );
connect( qApp, SIGNAL(clockChanged(bool)), this, SLOT(slotClockChanged(bool)));
setDate(QDate::currentDate());
@@ -398,48 +398,41 @@ void DateBookWeek::keyPressEvent(QKeyEvent *e)
}
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);
}
void DateBookWeek::setDate( int y, int m, int d )
{
setDate(QDate(y, m, 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();
}
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;
}
void DateBookWeek::getEvents()
{
@@ -577,9 +570,15 @@ void DateBookWeek::slotClockChanged( bool ap )
// return the date at the beginning of the week...
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);
}
// this used to only be needed by datebook.cpp, but now we need it inside
// week view since
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
@@ -123,9 +123,9 @@ protected slots:
void keyPressEvent(QKeyEvent *);
private slots:
void showDay( int day );
- void dateChanged( int y, int w );
+ void dateChanged( QDate &newdate );
void slotShowEvent( const EffectiveEvent & );
void slotHideEvent();
void slotYearChanged( int );
@@ -149,8 +149,9 @@ private:
const EffectiveEvent &ev);
int year;
int _week;
int dow;
+ QDate bdate;
DateBookWeekHeader *header;
DateBookWeekView *view;
DateBookDB *db;
QLabel *lblDesc;
@@ -160,7 +161,6 @@ private:
bool bStartOnMonday;
};
-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
@@ -104,36 +104,12 @@ void DateBookWeekHeader::setDate(const QDate &d) {
start.monthName(start.month()) + "-" +
QString::number(stop.day()) + "." +
start.monthName(stop.month()) +" ("+
tr("w")+":"+QString::number( week ) +")");
- emit dateChanged(year,week);
+ emit dateChanged(date);
}
void DateBookWeekHeader::setStartOfWeek( bool onMonday )
{
bStartOnMonday = onMonday;
setDate( date );
}
-
-// 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
@@ -35,9 +35,9 @@ public:
void setDate(const QDate &d);
void setStartOfWeek( bool onMonday );
signals:
- void dateChanged( int y, int w );
+ void dateChanged( QDate &date );
public slots:
void pickDate();
void nextMonth();
@@ -53,7 +53,5 @@ private:
QDate date;
bool bStartOnMonday;
};
-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
@@ -71,9 +71,9 @@ void DateBookWeekLstHeader::setDate(const QDate &d) {
start.monthName(start.month()) + "-" +
QString::number(stop.day()) + "." +
start.monthName(stop.month()) +" ("+
tr("w")+":"+QString::number( week ) +")");
- emit dateChanged(year,week);
+ emit dateChanged(date);
}
void DateBookWeekLstHeader::pickDate() {
static QPopupMenu *m1 = 0;
@@ -116,9 +116,9 @@ DateBookWeekLstDayHdr::DateBookWeekLstDayHdr(const QDate &d, bool /*onM*/,
: DateBookWeekLstDayHdrBase(parent, name, fl) {
date=d;
- static const char *wdays={"MTWTFSS"};
+ static const char *wdays={"MTWTFSSM"};
char day=wdays[d.dayOfWeek()-1];
label->setText( QString(QObject::tr(QString(QChar(day)))) + " " +QString::number(d.day()) );
add->setText("+");
@@ -233,11 +233,15 @@ DateBookWeekLstView::DateBookWeekLstView(QValueList<EffectiveEvent> &ev,
for (int d=0; d<7; d++) dayOrder[d]=d;
dayOrder[0]=7;
}
+ // 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);
+ 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);
@@ -250,9 +254,8 @@ DateBookWeekLstView::DateBookWeekLstView(QValueList<EffectiveEvent> &ev,
connect (l, SIGNAL(editEvent(const Event &)), this, SIGNAL(editEvent(const Event &)));
}
it++;
}
-
layout->addItem(new QSpacerItem(1,1, QSizePolicy::Minimum, QSizePolicy::Expanding));
}
}
DateBookWeekLstView::~DateBookWeekLstView(){}
@@ -297,9 +300,9 @@ DateBookWeekLst::DateBookWeekLst( bool ap, bool onM, DateBookDB *newDB,
layout->setMargin(0);
header=new DateBookWeekLstHeader(onM, this);
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)));
scroll=new QScrollView(this);
scroll->setResizePolicy(QScrollView::AutoOneFit);
@@ -317,34 +320,20 @@ DateBookWeekLst::~DateBookWeekLst(){
config.writeEntry("weeklst_dbl", dbl);
}
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) {
dbl=on;
redraw();
}
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;
}
void DateBookWeekLst::getEvents() {
QDate start = date();
@@ -370,11 +359,10 @@ void DateBookWeekLst::getEvents() {
view->show();
scroll->updateScrollBars();
}
-void DateBookWeekLst::dateChanged(int y, int w) {
- year=y;
- _week=w;
+void DateBookWeekLst::dateChanged(QDate &newdate) {
+ bdate=newdate;
getEvents();
}
void DateBookWeekLst::keyPressEvent(QKeyEvent *e)
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
@@ -31,9 +31,9 @@ public slots:
void prevMonth();
void pickDate();
void setDate(int y, int m, int d);
signals:
- void dateChanged(int y, int w);
+ void dateChanged(QDate &newdate);
void setDbl(bool on);
private:
QDate date;
// bool onMonday;
@@ -118,13 +118,13 @@ public:
~DateBookWeekLst();
void setDate( int y, int w );
void setDate(const QDate &d );
int week() const { return _week; };
- QDate date() const;
+ QDate date();
public slots:
void redraw();
- void dateChanged(int y, int w);
+ void dateChanged(QDate &date);
protected slots:
void keyPressEvent(QKeyEvent *);
void setDbl(bool on);
@@ -140,9 +140,10 @@ private:
int startTime;
bool ampm;
bool bStartOnMonday;
bool dbl;
- int year, _week;
+ QDate bdate;
+ int year, _week,dow;
DateBookWeekLstHeader *header;
QWidget *view;
QVBoxLayout *layout;
QScrollView *scroll;