summaryrefslogtreecommitdiff
path: root/core/pim/datebook/modules/weeklst/datebookweeklstheader.cpp
Unidiff
Diffstat (limited to 'core/pim/datebook/modules/weeklst/datebookweeklstheader.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/datebook/modules/weeklst/datebookweeklstheader.cpp96
1 files changed, 96 insertions, 0 deletions
diff --git a/core/pim/datebook/modules/weeklst/datebookweeklstheader.cpp b/core/pim/datebook/modules/weeklst/datebookweeklstheader.cpp
new file mode 100644
index 0000000..81e0c31
--- a/dev/null
+++ b/core/pim/datebook/modules/weeklst/datebookweeklstheader.cpp
@@ -0,0 +1,96 @@
1#include "datebookweeklstheader.h"
2
3#include <qpe/resource.h>
4#include <qpe/datebookmonth.h>
5
6#include <qtoolbutton.h>
7#include <qlayout.h>
8
9/* implenented in datebookweek.cpp - HELL */
10bool calcWeek(const QDate &d, int &week, int &year,bool startOnMonday = false);
11
12DateBookWeekLstHeader::DateBookWeekLstHeader(bool onM, QWidget* parent, const char* name, WFlags fl)
13 : DateBookWeekLstHeaderBase(parent, name, fl)
14{
15 setBackgroundMode( PaletteButton );
16 labelDate->setBackgroundMode( PaletteButton );
17 forwardweek->setBackgroundMode( PaletteButton );
18 forwardweek->setPixmap( Resource::loadPixmap("forward") );
19 forwardmonth->setBackgroundMode( PaletteButton );
20 forwardmonth->setPixmap( Resource::loadPixmap("fastforward") );
21 backweek->setBackgroundMode( PaletteButton );
22 backweek->setPixmap( Resource::loadPixmap("back") );
23 backmonth->setBackgroundMode( PaletteButton );
24 backmonth->setPixmap( Resource::loadPixmap("fastback") );
25 DateBookWeekLstHeaderBaseLayout->setSpacing(0);
26 DateBookWeekLstHeaderBaseLayout->setMargin(0);
27 //setSizePolicy(QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Expanding));
28 setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Fixed));
29
30 connect(backmonth, SIGNAL(clicked()), this, SLOT(prevMonth()));
31 connect(backweek, SIGNAL(clicked()), this, SLOT(prevWeek()));
32 connect(forwardweek, SIGNAL(clicked()), this, SLOT(nextWeek()));
33 connect(forwardmonth, SIGNAL(clicked()), this, SLOT(nextMonth()));
34 connect(labelDate, SIGNAL(clicked()), this, SLOT(pickDate()));
35 connect(dbl, SIGNAL(toggled(bool)), this, SIGNAL(setDbl(bool)));
36 bStartOnMonday=onM;
37}
38DateBookWeekLstHeader::~DateBookWeekLstHeader(){}
39
40void DateBookWeekLstHeader::setDate(const QDate &d) {
41 int year,week,dayofweek;
42 date=d;
43 dayofweek=d.dayOfWeek();
44 if(bStartOnMonday)
45 dayofweek--;
46 else if( dayofweek == 7 )
47 /* we already have the right day -7 would lead to the same week */
48 dayofweek = 0;
49
50 date=date.addDays(-dayofweek);
51
52 calcWeek(date,week,year,bStartOnMonday);
53 QDate start=date;
54 QDate stop=start.addDays(6);
55 labelDate->setText( QString::number(start.day()) + "." +
56 Calendar::nameOfMonth( start.month() ) + "-" +
57 QString::number(stop.day()) + "." +
58 Calendar::nameOfMonth( stop.month()) +" ("+
59 tr("w")+":"+QString::number( week ) +")");
60 date = d; // bugfix: 0001126 - date has to be the selected date, not monday!
61 emit dateChanged(date);
62}
63
64void DateBookWeekLstHeader::pickDate() {
65 static QPopupMenu *m1 = 0;
66 static DateBookMonth *picker = 0;
67 if ( !m1 ) {
68 m1 = new QPopupMenu( this );
69 picker = new DateBookMonth( m1, 0, TRUE );
70 m1->insertItem( picker );
71 connect( picker, SIGNAL( dateClicked(int,int,int) ),this, SLOT( setDate(int,int,int) ) );
72 //connect( m1, SIGNAL( aboutToHide() ),
73 //this, SLOT( gotHide() ) );
74 }
75 picker->setDate( date.year(), date.month(), date.day() );
76 m1->popup(mapToGlobal(labelDate->pos()+QPoint(0,labelDate->height())));
77 picker->setFocus();
78}
79void DateBookWeekLstHeader::setDate(int y, int m, int d) {
80 setDate(QDate(y,m,d));
81}
82
83void DateBookWeekLstHeader::nextWeek() {
84 setDate(date.addDays(7));
85}
86void DateBookWeekLstHeader::prevWeek() {
87 setDate(date.addDays(-7));
88}
89void DateBookWeekLstHeader::nextMonth()
90{
91 setDate(date.addDays(28));
92}
93void DateBookWeekLstHeader::prevMonth()
94{
95 setDate(date.addDays(-28));
96}