Source Code (Use browser search to find items of interest.)
Class Index
kcontrol'Dtime (./kdebase/kcontrol/clock/dtime.h:36)
class Dtime : public KCModule
{
Q_OBJECT
public:
Dtime( QWidget *parent=0, const char* name=0 );
void save();
void load();
private slots:
void timeout();
void inc_time();
void dec_time();
void joke(QLineEdit* edit,int incr,int Max,int Min,bool refr);
void set_month(int);
void set_year(int);
void set_time();
void changeDate(QDate);
private:
KDateTable *cal;
QComboBox *month;
QSpinBox *year;
QLineEdit *hour;
QLineEdit *minute;
QLineEdit *second;
Kclock *kclock;
QTime time;
QDate date;
QTimer internalTimer;
QString BufS;
int BufI;
bool refresh;
bool ontimeout;
};
kcontrol'Dtime::Dtime() (./kdebase/kcontrol/clock/dtime.cpp:41)
Dtime::Dtime(QWidget * parent, const char *name)
: KCModule(parent, name)
{
// *************************************************************
// Start Dialog
// *************************************************************
// Date frame
QFrame* frame1 = new QFrame( this, "Frame_1" );
frame1->setFrameStyle( QFrame::Sunken | QFrame::Box );
QGridLayout *l1 = new QGridLayout( frame1, 2, 3, 10 );
month = new QComboBox( FALSE, frame1, "ComboBox_1" );
connect( month, SIGNAL(activated(int)), SLOT(set_month(int)) );
month->setSizeLimit( 12 );
l1->addWidget( month, 0, 0 );
year = new QSpinBox( 1970, 3000, 1, frame1 );
year->setButtonSymbols( QSpinBox::PlusMinus );
connect(year, SIGNAL(valueChanged(int)), this, SLOT(set_year(int)) );
l1->addWidget( year, 0, 2 );
cal = new KDateTable( this );
l1->addMultiCellWidget( cal, 1, 1, 0, 2 );
// Time frame
QFrame* frame2 = new QFrame( this, "Frame_2" );
frame2->setFrameStyle( QFrame::Sunken | QFrame::Box );
QVBoxLayout *v2 = new QVBoxLayout( frame2, 10 );
kclock = new Kclock( frame2, "kclock" );
kclock->setMinimumHeight(150);
v2->addWidget( kclock );
QGridLayout *v3 = new QGridLayout( 2, 9 );
v3->setColStretch( 0, 1 );
hour = new QLineEdit( frame2, "LineEdit_1" );
connect( hour, SIGNAL(textChanged(const QString&)), SLOT(set_time()) );
hour->setMaxLength( 2 );
hour->setFrame( TRUE );
hour->setValidator(new KStrictIntValidator(0, 23, hour));
v3->addMultiCellWidget(hour, 0, 1, 1, 1 );
QLabel *dots1 = new QLabel(":", frame2);
dots1->setMinimumWidth( 7 );
dots1->setAlignment( QLabel::AlignCenter );
v3->addMultiCellWidget(dots1, 0, 1, 2, 2 );
minute = new QLineEdit( frame2, "LineEdit_2" );
connect( minute, SIGNAL(textChanged(const QString&)), SLOT(set_time()) );
minute->setMaxLength( 2 );
minute->setFrame( TRUE );
minute->setValidator(new KStrictIntValidator(0, 59, minute));
v3->addMultiCellWidget(minute, 0, 1, 3, 3 );
QLabel *dots2 = new QLabel(":", frame2);
dots2->setMinimumWidth( 7 );
dots2->setAlignment( QLabel::AlignCenter );
v3->addMultiCellWidget(dots2, 0, 1, 4, 4 );
second = new QLineEdit( frame2, "LineEdit_3" );
connect( second, SIGNAL(textChanged(const QString&)), SLOT(set_time()) );
second->setMaxLength( 2 );
second->setFrame( TRUE );
second->setValidator(new KStrictIntValidator(0, 59, second));
v3->addMultiCellWidget(second, 0, 1, 5, 5 );
int w = 2*hour->fontMetrics().width("00");
hour->setMaximumWidth(w);
minute->setMaximumWidth(w);
second->setMaximumWidth(w);
v3->addColSpacing( 6, 5 );
QPushButton* plusPB = new QPushButton( "+", frame2, "plusPB" );
connect( plusPB, SIGNAL(pressed()), this, SLOT(inc_time()) );
plusPB->setAutoRepeat( TRUE );
v3->addWidget(plusPB, 0, 7 );
QPushButton* minusPB = new QPushButton( "-", frame2, "minusPB" );
connect( minusPB, SIGNAL(pressed()), this, SLOT(dec_time()) );
minusPB->setAutoRepeat( TRUE );
v3->addWidget(minusPB, 1, 7 );
plusPB->setFixedSize( 20, hour->height()/2 );
minusPB->setFixedSize( 20, hour->height()/2 );
v3->setColStretch( 8, 1 );
v2->addItem( v3 );
QHBoxLayout *top = new QHBoxLayout( this, 5 );
top->addWidget(frame1, 1);
top->addWidget(frame2, 1);
// *************************************************************
// End Dialog
// *************************************************************
month->insertItem( i18n("January") );
month->insertItem( i18n("February") );
month->insertItem( i18n("March") );
month->insertItem( i18n("April") );
month->insertItem( i18n("May") );
month->insertItem( i18n("June") );
month->insertItem( i18n("July") );
month->insertItem( i18n("August") );
month->insertItem( i18n("September") );
month->insertItem( i18n("October") );
month->insertItem( i18n("November") );
month->insertItem( i18n("December") );
connect( cal, SIGNAL(dateChanged(QDate)), SLOT(changeDate(QDate)));
connect( &internalTimer, SIGNAL(timeout()), SLOT(timeout()) );
load();
}
kcontrol'Dtime::set_year() (./kdebase/kcontrol/clock/dtime.cpp:166)
void Dtime::set_year(int y)
{
if ( !date.setYMD(y, date.month(), date.day()) )
date.setYMD(1970,date.month(),date.day());
cal->setDate(date);
emit changed(TRUE);
}
kcontrol'Dtime::set_time() (./kdebase/kcontrol/clock/dtime.cpp:174)
void Dtime::set_time()
{
if( ontimeout )
return;
internalTimer.stop();
time.setHMS( atoi(hour->text()), atoi(minute->text()), atoi(second->text()) );
kclock->setTime( time );
emit changed( TRUE );
}
kcontrol'Dtime::changeDate() (./kdebase/kcontrol/clock/dtime.cpp:187)
void Dtime::changeDate(QDate d)
{
date = d;
emit changed( TRUE );
}
kcontrol'Dtime::set_month() (./kdebase/kcontrol/clock/dtime.cpp:193)
void Dtime::set_month(int m)
{
if ( !date.setYMD(date.year(),m+1,date.day()) )
date.setYMD(date.year(),m+1,1);
cal->setDate(date);
emit changed(TRUE);
}
kcontrol'Dtime::load() (./kdebase/kcontrol/clock/dtime.cpp:201)
void Dtime::load()
{
// Reset to the current date and time
time = QTime::currentTime();
date = QDate::currentDate();
month->setCurrentItem(date.month()-1);
year->setValue(date.year());
cal->setDate(date);
// start internal timer
internalTimer.start( 1000 );
timeout();
}
kcontrol'Dtime::save() (./kdebase/kcontrol/clock/dtime.cpp:216)
void Dtime::save()
{
KProcess c_proc;
BufS.sprintf("%02d%02d%02d%02d%04d.%02d",
date.month(), date.day(),
atoi(hour->text()), atoi(minute->text()),
date.year(), atoi(second->text()));
debug("Set date %s", BufS.data());
c_proc.setExecutable( "date" );
c_proc << BufS;
c_proc.start( KProcess::Block );
if ( c_proc.exitStatus() != 0 ) {
KMessageBox::error( this, i18n("Can not set date."));
return;
}
// try to set hardware clock. We do not care if it fails
KProcess hwc_proc;
hwc_proc.setExecutable( "hwclock" );
hwc_proc << "--systohc";
hwc_proc.start();
// restart time
internalTimer.start( 1000 );
}
kcontrol'Dtime::inc_time() (./kdebase/kcontrol/clock/dtime.cpp:246)
void Dtime::inc_time()
{
if ( hour->hasFocus() )
joke(hour,1,0,23,TRUE);
if ( minute->hasFocus() )
joke(minute,1,0,59,TRUE);
if ( second->hasFocus() )
joke(second,1,0,59,TRUE);
}
kcontrol'Dtime::dec_time() (./kdebase/kcontrol/clock/dtime.cpp:256)
void Dtime::dec_time()
{
if ( hour->hasFocus() )
joke(hour,-1,0,23,TRUE);
if ( minute->hasFocus() )
joke(minute,-1,0,59,TRUE);
if ( second->hasFocus() )
joke(second,-1,0,59,TRUE);
}
kcontrol'Dtime::joke() (./kdebase/kcontrol/clock/dtime.cpp:266)
void Dtime::joke(QLineEdit *edit,int incr,int Min,int Max,bool refr)
{
if ( refr )
refresh = FALSE;
BufI=atoi(edit->text());
BufI=BufI + incr;
if ( BufI > Max ) BufI = Min;
if ( BufI < Min ) BufI = Max;
if ( Max > 99 )
BufS.sprintf("%04d",BufI);
else
BufS.sprintf("%02d",BufI);
edit->setText(BufS);
}
kcontrol'Dtime::timeout() (./kdebase/kcontrol/clock/dtime.cpp:281)
void Dtime::timeout()
{
// get current time
time = QTime::currentTime();
ontimeout = TRUE;
BufS.sprintf("%02d",time.second());
second->setText(BufS);
BufS.sprintf("%02d",time.minute());
minute->setText(BufS);
BufS.sprintf("%02d",time.hour());
hour->setText(BufS);
ontimeout = FALSE;
kclock->setTime( time );
}