⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dayviewheaderimpl.cpp

📁 Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3.10平台上编译为嵌入式图形界面操作系统。
💻 CPP
字号:
/************************************************************************ Copyright (C) 2000-2005 Trolltech AS.  All rights reserved.**** This file is part of the Qtopia Environment.** ** This program is free software; you can redistribute it and/or modify it** under the terms of the GNU General Public License as published by the** Free Software Foundation; either version 2 of the License, or (at your** option) any later version.** ** A copy of the GNU GPL license version 2 is included in this package as ** LICENSE.GPL.**** This program is distributed in the hope that it will be useful, but** WITHOUT ANY WARRANTY; without even the implied warranty of** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ** See the GNU General Public License for more details.**** In addition, as a special exception Trolltech gives permission to link** the code of this program with Qtopia applications copyrighted, developed** and distributed by Trolltech under the terms of the Qtopia Personal Use** License Agreement. You must comply with the GNU General Public License** in all respects for all of the code used other than the applications** licensed under the Qtopia Personal Use License Agreement. If you modify** this file, you may extend this exception to your version of the file,** but you are not obligated to do so. If you do not wish to do so, delete** this exception statement from your version.** ** See http://www.trolltech.com/gpl/ for GPL licensing information.**** Contact info@trolltech.com if any conditions of this licensing are** not clear to you.************************************************************************/#include "dayviewheaderimpl.h"#include <qtopia/datetimeedit.h>#include <qtopia/resource.h>#include <qtopia/timestring.h>#include <qbuttongroup.h>#include <qpopupmenu.h>#include <qstringlist.h>#include <qtimer.h>#include <qtoolbutton.h>#include <qdatetime.h>#include <qtimer.h>#include <qlayout.h>/* *  Constructs a DateBookDayHeader which is a child of 'parent', with the *  name 'name' and widget flags set to 'f' * *  The dialog will by default be modeless, unless you set 'modal' to *  TRUE to construct a modal dialog. */DayViewHeader::DayViewHeader( bool useMonday, QWidget* parent, const char *name )    : QWidget( parent, name ),    bUseMonday( useMonday ){    init();    setBackgroundMode( PaletteButton );    grpDays->setBackgroundMode( PaletteButton );    dButton->setDate( currDate );    connect(dButton,SIGNAL(valueChanged(const QDate&)),this,SIGNAL(dateChanged(const QDate&)));}/* *  Destroys the object and frees any allocated resources */DayViewHeader::~DayViewHeader(){    // no need to delete child widgets, Qt does it all for us}void DayViewHeader::init(){        back = new QToolButton(this);    back->setIconSet(Resource::loadIconSet("back"));    back->setAutoRepeat( TRUE );    back->setAutoRaise( TRUE );    connect( back, SIGNAL(clicked()), this, SLOT(goBack()) );    forward = new QToolButton(this);    forward->setIconSet(Resource::loadIconSet("forward"));    forward->setAutoRepeat( TRUE );    forward->setAutoRaise( TRUE );    connect( forward, SIGNAL(clicked()), this, SLOT(goForward()) );    grpDays = new QButtonGroup(this);    grpDays->setExclusive( TRUE );    connect( grpDays, SIGNAL(clicked(int)), this, SLOT(setDay(int)) );    cmdDay1 = new QToolButton(grpDays);    cmdDay2 = new QToolButton(grpDays);    cmdDay3 = new QToolButton(grpDays);    cmdDay4 = new QToolButton(grpDays);    cmdDay5 = new QToolButton(grpDays);    cmdDay6 = new QToolButton(grpDays);    cmdDay7 = new QToolButton(grpDays);    QToolButton *cmdDays[7] = { cmdDay1, cmdDay2, cmdDay3, cmdDay4, cmdDay5, cmdDay6, cmdDay7 };    for ( int i = 0; i < 7; i++ ) {	cmdDays[i]->setAutoRaise( TRUE );	cmdDays[i]->setToggleButton( TRUE );    }    setupNames();    dButton = new QPEDateEdit(this);    QHBoxLayout *hbox = new QHBoxLayout( this );    hbox->add(back);    hbox->add(grpDays);    hbox->add(forward);    hbox->add(dButton);    hbox = new QHBoxLayout( grpDays );    hbox->add( cmdDay1 );    hbox->add( cmdDay2 );    hbox->add( cmdDay3 );    hbox->add( cmdDay4 );    hbox->add( cmdDay5 );    hbox->add( cmdDay6 );    hbox->add( cmdDay7 );}void DayViewHeader::setStartOfWeek( bool onMonday ){    bUseMonday = onMonday;    setupNames();    setDate( currDate.year(), currDate.month(), currDate.day() );}static void setButton( QButton *btn, int day ){    btn->setText( TimeString::localDayOfWeek( day + 1, TimeString::Short ) );}void DayViewHeader::setupNames(){    int i = 0;    ::setButton( cmdDay1, (bUseMonday?i:(i+6)%7) ); i++;    ::setButton( cmdDay2, (bUseMonday?i:(i+6)%7) ); i++;    ::setButton( cmdDay3, (bUseMonday?i:(i+6)%7) ); i++;    ::setButton( cmdDay4, (bUseMonday?i:(i+6)%7) ); i++;    ::setButton( cmdDay5, (bUseMonday?i:(i+6)%7) ); i++;    ::setButton( cmdDay6, (bUseMonday?i:(i+6)%7) ); i++;    ::setButton( cmdDay7, (bUseMonday?i:(i+6)%7) );}/* * public slot */void DayViewHeader::goBack(){    currDate = currDate.addDays( -7 );    setDate( currDate.year(), currDate.month(), currDate.day() );}/* * public slot */void DayViewHeader::goForward(){    currDate = currDate.addDays( 7 );    setDate( currDate.year(), currDate.month(), currDate.day() );}/* * public slot */void DayViewHeader::setDate( int y, int m, int d ){    currDate.setYMD( y, m, d );    dButton->setDate(QDate(y,m,d));    int iDayOfWeek = currDate.dayOfWeek();    // cleverly adjust the day depending on how we start the week    if ( bUseMonday )	iDayOfWeek--;    else {	if ( iDayOfWeek == 7 )  // Sunday	    iDayOfWeek = 0;    }    grpDays->setButton( iDayOfWeek );    emit dateChanged( currDate );}/* * public slot */void DayViewHeader::setDay( int day ){    int realDay;    int dayOfWeek = currDate.dayOfWeek();    // a little adjustment is needed...    if ( bUseMonday )	realDay = day + 1 ;    else if ( !bUseMonday && day == 0 ) // sunday	realDay = 7;    else	realDay = day;    // special cases first...    if ( realDay == 7 && !bUseMonday )  {	while ( currDate.dayOfWeek() != realDay )	    currDate = currDate.addDays( -1 );    } else if ( !bUseMonday && dayOfWeek == 7 && dayOfWeek > realDay ) {	while ( currDate.dayOfWeek() != realDay )	    currDate = currDate.addDays( 1 );    } else if ( dayOfWeek < realDay ) {	while ( currDate.dayOfWeek() < realDay )	    currDate = currDate.addDays( 1 );    } else if ( dayOfWeek > realDay ) {	while ( currDate.dayOfWeek() > realDay )	    currDate = currDate.addDays( -1 );    }    // update the date...    setDate( currDate.year(), currDate.month(), currDate.day() );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -