00001 #include "datebookweeklstheader.h"
00002
00003 #include <opie2/oresource.h>
00004
00005 #include <qpe/datebookmonth.h>
00006
00007 #include <qtoolbutton.h>
00008 #include <qlayout.h>
00009
00010
00011 bool calcWeek(const QDate &d, int &week, int &year,bool startOnMonday = false);
00012
00013 DateBookWeekLstHeader::DateBookWeekLstHeader(bool onM, QWidget* parent, const char* name, WFlags fl)
00014 : DateBookWeekLstHeaderBase(parent, name, fl)
00015 {
00016 setBackgroundMode( PaletteButton );
00017 labelDate->setBackgroundMode( PaletteButton );
00018 forwardweek->setBackgroundMode( PaletteButton );
00019 forwardweek->setPixmap( Opie::Core::OResource::loadPixmap( "forward", Opie::Core::OResource::SmallIcon ) );
00020 forwardmonth->setBackgroundMode( PaletteButton );
00021 forwardmonth->setPixmap( Opie::Core::OResource::loadPixmap( "fastforward", Opie::Core::OResource::SmallIcon ) );
00022 backweek->setBackgroundMode( PaletteButton );
00023 backweek->setPixmap( Opie::Core::OResource::loadPixmap( "back", Opie::Core::OResource::SmallIcon ) );
00024 backmonth->setBackgroundMode( PaletteButton );
00025 backmonth->setPixmap( Opie::Core::OResource::loadPixmap( "fastback", Opie::Core::OResource::SmallIcon ) );
00026 DateBookWeekLstHeaderBaseLayout->setSpacing(0);
00027 DateBookWeekLstHeaderBaseLayout->setMargin(0);
00028
00029 setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Fixed));
00030
00031 connect(backmonth, SIGNAL(clicked()), this, SLOT(prevMonth()));
00032 connect(backweek, SIGNAL(clicked()), this, SLOT(prevWeek()));
00033 connect(forwardweek, SIGNAL(clicked()), this, SLOT(nextWeek()));
00034 connect(forwardmonth, SIGNAL(clicked()), this, SLOT(nextMonth()));
00035 connect(labelDate, SIGNAL(clicked()), this, SLOT(pickDate()));
00036 connect(dbl, SIGNAL(toggled(bool)), this, SIGNAL(setDbl(bool)));
00037 bStartOnMonday=onM;
00038 }
00039 DateBookWeekLstHeader::~DateBookWeekLstHeader(){}
00040
00041 void DateBookWeekLstHeader::setDate(const QDate &d) {
00042 int year,week,dayofweek;
00043 date=d;
00044 dayofweek=d.dayOfWeek();
00045 if(bStartOnMonday)
00046 dayofweek--;
00047 else if( dayofweek == 7 )
00048
00049 dayofweek = 0;
00050
00051 date=date.addDays(-dayofweek);
00052
00053 calcWeek(date,week,year,bStartOnMonday);
00054 QDate start=date;
00055 QDate stop=start.addDays(6);
00056 labelDate->setText( QString::number(start.day()) + "." +
00057 Calendar::nameOfMonth( start.month() ) + "-" +
00058 QString::number(stop.day()) + "." +
00059 Calendar::nameOfMonth( stop.month()) +" ("+
00060 tr("w")+":"+QString::number( week ) +")");
00061 date = d;
00062 emit dateChanged(date);
00063 }
00064
00065 void DateBookWeekLstHeader::pickDate() {
00066 static QPopupMenu *m1 = 0;
00067 static DateBookMonth *picker = 0;
00068 if ( !m1 ) {
00069 m1 = new QPopupMenu( this );
00070 picker = new DateBookMonth( m1, 0, TRUE );
00071 m1->insertItem( picker );
00072 connect( picker, SIGNAL( dateClicked(int,int,int) ),this, SLOT( setDate(int,int,int) ) );
00073
00074
00075 }
00076 picker->setDate( date.year(), date.month(), date.day() );
00077 m1->popup(mapToGlobal(labelDate->pos()+QPoint(0,labelDate->height())));
00078 picker->setFocus();
00079 }
00080 void DateBookWeekLstHeader::setDate(int y, int m, int d) {
00081 setDate(QDate(y,m,d));
00082 }
00083
00084 void DateBookWeekLstHeader::nextWeek() {
00085 setDate(date.addDays(7));
00086 }
00087 void DateBookWeekLstHeader::prevWeek() {
00088 setDate(date.addDays(-7));
00089 }
00090 void DateBookWeekLstHeader::nextMonth()
00091 {
00092 setDate(date.addDays(28));
00093 }
00094 void DateBookWeekLstHeader::prevMonth()
00095 {
00096 setDate(date.addDays(-28));
00097 }