summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/netsystemtime/ntp.cpp55
-rw-r--r--noncore/settings/netsystemtime/ntp.h4
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
@@ -30,6 +30,7 @@
30Ntp::Ntp( QWidget* parent, const char* name, WFlags fl ) 30Ntp::Ntp( QWidget* parent, const char* name, WFlags fl )
31 : SetDateTime( parent, name, fl ) 31 : SetDateTime( parent, name, fl )
32{ 32{
33 _interactive = false;
33 Config ntpSrvs(QPEApplication::qpeDir()+"etc/ntpservers",Config::File); 34 Config ntpSrvs(QPEApplication::qpeDir()+"etc/ntpservers",Config::File);
34 ntpSrvs.setGroup("servers"); 35 ntpSrvs.setGroup("servers");
35 int srvCount = ntpSrvs.readNumEntry("count", 0 ); 36 int srvCount = ntpSrvs.readNumEntry("count", 0 );
@@ -78,15 +79,14 @@ Ntp::Ntp( QWidget* parent, const char* name, WFlags fl )
78 SLOT(slotNtpDelayChanged(int)) ); 79 SLOT(slotNtpDelayChanged(int)) );
79 80
80 ntpSock = new QSocket( this ); 81 ntpSock = new QSocket( this );
81 connect( ntpSock, SIGNAL( error(int) ), 82 connect( ntpSock, SIGNAL( error(int) ),SLOT(slotCheckNtp(int)) );
82 SLOT(slotCheckNtp(int)) );
83 slotProbeNtpServer(); 83 slotProbeNtpServer();
84 84
85 connect ( ntpProcess, SIGNAL(receivedStdout(OProcess*,char*,int)), 85 connect ( ntpProcess, SIGNAL(receivedStdout(OProcess*,char*,int)),
86 this, SLOT(getNtpOutput(OProcess*,char*,int))); 86 this, SLOT(getNtpOutput(OProcess*,char*,int)));
87 connect ( ntpProcess, SIGNAL(processExited(OProcess*)), 87 connect ( ntpProcess, SIGNAL(processExited(OProcess*)),
88 this, SLOT(ntpFinished(OProcess*))); 88 this, SLOT(ntpFinished(OProcess*)));
89 connect(runNtp, SIGNAL(clicked()), this, SLOT(slotRunNtp())); 89 connect(runNtp, SIGNAL(clicked()), this, SLOT(slotButtonRunNtp()));
90 connect(PushButtonPredict, SIGNAL(clicked()), this, SLOT(preditctTime())); 90 connect(PushButtonPredict, SIGNAL(clicked()), this, SLOT(preditctTime()));
91 connect(PushButtonSetPredTime, SIGNAL(clicked()), this, SLOT(setPredictTime())); 91 connect(PushButtonSetPredTime, SIGNAL(clicked()), this, SLOT(setPredictTime()));
92 slotCheckNtp(-1); 92 slotCheckNtp(-1);
@@ -96,13 +96,21 @@ Ntp::Ntp( QWidget* parent, const char* name, WFlags fl )
96Ntp::~Ntp() 96Ntp::~Ntp()
97{ 97{
98 delete ntpProcess; 98 delete ntpProcess;
99 Config ntpSrvs("/etc/ntpservers",Config::File);
100 ntpSrvs.setGroup("servers");
101 int srvCount = ComboNtpSrv->count(); 99 int srvCount = ComboNtpSrv->count();
102 ntpSrvs.writeEntry("count", srvCount); 100 bool serversChanged = true;
101 QString edit = ComboNtpSrv->currentText();
103 for (int i = 0; i < srvCount; i++){ 102 for (int i = 0; i < srvCount; i++){
104 ntpSrvs.setGroup(QString::number(i)); 103 if ( edit == ComboNtpSrv->text(i)) serversChanged = false;
105 ntpSrvs.writeEntry( "name", ComboNtpSrv->text(i) ); 104 }
105 if (serversChanged){
106 Config ntpSrvs("/etc/ntpservers",Config::File);
107 ntpSrvs.setGroup("servers");
108 ntpSrvs.writeEntry("count", srvCount);
109 for (int i = 0; i < srvCount; i++){
110 qDebug("ntpSrvs[%i/%i]=%s",i,srvCount,ComboNtpSrv->text(i).latin1());
111 ntpSrvs.setGroup(QString::number(i));
112 ntpSrvs.writeEntry( "name", ComboNtpSrv->text(i) );
113 }
106 } 114 }
107 Config cfg("ntp",Config::User); 115 Config cfg("ntp",Config::User);
108 cfg.setGroup("settings"); 116 cfg.setGroup("settings");
@@ -127,6 +135,19 @@ QString Ntp::getNtpServer()
127 return ComboNtpSrv->currentText(); 135 return ComboNtpSrv->currentText();
128} 136}
129 137
138void Ntp::slotButtonRunNtp()
139{
140 _interactive = true;
141 slotRunNtp();
142}
143
144void Ntp::slotTimerRunNtp()
145{
146 _interactive = false;
147 slotRunNtp();
148}
149
150
130void Ntp::slotRunNtp() 151void Ntp::slotRunNtp()
131{ 152{
132 if ( !ntpDelayElapsed() && CheckBoxAdvSettings->isChecked() ) 153 if ( !ntpDelayElapsed() && CheckBoxAdvSettings->isChecked() )
@@ -176,14 +197,11 @@ void Ntp::ntpFinished(OProcess *p)
176 qDebug("p->exitStatus() %i",p->exitStatus()); 197 qDebug("p->exitStatus() %i",p->exitStatus());
177 if (p->exitStatus()!=0 || !p->normalExit()) 198 if (p->exitStatus()!=0 || !p->normalExit())
178 { 199 {
179 if ( isVisible() ) { 200 if ( isVisible() && _interactive ){
180 QMessageBox::critical(this, tr("ntp error"), 201 QMessageBox::critical(this, tr("ntp error"),tr("Error while getting time form\n server")+getNtpServer()+"\n"+_ntpOutput );
181 tr("Error while getting time form\n server")+ 202 TabWidgetMain->showPage( tabManualSetTime );
182 getNtpServer()+"\n"+
183 _ntpOutput );
184 TabWidgetMain->showPage( tabManualSetTime );
185 } 203 }
186 204
187 return; 205 return;
188 } 206 }
189 207
@@ -303,14 +321,14 @@ void Ntp::slotCheckNtp(int i)
303 { 321 {
304 TextLabelMainPredTime->hide(); 322 TextLabelMainPredTime->hide();
305 ButtonSetTime->setText( tr("Get time from network") ); 323 ButtonSetTime->setText( tr("Get time from network") );
306 connect( ButtonSetTime, SIGNAL(clicked()), SLOT(slotRunNtp()) ); 324 connect( ButtonSetTime, SIGNAL(clicked()), SLOT(slotButtonRunNtp()) );
307 if ( ntpDelayElapsed() ) 325 if ( ntpDelayElapsed() )
308 { 326 {
309 slotRunNtp(); 327 slotRunNtp();
310 disconnect(ntpTimer, SIGNAL( timeout() ), this, SLOT(slotProbeNtpServer()) ); 328 disconnect(ntpTimer, SIGNAL( timeout() ), this, SLOT(slotProbeNtpServer()) );
311 connect(ntpTimer, SIGNAL( timeout() ), SLOT(slotRunNtp()) ); 329 connect(ntpTimer, SIGNAL( timeout() ), SLOT(slotTimerRunNtp()) );
312 }else{ 330 }else{
313 disconnect(ntpTimer, SIGNAL( timeout() ), this, SLOT(slotRunNtp()) ); 331 disconnect(ntpTimer, SIGNAL( timeout() ), this, SLOT(slotTimerRunNtp()) );
314 connect(ntpTimer, SIGNAL( timeout() ), SLOT(slotProbeNtpServer()) ); 332 connect(ntpTimer, SIGNAL( timeout() ), SLOT(slotProbeNtpServer()) );
315 } 333 }
316 }else{ 334 }else{
@@ -354,6 +372,7 @@ void Ntp::receive(const QCString &msg, const QByteArray &arg)
354 qDebug("QCop(Ntp) "+msg+" "+QCString(arg)); 372 qDebug("QCop(Ntp) "+msg+" "+QCString(arg));
355 if ( msg == "ntpLookup(QString)" ) 373 if ( msg == "ntpLookup(QString)" )
356 { 374 {
375 _interactive = false;
357 slotRunNtp(); 376 slotRunNtp();
358 } 377 }
359 if ( msg == "setPredictedTime(QString)" ) 378 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
@@ -32,13 +32,15 @@ private:
32 QTimer *ntpTimer; 32 QTimer *ntpTimer;
33 QSocket *ntpSock; 33 QSocket *ntpSock;
34 QCopChannel *channel; 34 QCopChannel *channel;
35 35 bool _interactive;
36 float getTimeShift(); 36 float getTimeShift();
37 void readLookups(); 37 void readLookups();
38 void ntpOutPut(QString); 38 void ntpOutPut(QString);
39 bool ntpDelayElapsed(); 39 bool ntpDelayElapsed();
40 QString getNtpServer(); 40 QString getNtpServer();
41private slots: 41private slots:
42 void slotTimerRunNtp();
43 void slotButtonRunNtp();
42 void slotRunNtp(); 44 void slotRunNtp();
43 void getNtpOutput(OProcess *proc, char *buffer, int buflen); 45 void getNtpOutput(OProcess *proc, char *buffer, int buflen);
44 void ntpFinished(OProcess*); 46 void ntpFinished(OProcess*);