summaryrefslogtreecommitdiff
authordrw <drw>2002-11-17 00:12:31 (UTC)
committer drw <drw>2002-11-17 00:12:31 (UTC)
commitd28c78c564f3c6ecad91506c50e2c80e66c1a718 (patch) (unidiff)
tree08d930e4872f78a4651dccd51d920dadfaaf7f39
parentec642ffea22af16a924288dc64fe6a46413e49af (diff)
downloadopie-d28c78c564f3c6ecad91506c50e2c80e66c1a718.zip
opie-d28c78c564f3c6ecad91506c50e2c80e66c1a718.tar.gz
opie-d28c78c564f3c6ecad91506c50e2c80e66c1a718.tar.bz2
Use OProcess instead of popen/pclose and re-read config upon data re-fresh
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/todayplugins/weather/weatherpluginwidget.cpp65
-rw-r--r--noncore/todayplugins/weather/weatherpluginwidget.h8
2 files changed, 39 insertions, 34 deletions
diff --git a/noncore/todayplugins/weather/weatherpluginwidget.cpp b/noncore/todayplugins/weather/weatherpluginwidget.cpp
index 0fd8e57..6444ebf 100644
--- a/noncore/todayplugins/weather/weatherpluginwidget.cpp
+++ b/noncore/todayplugins/weather/weatherpluginwidget.cpp
@@ -24,40 +24,26 @@
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#include <stdio.h>
29 28
30#include <qfile.h> 29#include <qfile.h>
31#include <qimage.h> 30#include <qimage.h>
32#include <qlabel.h> 31#include <qlabel.h>
33#include <qlayout.h> 32#include <qlayout.h>
34#include <qpixmap.h> 33#include <qpixmap.h>
35#include <qtextstream.h> 34#include <qtextstream.h>
36 35
36#include <opie/oprocess.h>
37
37#include <qpe/config.h> 38#include <qpe/config.h>
38#include <qpe/resource.h> 39#include <qpe/resource.h>
39 40
40#include "weatherpluginwidget.h" 41#include "weatherpluginwidget.h"
41 42
42WeatherPluginWidget::WeatherPluginWidget( QWidget *parent, const char* name ) 43WeatherPluginWidget::WeatherPluginWidget( QWidget *parent, const char* name )
43 : QWidget( parent, name ) 44 : QWidget( parent, name )
44{ 45{
45 Config config( "todayweatherplugin");
46 config.setGroup( "Config" );
47
48 location = config.readEntry( "Location", "" );
49 useMetric = config.readBoolEntry( "Metric", TRUE );
50 frequency = config.readNumEntry( "Frequency", 5 );
51
52 localFile = "/tmp/";
53 localFile.append( location );
54 localFile.append( ".TXT" );
55
56 remoteFile = "http://weather.noaa.gov/pub/data/observations/metar/stations/";
57 remoteFile.append( location );
58 remoteFile.append( ".TXT" );
59
60 QHBoxLayout *layout = new QHBoxLayout( this ); 46 QHBoxLayout *layout = new QHBoxLayout( this );
61 layout->setAutoAdd( TRUE ); 47 layout->setAutoAdd( TRUE );
62 layout->setSpacing( 2 ); 48 layout->setSpacing( 2 );
63 49
@@ -71,9 +57,8 @@ WeatherPluginWidget::WeatherPluginWidget( QWidget *parent, const char* name )
71 weatherLabel = new QLabel( tr( "Retreiving current weather information." ), this ); 57 weatherLabel = new QLabel( tr( "Retreiving current weather information." ), this );
72 weatherLabel->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ) ); 58 weatherLabel->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ) );
73 59
74 startTimer(1000); 60 startTimer(1000);
75 //retreiveData();
76} 61}
77 62
78WeatherPluginWidget::~WeatherPluginWidget() 63WeatherPluginWidget::~WeatherPluginWidget()
79{ 64{
@@ -95,28 +80,34 @@ void WeatherPluginWidget::timerEvent( QTimerEvent *e )
95void WeatherPluginWidget::retreiveData() 80void WeatherPluginWidget::retreiveData()
96{ 81{
97 startTimer( frequency * 60000 ); 82 startTimer( frequency * 60000 );
98 83
84 Config config( "todayweatherplugin");
85 config.setGroup( "Config" );
86
87 location = config.readEntry( "Location", "" );
88 useMetric = config.readBoolEntry( "Metric", TRUE );
89 frequency = config.readNumEntry( "Frequency", 5 );
90
91 localFile = "/tmp/";
92 localFile.append( location );
93 localFile.append( ".TXT" );
94
95 remoteFile = "http://weather.noaa.gov/pub/data/observations/metar/stations/";
96 remoteFile.append( location );
97 remoteFile.append( ".TXT" );
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 QString command = "wget -q "; 105 OProcess *proc = new OProcess;
106 command.append( remoteFile ); 106
107 command.append( " -O " ); 107 *proc << "wget" << "-q" << remoteFile << "-O" << localFile;
108 command.append( localFile ); 108 connect( proc, SIGNAL( processExited( OProcess * ) ), this, SLOT( dataRetrieved( OProcess * ) ) );
109 FILE *get = popen( command.latin1(), "r" ); 109 proc->start();
110 if ( get )
111 {
112 pclose( get );
113 displayWeather();
114 }
115 else
116 {
117 weatherLabel->setText( tr( "Current weather data not available.\nTry looking out the window." ) );
118 }
119} 110}
120 111
121void WeatherPluginWidget::displayWeather() 112void WeatherPluginWidget::displayWeather()
122{ 113{
@@ -318,4 +309,16 @@ void WeatherPluginWidget::getIcon(const QString &data )
318 { 309 {
319 dataStr = "sleet"; 310 dataStr = "sleet";
320 } 311 }
321} 312}
313
314void WeatherPluginWidget::dataRetrieved( OProcess *process )
315{
316 if ( process->normalExit() )
317 {
318 displayWeather();
319 }
320 else
321 {
322 weatherLabel->setText( tr( "Current weather data not available.\nTry looking out the window." ) );
323 }
324}
diff --git a/noncore/todayplugins/weather/weatherpluginwidget.h b/noncore/todayplugins/weather/weatherpluginwidget.h
index 2c0238d..d2bbd8b 100644
--- a/noncore/todayplugins/weather/weatherpluginwidget.h
+++ b/noncore/todayplugins/weather/weatherpluginwidget.h
@@ -31,10 +31,9 @@
31 31
32#include <qstring.h> 32#include <qstring.h>
33#include <qwidget.h> 33#include <qwidget.h>
34 34
35#include <unistd.h> 35class OProcess;
36
37class QLabel; 36class QLabel;
38class QTimer; 37class QTimer;
39 38
40class WeatherPluginWidget : public QWidget { 39class WeatherPluginWidget : public QWidget {
@@ -55,15 +54,18 @@ class WeatherPluginWidget : public QWidget {
55 int frequency; 54 int frequency;
56 55
57 QLabel *weatherLabel; 56 QLabel *weatherLabel;
58 QLabel *weatherIcon; 57 QLabel *weatherIcon;
59 58
60 void timerEvent( QTimerEvent * ); 59 void timerEvent( QTimerEvent * );
61 void retreiveData(); 60 void retreiveData();
62 void displayWeather(); 61 void displayWeather();
63 void getTemp( const QString & ); 62 void getTemp( const QString & );
64 void getWind( const QString & ); 63 void getWind( const QString & );
65 void getPressure( const QString & ); 64 void getPressure( const QString & );
66 void getIcon( const QString & ); 65 void getIcon( const QString & );
66
67 private slots:
68 void dataRetrieved( OProcess * );
67}; 69};
68 70
69#endif 71#endif