-rw-r--r-- | noncore/settings/netsystemtime/ntp.cpp | 60 | ||||
-rw-r--r-- | noncore/settings/netsystemtime/ntpbase.ui | 327 | ||||
-rw-r--r-- | noncore/settings/netsystemtime/settime.cpp | 12 |
3 files changed, 266 insertions, 133 deletions
diff --git a/noncore/settings/netsystemtime/ntp.cpp b/noncore/settings/netsystemtime/ntp.cpp index b2f192a..52fc6be 100644 --- a/noncore/settings/netsystemtime/ntp.cpp +++ b/noncore/settings/netsystemtime/ntp.cpp @@ -5,8 +5,9 @@ #include <qlabel.h> #include <qsocket.h> #include <qlineedit.h> #include <qspinbox.h> +#include <qmessagebox.h> #include <qmultilineedit.h> #include <opie/oprocess.h> #include <qpe/config.h> #include <qpe/global.h> @@ -25,10 +26,10 @@ 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); - SpinBoxMinDelay->setValue( cfg.readNumEntry("minLookupDiff",10) ); - SpinBoxMinDelay->setMinValue( 7 ); + SpinBoxMinLookupDelay->setValue( cfg.readNumEntry("minLookupDiff",60) ); + SpinBoxNtpDelay->setValue( cfg.readNumEntry("ntpRefreshFreq",60) ); LineEditNtpSrv->setText( cfg.readEntry("ntpServer", tr("time.fu-berlin.de")) ); ntpProcess = new OProcess( ); QSocket *ntpSock = new QSocket( this ); @@ -51,14 +52,33 @@ Ntp::~Ntp() { Config cfg("ntp",Config::User); cfg.setGroup("settings"); cfg.writeEntry("ntpServer", LineEditNtpSrv->text()); - cfg.writeEntry( "minLookupDiff", SpinBoxMinDelay->value() ); + cfg.writeEntry( "minLookupDiff", SpinBoxMinLookupDelay->value() ); + cfg.writeEntry( "ntpRefreshFreq", SpinBoxNtpDelay->value() ); } void Ntp::slotRunNtp() { + Config cfg("ntp",Config::User); + cfg.setGroup("lookups"); + int lookupDiff = TimeConversion::toUTC(QDateTime::currentDateTime()) - cfg.readNumEntry("time",0); + + if ( lookupDiff < SpinBoxNtpDelay->value()*60 ) + { + switch ( + 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?"), + QMessageBox::Ok,QMessageBox::Cancel) + ) { + case QMessageBox::Ok: break; + case QMessageBox::Cancel: return; + default: return; + } + } TextLabelStartTime->setText(QDateTime::currentDateTime().toString()); ntpProcess->clearArguments(); *ntpProcess << "ntpdate" << LineEditNtpSrv->text(); bool ret = ntpProcess->start(OProcess::NotifyOnExit,OProcess::AllOutput); @@ -94,9 +114,10 @@ void Ntp::ntpFinished(OProcess*) float timeShift = getTimeShift(); if (timeShift == 0.0) return; int secsSinceLast = time - lastLookup; TextLabelNewTime->setText(QDateTime::currentDateTime().toString()); - if ( lastLookup > 0 && secsSinceLast > 60*24* SpinBoxMinDelay->value()) + 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)); @@ -107,30 +128,8 @@ void Ntp::ntpFinished(OProcess*) cfg.writeEntry("timeShift",QString::number(timeShift)); } } -//void Ntp::correctClock() -//{ -// qDebug("current time: %s",QDateTime::currentDateTime().toString().latin1()); -// Config cfg("ntp",Config::User); -// cfg.setGroup("correction"); -// int lastTime = cfg.readNumEntry("time",0); -// if ( lastTime == 0 ) -// { -// return; -// } -// int now = TimeConversion::toUTC( QDateTime::currentDateTime() ); -// int corr = int((now - lastTime) * _shiftPerSec); -// struct timeval myTv; -// myTv.tv_sec = TimeConversion::toUTC( QDateTime::currentDateTime().addSecs(corr) ); -// myTv.tv_usec = 0; -// -// if ( myTv.tv_sec != -1 ) -// ::settimeofday( &myTv, 0 ); -// Global::writeHWClock(); -// cfg.writeEntry("time",now); -// qDebug("current time: %s",QDateTime::currentDateTime().toString().latin1()); -//} float Ntp::getTimeShift() { QString _offset = "offset"; @@ -142,9 +141,8 @@ float Ntp::getTimeShift() posOffset += _offset.length() + 1; QString diff = _ntpOutput.mid(posOffset, posEndOffset-posOffset-1); qDebug("%s", _ntpOutput.latin1()); qDebug("diff = >%s<",diff.latin1()); - TextLabelTimeShift->setText(diff); return diff.toFloat(); } void Ntp::readLookups() @@ -163,8 +161,10 @@ void Ntp::readLookups() qDebug("column width %i",cw); TableLookups->setColumnWidth( 0, cw+30 ); TableLookups->setColumnWidth( 1, cw ); TableLookups->setColumnWidth( 2, cw ); + TableLookups->sortColumn(0, false, true ); + // TableLookups->setSorting( true ); for (int i=0; i < lookupCount; i++) { cfg.setGroup("lookup_"+QString::number(i)); last = cfg.readEntry("secsSinceLast",0).toFloat(); @@ -177,9 +177,9 @@ void Ntp::readLookups() TableLookups->setText( i,2,QString::number(shift)); TableLookups->setText( i,1,QString::number(last)); } _shiftPerSec /= lookupCount+1; - TextLabelShift->setText(QString::number(_shiftPerSec)); + TextLabelShift->setText(QString::number(_shiftPerSec)+tr(" seconds")); } void Ntp::preditctTime() { @@ -191,9 +191,9 @@ void Ntp::preditctTime() int now = TimeConversion::toUTC( QDateTime::currentDateTime() ); int corr = int((now - lastTime) * _shiftPerSec); predictedTime = QDateTime::currentDateTime().addSecs(corr); TextLabelPredTime->setText(predictedTime.toString()); - TextLabelMainPredTime->setText(predictedTime.toString()); + TextLabelMainPredTime->setText(tr("Predicted time:")+"<br><b>"+predictedTime.toString()+"</b>"); } void Ntp::setPredictTime() { @@ -209,8 +209,8 @@ void Ntp::slotCheckNtp(int i) ButtonSetTime->setText( tr("Get time from network") ); connect( ButtonSetTime, SIGNAL(clicked()), SLOT(slotRunNtp()) ); }else{ preditctTime(); - ButtonSetTime->setText( tr("Predict time") ); + ButtonSetTime->setText( tr("Set predicted time") ); connect( ButtonSetTime, SIGNAL(clicked()), SLOT(setPredictTime()) ); }; } diff --git a/noncore/settings/netsystemtime/ntpbase.ui b/noncore/settings/netsystemtime/ntpbase.ui index e444065..8d32849 100644 --- a/noncore/settings/netsystemtime/ntpbase.ui +++ b/noncore/settings/netsystemtime/ntpbase.ui @@ -10,10 +10,10 @@ <name>geometry</name> <rect> <x>0</x> <y>0</y> - <width>276</width> - <height>337</height> + <width>330</width> + <height>419</height> </rect> </property> <property stdset="1"> <name>caption</name> @@ -31,9 +31,9 @@ <number>2</number> </property> <property stdset="1"> <name>spacing</name> - <number>1</number> + <number>2</number> </property> <widget row="0" column="0" > <class>QTabWidget</class> <property stdset="1"> @@ -58,13 +58,13 @@ </attribute> <grid> <property stdset="1"> <name>margin</name> - <number>3</number> + <number>2</number> </property> <property stdset="1"> <name>spacing</name> - <number>3</number> + <number>2</number> </property> <widget row="0" column="0" > <class>QFrame</class> <property stdset="1"> @@ -94,13 +94,13 @@ </attribute> <grid> <property stdset="1"> <name>margin</name> - <number>3</number> + <number>1</number> </property> <property stdset="1"> <name>spacing</name> - <number>3</number> + <number>2</number> </property> <widget row="1" column="0" > <class>QPushButton</class> <property stdset="1"> @@ -128,16 +128,19 @@ </property> <property> <name>layoutMargin</name> </property> + <property> + <name>layoutSpacing</name> + </property> <grid> <property stdset="1"> <name>margin</name> - <number>11</number> + <number>2</number> </property> <property stdset="1"> <name>spacing</name> - <number>6</number> + <number>2</number> </property> <widget row="0" column="0" > <class>QLayoutWidget</class> <property stdset="1"> @@ -252,11 +255,21 @@ <name>name</name> <cstring>MultiLineEditntpOutPut</cstring> </property> <property stdset="1"> + <name>font</name> + <font> + <pointsize>7</pointsize> + </font> + </property> + <property stdset="1"> <name>wordWrap</name> <enum>WidgetWidth</enum> </property> + <property stdset="1"> + <name>text</name> + <string></string> + </property> </widget> </grid> </widget> </grid> @@ -381,13 +394,13 @@ </attribute> <grid> <property stdset="1"> <name>margin</name> - <number>3</number> + <number>2</number> </property> <property stdset="1"> <name>spacing</name> - <number>3</number> + <number>2</number> </property> <widget row="0" column="0" > <class>QFrame</class> <property stdset="1"> @@ -401,16 +414,22 @@ <property stdset="1"> <name>frameShadow</name> <enum>Raised</enum> </property> + <property> + <name>layoutMargin</name> + </property> + <property> + <name>layoutSpacing</name> + </property> <grid> <property stdset="1"> <name>margin</name> - <number>11</number> + <number>3</number> </property> <property stdset="1"> <name>spacing</name> - <number>6</number> + <number>11</number> </property> <widget row="0" column="0" > <class>QLayoutWidget</class> <property stdset="1"> @@ -425,109 +444,219 @@ <property stdset="1"> <name>spacing</name> <number>6</number> </property> - <spacer row="2" column="0" > + <widget row="0" column="0" > + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>TextLabel7_2</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Use</string> + </property> + </widget> + <widget row="0" column="2" > + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>TextLabel2_2</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>as</string> + </property> + </widget> + <widget row="1" column="0" rowspan="1" colspan="2" > + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>TextLabel1_3</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>NTP server to get the time from the network.</string> + </property> + <property stdset="1"> + <name>alignment</name> + <set>WordBreak|AlignVCenter|AlignLeft</set> + </property> <property> + <name>wordwrap</name> + </property> + </widget> + <widget row="0" column="1" > + <class>QLineEdit</class> + <property stdset="1"> <name>name</name> - <cstring>Spacer2</cstring> + <cstring>LineEditNtpSrv</cstring> </property> + </widget> + </grid> + </widget> + <spacer row="3" column="0" > + <property> + <name>name</name> + <cstring>Spacer2</cstring> + </property> + <property stdset="1"> + <name>orientation</name> + <enum>Vertical</enum> + </property> + <property stdset="1"> + <name>sizeType</name> + <enum>Expanding</enum> + </property> + <property> + <name>sizeHint</name> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget row="2" column="0" > + <class>QLayoutWidget</class> + <property stdset="1"> + <name>name</name> + <cstring>Layout7</cstring> + </property> + <grid> + <property stdset="1"> + <name>margin</name> + <number>0</number> + </property> + <property stdset="1"> + <name>spacing</name> + <number>6</number> + </property> + <widget row="0" column="0" > + <class>QLabel</class> <property stdset="1"> - <name>orientation</name> - <enum>Vertical</enum> + <name>name</name> + <cstring>TextLabel1_2</cstring> </property> <property stdset="1"> - <name>sizeType</name> - <enum>Expanding</enum> + <name>text</name> + <string>Insure a delay of</string> + </property> + </widget> + <widget row="0" column="2" > + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>TextLabel2</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>minutes until</string> + </property> + </widget> + <widget row="1" column="0" rowspan="1" colspan="3" > + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>TextLabel3_3</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>a new NTP lookup will be used to predict the time.</string> + </property> + <property stdset="1"> + <name>alignment</name> + <set>WordBreak|AlignVCenter|AlignLeft</set> </property> <property> - <name>sizeHint</name> - <size> - <width>20</width> - <height>20</height> - </size> + <name>wordwrap</name> </property> - </spacer> - <widget row="1" column="0" > - <class>QLayoutWidget</class> + </widget> + <widget row="0" column="1" > + <class>QSpinBox</class> <property stdset="1"> <name>name</name> - <cstring>Layout6</cstring> - </property> - <hbox> - <property stdset="1"> - <name>margin</name> - <number>0</number> - </property> - <property stdset="1"> - <name>spacing</name> - <number>6</number> - </property> - <widget> - <class>QLabel</class> - <property stdset="1"> - <name>name</name> - <cstring>TextLabel7_2</cstring> - </property> - <property stdset="1"> - <name>text</name> - <string>NTP Server:</string> - </property> - </widget> - <widget> - <class>QLineEdit</class> - <property stdset="1"> - <name>name</name> - <cstring>LineEditNtpSrv</cstring> - </property> - </widget> - </hbox> + <cstring>SpinBoxMinLookupDelay</cstring> + </property> + <property stdset="1"> + <name>maxValue</name> + <number>9999999</number> + </property> + <property stdset="1"> + <name>minValue</name> + <number>42</number> + </property> </widget> + </grid> + </widget> + <widget row="1" column="0" > + <class>QLayoutWidget</class> + <property stdset="1"> + <name>name</name> + <cstring>Layout7_2</cstring> + </property> + <grid> + <property stdset="1"> + <name>margin</name> + <number>0</number> + </property> + <property stdset="1"> + <name>spacing</name> + <number>6</number> + </property> <widget row="0" column="0" > - <class>QLayoutWidget</class> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>TextLabel1_2_2</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Wait for</string> + </property> + </widget> + <widget row="0" column="2" > + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>TextLabel2_3</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>minutes until</string> + </property> + </widget> + <widget row="1" column="0" rowspan="1" colspan="3" > + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>TextLabel3_3_2</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>NTP syncronises the clock with the network</string> + </property> + <property stdset="1"> + <name>alignment</name> + <set>WordBreak|AlignVCenter|AlignLeft</set> + </property> + <property> + <name>wordwrap</name> + </property> + </widget> + <widget row="0" column="1" > + <class>QSpinBox</class> <property stdset="1"> <name>name</name> - <cstring>Layout5</cstring> - </property> - <hbox> - <property stdset="1"> - <name>margin</name> - <number>0</number> - </property> - <property stdset="1"> - <name>spacing</name> - <number>6</number> - </property> - <widget> - <class>QLabel</class> - <property stdset="1"> - <name>name</name> - <cstring>TextLabel1_2</cstring> - </property> - <property stdset="1"> - <name>text</name> - <string>Min. delay:</string> - </property> - </widget> - <widget> - <class>QSpinBox</class> - <property stdset="1"> - <name>name</name> - <cstring>SpinBoxMinDelay</cstring> - </property> - </widget> - <widget> - <class>QLabel</class> - <property stdset="1"> - <name>name</name> - <cstring>TextLabel2</cstring> - </property> - <property stdset="1"> - <name>text</name> - <string>minutes</string> - </property> - </widget> - </hbox> + <cstring>SpinBoxNtpDelay</cstring> + </property> + <property stdset="1"> + <name>maxValue</name> + <number>9999999</number> + </property> + <property stdset="1"> + <name>minValue</name> + <number>0</number> + </property> </widget> </grid> </widget> </grid> diff --git a/noncore/settings/netsystemtime/settime.cpp b/noncore/settings/netsystemtime/settime.cpp index b456012..2398c08 100644 --- a/noncore/settings/netsystemtime/settime.cpp +++ b/noncore/settings/netsystemtime/settime.cpp @@ -260,18 +260,18 @@ void SetDateTime::setTime(QDateTime dt) if ( myTv.tv_sec != -1 ) ::settimeofday( &myTv, 0 ); Global::writeHWClock(); + // since time has changed quickly load in the datebookdb + // 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::updateSystem(int i) { qDebug("SetDateTime::updateSystem(int %i)",i); writeSettings(); - // since time has changed quickly load in the datebookdb - // 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; // set the timezone for everyone else... QCopEnvelope setTimeZone( "QPE/System", "timeChange(QString)" ); setTimeZone << tz->currentZone(); @@ -290,8 +290,12 @@ void SetDateTime::updateSystem(int i) // Restore screensaver QCopEnvelope enableScreenSaver( "QPE/System", "setScreenSaverIntervals(int,int,int)" ); enableScreenSaver << -1 << -1 << -1; + // since time has changed quickly load in the datebookdb + // 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 ) |