summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/netsystemtime/ntp.cpp50
-rw-r--r--noncore/settings/netsystemtime/ntp.h4
-rw-r--r--noncore/settings/netsystemtime/settime.cpp24
-rw-r--r--noncore/settings/netsystemtime/settime.h1
4 files changed, 45 insertions, 34 deletions
diff --git a/noncore/settings/netsystemtime/ntp.cpp b/noncore/settings/netsystemtime/ntp.cpp
index ddb1372..87b20ec 100644
--- a/noncore/settings/netsystemtime/ntp.cpp
+++ b/noncore/settings/netsystemtime/ntp.cpp
@@ -19,34 +19,34 @@
19 19
20Ntp::Ntp( QWidget* parent, const char* name, WFlags fl ) 20Ntp::Ntp( QWidget* parent, const char* name, WFlags fl )
21 : SetDateTime( parent, name, fl ) 21 : SetDateTime( parent, name, fl )
22{ 22{
23 Config cfg("ntp",Config::User); 23 Config cfg("ntp",Config::User);
24 cfg.setGroup("settings"); 24 cfg.setGroup("settings");
25 _maxOffset = cfg.readNumEntry("maxOffset",5); 25 _maxOffset = cfg.readNumEntry("maxOffset",5);
26 _minLookupDiff = cfg.readNumEntry("minLookupDiff",10); 26 _minLookupDiff = cfg.readNumEntry("minLookupDiff",10);
27 LineEditNtpServer->setText( cfg.readEntry("ntpServer") ); 27 LineEditNtpServer->setText( cfg.readEntry("ntpServer") );
28 ntpProcess = new OProcess( ); 28 ntpProcess = new OProcess( );
29 connect ( ntpProcess, SIGNAL(receivedStdout(OProcess*,char*,int)), 29 connect ( ntpProcess, SIGNAL(receivedStdout(OProcess*,char*,int)),
30 this, SLOT(getNtpOutput(OProcess*,char*,int))); 30 this, SLOT(getNtpOutput(OProcess*,char*,int)));
31 connect ( ntpProcess, SIGNAL(processExited(OProcess*)), 31 connect ( ntpProcess, SIGNAL(processExited(OProcess*)),
32 this, SLOT(ntpFinished(OProcess*))); 32 this, SLOT(ntpFinished(OProcess*)));
33 connect(runNtp, SIGNAL(clicked()), this, SLOT(slotRunNtp())); 33 connect(runNtp, SIGNAL(clicked()), this, SLOT(slotRunNtp()));
34 connect(PushButtonPredict, SIGNAL(clicked()), this, SLOT(preditctTime())); 34 connect(PushButtonPredict, SIGNAL(clicked()), this, SLOT(preditctTime()));
35 _nextCorrection = new QTimer( this ); 35 // _nextCorrection = new QTimer( this );
36 connect( _nextCorrection, SIGNAL(timeout()), SLOT(correctClock()) ); 36// connect( _nextCorrection, SIGNAL(timeout()), SLOT(correctClock()) );
37 slotRunNtp(); 37 slotRunNtp();
38 readLookups(); 38 readLookups();
39} 39}
40 40
41Ntp::~Ntp() 41Ntp::~Ntp()
42{ 42{
43 43
44} 44}
45 45
46void Ntp::accept() 46void Ntp::accept()
47{ 47{
48 Config cfg("ntp",Config::User); 48 Config cfg("ntp",Config::User);
49 cfg.setGroup("settings"); 49 cfg.setGroup("settings");
50 cfg.writeEntry("ntpServer", LineEditNtpServer->text()); 50 cfg.writeEntry("ntpServer", LineEditNtpServer->text());
51} 51}
52 52
@@ -70,68 +70,74 @@ void Ntp::getNtpOutput(OProcess *proc, char *buffer, int buflen)
70 if (lineStr!=lineStrOld) 70 if (lineStr!=lineStrOld)
71 { 71 {
72 // outPut->append(lineStr); 72 // outPut->append(lineStr);
73 _ntpOutput += lineStr; 73 _ntpOutput += lineStr;
74 } 74 }
75 lineStrOld = lineStr; 75 lineStrOld = lineStr;
76} 76}
77 77
78void Ntp::ntpFinished(OProcess*) 78void Ntp::ntpFinished(OProcess*)
79{ 79{
80 Config cfg("ntp",Config::User); 80 Config cfg("ntp",Config::User);
81 cfg.setGroup("lookups"); 81 cfg.setGroup("lookups");
82 int lastLookup = cfg.readNumEntry("time",0); 82 int lastLookup = cfg.readNumEntry("time",0);
83 int lookupCount = cfg.readNumEntry("count",-1); 83 int lookupCount = cfg.readNumEntry("count",-1);
84 int time = TimeConversion::toUTC( QDateTime::currentDateTime() ); 84 int time = TimeConversion::toUTC( QDateTime::currentDateTime() );
85 cfg.writeEntry("time", time); 85 cfg.writeEntry("time", time);
86 cfg.setGroup("correction");
87 cfg.writeEntry("time", time);
86 88
87 float timeShift = getTimeShift(); 89 float timeShift = getTimeShift();
88 if (timeShift == 0.0) return; 90 if (timeShift == 0.0) return;
89 int secsSinceLast = time - lastLookup; 91 int secsSinceLast = time - lastLookup;
90 TextLabelNewTime->setText(QDateTime::currentDateTime().toString()); 92 TextLabelNewTime->setText(QDateTime::currentDateTime().toString());
91 if ( lastLookup > 0 && secsSinceLast > 60*_minLookupDiff) 93 if ( lastLookup > 0 && secsSinceLast > 60*_minLookupDiff)
92 { 94 {
93 lookupCount++; 95 lookupCount++;
94 cfg.writeEntry("count",lookupCount); 96 cfg.writeEntry("count",lookupCount);
95 cfg.setGroup("lookup_"+QString::number(lookupCount)); 97 cfg.setGroup("lookup_"+QString::number(lookupCount));
96 _shiftPerSec = timeShift / secsSinceLast; 98 _shiftPerSec = timeShift / secsSinceLast;
97// float nextCorr = _maxOffset / _shiftPerSec; 99// float nextCorr = _maxOffset / _shiftPerSec;
98 qDebug("secs since last lookup %i", secsSinceLast);qDebug("timeshift since last lookup %f", timeShift);qDebug("timeshift since per sec %f", _shiftPerSec); 100 qDebug("secs since last lookup %i", secsSinceLast);qDebug("timeshift since last lookup %f", timeShift);qDebug("timeshift since per sec %f", _shiftPerSec);
99 cfg.writeEntry("secsSinceLast",secsSinceLast); 101 cfg.writeEntry("secsSinceLast",secsSinceLast);
100 cfg.writeEntry("timeShift",QString::number(timeShift)); 102 cfg.writeEntry("timeShift",QString::number(timeShift));
101 } 103 }
102} 104}
103 105
104void Ntp::correctClock() 106//void Ntp::correctClock()
105{ 107//{
106 qDebug("current time: %s",QDateTime::currentDateTime().toString().latin1()); 108 //qDebug("current time: %s",QDateTime::currentDateTime().toString().latin1());
107 Config cfg("ntp",Config::User); 109 //Config cfg("ntp",Config::User);
108 cfg.setGroup("correction"); 110// cfg.setGroup("correction");
109 int lastTime = cfg.readNumEntry("time",0); 111 // int lastTime = cfg.readNumEntry("time",0);
110 int now = TimeConversion::toUTC( QDateTime::currentDateTime() ); 112// if ( lastTime == 0 )
111 int corr = int((now - lastTime) * _shiftPerSec); 113// {
112 struct timeval myTv; 114 // return;
113 myTv.tv_sec = TimeConversion::toUTC( QDateTime::currentDateTime().addSecs(corr) ); 115// }
114 myTv.tv_usec = 0; 116// int now = TimeConversion::toUTC( QDateTime::currentDateTime() );
115 117// int corr = int((now - lastTime) * _shiftPerSec);
116 if ( myTv.tv_sec != -1 ) 118// struct timeval myTv;
117 ::settimeofday( &myTv, 0 ); 119// myTv.tv_sec = TimeConversion::toUTC( QDateTime::currentDateTime().addSecs(corr) );
118 Global::writeHWClock(); 120// myTv.tv_usec = 0;
119 cfg.writeEntry("time",now); 121//
120 qDebug("current time: %s",QDateTime::currentDateTime().toString().latin1()); 122// if ( myTv.tv_sec != -1 )
121} 123// ::settimeofday( &myTv, 0 );
124// Global::writeHWClock();
125// cfg.writeEntry("time",now);
126 //qDebug("current time: %s",QDateTime::currentDateTime().toString().latin1());
127//}
122 128
123float Ntp::getTimeShift() 129float Ntp::getTimeShift()
124{ 130{
125 QString _offset = "offset"; 131 QString _offset = "offset";
126 QString _sec = "sec"; 132 QString _sec = "sec";
127 QRegExp _reOffset = QRegExp(_offset); 133 QRegExp _reOffset = QRegExp(_offset);
128 QRegExp _reEndOffset = QRegExp(_sec); 134 QRegExp _reEndOffset = QRegExp(_sec);
129 int posOffset = _reOffset.match( _ntpOutput ); 135 int posOffset = _reOffset.match( _ntpOutput );
130 int posEndOffset = _reEndOffset.match( _ntpOutput, posOffset ); 136 int posEndOffset = _reEndOffset.match( _ntpOutput, posOffset );
131 posOffset += _offset.length() + 1; 137 posOffset += _offset.length() + 1;
132 QString diff = _ntpOutput.mid(posOffset, posEndOffset-posOffset-1); 138 QString diff = _ntpOutput.mid(posOffset, posEndOffset-posOffset-1);
133 qDebug("%s", _ntpOutput.latin1()); 139 qDebug("%s", _ntpOutput.latin1());
134 qDebug("diff = >%s<",diff.latin1()); 140 qDebug("diff = >%s<",diff.latin1());
135 TextLabelTimeShift->setText(diff); 141 TextLabelTimeShift->setText(diff);
136 return diff.toFloat(); 142 return diff.toFloat();
137} 143}
@@ -166,18 +172,20 @@ void Ntp::readLookups()
166 TableLookups->setText( i,1,QString::number(shift)); 172 TableLookups->setText( i,1,QString::number(shift));
167 TableLookups->setText( i,2,QString::number(last)); 173 TableLookups->setText( i,2,QString::number(last));
168 } 174 }
169 _shiftPerSec /= lookupCount+1; 175 _shiftPerSec /= lookupCount+1;
170 TextLabelShift->setText(QString::number(_shiftPerSec)); 176 TextLabelShift->setText(QString::number(_shiftPerSec));
171} 177}
172 178
173void Ntp::preditctTime() 179void Ntp::preditctTime()
174{ 180{
175 qDebug("current time: %s",QDateTime::currentDateTime().toString().latin1()); 181 qDebug("current time: %s",QDateTime::currentDateTime().toString().latin1());
176 Config cfg("ntp",Config::User); 182 Config cfg("ntp",Config::User);
177 cfg.setGroup("lookups"); 183 cfg.setGroup("lookups");
178 int lastTime = cfg.readNumEntry("time",0); 184 int lastTime = cfg.readNumEntry("time",0);
179 setenv( "TZ", tz->currentZone(), 1 ); 185 setenv( "TZ", tz->currentZone(), 1 );
180 int now = TimeConversion::toUTC( QDateTime::currentDateTime() ); 186 int now = TimeConversion::toUTC( QDateTime::currentDateTime() );
181 int corr = int((now - lastTime) * _shiftPerSec); 187 int corr = int((now - lastTime) * _shiftPerSec);
182 TextLabelPredTime->setText(QDateTime::currentDateTime().addSecs(corr).toString()); 188 QDateTime dt = QDateTime::currentDateTime().addSecs(corr);
189 setTime(dt);
190 TextLabelPredTime->setText(dt.toString());
183} 191}
diff --git a/noncore/settings/netsystemtime/ntp.h b/noncore/settings/netsystemtime/ntp.h
index fc233bf..d2e238d 100644
--- a/noncore/settings/netsystemtime/ntp.h
+++ b/noncore/settings/netsystemtime/ntp.h
@@ -12,30 +12,30 @@ class Ntp : public SetDateTime
12{ 12{
13 Q_OBJECT 13 Q_OBJECT
14 14
15public: 15public:
16 Ntp( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); 16 Ntp( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
17 ~Ntp(); 17 ~Ntp();
18 18
19 OProcess *ntpProcess; 19 OProcess *ntpProcess;
20 20
21protected: 21protected:
22 virtual void accept(); 22 virtual void accept();
23 23
24private: 24private:
25 QString _ntpOutput; 25 QString _ntpOutput;
26 int _maxOffset; 26 int _maxOffset;
27 float _shiftPerSec; 27 float _shiftPerSec;
28 QTimer *_nextCorrection; 28 // QTimer *_nextCorrection;
29 int _minLookupDiff; 29 int _minLookupDiff;
30 30
31 float getTimeShift(); 31 float getTimeShift();
32 void readLookups(); 32 void readLookups();
33private slots: 33private slots:
34 void slotRunNtp(); 34 void slotRunNtp();
35 void getNtpOutput(OProcess *proc, char *buffer, int buflen); 35 void getNtpOutput(OProcess *proc, char *buffer, int buflen);
36 void ntpFinished(OProcess*); 36 void ntpFinished(OProcess*);
37 void correctClock(); 37// void correctClock();
38 void preditctTime(); 38 void preditctTime();
39}; 39};
40 40
41#endif 41#endif
diff --git a/noncore/settings/netsystemtime/settime.cpp b/noncore/settings/netsystemtime/settime.cpp
index dac5bd4..01268c9 100644
--- a/noncore/settings/netsystemtime/settime.cpp
+++ b/noncore/settings/netsystemtime/settime.cpp
@@ -195,66 +195,68 @@ void SetDateTime::accept()
195 config.writeEntry( "MONDAY", weekStartCombo->currentItem() ); 195 config.writeEntry( "MONDAY", weekStartCombo->currentItem() );
196 config.setGroup( "Date" ); 196 config.setGroup( "Date" );
197 DateFormat df = date_formats[dateFormatCombo->currentItem()]; 197 DateFormat df = date_formats[dateFormatCombo->currentItem()];
198 config.writeEntry( "Separator", QString(df.separator())); 198 config.writeEntry( "Separator", QString(df.separator()));
199 config.writeEntry( "ShortOrder", df.shortOrder()); 199 config.writeEntry( "ShortOrder", df.shortOrder());
200 config.writeEntry( "LongOrder", df.longOrder()); 200 config.writeEntry( "LongOrder", df.longOrder());
201 config.writeEntry( "ClockApplet", clockAppletCombo->currentItem() ); 201 config.writeEntry( "ClockApplet", clockAppletCombo->currentItem() );
202 202
203 Config lconfig("locale"); 203 Config lconfig("locale");
204 lconfig.setGroup( "Location" ); 204 lconfig.setGroup( "Location" );
205 lconfig.writeEntry( "Timezone", tz->currentZone() ); 205 lconfig.writeEntry( "Timezone", tz->currentZone() );
206 206
207} 207}
208 208
209void SetDateTime::commitTime() 209void SetDateTime::commitTime()
210{ 210{
211 Config cfg("ntp",Config::User);
212 cfg.setGroup("lookups");
213 int time = TimeConversion::toUTC( QDateTime::currentDateTime() );
214 cfg.writeEntry("time", time);
215 tz->setFocus(); 211 tz->setFocus();
216 // really turn off the screensaver before doing anything 212 // really turn off the screensaver before doing anything
217 { 213 {
218 // Needs to be encased in { } so that it deconstructs and sends 214 // Needs to be encased in { } so that it deconstructs and sends
219 QCopEnvelope disableScreenSaver( "QPE/System", "setScreenSaverIntervals(int,int,int)" ); 215 QCopEnvelope disableScreenSaver( "QPE/System", "setScreenSaverIntervals(int,int,int)" );
220 disableScreenSaver << 0 << 0 << 0; 216 disableScreenSaver << 0 << 0 << 0;
221 } 217 }
222 // Need to process the QCOP event generated above before proceeding 218 // Need to process the QCOP event generated above before proceeding
223 qApp->processEvents(); 219 qApp->processEvents();
224 220
225 // before we progress further, set our TZ! 221 // before we progress further, set our TZ!
226 setenv( "TZ", tz->currentZone(), 1 ); 222 setenv( "TZ", tz->currentZone(), 1 );
227 // now set the time... 223 // now set the time...
228 QDateTime dt( dateButton->date(), timeButton->time() ); 224 QDateTime dt( dateButton->date(), timeButton->time() );
229 225
230 if ( dt.isValid() ) { 226 if ( dt.isValid() ) setTime(dt);
231 struct timeval myTv; 227}
232 myTv.tv_sec = TimeConversion::toUTC( dt ); 228
233 myTv.tv_usec = 0; 229void SetDateTime::setTime(QDateTime dt)
230{
231 Config cfg("ntp",Config::User);
232 cfg.setGroup("correction");
233 int t = TimeConversion::toUTC(dt);
234 struct timeval myTv;
235 myTv.tv_sec = t;
236 cfg.writeEntry("time", t );
237 myTv.tv_usec = 0;
234 238
235 if ( myTv.tv_sec != -1 ) 239 if ( myTv.tv_sec != -1 )
236 ::settimeofday( &myTv, 0 ); 240 ::settimeofday( &myTv, 0 );
237 Global::writeHWClock(); 241 Global::writeHWClock();
238 // since time has changed quickly load in the datebookdb 242 // since time has changed quickly load in the datebookdb
239 // to allow the alarm server to get a better grip on itself 243 // to allow the alarm server to get a better grip on itself
240 // (example re-trigger alarms for when we travel back in time) 244 // (example re-trigger alarms for when we travel back in time)
241 DateBookDB db; 245 DateBookDB db;
242 } else { 246
243 qWarning( "Invalid date/time" );
244 }
245 // set the timezone for everyone else... 247 // set the timezone for everyone else...
246 QCopEnvelope setTimeZone( "QPE/System", "timeChange(QString)" ); 248 QCopEnvelope setTimeZone( "QPE/System", "timeChange(QString)" );
247 setTimeZone << tz->currentZone(); 249 setTimeZone << tz->currentZone();
248 250
249 // AM/PM setting and notify time changed 251 // AM/PM setting and notify time changed
250 QCopEnvelope setClock( "QPE/System", "clockChange(bool)" ); 252 QCopEnvelope setClock( "QPE/System", "clockChange(bool)" );
251 setClock << ampmCombo->currentItem(); 253 setClock << ampmCombo->currentItem();
252 254
253 // Notify everyone what day we prefer to start the week on. 255 // Notify everyone what day we prefer to start the week on.
254 QCopEnvelope setWeek( "QPE/System", "weekChange(bool)" ); 256 QCopEnvelope setWeek( "QPE/System", "weekChange(bool)" );
255 setWeek << weekStartCombo->currentItem(); 257 setWeek << weekStartCombo->currentItem();
256 258
257 // Notify everyone what date format to use 259 // Notify everyone what date format to use
258 QCopEnvelope setDateFormat( "QPE/System", "setDateFormat(DateFormat)" ); 260 QCopEnvelope setDateFormat( "QPE/System", "setDateFormat(DateFormat)" );
259 setDateFormat << date_formats[dateFormatCombo->currentItem()]; 261 setDateFormat << date_formats[dateFormatCombo->currentItem()];
260 262
diff --git a/noncore/settings/netsystemtime/settime.h b/noncore/settings/netsystemtime/settime.h
index 053d17a..729bf4b 100644
--- a/noncore/settings/netsystemtime/settime.h
+++ b/noncore/settings/netsystemtime/settime.h
@@ -63,32 +63,33 @@ protected:
63}; 63};
64 64
65class DateButton; 65class DateButton;
66 66
67class SetDateTime : public NtpBase 67class SetDateTime : public NtpBase
68{ 68{
69 Q_OBJECT 69 Q_OBJECT
70public: 70public:
71 SetDateTime( QWidget *parent=0, const char *name=0, WFlags f=0 ); 71 SetDateTime( QWidget *parent=0, const char *name=0, WFlags f=0 );
72 72
73protected slots: 73protected slots:
74 void tzChange( const QString &tz ); 74 void tzChange( const QString &tz );
75 void formatChanged(int); 75 void formatChanged(int);
76 76
77protected: 77protected:
78 void commitTime(); 78 void commitTime();
79 void setTime(QDateTime dt);
79 virtual void accept(); 80 virtual void accept();
80 virtual void done(int); 81 virtual void done(int);
81 82
82 SetTime *timeButton; 83 SetTime *timeButton;
83 DateButton *dateButton; 84 DateButton *dateButton;
84 TimeZoneSelector *tz; 85 TimeZoneSelector *tz;
85 QComboBox *weekStartCombo; 86 QComboBox *weekStartCombo;
86 QComboBox *ampmCombo; 87 QComboBox *ampmCombo;
87 QComboBox *dateFormatCombo; 88 QComboBox *dateFormatCombo;
88 QComboBox *clockAppletCombo; 89 QComboBox *clockAppletCombo;
89 90
90// QPEDialogListener *dl; 91// QPEDialogListener *dl;
91 92
92 DateFormat date_formats[4]; 93 DateFormat date_formats[4];
93}; 94};
94 95