Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

datebookweeklstheader.cpp

Go to the documentation of this file.
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 /* implenented in datebookweek.cpp - HELL */
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     //setSizePolicy(QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Expanding));
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         /* we already have the right day -7 would lead to the same week */
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; // bugfix: 0001126 - date has to be the selected date, not monday!
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         //connect( m1, SIGNAL( aboutToHide() ),
00074         //this, SLOT( gotHide() ) );
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 }

Generated on Sat Nov 5 16:15:49 2005 for OPIE by  doxygen 1.4.2