summaryrefslogtreecommitdiff
path: root/noncore/todayplugins/weather/weatherpluginwidget.cpp
Unidiff
Diffstat (limited to 'noncore/todayplugins/weather/weatherpluginwidget.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/todayplugins/weather/weatherpluginwidget.cpp7
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
112void WeatherPluginWidget::displayWeather() 112void 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
157void WeatherPluginWidget::getTemp( const QString &data ) 158void 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
314void WeatherPluginWidget::dataRetrieved( OProcess *process ) 315void 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}