summaryrefslogtreecommitdiff
authortille <tille>2003-01-29 10:09:50 (UTC)
committer tille <tille>2003-01-29 10:09:50 (UTC)
commit59a67d792570e231d2de14cee78ff75fa79453ec (patch) (side-by-side diff)
tree5155aa2a954b6c68d07c69da8dcf495c4bcd45cc
parented9991ab41fcf7c8d592796d083d932c44c4a723 (diff)
downloadopie-59a67d792570e231d2de14cee78ff75fa79453ec.zip
opie-59a67d792570e231d2de14cee78ff75fa79453ec.tar.gz
opie-59a67d792570e231d2de14cee78ff75fa79453ec.tar.bz2
fix for adv tab
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/settings/netsystemtime/ntp.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/noncore/settings/netsystemtime/ntp.cpp b/noncore/settings/netsystemtime/ntp.cpp
index 06d944d..aecefc1 100644
--- a/noncore/settings/netsystemtime/ntp.cpp
+++ b/noncore/settings/netsystemtime/ntp.cpp
@@ -201,239 +201,241 @@ void Ntp::getNtpOutput(OProcess *proc, char *buffer, int buflen)
void Ntp::ntpFinished(OProcess *p)
{
qDebug("p->exitStatus() %i",p->exitStatus());
if (p->exitStatus()!=0 || !p->normalExit())
{
if ( isVisible() && _interactive ){
QMessageBox::critical(this, tr("ntp error"),tr("Error while getting time form\n server")+getNtpServer()+"\n"+_ntpOutput );
}
// slotCheckNtp(-1);
return;
}
Config cfg("ntp",Config::User);
cfg.setGroup("lookups");
int lastLookup = cfg.readNumEntry("time",0);
int lookupCount = cfg.readNumEntry("count",0);
bool lastNtp = cfg.readBoolEntry("lastNtp",false);
int time = TimeConversion::toUTC( QDateTime::currentDateTime() );
cfg.writeEntry("time", time);
float timeShift = getTimeShift();
if (timeShift == 0.0) return;
int secsSinceLast = time - lastLookup;
TextLabelNewTime->setText(QDateTime::currentDateTime().toString());
TextLabelTimeShift->setText(QString::number(timeShift)+tr(" seconds"));
if ( lastNtp && lastLookup > 0 && secsSinceLast > 60* SpinBoxMinLookupDelay->value())
{
cfg.setGroup("lookup_"+QString::number(lookupCount));
lookupCount++;
_shiftPerSec = timeShift / secsSinceLast;
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));
cfg.setGroup("lookups");
cfg.writeEntry("count",lookupCount);
cfg.writeEntry("lastNtp",true);
}
}
float Ntp::getTimeShift()
{
QString _offset = "offset";
QString _sec = "sec";
QRegExp _reOffset = QRegExp(_offset);
QRegExp _reEndOffset = QRegExp(_sec);
int posOffset = _reOffset.match( _ntpOutput );
int posEndOffset = _reEndOffset.match( _ntpOutput, posOffset );
posOffset += _offset.length() + 1;
QString diff = _ntpOutput.mid(posOffset, posEndOffset-posOffset-1);
qDebug("%s", _ntpOutput.latin1());
qDebug("diff = >%s<",diff.latin1());
return diff.toFloat();
}
void Ntp::readLookups()
{
Config cfg("ntp",Config::User);
cfg.setGroup("lookups");
int lookupCount = cfg.readNumEntry("count",0);
float last, shift, shiftPerSec;
qDebug("lookupCount = %i",lookupCount);
TableLookups->setNumCols( 3 );
TableLookups->setNumRows( lookupCount);
TableLookups->horizontalHeader()->setLabel(1,tr("last [h]"));
TableLookups->horizontalHeader()->setLabel(2,tr("offset [s]"));
TableLookups->horizontalHeader()->setLabel(0,tr("shift [s/h]"));
int cw = TableLookups->width()/4;
qDebug("column width %i",cw);
cw = 50;
TableLookups->setColumnWidth( 0, cw+30 );
TableLookups->setColumnWidth( 1, cw );
TableLookups->setColumnWidth( 2, cw );
TableLookups->sortColumn(0, false, true );
// TableLookups->setSorting( true );
_shiftPerSec = 0;
for (int i=0; i < lookupCount; i++)
{
cfg.setGroup("lookup_"+QString::number(i));
last = cfg.readEntry("secsSinceLast",0).toFloat();
shift = QString(cfg.readEntry("timeShift",0)).toFloat();
shiftPerSec = shift / last;
qDebug("%i shift %f",i,shiftPerSec);
_shiftPerSec += shiftPerSec;
TableLookups->setText( i,0,QString::number(shiftPerSec*60*60));
TableLookups->setText( i,2,QString::number(shift));
TableLookups->setText( i,1,QString::number(last/(60*60)));
}
_shiftPerSec /= lookupCount;
TextLabelShift->setText(QString::number(_shiftPerSec*60*60)+tr(" s/h"));
}
void Ntp::preditctTime()
{
Config cfg("ntp",Config::User);
cfg.setGroup("lookups");
int lastTime = cfg.readNumEntry("time",0);
cfg.writeEntry("lastNtp",true);
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);
TextLabelPredTime->setText(predictedTime.toString());
// TextLabelMainPredTime->setText(tr("Predicted time:")+"<br><b>"+predictedTime.toString()+"</b>");
}
void Ntp::setPredictTime()
{
qDebug("Ntp::setPredictTime");
preditctTime();
timeButton->setTime( predictedTime );
}
void Ntp::slotCheckNtp(int i)
{
qDebug(" Ntp::slotCheckNtp(%i)",i);
if (i == 0)
{
// TextLabelMainPredTime->hide();
ButtonSetTime->setText( tr("Get time from network") );
connect( ButtonSetTime, SIGNAL(clicked()), SLOT(slotButtonRunNtp()) );
if ( ntpDelayElapsed() )
{
slotRunNtp();
disconnect(ntpTimer, SIGNAL( timeout() ), this, SLOT(slotProbeNtpServer()) );
connect(ntpTimer, SIGNAL( timeout() ), SLOT(slotTimerRunNtp()) );
}else{
disconnect(ntpTimer, SIGNAL( timeout() ), this, SLOT(slotTimerRunNtp()) );
connect(ntpTimer, SIGNAL( timeout() ), SLOT(slotProbeNtpServer()) );
}
}else{
preditctTime();
ButtonSetTime->setText( tr("Set predicted time: ")+predictedTime.toString() );
if (i>0)ntpOutPut(tr("Could not connect to server ")+getNtpServer());
connect( ButtonSetTime, SIGNAL(clicked()), SLOT(setPredictTime()) );
connect( ntpTimer, SIGNAL( timeout() ), SLOT(slotProbeNtpServer()) );
}
}
void Ntp::slotProbeNtpServer()
{
ntpSock->connectToHost( getNtpServer() ,123);
}
void Ntp::slotNtpDelayChanged(int delay)
{
ntpTimer->changeInterval( delay*1000*60 );
}
void Ntp::ntpOutPut(QString out)
{
MultiLineEditntpOutPut->append(out);
MultiLineEditntpOutPut->setCursorPosition(MultiLineEditntpOutPut->numLines() + 1,0,FALSE);
}
void Ntp::makeChannel()
{
channel = new QCopChannel( "QPE/Application/netsystemtime", this );
connect( channel, SIGNAL(received(const QCString&, const QByteArray&)),
this, SLOT(receive(const QCString&, const QByteArray&)) );
}
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)" )
{
setPredictTime();
}else{
qDebug("Ntp::receive: Huh what do ya want");
}
}
void Ntp::setDocument(const QString &fileName)
{
qDebug("Ntp::setDocument( %s )",fileName.latin1());
}
void Ntp::showAdvancedFeatures(bool advMode)
{
if (advMode) {
+ if ( tabNtp->isVisible() ) {
TabWidgetMain->addTab( tabPredict, tr( "Predict" ) );
TabWidgetMain->addTab( tabNtp, tr( "NTP" ) );
+ }
TextLabel1_2_2->show();
TextLabel2_3->show();
TextLabel3_3_2->show();
TextLabel1_2->show();
SpinBoxMinLookupDelay->show();
TextLabel2->show();
TextLabel3_3->show();
SpinBoxNtpDelay->show();
Line1->show();
}else{
TabWidgetMain->removePage( tabPredict );
TabWidgetMain->removePage( tabNtp );
TextLabel1_2_2->hide();
TextLabel2_3->hide();
TextLabel3_3_2->hide();
TextLabel1_2->hide();
SpinBoxMinLookupDelay->hide();
TextLabel2->hide();
TextLabel3_3->hide();
SpinBoxNtpDelay->hide();
Line1->hide();
};
TabWidgetMain->show();
}
void Ntp::accept( ){
qDebug("saving");
//SetTimeDate
commitTime();
writeSettings();
updateSystem();
// Ntp
saveConfig();
qApp->quit();
}
void Ntp::reject( ){
qDebug("_oldTimeZone %s",_oldTimeZone.latin1());
if (!_oldTimeZone.isEmpty()){
qDebug("reverting timezone");
tzChange(_oldTimeZone);
commitTime();
}
}