summaryrefslogtreecommitdiff
authortille <tille>2002-06-26 16:24:42 (UTC)
committer tille <tille>2002-06-26 16:24:42 (UTC)
commite9b05e2b93bf000777ae1c55e7d5cac35a67145d (patch) (side-by-side diff)
tree11848aecc3f8ee23fd71d84cb7b821090bad19dc
parent97e2050f5880cb27d2cd028ed61eef1dc59d1ad1 (diff)
downloadopie-e9b05e2b93bf000777ae1c55e7d5cac35a67145d.zip
opie-e9b05e2b93bf000777ae1c55e7d5cac35a67145d.tar.gz
opie-e9b05e2b93bf000777ae1c55e7d5cac35a67145d.tar.bz2
timer working
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/netsystemtime/ntp.cpp58
-rw-r--r--noncore/settings/netsystemtime/ntp.h4
-rw-r--r--noncore/settings/netsystemtime/ntpbase.ui4
-rw-r--r--noncore/settings/netsystemtime/opie-netsystemtime.control2
-rw-r--r--noncore/settings/netsystemtime/settime.cpp2
5 files changed, 41 insertions, 29 deletions
diff --git a/noncore/settings/netsystemtime/ntp.cpp b/noncore/settings/netsystemtime/ntp.cpp
index 364609d..bcbf7a1 100644
--- a/noncore/settings/netsystemtime/ntp.cpp
+++ b/noncore/settings/netsystemtime/ntp.cpp
@@ -39,17 +39,17 @@ Ntp::Ntp( QWidget* parent, const char* name, WFlags fl )
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);
- ntpTimer->start(SpinBoxNtpDelay->value()*100);
+ ntpTimer->start(SpinBoxNtpDelay->value()*1000*60);
ntpProcess = new OProcess( );
connect( SpinBoxNtpDelay, SIGNAL( valueChanged(int) ),
SLOT(slotNtpDelayChanged(int)) );
ntpSock = new QSocket( this );
connect( ntpSock, SIGNAL( error(int) ),
SLOT(slotCheckNtp(int)) );
@@ -80,55 +80,64 @@ Ntp::~Ntp()
}
Config cfg("ntp",Config::User);
cfg.setGroup("settings");
cfg.writeEntry("ntpServer", ComboNtpSrv->currentItem());
cfg.writeEntry( "minLookupDiff", SpinBoxMinLookupDelay->value() );
cfg.writeEntry( "ntpRefreshFreq", SpinBoxNtpDelay->value() );
}
-
-void Ntp::slotRunNtp()
+bool Ntp::ntpDelayElapsed()
{
Config cfg("ntp",Config::User);
cfg.setGroup("lookups");
- int lookupDiff = TimeConversion::toUTC(QDateTime::currentDateTime()) - cfg.readNumEntry("time",0);
+ _lookupDiff = TimeConversion::toUTC(QDateTime::currentDateTime()) - cfg.readNumEntry("time",0);
+ return (_lookupDiff - (SpinBoxNtpDelay->value()*60)) > -60;
+}
- if ( lookupDiff < SpinBoxNtpDelay->value()*60 )
+QString Ntp::getNtpServer()
+{
+ return ComboNtpSrv->currentText();
+}
+
+void Ntp::slotRunNtp()
+{
+ if ( !ntpDelayElapsed() )
{
switch (
- QMessageBox::warning(this, tr("Run ntp?"),
+ QMessageBox::warning(this, tr("Run NTP?"),
tr("You asked for a delay of ")+SpinBoxNtpDelay->text()+tr(" minutes, but only ")+
- QString::number(lookupDiff%60)+tr(" minutes elapsed since last loopup.")+
- "<br>"+tr("Rerun ntp?"),
+ QString::number(_lookupDiff/60)+tr(" minutes elapsed since last loopup.")+
+ "<br>"+tr("Rerun NTP?"),
QMessageBox::Ok,QMessageBox::Cancel)
) {
case QMessageBox::Ok: break;
case QMessageBox::Cancel: return;
default: return;
}
}
TextLabelStartTime->setText(QDateTime::currentDateTime().toString());
- MultiLineEditntpOutPut->append( "\n"+tr("Running:")+"\nntpdate "+ ComboNtpSrv->currentText()+"\n");
+ ntpOutPut( tr("Running:")+"\nntpdate "+getNtpServer() );
ntpProcess->clearArguments();
- *ntpProcess << "ntpdate" << ComboNtpSrv->currentText();
+ *ntpProcess << "ntpdate" << getNtpServer();
bool ret = ntpProcess->start(OProcess::NotifyOnExit,OProcess::AllOutput);
if ( !ret ) {
- qDebug("Error while executing ntp");
+ qDebug("Error while executing ntpdate");
+ ntpOutPut( tr("Error while executing ntpdate"));
}
}
void Ntp::getNtpOutput(OProcess *proc, char *buffer, int buflen)
{
QString lineStr, lineStrOld;
lineStr = buffer;
lineStr=lineStr.left(buflen);
if (lineStr!=lineStrOld)
{
- MultiLineEditntpOutPut->append(lineStr);
+ ntpOutPut(lineStr);
_ntpOutput += lineStr;
}
lineStrOld = lineStr;
}
void Ntp::ntpFinished(OProcess*)
{
Config cfg("ntp",Config::User);
@@ -146,17 +155,16 @@ void Ntp::ntpFinished(OProcess*)
TextLabelNewTime->setText(QDateTime::currentDateTime().toString());
TextLabelTimeShift->setText(QString::number(timeShift)+tr(" seconds"));
if ( lastLookup > 0 && secsSinceLast > 60* SpinBoxMinLookupDelay->value())
{
lookupCount++;
cfg.writeEntry("count",lookupCount);
cfg.setGroup("lookup_"+QString::number(lookupCount));
_shiftPerSec = timeShift / secsSinceLast;
-// float nextCorr = _maxOffset / _shiftPerSec;
qDebug("secs since last lookup %i", secsSinceLast);qDebug("timeshift since last lookup %f", timeShift);qDebug("timeshift since per sec %f", _shiftPerSec);
cfg.writeEntry("secsSinceLast",secsSinceLast);
cfg.writeEntry("timeShift",QString::number(timeShift));
}
}
float Ntp::getTimeShift()
@@ -207,17 +215,16 @@ void Ntp::readLookups()
TableLookups->setText( i,1,QString::number(last));
}
_shiftPerSec /= lookupCount+1;
TextLabelShift->setText(QString::number(_shiftPerSec)+tr(" seconds"));
}
void Ntp::preditctTime()
{
- qDebug("current time: %s",QDateTime::currentDateTime().toString().latin1());
Config cfg("ntp",Config::User);
cfg.setGroup("lookups");
int lastTime = cfg.readNumEntry("time",0);
setenv( "TZ", tz->currentZone(), 1 );
int now = TimeConversion::toUTC( QDateTime::currentDateTime() );
int corr = int((now - lastTime) * _shiftPerSec);
TextLabelEstimatedShift->setText(QString::number(corr)+tr(" seconds"));
predictedTime = QDateTime::currentDateTime().addSecs(corr);
@@ -233,40 +240,43 @@ void Ntp::setPredictTime()
void Ntp::slotCheckNtp(int i)
{
if (i == 0)
{
TextLabelMainPredTime->hide();
ButtonSetTime->setText( tr("Get time from network") );
connect( ButtonSetTime, SIGNAL(clicked()), SLOT(slotRunNtp()) );
- Config cfg("ntp",Config::User);
- cfg.setGroup("lookups");
- int lookupDiff = TimeConversion::toUTC(QDateTime::currentDateTime()) - cfg.readNumEntry("time",0);
- if ( lookupDiff > SpinBoxNtpDelay->value()*60 )
+ if ( ntpDelayElapsed() )
{
+ slotRunNtp();
disconnect(ntpTimer, SIGNAL( timeout() ), this, SLOT(slotProbeNtpServer()) );
connect(ntpTimer, SIGNAL( timeout() ), SLOT(slotRunNtp()) );
}else{
disconnect(ntpTimer, SIGNAL( timeout() ), this, SLOT(slotRunNtp()) );
connect(ntpTimer, SIGNAL( timeout() ), SLOT(slotProbeNtpServer()) );
}
}else{
preditctTime();
ButtonSetTime->setText( tr("Set predicted time") );
+ if (i>0)ntpOutPut(tr("Could not connect to server ")+getNtpServer());
connect( ButtonSetTime, SIGNAL(clicked()), SLOT(setPredictTime()) );
connect( ntpTimer, SIGNAL( timeout() ), SLOT(slotProbeNtpServer()) );
}
+// ntpTimer->start(SpinBoxNtpDelay->value()*1000*60);
}
void Ntp::slotProbeNtpServer()
{
- Config cfg("ntp",Config::User);
- cfg.setGroup("lookups");
- int lookupDiff = TimeConversion::toUTC(QDateTime::currentDateTime()) - cfg.readNumEntry("time",0);
- if ( lookupDiff > SpinBoxNtpDelay->value()*60 )
- ntpSock->connectToHost( ComboNtpSrv->currentText() ,123);
+ if ( ntpDelayElapsed() )
+ ntpSock->connectToHost( getNtpServer() ,123);
}
void Ntp::slotNtpDelayChanged(int delay)
{
- ntpTimer->changeInterval( delay*100 );
+ ntpTimer->changeInterval( delay*1000*60 );
+}
+
+void Ntp::ntpOutPut(QString out)
+{
+ MultiLineEditntpOutPut->append(out);
+ MultiLineEditntpOutPut->setCursorPosition(MultiLineEditntpOutPut->numLines() + 1,0,FALSE);
}
diff --git a/noncore/settings/netsystemtime/ntp.h b/noncore/settings/netsystemtime/ntp.h
index 7cc309f..c78dc55 100644
--- a/noncore/settings/netsystemtime/ntp.h
+++ b/noncore/settings/netsystemtime/ntp.h
@@ -18,22 +18,26 @@ public:
protected:
QDateTime predictedTime;
private:
QString _ntpOutput;
float _shiftPerSec;
+ int _lookupDiff;
OProcess *ntpProcess;
QTimer *ntpTimer;
QSocket *ntpSock;
float getTimeShift();
void readLookups();
+ void ntpOutPut(QString);
+ bool ntpDelayElapsed();
+ QString getNtpServer();
private slots:
void slotRunNtp();
void getNtpOutput(OProcess *proc, char *buffer, int buflen);
void ntpFinished(OProcess*);
void preditctTime();
void slotCheckNtp(int);
void setPredictTime();
void slotProbeNtpServer();
diff --git a/noncore/settings/netsystemtime/ntpbase.ui b/noncore/settings/netsystemtime/ntpbase.ui
index 4e10fd2..a83dc93 100644
--- a/noncore/settings/netsystemtime/ntpbase.ui
+++ b/noncore/settings/netsystemtime/ntpbase.ui
@@ -6,18 +6,18 @@
<name>name</name>
<cstring>NtpBase</cstring>
</property>
<property stdset="1">
<name>geometry</name>
<rect>
<x>0</x>
<y>0</y>
- <width>331</width>
- <height>426</height>
+ <width>328</width>
+ <height>411</height>
</rect>
</property>
<property stdset="1">
<name>caption</name>
<string>Network Time</string>
</property>
<property>
<name>layoutMargin</name>
diff --git a/noncore/settings/netsystemtime/opie-netsystemtime.control b/noncore/settings/netsystemtime/opie-netsystemtime.control
index 406d7b0..d3290e9 100644
--- a/noncore/settings/netsystemtime/opie-netsystemtime.control
+++ b/noncore/settings/netsystemtime/opie-netsystemtime.control
@@ -1,9 +1,9 @@
-Files: bin/netsystemtime apps/Settings/ntpdatetime.desktop
+Files: bin/netsystemtime apps/Settings/ntpdatetime.desktop etc/ntpservers
Priority: optional
Section: opie/settings
Depends: ntpdate
Conflicts: opie-systemtime
Maintainer: Patrick S. Vogt <tille@handhelds.org>
Architecture: arm
Version: $QPE_VERSION-$SUB_VERSION
Depends: opie-base ($QPE_VERSION), ntpdate
diff --git a/noncore/settings/netsystemtime/settime.cpp b/noncore/settings/netsystemtime/settime.cpp
index 2398c08..93543cd 100644
--- a/noncore/settings/netsystemtime/settime.cpp
+++ b/noncore/settings/netsystemtime/settime.cpp
@@ -295,17 +295,16 @@ void SetDateTime::updateSystem(int i)
// to allow the alarm server to get a better grip on itself
// (example re-trigger alarms for when we travel back in time)
DateBookDB db;
}
void SetDateTime::tzChange( const QString &tz )
{
- qDebug("SetDateTime::tzChange");
// set the TZ get the time and leave gracefully...
QString strSave;
strSave = getenv( "TZ" );
setenv( "TZ", tz, 1 );
QDate d = QDate::currentDate();
// reset the time.
if ( !strSave.isNull() ) {
@@ -451,17 +450,16 @@ void SetTime::checkedPM( int c )
if ( c == ValuePM )
show_hour += 12;
hour = show_hour;
}
void SetTime::slotTzChange( const QString &tz )
{
- qDebug("SetTime::slotTzChange");
// set the TZ get the time and leave gracefully...
QString strSave;
strSave = getenv( "TZ" );
setenv( "TZ", tz, 1 );
QTime t = QTime::currentTime();
// reset the time.
if ( !strSave.isNull() ) {