-rw-r--r-- | noncore/todayplugins/weather/weatherpluginwidget.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/noncore/todayplugins/weather/weatherpluginwidget.cpp b/noncore/todayplugins/weather/weatherpluginwidget.cpp index 6444ebf..f4ea0f2 100644 --- a/noncore/todayplugins/weather/weatherpluginwidget.cpp +++ b/noncore/todayplugins/weather/weatherpluginwidget.cpp | |||
@@ -1,324 +1,324 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the OPIE Project | 2 | This file is part of the OPIE Project |
3 | =. | 3 | =. |
4 | .=l. Copyright (c) 2002 Dan Williams <williamsdr@acm.org> | 4 | .=l. Copyright (c) 2002 Dan Williams <williamsdr@acm.org> |
5 | .>+-= | 5 | .>+-= |
6 | _;:, .> :=|. This file is free software; you can | 6 | _;:, .> :=|. This file is free software; you can |
7 | .> <`_, > . <= redistribute it and/or modify it under | 7 | .> <`_, > . <= redistribute it and/or modify it under |
8 | :`=1 )Y*s>-.-- : the terms of the GNU General Public | 8 | :`=1 )Y*s>-.-- : the terms of the GNU General Public |
9 | .="- .-=="i, .._ License as published by the Free Software | 9 | .="- .-=="i, .._ License as published by the Free Software |
10 | - . .-<_> .<> Foundation; either version 2 of the License, | 10 | - . .-<_> .<> Foundation; either version 2 of the License, |
11 | ._= =} : or (at your option) any later version. | 11 | ._= =} : or (at your option) any later version. |
12 | .%`+i> _;_. | 12 | .%`+i> _;_. |
13 | .i_,=:_. -<s. This file is distributed in the hope that | 13 | .i_,=:_. -<s. This file is distributed in the hope that |
14 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 14 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
15 | : .. .:, . . . without even the implied warranty of | 15 | : .. .:, . . . without even the implied warranty of |
16 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 16 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
17 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General | 17 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General |
18 | ..}^=.= = ; Public License for more details. | 18 | ..}^=.= = ; Public License for more details. |
19 | ++= -. .` .: | 19 | ++= -. .` .: |
20 | : = ...= . :.=- You should have received a copy of the GNU | 20 | : = ...= . :.=- You should have received a copy of the GNU |
21 | -. .:....=;==+<; General Public License along with this file; | 21 | -. .:....=;==+<; General Public License along with this file; |
22 | -_. . . )=. = see the file COPYING. If not, write to the | 22 | -_. . . )=. = see the file COPYING. If not, write to the |
23 | -- :-=` Free Software Foundation, Inc., | 23 | -- :-=` Free Software Foundation, Inc., |
24 | 59 Temple Place - Suite 330, | 24 | 59 Temple Place - Suite 330, |
25 | Boston, MA 02111-1307, USA. | 25 | Boston, MA 02111-1307, USA. |
26 | 26 | ||
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include <qfile.h> | 29 | #include <qfile.h> |
30 | #include <qimage.h> | 30 | #include <qimage.h> |
31 | #include <qlabel.h> | 31 | #include <qlabel.h> |
32 | #include <qlayout.h> | 32 | #include <qlayout.h> |
33 | #include <qpixmap.h> | 33 | #include <qpixmap.h> |
34 | #include <qtextstream.h> | 34 | #include <qtextstream.h> |
35 | 35 | ||
36 | #include <opie/oprocess.h> | 36 | #include <opie/oprocess.h> |
37 | 37 | ||
38 | #include <qpe/config.h> | 38 | #include <qpe/config.h> |
39 | #include <qpe/resource.h> | 39 | #include <qpe/resource.h> |
40 | 40 | ||
41 | #include "weatherpluginwidget.h" | 41 | #include "weatherpluginwidget.h" |
42 | 42 | ||
43 | WeatherPluginWidget::WeatherPluginWidget( QWidget *parent, const char* name ) | 43 | WeatherPluginWidget::WeatherPluginWidget( QWidget *parent, const char* name ) |
44 | : QWidget( parent, name ) | 44 | : QWidget( parent, name ) |
45 | { | 45 | { |
46 | QHBoxLayout *layout = new QHBoxLayout( this ); | 46 | QHBoxLayout *layout = new QHBoxLayout( this ); |
47 | layout->setAutoAdd( TRUE ); | 47 | layout->setAutoAdd( TRUE ); |
48 | layout->setSpacing( 2 ); | 48 | layout->setSpacing( 2 ); |
49 | 49 | ||
50 | weatherIcon = new QLabel( this ); | 50 | weatherIcon = new QLabel( this ); |
51 | weatherIcon->setMaximumWidth( 32 ); | 51 | weatherIcon->setMaximumWidth( 32 ); |
52 | QImage logo1 = Resource::loadImage( "todayweatherplugin/wait" ); | 52 | QImage logo1 = Resource::loadImage( "todayweatherplugin/wait" ); |
53 | QPixmap pic; | 53 | QPixmap pic; |
54 | pic.convertFromImage( logo1 ); | 54 | pic.convertFromImage( logo1 ); |
55 | weatherIcon->setPixmap( pic ); | 55 | weatherIcon->setPixmap( pic ); |
56 | 56 | ||
57 | weatherLabel = new QLabel( tr( "Retreiving current weather information." ), this ); | 57 | weatherLabel = new QLabel( tr( "Retreiving current weather information." ), this ); |
58 | weatherLabel->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ) ); | 58 | weatherLabel->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ) ); |
59 | 59 | ||
60 | startTimer(1000); | 60 | startTimer(1000); |
61 | } | 61 | } |
62 | 62 | ||
63 | WeatherPluginWidget::~WeatherPluginWidget() | 63 | WeatherPluginWidget::~WeatherPluginWidget() |
64 | { | 64 | { |
65 | QFile file( localFile ); | 65 | QFile file( localFile ); |
66 | if ( file.exists() ) | 66 | if ( file.exists() ) |
67 | { | 67 | { |
68 | file.remove(); | 68 | file.remove(); |
69 | } | 69 | } |
70 | } | 70 | } |
71 | 71 | ||
72 | void WeatherPluginWidget::timerEvent( QTimerEvent *e ) | 72 | void WeatherPluginWidget::timerEvent( QTimerEvent *e ) |
73 | { | 73 | { |
74 | killTimer( e->timerId() ); | 74 | killTimer( e->timerId() ); |
75 | retreiveData(); | 75 | retreiveData(); |
76 | } | 76 | } |
77 | 77 | ||
78 | 78 | ||
79 | 79 | ||
80 | void WeatherPluginWidget::retreiveData() | 80 | void WeatherPluginWidget::retreiveData() |
81 | { | 81 | { |
82 | startTimer( frequency * 60000 ); | ||
83 | |||
84 | Config config( "todayweatherplugin"); | 82 | Config config( "todayweatherplugin"); |
85 | config.setGroup( "Config" ); | 83 | config.setGroup( "Config" ); |
86 | 84 | ||
87 | location = config.readEntry( "Location", "" ); | 85 | location = config.readEntry( "Location", "" ); |
88 | useMetric = config.readBoolEntry( "Metric", TRUE ); | 86 | useMetric = config.readBoolEntry( "Metric", TRUE ); |
89 | frequency = config.readNumEntry( "Frequency", 5 ); | 87 | frequency = config.readNumEntry( "Frequency", 5 ); |
88 | |||
89 | startTimer( frequency * 60000 ); | ||
90 | 90 | ||
91 | localFile = "/tmp/"; | 91 | localFile = "/tmp/"; |
92 | localFile.append( location ); | 92 | localFile.append( location ); |
93 | localFile.append( ".TXT" ); | 93 | localFile.append( ".TXT" ); |
94 | 94 | ||
95 | remoteFile = "http://weather.noaa.gov/pub/data/observations/metar/stations/"; | 95 | remoteFile = "http://weather.noaa.gov/pub/data/observations/metar/stations/"; |
96 | remoteFile.append( location ); | 96 | remoteFile.append( location ); |
97 | remoteFile.append( ".TXT" ); | 97 | remoteFile.append( ".TXT" ); |
98 | 98 | ||
99 | QFile file( localFile ); | 99 | QFile file( localFile ); |
100 | if ( file.exists() ) | 100 | if ( file.exists() ) |
101 | { | 101 | { |
102 | file.remove(); | 102 | file.remove(); |
103 | } | 103 | } |
104 | 104 | ||
105 | OProcess *proc = new OProcess; | 105 | OProcess *proc = new OProcess; |
106 | 106 | ||
107 | *proc << "wget" << "-q" << remoteFile << "-O" << localFile; | 107 | *proc << "wget" << "-q" << remoteFile << "-O" << localFile; |
108 | connect( proc, SIGNAL( processExited( OProcess * ) ), this, SLOT( dataRetrieved( OProcess * ) ) ); | 108 | connect( proc, SIGNAL( processExited( OProcess * ) ), this, SLOT( dataRetrieved( OProcess * ) ) ); |
109 | proc->start(); | 109 | proc->start(); |
110 | } | 110 | } |
111 | 111 | ||
112 | void WeatherPluginWidget::displayWeather() | 112 | void WeatherPluginWidget::displayWeather() |
113 | { | 113 | { |
114 | weatherData = QString::null; | 114 | weatherData = QString::null; |
115 | 115 | ||
116 | QFile file( localFile ); | 116 | QFile file( localFile ); |
117 | if ( file.open( IO_ReadOnly ) ) | 117 | if ( file.open( IO_ReadOnly ) ) |
118 | { | 118 | { |
119 | QTextStream data( &file ); | 119 | QTextStream data( &file ); |
120 | while ( !data.eof() ) | 120 | while ( !data.eof() ) |
121 | { | 121 | { |
122 | weatherData.append( data.readLine() ); | 122 | weatherData.append( data.readLine() ); |
123 | } | 123 | } |
124 | file.close(); | 124 | file.close(); |
125 | weatherData = weatherData.simplifyWhiteSpace(); | 125 | weatherData = weatherData.simplifyWhiteSpace(); |
126 | 126 | ||
127 | QString tmpstr; | 127 | QString tmpstr; |
128 | 128 | ||
129 | tmpstr.append( tr( "Temp: " ) ); | 129 | tmpstr.append( tr( "Temp: " ) ); |
130 | getTemp( weatherData ); | 130 | getTemp( weatherData ); |
131 | tmpstr.append( dataStr ); | 131 | tmpstr.append( dataStr ); |
132 | 132 | ||
133 | tmpstr.append( tr( " Wind: " ) ); | 133 | tmpstr.append( tr( " Wind: " ) ); |
134 | getWind( weatherData ); | 134 | getWind( weatherData ); |
135 | tmpstr.append( dataStr ); | 135 | tmpstr.append( dataStr ); |
136 | 136 | ||
137 | tmpstr.append( tr( "\nPres: " ) ); | 137 | tmpstr.append( tr( "\nPres: " ) ); |
138 | getPressure( weatherData ); | 138 | getPressure( weatherData ); |
139 | tmpstr.append( dataStr ); | 139 | tmpstr.append( dataStr ); |
140 | 140 | ||
141 | weatherLabel->setText( tmpstr ); | 141 | weatherLabel->setText( tmpstr ); |
142 | 142 | ||
143 | tmpstr = "todayweatherplugin/"; | 143 | tmpstr = "todayweatherplugin/"; |
144 | getIcon( weatherData ); | 144 | getIcon( weatherData ); |
145 | tmpstr.append( dataStr ); | 145 | tmpstr.append( dataStr ); |
146 | QImage logo1 = Resource::loadImage( tmpstr ); | 146 | QImage logo1 = Resource::loadImage( tmpstr ); |
147 | QPixmap pic; | 147 | QPixmap pic; |
148 | pic.convertFromImage( logo1 ); | 148 | pic.convertFromImage( logo1 ); |
149 | weatherIcon->setPixmap( pic ); | 149 | weatherIcon->setPixmap( pic ); |
150 | } | 150 | } |
151 | else | 151 | else |
152 | { | 152 | { |
153 | weatherLabel->setText( tr( "Current weather data not available.\nTry looking out the window." ) ); | 153 | weatherLabel->setText( tr( "Current weather data not available.\nTry looking out the window." ) ); |
154 | } | 154 | } |
155 | } | 155 | } |
156 | 156 | ||
157 | void WeatherPluginWidget::getTemp( const QString &data ) | 157 | void WeatherPluginWidget::getTemp( const QString &data ) |
158 | { | 158 | { |
159 | int value; | 159 | int value; |
160 | bool ok; | 160 | bool ok; |
161 | 161 | ||
162 | int pos = data.find( QRegExp( "M?[0-9]+/M?[0-9]+" ), 20 ); | 162 | int pos = data.find( QRegExp( "M?[0-9]+/M?[0-9]+" ), 20 ); |
163 | if ( pos > -1 ) | 163 | if ( pos > -1 ) |
164 | { | 164 | { |
165 | if ( data.at( pos ) == 'M' ) | 165 | if ( data.at( pos ) == 'M' ) |
166 | { | 166 | { |
167 | value = -1 * data.mid( pos + 1, 2 ).toInt( &ok ); | 167 | value = -1 * data.mid( pos + 1, 2 ).toInt( &ok ); |
168 | } | 168 | } |
169 | else | 169 | else |
170 | { | 170 | { |
171 | value = data.mid( pos, 2 ).toInt( &ok ); | 171 | value = data.mid( pos, 2 ).toInt( &ok ); |
172 | } | 172 | } |
173 | if ( useMetric ) | 173 | if ( useMetric ) |
174 | { | 174 | { |
175 | dataStr = QString::number( value ); | 175 | dataStr = QString::number( value ); |
176 | dataStr.append( 'C' ); | 176 | dataStr.append( 'C' ); |
177 | } | 177 | } |
178 | else | 178 | else |
179 | { | 179 | { |
180 | dataStr = QString::number( ( value * 9 / 5 ) + 32 ); | 180 | dataStr = QString::number( ( value * 9 / 5 ) + 32 ); |
181 | dataStr.append( 'F' ); | 181 | dataStr.append( 'F' ); |
182 | } | 182 | } |
183 | } | 183 | } |
184 | else | 184 | else |
185 | { | 185 | { |
186 | dataStr = tr( "n/a" ); | 186 | dataStr = tr( "n/a" ); |
187 | } | 187 | } |
188 | } | 188 | } |
189 | 189 | ||
190 | void WeatherPluginWidget::getWind( const QString &data ) | 190 | void WeatherPluginWidget::getWind( const QString &data ) |
191 | { | 191 | { |
192 | int value; | 192 | int value; |
193 | bool ok; | 193 | bool ok; |
194 | 194 | ||
195 | int pos = data.find( QRegExp( "[0-9]*G*[0-9]*KT" ), 20 ); | 195 | int pos = data.find( QRegExp( "[0-9]*G*[0-9]*KT" ), 20 ); |
196 | if ( pos > -1 ) | 196 | if ( pos > -1 ) |
197 | { | 197 | { |
198 | if ( data.mid( pos, 3 ) != "VRB" ) | 198 | if ( data.mid( pos, 3 ) != "VRB" ) |
199 | { | 199 | { |
200 | value = data.mid( pos, 3 ).toInt( &ok ); | 200 | value = data.mid( pos, 3 ).toInt( &ok ); |
201 | if ( ( value >= 0 && value < 23 ) || ( value >= 239 && value <= 360 ) ) | 201 | if ( ( value >= 0 && value < 23 ) || ( value >= 239 && value <= 360 ) ) |
202 | dataStr = tr("E " ); | 202 | dataStr = tr("E " ); |
203 | else if ( value >= 23 && value < 69 ) | 203 | else if ( value >= 23 && value < 69 ) |
204 | dataStr = tr( "NE " ); | 204 | dataStr = tr( "NE " ); |
205 | else if ( value >= 69 && value < 113 ) | 205 | else if ( value >= 69 && value < 113 ) |
206 | dataStr = tr( "N " ); | 206 | dataStr = tr( "N " ); |
207 | else if ( value >= 113 && value < 157 ) | 207 | else if ( value >= 113 && value < 157 ) |
208 | dataStr = tr( "NW " ); | 208 | dataStr = tr( "NW " ); |
209 | else if ( value >= 157 && value < 203 ) | 209 | else if ( value >= 157 && value < 203 ) |
210 | dataStr = tr( "W " ); | 210 | dataStr = tr( "W " ); |
211 | else if ( value >= 203 && value < 248 ) | 211 | else if ( value >= 203 && value < 248 ) |
212 | dataStr = tr( "SW " ); | 212 | dataStr = tr( "SW " ); |
213 | else if ( value >= 248 && value < 294 ) | 213 | else if ( value >= 248 && value < 294 ) |
214 | dataStr = tr( "S " ); | 214 | dataStr = tr( "S " ); |
215 | else if ( value >= 294 && value < 238 ) | 215 | else if ( value >= 294 && value < 238 ) |
216 | dataStr = tr( "SE " ); | 216 | dataStr = tr( "SE " ); |
217 | } | 217 | } |
218 | if ( data.mid( pos + 5, 1) == "G" || | 218 | if ( data.mid( pos + 5, 1) == "G" || |
219 | data.mid( pos + 5, 1) == "K" ) | 219 | data.mid( pos + 5, 1) == "K" ) |
220 | { | 220 | { |
221 | value = data.mid( pos + 3, 2 ).toInt( &ok ); | 221 | value = data.mid( pos + 3, 2 ).toInt( &ok ); |
222 | } | 222 | } |
223 | else | 223 | else |
224 | { | 224 | { |
225 | value = data.mid( pos + 3, 3 ).toInt( &ok ); | 225 | value = data.mid( pos + 3, 3 ).toInt( &ok ); |
226 | } | 226 | } |
227 | if ( useMetric ) | 227 | if ( useMetric ) |
228 | { | 228 | { |
229 | value = value * 3.6 / 1.94; | 229 | value = value * 3.6 / 1.94; |
230 | dataStr.append( QString::number( value ) ); | 230 | dataStr.append( QString::number( value ) ); |
231 | dataStr.append( tr( " KPH" ) ); | 231 | dataStr.append( tr( " KPH" ) ); |
232 | } | 232 | } |
233 | else | 233 | else |
234 | { | 234 | { |
235 | value = value * 2.24 / 1.94; | 235 | value = value * 2.24 / 1.94; |
236 | dataStr.append( QString::number( value ) ); | 236 | dataStr.append( QString::number( value ) ); |
237 | dataStr.append( tr( " MPH" ) ); | 237 | dataStr.append( tr( " MPH" ) ); |
238 | } | 238 | } |
239 | } | 239 | } |
240 | else | 240 | else |
241 | { | 241 | { |
242 | dataStr = tr( "n/a" ); | 242 | dataStr = tr( "n/a" ); |
243 | } | 243 | } |
244 | } | 244 | } |
245 | 245 | ||
246 | void WeatherPluginWidget::getPressure( const QString &data ) | 246 | void WeatherPluginWidget::getPressure( const QString &data ) |
247 | { | 247 | { |
248 | float value; | 248 | float value; |
249 | bool ok; | 249 | bool ok; |
250 | 250 | ||
251 | int pos = data.find( QRegExp( "[AQ][0-9]+" ), 20 ); | 251 | int pos = data.find( QRegExp( "[AQ][0-9]+" ), 20 ); |
252 | if ( pos > -1 ) | 252 | if ( pos > -1 ) |
253 | { | 253 | { |
254 | value = data.mid( pos + 1, 4 ).toFloat( &ok ); | 254 | value = data.mid( pos + 1, 4 ).toFloat( &ok ); |
255 | if ( useMetric ) | 255 | if ( useMetric ) |
256 | { | 256 | { |
257 | if ( data.mid( pos, 1 ) == "A" ) | 257 | if ( data.mid( pos, 1 ) == "A" ) |
258 | value *= 33.8639 / 100; | 258 | value *= 33.8639 / 100; |
259 | dataStr = QString::number( value, 'f', 2 ); | 259 | dataStr = QString::number( value, 'f', 2 ); |
260 | dataStr.append( tr( " hPa" ) ); | 260 | dataStr.append( tr( " hPa" ) ); |
261 | } | 261 | } |
262 | else | 262 | else |
263 | { | 263 | { |
264 | if ( data.mid( pos, 1 ) == "Q" ) | 264 | if ( data.mid( pos, 1 ) == "Q" ) |
265 | value /= 33.8639; | 265 | value /= 33.8639; |
266 | else | 266 | else |
267 | value /= 100; | 267 | value /= 100; |
268 | dataStr = QString::number( value, 'f', 2 ); | 268 | dataStr = QString::number( value, 'f', 2 ); |
269 | dataStr.append( tr( " Hg" ) ); | 269 | dataStr.append( tr( " Hg" ) ); |
270 | } | 270 | } |
271 | } | 271 | } |
272 | else | 272 | else |
273 | { | 273 | { |
274 | dataStr = tr( "n/a" ); | 274 | dataStr = tr( "n/a" ); |
275 | } | 275 | } |
276 | } | 276 | } |
277 | 277 | ||
278 | void WeatherPluginWidget::getIcon(const QString &data ) | 278 | void WeatherPluginWidget::getIcon(const QString &data ) |
279 | { | 279 | { |
280 | dataStr = "psunny"; | 280 | dataStr = "psunny"; |
281 | if ( data.find( "CLR ", 20 ) > -1 || | 281 | if ( data.find( "CLR ", 20 ) > -1 || |
282 | data.find( "SKC ", 20 ) > -1 || | 282 | data.find( "SKC ", 20 ) > -1 || |
283 | data.find( "CAVOK ", 20 ) > -1 ) | 283 | data.find( "CAVOK ", 20 ) > -1 ) |
284 | { | 284 | { |
285 | dataStr = "sunny"; | 285 | dataStr = "sunny"; |
286 | } | 286 | } |
287 | else if ( data.find( "SH ", 20 ) > -1 || | 287 | else if ( data.find( "SH ", 20 ) > -1 || |
288 | data.find( "DZ ", 20 ) > -1 || | 288 | data.find( "DZ ", 20 ) > -1 || |
289 | data.find( "RA ", 20 ) > -1 || | 289 | data.find( "RA ", 20 ) > -1 || |
290 | data.find( "UP ", 20 ) > -1 || | 290 | data.find( "UP ", 20 ) > -1 || |
291 | data.find( "BR ", 20 ) > -1 ) | 291 | data.find( "BR ", 20 ) > -1 ) |
292 | { | 292 | { |
293 | dataStr = "shower"; | 293 | dataStr = "shower"; |
294 | } | 294 | } |
295 | else if ( data.find( "TS ", 20 ) > -1 ) | 295 | else if ( data.find( "TS ", 20 ) > -1 ) |
296 | { | 296 | { |
297 | dataStr = "tstorm"; | 297 | dataStr = "tstorm"; |
298 | } | 298 | } |
299 | else if ( data.find( "SN ", 20 ) > -1 || | 299 | else if ( data.find( "SN ", 20 ) > -1 || |
300 | data.find( "SG ", 20 ) > -1 ) | 300 | data.find( "SG ", 20 ) > -1 ) |
301 | { | 301 | { |
302 | dataStr = "snow"; | 302 | dataStr = "snow"; |
303 | } | 303 | } |
304 | else if ( data.find( "FZ ", 20 ) > -1 || | 304 | else if ( data.find( "FZ ", 20 ) > -1 || |
305 | data.find( "GR ", 20 ) > -1 || | 305 | data.find( "GR ", 20 ) > -1 || |
306 | data.find( "GS ", 20 ) > -1 || | 306 | data.find( "GS ", 20 ) > -1 || |
307 | data.find( "PE ", 20 ) > -1 || | 307 | data.find( "PE ", 20 ) > -1 || |
308 | data.find( "IC ", 20 ) > -1 ) | 308 | data.find( "IC ", 20 ) > -1 ) |
309 | { | 309 | { |
310 | dataStr = "sleet"; | 310 | dataStr = "sleet"; |
311 | } | 311 | } |
312 | } | 312 | } |
313 | 313 | ||
314 | void WeatherPluginWidget::dataRetrieved( OProcess *process ) | 314 | void WeatherPluginWidget::dataRetrieved( OProcess *process ) |
315 | { | 315 | { |
316 | if ( process->normalExit() ) | 316 | if ( process->normalExit() ) |
317 | { | 317 | { |
318 | displayWeather(); | 318 | displayWeather(); |
319 | } | 319 | } |
320 | else | 320 | else |
321 | { | 321 | { |
322 | weatherLabel->setText( tr( "Current weather data not available.\nTry looking out the window." ) ); | 322 | weatherLabel->setText( tr( "Current weather data not available.\nTry looking out the window." ) ); |
323 | } | 323 | } |
324 | } | 324 | } |