Diffstat (limited to 'noncore/todayplugins/weather/weatherpluginwidget.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/todayplugins/weather/weatherpluginwidget.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/noncore/todayplugins/weather/weatherpluginwidget.cpp b/noncore/todayplugins/weather/weatherpluginwidget.cpp index f4ea0f2..800fdcb 100644 --- a/noncore/todayplugins/weather/weatherpluginwidget.cpp +++ b/noncore/todayplugins/weather/weatherpluginwidget.cpp | |||
@@ -93,85 +93,86 @@ void WeatherPluginWidget::retreiveData() | |||
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 | |
118 | if ( file.size() > 0 && file.open( IO_ReadOnly ) ) | ||
118 | { | 119 | { |
119 | QTextStream data( &file ); | 120 | QTextStream data( &file ); |
120 | while ( !data.eof() ) | 121 | while ( !data.eof() ) |
121 | { | 122 | { |
122 | weatherData.append( data.readLine() ); | 123 | weatherData.append( data.readLine() ); |
123 | } | 124 | } |
124 | file.close(); | 125 | file.close(); |
125 | weatherData = weatherData.simplifyWhiteSpace(); | 126 | weatherData = weatherData.simplifyWhiteSpace(); |
126 | 127 | ||
127 | QString tmpstr; | 128 | QString tmpstr; |
128 | 129 | ||
129 | tmpstr.append( tr( "Temp: " ) ); | 130 | tmpstr.append( tr( "Temp: " ) ); |
130 | getTemp( weatherData ); | 131 | getTemp( weatherData ); |
131 | tmpstr.append( dataStr ); | 132 | tmpstr.append( dataStr ); |
132 | 133 | ||
133 | tmpstr.append( tr( " Wind: " ) ); | 134 | tmpstr.append( tr( " Wind: " ) ); |
134 | getWind( weatherData ); | 135 | getWind( weatherData ); |
135 | tmpstr.append( dataStr ); | 136 | tmpstr.append( dataStr ); |
136 | 137 | ||
137 | tmpstr.append( tr( "\nPres: " ) ); | 138 | tmpstr.append( tr( "\nPres: " ) ); |
138 | getPressure( weatherData ); | 139 | getPressure( weatherData ); |
139 | tmpstr.append( dataStr ); | 140 | tmpstr.append( dataStr ); |
140 | 141 | ||
141 | weatherLabel->setText( tmpstr ); | 142 | weatherLabel->setText( tmpstr ); |
142 | 143 | ||
143 | tmpstr = "todayweatherplugin/"; | 144 | tmpstr = "todayweatherplugin/"; |
144 | getIcon( weatherData ); | 145 | getIcon( weatherData ); |
145 | tmpstr.append( dataStr ); | 146 | tmpstr.append( dataStr ); |
146 | QImage logo1 = Resource::loadImage( tmpstr ); | 147 | QImage logo1 = Resource::loadImage( tmpstr ); |
147 | QPixmap pic; | 148 | QPixmap pic; |
148 | pic.convertFromImage( logo1 ); | 149 | pic.convertFromImage( logo1 ); |
149 | weatherIcon->setPixmap( pic ); | 150 | weatherIcon->setPixmap( pic ); |
150 | } | 151 | } |
151 | else | 152 | else |
152 | { | 153 | { |
153 | weatherLabel->setText( tr( "Current weather data not available.\nTry looking out the window." ) ); | 154 | weatherLabel->setText( tr( "Current weather data not available." ) ); |
154 | } | 155 | } |
155 | } | 156 | } |
156 | 157 | ||
157 | void WeatherPluginWidget::getTemp( const QString &data ) | 158 | void WeatherPluginWidget::getTemp( const QString &data ) |
158 | { | 159 | { |
159 | int value; | 160 | int value; |
160 | bool ok; | 161 | bool ok; |
161 | 162 | ||
162 | int pos = data.find( QRegExp( "M?[0-9]+/M?[0-9]+" ), 20 ); | 163 | int pos = data.find( QRegExp( "M?[0-9]+/M?[0-9]+" ), 20 ); |
163 | if ( pos > -1 ) | 164 | if ( pos > -1 ) |
164 | { | 165 | { |
165 | if ( data.at( pos ) == 'M' ) | 166 | if ( data.at( pos ) == 'M' ) |
166 | { | 167 | { |
167 | value = -1 * data.mid( pos + 1, 2 ).toInt( &ok ); | 168 | value = -1 * data.mid( pos + 1, 2 ).toInt( &ok ); |
168 | } | 169 | } |
169 | else | 170 | else |
170 | { | 171 | { |
171 | value = data.mid( pos, 2 ).toInt( &ok ); | 172 | value = data.mid( pos, 2 ).toInt( &ok ); |
172 | } | 173 | } |
173 | if ( useMetric ) | 174 | if ( useMetric ) |
174 | { | 175 | { |
175 | dataStr = QString::number( value ); | 176 | dataStr = QString::number( value ); |
176 | dataStr.append( 'C' ); | 177 | dataStr.append( 'C' ); |
177 | } | 178 | } |
@@ -298,27 +299,27 @@ void WeatherPluginWidget::getIcon(const QString &data ) | |||
298 | } | 299 | } |
299 | else if ( data.find( "SN ", 20 ) > -1 || | 300 | else if ( data.find( "SN ", 20 ) > -1 || |
300 | data.find( "SG ", 20 ) > -1 ) | 301 | data.find( "SG ", 20 ) > -1 ) |
301 | { | 302 | { |
302 | dataStr = "snow"; | 303 | dataStr = "snow"; |
303 | } | 304 | } |
304 | else if ( data.find( "FZ ", 20 ) > -1 || | 305 | else if ( data.find( "FZ ", 20 ) > -1 || |
305 | data.find( "GR ", 20 ) > -1 || | 306 | data.find( "GR ", 20 ) > -1 || |
306 | data.find( "GS ", 20 ) > -1 || | 307 | data.find( "GS ", 20 ) > -1 || |
307 | data.find( "PE ", 20 ) > -1 || | 308 | data.find( "PE ", 20 ) > -1 || |
308 | data.find( "IC ", 20 ) > -1 ) | 309 | data.find( "IC ", 20 ) > -1 ) |
309 | { | 310 | { |
310 | dataStr = "sleet"; | 311 | dataStr = "sleet"; |
311 | } | 312 | } |
312 | } | 313 | } |
313 | 314 | ||
314 | void WeatherPluginWidget::dataRetrieved( OProcess *process ) | 315 | void WeatherPluginWidget::dataRetrieved( OProcess *process ) |
315 | { | 316 | { |
316 | if ( process->normalExit() ) | 317 | if ( process->normalExit() ) |
317 | { | 318 | { |
318 | displayWeather(); | 319 | displayWeather(); |
319 | } | 320 | } |
320 | else | 321 | else |
321 | { | 322 | { |
322 | weatherLabel->setText( tr( "Current weather data not available.\nTry looking out the window." ) ); | 323 | weatherLabel->setText( tr( "Current weather data not available." ) ); |
323 | } | 324 | } |
324 | } | 325 | } |