author | drw <drw> | 2005-02-28 19:43:45 (UTC) |
---|---|---|
committer | drw <drw> | 2005-02-28 19:43:45 (UTC) |
commit | 2daad674b92c1fd94b0260a15f0baa732e5db20e (patch) (unidiff) | |
tree | 37cb5ec9910b1a0ebd00928070e7b9b166e3aebc | |
parent | 772bc43173a3155ef08c769f1d01ef0ec7b31bcd (diff) | |
download | opie-2daad674b92c1fd94b0260a15f0baa732e5db20e.zip opie-2daad674b92c1fd94b0260a15f0baa732e5db20e.tar.gz opie-2daad674b92c1fd94b0260a15f0baa732e5db20e.tar.bz2 |
Scale weather icons based on AppLnk::smallIconSize
-rw-r--r-- | noncore/todayplugins/weather/weatherpluginwidget.cpp | 75 |
1 files changed, 37 insertions, 38 deletions
diff --git a/noncore/todayplugins/weather/weatherpluginwidget.cpp b/noncore/todayplugins/weather/weatherpluginwidget.cpp index 8e00c36..8c41189 100644 --- a/noncore/todayplugins/weather/weatherpluginwidget.cpp +++ b/noncore/todayplugins/weather/weatherpluginwidget.cpp | |||
@@ -1,111 +1,111 @@ | |||
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 <opie2/oprocess.h> | ||
30 | |||
31 | #include <qpe/applnk.h> | ||
32 | #include <qpe/config.h> | ||
33 | #include <qpe/resource.h> | ||
34 | |||
29 | #include <qfile.h> | 35 | #include <qfile.h> |
30 | #include <qimage.h> | 36 | #include <qimage.h> |
31 | #include <qlabel.h> | 37 | #include <qlabel.h> |
32 | #include <qlayout.h> | 38 | #include <qlayout.h> |
33 | #include <qpixmap.h> | 39 | #include <qpixmap.h> |
34 | #include <qtextstream.h> | 40 | #include <qtextstream.h> |
35 | 41 | ||
36 | #include <opie2/oprocess.h> | ||
37 | |||
38 | #include <qpe/config.h> | ||
39 | #include <qpe/resource.h> | ||
40 | |||
41 | #include "weatherpluginwidget.h" | 42 | #include "weatherpluginwidget.h" |
42 | 43 | ||
43 | using namespace Opie::Core; | 44 | using namespace Opie::Core; |
44 | WeatherPluginWidget::WeatherPluginWidget( QWidget *parent, const char* name ) | 45 | WeatherPluginWidget::WeatherPluginWidget( QWidget *parent, const char* name ) |
45 | : QWidget( parent, name ) | 46 | : QWidget( parent, name ) |
46 | { | 47 | { |
47 | QHBoxLayout *layout = new QHBoxLayout( this ); | 48 | QHBoxLayout *layout = new QHBoxLayout( this, 1, 2 ); |
48 | layout->setAutoAdd( TRUE ); | 49 | layout->setAutoAdd( true ); |
49 | layout->setSpacing( 2 ); | ||
50 | 50 | ||
51 | weatherIcon = new QLabel( this ); | 51 | weatherIcon = new QLabel( this ); |
52 | weatherIcon->setMaximumWidth( 32 ); | 52 | QPixmap pic; |
53 | QImage logo1 = Resource::loadImage( "Clock" ); | 53 | pic.convertFromImage( Resource::loadImage( "Clock" ).smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ) ); |
54 | QPixmap pic; | ||
55 | pic.convertFromImage( logo1 ); | ||
56 | weatherIcon->setPixmap( pic ); | 54 | weatherIcon->setPixmap( pic ); |
57 | 55 | ||
58 | weatherLabel = new QLabel( tr( "Retreiving current weather information." ), this ); | 56 | weatherLabel = new QLabel( tr( "Retreiving current weather information." ), this ); |
59 | weatherLabel->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ) ); | 57 | weatherLabel->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ) ); |
60 | 58 | ||
59 | weatherIcon->setFixedSize( weatherLabel->height(), weatherLabel->height() ); | ||
60 | |||
61 | startTimer(1000); | 61 | startTimer(1000); |
62 | } | 62 | } |
63 | 63 | ||
64 | WeatherPluginWidget::~WeatherPluginWidget() | 64 | WeatherPluginWidget::~WeatherPluginWidget() |
65 | { | 65 | { |
66 | QFile file( localFile ); | 66 | QFile file( localFile ); |
67 | if ( file.exists() ) | 67 | if ( file.exists() ) |
68 | { | 68 | { |
69 | file.remove(); | 69 | file.remove(); |
70 | } | 70 | } |
71 | } | 71 | } |
72 | 72 | ||
73 | void WeatherPluginWidget::timerEvent( QTimerEvent *e ) | 73 | void WeatherPluginWidget::timerEvent( QTimerEvent *e ) |
74 | { | 74 | { |
75 | killTimer( e->timerId() ); | 75 | killTimer( e->timerId() ); |
76 | retreiveData(); | 76 | retreiveData(); |
77 | } | 77 | } |
78 | 78 | ||
79 | 79 | ||
80 | 80 | ||
81 | void WeatherPluginWidget::retreiveData() | 81 | void WeatherPluginWidget::retreiveData() |
82 | { | 82 | { |
83 | Config config( "todayweatherplugin"); | 83 | Config config( "todayweatherplugin"); |
84 | config.setGroup( "Config" ); | 84 | config.setGroup( "Config" ); |
85 | 85 | ||
86 | location = config.readEntry( "Location", "" ); | 86 | location = config.readEntry( "Location", "" ); |
87 | useMetric = config.readBoolEntry( "Metric", TRUE ); | 87 | useMetric = config.readBoolEntry( "Metric", true ); |
88 | frequency = config.readNumEntry( "Frequency", 5 ); | 88 | frequency = config.readNumEntry( "Frequency", 5 ); |
89 | 89 | ||
90 | startTimer( frequency * 60000 ); | 90 | startTimer( frequency * 60000 ); |
91 | 91 | ||
92 | localFile = "/tmp/"; | 92 | localFile = "/tmp/"; |
93 | localFile.append( location ); | 93 | localFile.append( location ); |
94 | localFile.append( ".TXT" ); | 94 | localFile.append( ".TXT" ); |
95 | 95 | ||
96 | remoteFile = "http://weather.noaa.gov/pub/data/observations/metar/stations/"; | 96 | remoteFile = "http://weather.noaa.gov/pub/data/observations/metar/stations/"; |
97 | remoteFile.append( location ); | 97 | remoteFile.append( location ); |
98 | remoteFile.append( ".TXT" ); | 98 | remoteFile.append( ".TXT" ); |
99 | 99 | ||
100 | QFile file( localFile ); | 100 | QFile file( localFile ); |
101 | if ( file.exists() ) | 101 | if ( file.exists() ) |
102 | { | 102 | { |
103 | file.remove(); | 103 | file.remove(); |
104 | } | 104 | } |
105 | 105 | ||
106 | OProcess *proc = new OProcess; | 106 | OProcess *proc = new OProcess; |
107 | 107 | ||
108 | *proc << "wget" << "-q" << remoteFile << "-O" << localFile; | 108 | *proc << "wget" << "-q" << remoteFile << "-O" << localFile; |
109 | connect( proc, SIGNAL( processExited(Opie::Core::OProcess*) ), this, SLOT( dataRetrieved(Opie::Core::OProcess*) ) ); | 109 | connect( proc, SIGNAL( processExited(Opie::Core::OProcess*) ), this, SLOT( dataRetrieved(Opie::Core::OProcess*) ) ); |
110 | proc->start(); | 110 | proc->start(); |
111 | } | 111 | } |
@@ -124,52 +124,51 @@ void WeatherPluginWidget::displayWeather() | |||
124 | weatherData.append( data.readLine() ); | 124 | weatherData.append( data.readLine() ); |
125 | } | 125 | } |
126 | file.close(); | 126 | file.close(); |
127 | weatherData = weatherData.simplifyWhiteSpace(); | 127 | weatherData = weatherData.simplifyWhiteSpace(); |
128 | 128 | ||
129 | QString tmpstr; | 129 | QString tmpstr; |
130 | 130 | ||
131 | tmpstr.append( tr( "Temp: " ) ); | 131 | tmpstr.append( tr( "Temp: " ) ); |
132 | getTemp( weatherData ); | 132 | getTemp( weatherData ); |
133 | tmpstr.append( dataStr ); | 133 | tmpstr.append( dataStr ); |
134 | 134 | ||
135 | tmpstr.append( tr( " Wind: " ) ); | 135 | tmpstr.append( tr( " Wind: " ) ); |
136 | getWind( weatherData ); | 136 | getWind( weatherData ); |
137 | tmpstr.append( dataStr ); | 137 | tmpstr.append( dataStr ); |
138 | 138 | ||
139 | tmpstr.append( tr( "\nPres: " ) ); | 139 | tmpstr.append( tr( "\nPres: " ) ); |
140 | getPressure( weatherData ); | 140 | getPressure( weatherData ); |
141 | tmpstr.append( dataStr ); | 141 | tmpstr.append( dataStr ); |
142 | 142 | ||
143 | weatherLabel->setText( tmpstr ); | 143 | weatherLabel->setText( tmpstr ); |
144 | 144 | ||
145 | tmpstr = "todayweatherplugin/"; | 145 | tmpstr = "todayweatherplugin/"; |
146 | getIcon( weatherData ); | 146 | getIcon( weatherData ); |
147 | tmpstr.append( dataStr ); | 147 | tmpstr.append( dataStr ); |
148 | QImage logo1 = Resource::loadImage( tmpstr ); | 148 | QPixmap pic; |
149 | QPixmap pic; | 149 | pic.convertFromImage( Resource::loadImage( tmpstr ).smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ) ); |
150 | pic.convertFromImage( logo1 ); | 150 | weatherIcon->setPixmap( pic ); |
151 | weatherIcon->setPixmap( pic ); | ||
152 | } | 151 | } |
153 | else | 152 | else |
154 | { | 153 | { |
155 | weatherLabel->setText( tr( "Current weather data not available." ) ); | 154 | weatherLabel->setText( tr( "Current weather data not available." ) ); |
156 | } | 155 | } |
157 | } | 156 | } |
158 | 157 | ||
159 | void WeatherPluginWidget::getTemp( const QString &data ) | 158 | void WeatherPluginWidget::getTemp( const QString &data ) |
160 | { | 159 | { |
161 | int value; | 160 | int value; |
162 | bool ok; | 161 | bool ok; |
163 | 162 | ||
164 | 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 ); |
165 | if ( pos > -1 ) | 164 | if ( pos > -1 ) |
166 | { | 165 | { |
167 | if ( data.at( pos ) == 'M' ) | 166 | if ( data.at( pos ) == 'M' ) |
168 | { | 167 | { |
169 | value = -1 * data.mid( pos + 1, 2 ).toInt( &ok ); | 168 | value = -1 * data.mid( pos + 1, 2 ).toInt( &ok ); |
170 | } | 169 | } |
171 | else | 170 | else |
172 | { | 171 | { |
173 | value = data.mid( pos, 2 ).toInt( &ok ); | 172 | value = data.mid( pos, 2 ).toInt( &ok ); |
174 | } | 173 | } |
175 | if ( useMetric ) | 174 | if ( useMetric ) |