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 );
}