Diffstat (limited to 'core/pim/datebook/datebookweeklst.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | core/pim/datebook/datebookweeklst.cpp | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/core/pim/datebook/datebookweeklst.cpp b/core/pim/datebook/datebookweeklst.cpp index aad1f3a..24fb0ba 100644 --- a/core/pim/datebook/datebookweeklst.cpp +++ b/core/pim/datebook/datebookweeklst.cpp | |||
@@ -1,153 +1,141 @@ | |||
1 | #include "datebookweeklst.h" | 1 | #include "datebookweeklst.h" |
2 | 2 | ||
3 | #include "datebookweekheaderimpl.h" | ||
4 | 3 | ||
5 | #include "datebook.h" | 4 | #include "datebook.h" |
6 | 5 | ||
7 | #include <qpe/calendar.h> | ||
8 | #include <qpe/datebookdb.h> | ||
9 | #include <qpe/event.h> | ||
10 | #include <qpe/qpeapplication.h> | ||
11 | #include <qpe/timestring.h> | ||
12 | #include <qpe/datebookmonth.h> | 6 | #include <qpe/datebookmonth.h> |
13 | #include <qpe/config.h> | 7 | #include <qpe/config.h> |
14 | #include <qpe/resource.h> | 8 | #include <qpe/resource.h> |
9 | #include <qpe/calendar.h> | ||
15 | 10 | ||
16 | #include <qdatetime.h> | ||
17 | #include <qheader.h> | ||
18 | #include <qlabel.h> | ||
19 | #include <qlayout.h> | 11 | #include <qlayout.h> |
20 | #include <qpainter.h> | ||
21 | #include <qpopupmenu.h> | ||
22 | #include <qtimer.h> | ||
23 | #include <qstyle.h> | ||
24 | #include <qtoolbutton.h> | 12 | #include <qtoolbutton.h> |
25 | #include <qvbox.h> | ||
26 | #include <qsizepolicy.h> | ||
27 | #include <qabstractlayout.h> | ||
28 | #include <qtl.h> | 13 | #include <qtl.h> |
29 | 14 | ||
30 | bool calcWeek(const QDate &d, int &week, int &year,bool startOnMonday = false); | 15 | bool calcWeek(const QDate &d, int &week, int &year,bool startOnMonday = false); |
31 | 16 | ||
32 | DateBookWeekLstHeader::DateBookWeekLstHeader(bool onM, QWidget* parent, const char* name, WFlags fl) | 17 | DateBookWeekLstHeader::DateBookWeekLstHeader(bool onM, QWidget* parent, const char* name, WFlags fl) |
33 | : DateBookWeekLstHeaderBase(parent, name, fl) | 18 | : DateBookWeekLstHeaderBase(parent, name, fl) |
34 | { | 19 | { |
35 | setBackgroundMode( PaletteButton ); | 20 | setBackgroundMode( PaletteButton ); |
36 | labelDate->setBackgroundMode( PaletteButton ); | 21 | labelDate->setBackgroundMode( PaletteButton ); |
37 | forwardweek->setBackgroundMode( PaletteButton ); | 22 | forwardweek->setBackgroundMode( PaletteButton ); |
38 | forwardweek->setPixmap( Resource::loadPixmap("forward") ); | 23 | forwardweek->setPixmap( Resource::loadPixmap("forward") ); |
39 | forwardmonth->setBackgroundMode( PaletteButton ); | 24 | forwardmonth->setBackgroundMode( PaletteButton ); |
40 | forwardmonth->setPixmap( Resource::loadPixmap("fastforward") ); | 25 | forwardmonth->setPixmap( Resource::loadPixmap("fastforward") ); |
41 | backweek->setBackgroundMode( PaletteButton ); | 26 | backweek->setBackgroundMode( PaletteButton ); |
42 | backweek->setPixmap( Resource::loadPixmap("back") ); | 27 | backweek->setPixmap( Resource::loadPixmap("back") ); |
43 | backmonth->setBackgroundMode( PaletteButton ); | 28 | backmonth->setBackgroundMode( PaletteButton ); |
44 | backmonth->setPixmap( Resource::loadPixmap("fastback") ); | 29 | backmonth->setPixmap( Resource::loadPixmap("fastback") ); |
45 | DateBookWeekLstHeaderBaseLayout->setSpacing(0); | 30 | DateBookWeekLstHeaderBaseLayout->setSpacing(0); |
46 | DateBookWeekLstHeaderBaseLayout->setMargin(0); | 31 | DateBookWeekLstHeaderBaseLayout->setMargin(0); |
47 | //setSizePolicy(QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Expanding)); | 32 | //setSizePolicy(QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Expanding)); |
48 | setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Fixed)); | 33 | setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Fixed)); |
49 | 34 | ||
50 | connect(backmonth, SIGNAL(clicked()), this, SLOT(prevMonth())); | 35 | connect(backmonth, SIGNAL(clicked()), this, SLOT(prevMonth())); |
51 | connect(backweek, SIGNAL(clicked()), this, SLOT(prevWeek())); | 36 | connect(backweek, SIGNAL(clicked()), this, SLOT(prevWeek())); |
52 | connect(forwardweek, SIGNAL(clicked()), this, SLOT(nextWeek())); | 37 | connect(forwardweek, SIGNAL(clicked()), this, SLOT(nextWeek())); |
53 | connect(forwardmonth, SIGNAL(clicked()), this, SLOT(nextMonth())); | 38 | connect(forwardmonth, SIGNAL(clicked()), this, SLOT(nextMonth())); |
54 | connect(labelDate, SIGNAL(clicked()), this, SLOT(pickDate())); | 39 | connect(labelDate, SIGNAL(clicked()), this, SLOT(pickDate())); |
55 | connect(dbl, SIGNAL(toggled(bool)), this, SIGNAL(setDbl(bool))); | 40 | connect(dbl, SIGNAL(toggled(bool)), this, SIGNAL(setDbl(bool))); |
56 | bStartOnMonday=onM; | 41 | bStartOnMonday=onM; |
57 | } | 42 | } |
58 | DateBookWeekLstHeader::~DateBookWeekLstHeader(){} | 43 | DateBookWeekLstHeader::~DateBookWeekLstHeader(){} |
59 | 44 | ||
60 | void DateBookWeekLstHeader::setDate(const QDate &d) { | 45 | void DateBookWeekLstHeader::setDate(const QDate &d) { |
61 | int year,week,dayofweek; | 46 | int year,week,dayofweek; |
62 | date=d; | 47 | date=d; |
63 | dayofweek=d.dayOfWeek(); | 48 | dayofweek=d.dayOfWeek(); |
64 | if(bStartOnMonday) | 49 | if(bStartOnMonday) |
65 | dayofweek--; | 50 | dayofweek--; |
66 | else if( dayofweek == 7 ) | 51 | else if( dayofweek == 7 ) |
67 | /* we already have the right day -7 would lead to the same week */ | 52 | /* we already have the right day -7 would lead to the same week */ |
68 | dayofweek = 0; | 53 | dayofweek = 0; |
69 | 54 | ||
70 | date=date.addDays(-dayofweek); | 55 | date=date.addDays(-dayofweek); |
71 | 56 | ||
72 | calcWeek(date,week,year,bStartOnMonday); | 57 | calcWeek(date,week,year,bStartOnMonday); |
73 | QDate start=date; | 58 | QDate start=date; |
74 | QDate stop=start.addDays(6); | 59 | QDate stop=start.addDays(6); |
75 | labelDate->setText( QString::number(start.day()) + "." + | 60 | labelDate->setText( QString::number(start.day()) + "." + |
76 | start.monthName(start.month()) + "-" + | 61 | Calendar::nameOfMonth( start.month() ) + "-" + |
77 | QString::number(stop.day()) + "." + | 62 | QString::number(stop.day()) + "." + |
78 | start.monthName(stop.month()) +" ("+ | 63 | Calendar::nameOfMonth( stop.month()) +" ("+ |
79 | tr("w")+":"+QString::number( week ) +")"); | 64 | tr("w")+":"+QString::number( week ) +")"); |
65 | date = d; // bugfix: 0001126 - date has to be the selected date, not monday! | ||
80 | emit dateChanged(date); | 66 | emit dateChanged(date); |
81 | } | 67 | } |
82 | 68 | ||
83 | void DateBookWeekLstHeader::pickDate() { | 69 | void DateBookWeekLstHeader::pickDate() { |
84 | static QPopupMenu *m1 = 0; | 70 | static QPopupMenu *m1 = 0; |
85 | static DateBookMonth *picker = 0; | 71 | static DateBookMonth *picker = 0; |
86 | if ( !m1 ) { | 72 | if ( !m1 ) { |
87 | m1 = new QPopupMenu( this ); | 73 | m1 = new QPopupMenu( this ); |
88 | picker = new DateBookMonth( m1, 0, TRUE ); | 74 | picker = new DateBookMonth( m1, 0, TRUE ); |
89 | m1->insertItem( picker ); | 75 | m1->insertItem( picker ); |
90 | connect( picker, SIGNAL( dateClicked( int, int, int ) ),this, SLOT( setDate( int, int, int ) ) ); | 76 | connect( picker, SIGNAL( dateClicked( int, int, int ) ),this, SLOT( setDate( int, int, int ) ) ); |
91 | //connect( m1, SIGNAL( aboutToHide() ), | 77 | //connect( m1, SIGNAL( aboutToHide() ), |
92 | //this, SLOT( gotHide() ) ); | 78 | //this, SLOT( gotHide() ) ); |
93 | } | 79 | } |
94 | picker->setDate( date.year(), date.month(), date.day() ); | 80 | picker->setDate( date.year(), date.month(), date.day() ); |
95 | m1->popup(mapToGlobal(labelDate->pos()+QPoint(0,labelDate->height()))); | 81 | m1->popup(mapToGlobal(labelDate->pos()+QPoint(0,labelDate->height()))); |
96 | picker->setFocus(); | 82 | picker->setFocus(); |
97 | } | 83 | } |
98 | void DateBookWeekLstHeader::setDate(int y, int m, int d) { | 84 | void DateBookWeekLstHeader::setDate(int y, int m, int d) { |
99 | setDate(QDate(y,m,d)); | 85 | setDate(QDate(y,m,d)); |
100 | } | 86 | } |
101 | 87 | ||
102 | void DateBookWeekLstHeader::nextWeek() { | 88 | void DateBookWeekLstHeader::nextWeek() { |
103 | setDate(date.addDays(7)); | 89 | setDate(date.addDays(7)); |
104 | } | 90 | } |
105 | void DateBookWeekLstHeader::prevWeek() { | 91 | void DateBookWeekLstHeader::prevWeek() { |
106 | setDate(date.addDays(-7)); | 92 | setDate(date.addDays(-7)); |
107 | } | 93 | } |
108 | void DateBookWeekLstHeader::nextMonth() | 94 | void DateBookWeekLstHeader::nextMonth() |
109 | { | 95 | { |
110 | setDate(date.addDays(28)); | 96 | setDate(date.addDays(28)); |
111 | } | 97 | } |
112 | void DateBookWeekLstHeader::prevMonth() | 98 | void DateBookWeekLstHeader::prevMonth() |
113 | { | 99 | { |
114 | setDate(date.addDays(-28)); | 100 | setDate(date.addDays(-28)); |
115 | } | 101 | } |
116 | 102 | ||
117 | DateBookWeekLstDayHdr::DateBookWeekLstDayHdr(const QDate &d, bool /* onM */, | 103 | DateBookWeekLstDayHdr::DateBookWeekLstDayHdr(const QDate &d, bool /* onM */, |
118 | QWidget* parent, | 104 | QWidget* parent, |
119 | const char* name, | 105 | const char* name, |
120 | WFlags fl ) | 106 | WFlags fl ) |
121 | : DateBookWeekLstDayHdrBase(parent, name, fl) { | 107 | : DateBookWeekLstDayHdrBase(parent, name, fl) { |
122 | 108 | ||
123 | date=d; | 109 | date=d; |
124 | 110 | ||
125 | static const QString wdays=tr("MTWTFSSM", "Week days"); | 111 | static const QString wdays=tr("MTWTFSSM", "Week days"); |
126 | char day=wdays[d.dayOfWeek()-1]; | 112 | char day=wdays[d.dayOfWeek()-1]; |
127 | 113 | ||
114 | //dont use dayOfWeek() to save space ! | ||
128 | label->setText( QString(QObject::tr(QString(QChar(day)))) + " " +QString::number(d.day()) ); | 115 | label->setText( QString(QObject::tr(QString(QChar(day)))) + " " +QString::number(d.day()) ); |
129 | add->setText("+"); | 116 | |
117 | add->setText("+"); | ||
130 | 118 | ||
131 | if (d == QDate::currentDate()) { | 119 | if (d == QDate::currentDate()) { |
132 | QPalette pal=label->palette(); | 120 | QPalette pal=label->palette(); |
133 | pal.setColor(QColorGroup::Foreground, QColor(0,0,255)); | 121 | pal.setColor(QColorGroup::Foreground, QColor(0,0,255)); |
134 | label->setPalette(pal); | 122 | label->setPalette(pal); |
135 | 123 | ||
136 | /* | 124 | /* |
137 | QFont f=label->font(); | 125 | QFont f=label->font(); |
138 | f.setItalic(true); | 126 | f.setItalic(true); |
139 | label->setFont(f); | 127 | label->setFont(f); |
140 | label->setPalette(QPalette(QColor(0,0,255),label->backgroundColor())); | 128 | label->setPalette(QPalette(QColor(0,0,255),label->backgroundColor())); |
141 | */ | 129 | */ |
142 | } else if (d.dayOfWeek() == 7) { // FIXME: Match any holiday | 130 | } else if (d.dayOfWeek() == 7) { // FIXME: Match any holiday |
143 | QPalette pal=label->palette(); | 131 | QPalette pal=label->palette(); |
144 | pal.setColor(QColorGroup::Foreground, QColor(255,0,0)); | 132 | pal.setColor(QColorGroup::Foreground, QColor(255,0,0)); |
145 | label->setPalette(pal); | 133 | label->setPalette(pal); |
146 | } | 134 | } |
147 | 135 | ||
148 | connect (label, SIGNAL(clicked()), this, SLOT(showDay())); | 136 | connect (label, SIGNAL(clicked()), this, SLOT(showDay())); |
149 | connect (add, SIGNAL(clicked()), this, SLOT(newEvent())); | 137 | connect (add, SIGNAL(clicked()), this, SLOT(newEvent())); |
150 | } | 138 | } |
151 | 139 | ||
152 | void DateBookWeekLstDayHdr::showDay() { | 140 | void DateBookWeekLstDayHdr::showDay() { |
153 | emit showDate(date.year(), date.month(), date.day()); | 141 | emit showDate(date.year(), date.month(), date.day()); |
@@ -320,50 +308,65 @@ DateBookWeekLst::DateBookWeekLst( bool ap, bool onM, DateBookDB *newDB, | |||
320 | dbl=config.readBoolEntry("weeklst_dbl", false); | 308 | dbl=config.readBoolEntry("weeklst_dbl", false); |
321 | header->dbl->setOn(dbl); | 309 | header->dbl->setOn(dbl); |
322 | } | 310 | } |
323 | DateBookWeekLst::~DateBookWeekLst(){ | 311 | DateBookWeekLst::~DateBookWeekLst(){ |
324 | Config config("DateBook"); | 312 | Config config("DateBook"); |
325 | config.setGroup("Main"); | 313 | config.setGroup("Main"); |
326 | config.writeEntry("weeklst_dbl", dbl); | 314 | config.writeEntry("weeklst_dbl", dbl); |
327 | } | 315 | } |
328 | 316 | ||
329 | void DateBookWeekLst::setDate(const QDate &d) { | 317 | void DateBookWeekLst::setDate(const QDate &d) { |
330 | bdate=d; | 318 | bdate=d; |
331 | header->setDate(d); | 319 | header->setDate(d); |
332 | } | 320 | } |
333 | 321 | ||
334 | void DateBookWeekLst::setDbl(bool on) { | 322 | void DateBookWeekLst::setDbl(bool on) { |
335 | dbl=on; | 323 | dbl=on; |
336 | redraw(); | 324 | redraw(); |
337 | } | 325 | } |
338 | void DateBookWeekLst::redraw() {getEvents();} | 326 | void DateBookWeekLst::redraw() {getEvents();} |
339 | 327 | ||
340 | QDate DateBookWeekLst::date() { | 328 | QDate DateBookWeekLst::date() { |
341 | return bdate; | 329 | return bdate; |
342 | } | 330 | } |
343 | 331 | ||
332 | // return the date at the beginning of the week... | ||
333 | // copied from DateBookWeek | ||
334 | QDate DateBookWeekLst::weekDate() const | ||
335 | { | ||
336 | QDate d=bdate; | ||
337 | |||
338 | // Calculate offset to first day of week. | ||
339 | int dayoffset=d.dayOfWeek(); | ||
340 | if(bStartOnMonday) dayoffset--; | ||
341 | else if( dayoffset == 7 ) | ||
342 | dayoffset = 0; | ||
343 | |||
344 | return d.addDays(-dayoffset); | ||
345 | } | ||
346 | |||
344 | void DateBookWeekLst::getEvents() { | 347 | void DateBookWeekLst::getEvents() { |
345 | QDate start = date(); | 348 | QDate start = weekDate(); //date(); |
346 | QDate stop = start.addDays(6); | 349 | QDate stop = start.addDays(6); |
347 | QValueList<EffectiveEvent> el = db->getEffectiveEvents(start, stop); | 350 | QValueList<EffectiveEvent> el = db->getEffectiveEvents(start, stop); |
348 | 351 | ||
349 | if (view) delete view; | 352 | if (view) delete view; |
350 | if (dbl) { | 353 | if (dbl) { |
351 | QDate start2=start.addDays(7); | 354 | QDate start2=start.addDays(7); |
352 | stop=start2.addDays(6); | 355 | stop=start2.addDays(6); |
353 | QValueList<EffectiveEvent> el2 = db->getEffectiveEvents(start2, stop); | 356 | QValueList<EffectiveEvent> el2 = db->getEffectiveEvents(start2, stop); |
354 | view=new DateBookWeekLstDblView(el,el2,start,bStartOnMonday,scroll); | 357 | view=new DateBookWeekLstDblView(el,el2,start,bStartOnMonday,scroll); |
355 | } else { | 358 | } else { |
356 | view=new DateBookWeekLstView(el,start,bStartOnMonday,scroll); | 359 | view=new DateBookWeekLstView(el,start,bStartOnMonday,scroll); |
357 | } | 360 | } |
358 | 361 | ||
359 | connect (view, SIGNAL(editEvent(const Event &)), this, SIGNAL(editEvent(const Event &))); | 362 | connect (view, SIGNAL(editEvent(const Event &)), this, SIGNAL(editEvent(const Event &))); |
360 | connect (view, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); | 363 | connect (view, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); |
361 | connect (view, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &)), | 364 | connect (view, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &)), |
362 | this, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &))); | 365 | this, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &))); |
363 | 366 | ||
364 | scroll->addChild(view); | 367 | scroll->addChild(view); |
365 | view->show(); | 368 | view->show(); |
366 | scroll->updateScrollBars(); | 369 | scroll->updateScrollBars(); |
367 | } | 370 | } |
368 | 371 | ||
369 | void DateBookWeekLst::dateChanged(QDate &newdate) { | 372 | void DateBookWeekLst::dateChanged(QDate &newdate) { |