summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/netsystemtime/ntp.cpp21
-rw-r--r--noncore/settings/netsystemtime/ntp.h3
2 files changed, 19 insertions, 5 deletions
diff --git a/noncore/settings/netsystemtime/ntp.cpp b/noncore/settings/netsystemtime/ntp.cpp
index b2f5332..6a5c062 100644
--- a/noncore/settings/netsystemtime/ntp.cpp
+++ b/noncore/settings/netsystemtime/ntp.cpp
@@ -37,13 +37,12 @@ Ntp::Ntp( QWidget* parent, const char* name, WFlags fl )
Config cfg("ntp",Config::User);
cfg.setGroup("settings");
-// _maxOffset = cfg.readNumEntry("maxOffset",5);
-// _minLookupDiff = cfg.readNumEntry("minLookupDiff",10);
SpinBoxMinLookupDelay->setValue( cfg.readNumEntry("minLookupDiff",41) );
SpinBoxNtpDelay->setValue( cfg.readNumEntry("ntpRefreshFreq",42) );
ComboNtpSrv->setCurrentItem( cfg.readNumEntry("ntpServer", 0) );
ntpTimer = new QTimer(this);
+ processTimer = new QTimer(this);
ntpTimer->start(SpinBoxNtpDelay->value()*1000*60);
ntpProcess = new OProcess( );
@@ -116,6 +115,9 @@ void Ntp::slotRunNtp()
}
TextLabelStartTime->setText(QDateTime::currentDateTime().toString());
ntpOutPut( tr("Running:")+"\nntpdate "+getNtpServer() );
+ connect( processTimer, SIGNAL( timeout() ), SLOT(slotTimeoutNtpProcess()) );
+ processTimer->start(2*1000*60, true);
+
ntpProcess->clearArguments();
*ntpProcess << "ntpdate" << getNtpServer();
bool ret = ntpProcess->start(OProcess::NotifyOnExit,OProcess::AllOutput);
@@ -138,8 +140,14 @@ void Ntp::getNtpOutput(OProcess *proc, char *buffer, int buflen)
lineStrOld = lineStr;
}
-void Ntp::ntpFinished(OProcess*)
+void Ntp::ntpFinished(OProcess *p)
{
+ if (!p->normalExit())
+ {
+ slotProbeNtpServer();
+ return;
+ }
+ processTimer->stop();
Config cfg("ntp",Config::User);
cfg.setGroup("lookups");
int lastLookup = cfg.readNumEntry("time",0);
@@ -261,7 +269,6 @@ void Ntp::slotCheckNtp(int i)
connect( ButtonSetTime, SIGNAL(clicked()), SLOT(setPredictTime()) );
connect( ntpTimer, SIGNAL( timeout() ), SLOT(slotProbeNtpServer()) );
}
-// ntpTimer->start(SpinBoxNtpDelay->value()*1000*60);
}
void Ntp::slotProbeNtpServer()
@@ -279,3 +286,9 @@ void Ntp::ntpOutPut(QString out)
MultiLineEditntpOutPut->append(out);
MultiLineEditntpOutPut->setCursorPosition(MultiLineEditntpOutPut->numLines() + 1,0,FALSE);
}
+
+void Ntp::slotTimeoutNtpProcess()
+{
+ ntpProcess->kill();
+ slotProbeNtpServer();
+}
diff --git a/noncore/settings/netsystemtime/ntp.h b/noncore/settings/netsystemtime/ntp.h
index c78dc55..d166973 100644
--- a/noncore/settings/netsystemtime/ntp.h
+++ b/noncore/settings/netsystemtime/ntp.h
@@ -25,7 +25,7 @@ private:
float _shiftPerSec;
int _lookupDiff;
OProcess *ntpProcess;
- QTimer *ntpTimer;
+ QTimer *ntpTimer, *processTimer;
QSocket *ntpSock;
float getTimeShift();
@@ -42,6 +42,7 @@ private slots:
void setPredictTime();
void slotProbeNtpServer();
void slotNtpDelayChanged(int);
+ void slotTimeoutNtpProcess();
};
#endif