Diffstat (limited to 'noncore/todayplugins/weather') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/todayplugins/weather/weatherconfig.cpp | 7 | ||||
-rw-r--r-- | noncore/todayplugins/weather/weatherpluginwidget.cpp | 7 |
2 files changed, 10 insertions, 4 deletions
diff --git a/noncore/todayplugins/weather/weatherconfig.cpp b/noncore/todayplugins/weather/weatherconfig.cpp index fe10883..99ee2a0 100644 --- a/noncore/todayplugins/weather/weatherconfig.cpp +++ b/noncore/todayplugins/weather/weatherconfig.cpp | |||
@@ -17,111 +17,116 @@ | |||
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 <stdlib.h> | 29 | #include <stdlib.h> |
30 | 30 | ||
31 | #include <qcheckbox.h> | 31 | #include <qcheckbox.h> |
32 | #include <qclipboard.h> | 32 | #include <qclipboard.h> |
33 | #include <qfontmetrics.h> | 33 | #include <qfontmetrics.h> |
34 | #include <qlabel.h> | 34 | #include <qlabel.h> |
35 | #include <qlayout.h> | 35 | #include <qlayout.h> |
36 | #include <qlineedit.h> | 36 | #include <qlineedit.h> |
37 | #include <qlayout.h> | 37 | #include <qlayout.h> |
38 | #include <qpushbutton.h> | 38 | #include <qpushbutton.h> |
39 | #include <qspinbox.h> | 39 | #include <qspinbox.h> |
40 | #include <qwhatsthis.h> | 40 | #include <qwhatsthis.h> |
41 | 41 | ||
42 | #include <qpe/config.h> | 42 | #include <qpe/config.h> |
43 | #include <qpe/qpeapplication.h> | 43 | #include <qpe/qpeapplication.h> |
44 | #include <qpe/resource.h> | 44 | #include <qpe/resource.h> |
45 | #include <opie/todayconfigwidget.h> | 45 | #include <opie/todayconfigwidget.h> |
46 | 46 | ||
47 | #include "weatherconfig.h" | 47 | #include "weatherconfig.h" |
48 | 48 | ||
49 | WeatherPluginConfig::WeatherPluginConfig( QWidget *parent, const char* name) | 49 | WeatherPluginConfig::WeatherPluginConfig( QWidget *parent, const char* name) |
50 | : TodayConfigWidget(parent, name ) | 50 | : TodayConfigWidget(parent, name ) |
51 | { | 51 | { |
52 | Config config( "todayweatherplugin"); | 52 | Config config( "todayweatherplugin"); |
53 | config.setGroup( "Config" ); | 53 | config.setGroup( "Config" ); |
54 | 54 | ||
55 | QFontMetrics fm = fontMetrics(); | 55 | QFontMetrics fm = fontMetrics(); |
56 | int fh = fm.height(); | 56 | int fh = fm.height(); |
57 | 57 | ||
58 | QGridLayout *layout = new QGridLayout( this ); | 58 | QGridLayout *layout = new QGridLayout( this ); |
59 | layout->setSpacing( 4 ); | 59 | layout->setSpacing( 4 ); |
60 | layout->setMargin( 4 ); | 60 | layout->setMargin( 4 ); |
61 | 61 | ||
62 | QLabel *label = new QLabel( tr( "Enter ICAO location identifier:" ), this ); | 62 | QLabel *label = new QLabel( tr( "Enter ICAO location identifier:" ), this ); |
63 | label->setMaximumHeight( fh + 3 ); | 63 | label->setMaximumHeight( fh + 3 ); |
64 | layout->addMultiCellWidget( label, 0, 0, 0, 1 ); | 64 | layout->addMultiCellWidget( label, 0, 0, 0, 1 ); |
65 | QWhatsThis::add( label, tr( "Enter the 4 letter code for the desired location here. See http://www.nws.noaa.gov/tg/siteloc.shtml to find a location near you." ) ); | ||
65 | 66 | ||
66 | locationEdit = new QLineEdit( config.readEntry( "Location", "" ), this ); | 67 | locationEdit = new QLineEdit( config.readEntry( "Location", "" ), this ); |
67 | locationEdit->setMaximumHeight( fh + 5 ); | 68 | locationEdit->setMaximumHeight( fh + 5 ); |
68 | locationEdit->setFocus(); | 69 | locationEdit->setFocus(); |
69 | layout->addMultiCellWidget( locationEdit, 1, 1, 0, 1 ); | 70 | layout->addMultiCellWidget( locationEdit, 1, 1, 0, 1 ); |
71 | QWhatsThis::add( locationEdit, tr( "Enter the 4 letter code for the desired location here. See http://www.nws.noaa.gov/tg/siteloc.shtml to find a location near you." ) ); | ||
70 | 72 | ||
71 | label = new QLabel( tr( "Visit http://www.nws.noaa.gov/tg/siteloc.shtml to find the nearest location." ), this ); | 73 | label = new QLabel( tr( "Visit http://www.nws.noaa.gov/tg/siteloc.shtml to find the nearest location." ), this ); |
72 | label->setAlignment( AlignHCenter | WordBreak ); | 74 | label->setAlignment( AlignHCenter | WordBreak ); |
73 | label->setMaximumHeight( label->height() ); | 75 | label->setMaximumHeight( label->height() ); |
74 | layout->addMultiCellWidget( label, 2, 2, 0, 1 ); | 76 | layout->addMultiCellWidget( label, 2, 2, 0, 1 ); |
75 | //layout->addWidget( label, 2, 0 ); | 77 | //layout->addWidget( label, 2, 0 ); |
76 | 78 | ||
77 | //QPushButton *pb = new QPushButton( Resource::loadPixmap( "copy" ), | 79 | //QPushButton *pb = new QPushButton( Resource::loadPixmap( "copy" ), |
78 | //tr( "Copy link" ), this ); | 80 | //tr( "Copy link" ), this ); |
79 | //connect( pb, SIGNAL( clicked() ), this, SLOT( slotCopyLink() ) ); | 81 | //connect( pb, SIGNAL( clicked() ), this, SLOT( slotCopyLink() ) ); |
80 | //layout->addWidget( pb, 2, 1 ); | 82 | //layout->addWidget( pb, 2, 1 ); |
81 | 83 | ||
82 | metricCB = new QCheckBox( tr( "Use metric units" ), this ); | 84 | metricCB = new QCheckBox( tr( "Use metric units" ), this ); |
83 | metricCB->setMaximumHeight( fh + 5 ); | 85 | metricCB->setMaximumHeight( fh + 5 ); |
84 | metricCB->setChecked( config.readBoolEntry( "Metric", TRUE ) ); | 86 | metricCB->setChecked( config.readBoolEntry( "Metric", TRUE ) ); |
85 | layout->addMultiCellWidget( metricCB, 3, 3, 0, 1 ); | 87 | layout->addMultiCellWidget( metricCB, 3, 3, 0, 1 ); |
88 | QWhatsThis::add( metricCB, tr( "Click here to select type of units displayed." ) ); | ||
86 | 89 | ||
87 | label = new QLabel( tr( "Update frequency (in minutes):" ), this ); | 90 | label = new QLabel( tr( "Update frequency (in minutes):" ), this ); |
88 | label->setMaximumHeight( fh + 3 ); | 91 | label->setMaximumHeight( fh + 3 ); |
89 | layout->addWidget( label, 4, 0 ); | 92 | layout->addWidget( label, 4, 0 ); |
93 | QWhatsThis::add( label, tr( "Select how often (in minutes) you want the weather to be updated." ) ); | ||
90 | 94 | ||
91 | timerDelaySB = new QSpinBox( 1, 60, 1, this ); | 95 | timerDelaySB = new QSpinBox( 1, 60, 1, this ); |
92 | timerDelaySB->setMaximumHeight( fh + 5 ); | 96 | timerDelaySB->setMaximumHeight( fh + 5 ); |
93 | timerDelaySB->setValue( config.readNumEntry( "Frequency", 5 ) ); | 97 | timerDelaySB->setValue( config.readNumEntry( "Frequency", 5 ) ); |
94 | layout->addWidget( timerDelaySB, 4, 1 ); | 98 | layout->addWidget( timerDelaySB, 4, 1 ); |
99 | QWhatsThis::add( timerDelaySB, tr( "Select how often (in minutes) you want the weather to be updated." ) ); | ||
95 | } | 100 | } |
96 | 101 | ||
97 | 102 | ||
98 | void WeatherPluginConfig::writeConfig() | 103 | void WeatherPluginConfig::writeConfig() |
99 | { | 104 | { |
100 | Config config( "todayweatherplugin"); | 105 | Config config( "todayweatherplugin"); |
101 | config.setGroup( "Config" ); | 106 | config.setGroup( "Config" ); |
102 | 107 | ||
103 | config.writeEntry( "Location", locationEdit->text().upper().stripWhiteSpace() ); | 108 | config.writeEntry( "Location", locationEdit->text().upper().stripWhiteSpace() ); |
104 | config.writeEntry( "Metric", metricCB->isChecked() ); | 109 | config.writeEntry( "Metric", metricCB->isChecked() ); |
105 | config.writeEntry( "Frequency", timerDelaySB->value() ); | 110 | config.writeEntry( "Frequency", timerDelaySB->value() ); |
106 | 111 | ||
107 | config.write(); | 112 | config.write(); |
108 | } | 113 | } |
109 | 114 | ||
110 | WeatherPluginConfig::~WeatherPluginConfig() | 115 | WeatherPluginConfig::~WeatherPluginConfig() |
111 | { | 116 | { |
112 | } | 117 | } |
113 | 118 | ||
114 | void WeatherPluginConfig::doLookup() | 119 | void WeatherPluginConfig::doLookup() |
115 | { | 120 | { |
116 | system( "weather" ); | 121 | system( "weather" ); |
117 | } | 122 | } |
118 | 123 | ||
119 | /* | 124 | /* |
120 | 125 | ||
121 | Doesn't seem to like QPEApplication::clipboard()... | 126 | Doesn't seem to like QPEApplication::clipboard()... |
122 | 127 | ||
123 | void WeatherPluginConfig::slotCopyLink() | 128 | void WeatherPluginConfig::slotCopyLink() |
124 | { | 129 | { |
125 | QPEApplication::clipboard()->setText( "http://www.nws.noaa.gov/tg/siteloc.shtml" ); | 130 | QPEApplication::clipboard()->setText( "http://www.nws.noaa.gov/tg/siteloc.shtml" ); |
126 | } | 131 | } |
127 | */ \ No newline at end of file | 132 | */ |
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 | |||
@@ -69,133 +69,134 @@ WeatherPluginWidget::~WeatherPluginWidget() | |||
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 | Config config( "todayweatherplugin"); | 82 | Config config( "todayweatherplugin"); |
83 | config.setGroup( "Config" ); | 83 | config.setGroup( "Config" ); |
84 | 84 | ||
85 | location = config.readEntry( "Location", "" ); | 85 | location = config.readEntry( "Location", "" ); |
86 | useMetric = config.readBoolEntry( "Metric", TRUE ); | 86 | useMetric = config.readBoolEntry( "Metric", TRUE ); |
87 | frequency = config.readNumEntry( "Frequency", 5 ); | 87 | frequency = config.readNumEntry( "Frequency", 5 ); |
88 | 88 | ||
89 | startTimer( frequency * 60000 ); | 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 | |
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 | } |
178 | else | 179 | else |
179 | { | 180 | { |
180 | dataStr = QString::number( ( value * 9 / 5 ) + 32 ); | 181 | dataStr = QString::number( ( value * 9 / 5 ) + 32 ); |
181 | dataStr.append( 'F' ); | 182 | dataStr.append( 'F' ); |
182 | } | 183 | } |
183 | } | 184 | } |
184 | else | 185 | else |
185 | { | 186 | { |
186 | dataStr = tr( "n/a" ); | 187 | dataStr = tr( "n/a" ); |
187 | } | 188 | } |
188 | } | 189 | } |
189 | 190 | ||
190 | void WeatherPluginWidget::getWind( const QString &data ) | 191 | void WeatherPluginWidget::getWind( const QString &data ) |
191 | { | 192 | { |
192 | int value; | 193 | int value; |
193 | bool ok; | 194 | bool ok; |
194 | 195 | ||
195 | int pos = data.find( QRegExp( "[0-9]*G*[0-9]*KT" ), 20 ); | 196 | int pos = data.find( QRegExp( "[0-9]*G*[0-9]*KT" ), 20 ); |
196 | if ( pos > -1 ) | 197 | if ( pos > -1 ) |
197 | { | 198 | { |
198 | if ( data.mid( pos, 3 ) != "VRB" ) | 199 | if ( data.mid( pos, 3 ) != "VRB" ) |
199 | { | 200 | { |
200 | value = data.mid( pos, 3 ).toInt( &ok ); | 201 | value = data.mid( pos, 3 ).toInt( &ok ); |
201 | if ( ( value >= 0 && value < 23 ) || ( value >= 239 && value <= 360 ) ) | 202 | if ( ( value >= 0 && value < 23 ) || ( value >= 239 && value <= 360 ) ) |
@@ -274,51 +275,51 @@ void WeatherPluginWidget::getPressure( const QString &data ) | |||
274 | dataStr = tr( "n/a" ); | 275 | dataStr = tr( "n/a" ); |
275 | } | 276 | } |
276 | } | 277 | } |
277 | 278 | ||
278 | void WeatherPluginWidget::getIcon(const QString &data ) | 279 | void WeatherPluginWidget::getIcon(const QString &data ) |
279 | { | 280 | { |
280 | dataStr = "psunny"; | 281 | dataStr = "psunny"; |
281 | if ( data.find( "CLR ", 20 ) > -1 || | 282 | if ( data.find( "CLR ", 20 ) > -1 || |
282 | data.find( "SKC ", 20 ) > -1 || | 283 | data.find( "SKC ", 20 ) > -1 || |
283 | data.find( "CAVOK ", 20 ) > -1 ) | 284 | data.find( "CAVOK ", 20 ) > -1 ) |
284 | { | 285 | { |
285 | dataStr = "sunny"; | 286 | dataStr = "sunny"; |
286 | } | 287 | } |
287 | else if ( data.find( "SH ", 20 ) > -1 || | 288 | else if ( data.find( "SH ", 20 ) > -1 || |
288 | data.find( "DZ ", 20 ) > -1 || | 289 | data.find( "DZ ", 20 ) > -1 || |
289 | data.find( "RA ", 20 ) > -1 || | 290 | data.find( "RA ", 20 ) > -1 || |
290 | data.find( "UP ", 20 ) > -1 || | 291 | data.find( "UP ", 20 ) > -1 || |
291 | data.find( "BR ", 20 ) > -1 ) | 292 | data.find( "BR ", 20 ) > -1 ) |
292 | { | 293 | { |
293 | dataStr = "shower"; | 294 | dataStr = "shower"; |
294 | } | 295 | } |
295 | else if ( data.find( "TS ", 20 ) > -1 ) | 296 | else if ( data.find( "TS ", 20 ) > -1 ) |
296 | { | 297 | { |
297 | dataStr = "tstorm"; | 298 | dataStr = "tstorm"; |
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 | } |