-rw-r--r-- | noncore/settings/netsystemtime/ntp.cpp | 55 | ||||
-rw-r--r-- | noncore/settings/netsystemtime/ntp.h | 4 |
2 files changed, 40 insertions, 19 deletions
diff --git a/noncore/settings/netsystemtime/ntp.cpp b/noncore/settings/netsystemtime/ntp.cpp index 6e74e32..c7e3b52 100644 --- a/noncore/settings/netsystemtime/ntp.cpp +++ b/noncore/settings/netsystemtime/ntp.cpp @@ -29,8 +29,9 @@ Ntp::Ntp( QWidget* parent, const char* name, WFlags fl ) : SetDateTime( parent, name, fl ) { + _interactive = false; Config ntpSrvs(QPEApplication::qpeDir()+"etc/ntpservers",Config::File); ntpSrvs.setGroup("servers"); int srvCount = ntpSrvs.readNumEntry("count", 0 ); for (int i = 0; i < srvCount; i++) @@ -77,17 +78,16 @@ Ntp::Ntp( QWidget* parent, const char* name, WFlags fl ) connect( SpinBoxNtpDelay, SIGNAL( valueChanged(int) ), SLOT(slotNtpDelayChanged(int)) ); ntpSock = new QSocket( this ); - connect( ntpSock, SIGNAL( error(int) ), - SLOT(slotCheckNtp(int)) ); + connect( ntpSock, SIGNAL( error(int) ),SLOT(slotCheckNtp(int)) ); slotProbeNtpServer(); connect ( ntpProcess, SIGNAL(receivedStdout(OProcess*,char*,int)), this, SLOT(getNtpOutput(OProcess*,char*,int))); connect ( ntpProcess, SIGNAL(processExited(OProcess*)), this, SLOT(ntpFinished(OProcess*))); - connect(runNtp, SIGNAL(clicked()), this, SLOT(slotRunNtp())); + connect(runNtp, SIGNAL(clicked()), this, SLOT(slotButtonRunNtp())); connect(PushButtonPredict, SIGNAL(clicked()), this, SLOT(preditctTime())); connect(PushButtonSetPredTime, SIGNAL(clicked()), this, SLOT(setPredictTime())); slotCheckNtp(-1); readLookups(); @@ -95,15 +95,23 @@ Ntp::Ntp( QWidget* parent, const char* name, WFlags fl ) Ntp::~Ntp() { delete ntpProcess; - Config ntpSrvs("/etc/ntpservers",Config::File); - ntpSrvs.setGroup("servers"); int srvCount = ComboNtpSrv->count(); - ntpSrvs.writeEntry("count", srvCount); + bool serversChanged = true; + QString edit = ComboNtpSrv->currentText(); for (int i = 0; i < srvCount; i++){ - ntpSrvs.setGroup(QString::number(i)); - ntpSrvs.writeEntry( "name", ComboNtpSrv->text(i) ); + if ( edit == ComboNtpSrv->text(i)) serversChanged = false; + } + if (serversChanged){ + Config ntpSrvs("/etc/ntpservers",Config::File); + ntpSrvs.setGroup("servers"); + ntpSrvs.writeEntry("count", srvCount); + for (int i = 0; i < srvCount; i++){ + qDebug("ntpSrvs[%i/%i]=%s",i,srvCount,ComboNtpSrv->text(i).latin1()); + ntpSrvs.setGroup(QString::number(i)); + ntpSrvs.writeEntry( "name", ComboNtpSrv->text(i) ); + } } Config cfg("ntp",Config::User); cfg.setGroup("settings"); cfg.writeEntry("ntpServer", ComboNtpSrv->currentItem()); @@ -126,8 +134,21 @@ QString Ntp::getNtpServer() { return ComboNtpSrv->currentText(); } +void Ntp::slotButtonRunNtp() +{ + _interactive = true; + slotRunNtp(); +} + +void Ntp::slotTimerRunNtp() +{ + _interactive = false; + slotRunNtp(); +} + + void Ntp::slotRunNtp() { if ( !ntpDelayElapsed() && CheckBoxAdvSettings->isChecked() ) { @@ -175,16 +196,13 @@ void Ntp::ntpFinished(OProcess *p) { qDebug("p->exitStatus() %i",p->exitStatus()); if (p->exitStatus()!=0 || !p->normalExit()) { - if ( isVisible() ) { - QMessageBox::critical(this, tr("ntp error"), - tr("Error while getting time form\n server")+ - getNtpServer()+"\n"+ - _ntpOutput ); - TabWidgetMain->showPage( tabManualSetTime ); + if ( isVisible() && _interactive ){ + QMessageBox::critical(this, tr("ntp error"),tr("Error while getting time form\n server")+getNtpServer()+"\n"+_ntpOutput ); + TabWidgetMain->showPage( tabManualSetTime ); } - + return; } Global::writeHWClock(); @@ -302,16 +320,16 @@ void Ntp::slotCheckNtp(int i) if (i == 0) { TextLabelMainPredTime->hide(); ButtonSetTime->setText( tr("Get time from network") ); - connect( ButtonSetTime, SIGNAL(clicked()), SLOT(slotRunNtp()) ); + connect( ButtonSetTime, SIGNAL(clicked()), SLOT(slotButtonRunNtp()) ); if ( ntpDelayElapsed() ) { slotRunNtp(); disconnect(ntpTimer, SIGNAL( timeout() ), this, SLOT(slotProbeNtpServer()) ); - connect(ntpTimer, SIGNAL( timeout() ), SLOT(slotRunNtp()) ); + connect(ntpTimer, SIGNAL( timeout() ), SLOT(slotTimerRunNtp()) ); }else{ - disconnect(ntpTimer, SIGNAL( timeout() ), this, SLOT(slotRunNtp()) ); + disconnect(ntpTimer, SIGNAL( timeout() ), this, SLOT(slotTimerRunNtp()) ); connect(ntpTimer, SIGNAL( timeout() ), SLOT(slotProbeNtpServer()) ); } }else{ preditctTime(); @@ -353,8 +371,9 @@ void Ntp::receive(const QCString &msg, const QByteArray &arg) { qDebug("QCop(Ntp) "+msg+" "+QCString(arg)); if ( msg == "ntpLookup(QString)" ) { + _interactive = false; slotRunNtp(); } if ( msg == "setPredictedTime(QString)" ) { diff --git a/noncore/settings/netsystemtime/ntp.h b/noncore/settings/netsystemtime/ntp.h index f6694c9..15cddbd 100644 --- a/noncore/settings/netsystemtime/ntp.h +++ b/noncore/settings/netsystemtime/ntp.h @@ -31,15 +31,17 @@ private: OProcess *ntpProcess; QTimer *ntpTimer; QSocket *ntpSock; QCopChannel *channel; - + bool _interactive; float getTimeShift(); void readLookups(); void ntpOutPut(QString); bool ntpDelayElapsed(); QString getNtpServer(); private slots: + void slotTimerRunNtp(); + void slotButtonRunNtp(); void slotRunNtp(); void getNtpOutput(OProcess *proc, char *buffer, int buflen); void ntpFinished(OProcess*); void preditctTime(); |