summaryrefslogtreecommitdiffstats
path: root/kweather/weather_icon.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kweather/weather_icon.cpp')
-rw-r--r--kweather/weather_icon.cpp171
1 files changed, 171 insertions, 0 deletions
diff --git a/kweather/weather_icon.cpp b/kweather/weather_icon.cpp
new file mode 100644
index 0000000..3c61213
--- /dev/null
+++ b/kweather/weather_icon.cpp
@@ -0,0 +1,171 @@
+#include <kiconloader.h>
+
+#include "weather_icon.h"
+
+WeatherIcon::WeatherIcon( int condition, bool night )
+ : iconLoader()
+{
+ TQString name;
+
+ switch( condition )
+ {
+
+ case Sunny:
+ {
+ name = "weather-clear";
+ iconName = ( night ? name.append("-night") : name );
+ return;
+ }
+
+ case Fog:
+ {
+ name = "weather-fog";
+ if( night && iconExists( TQString(name.latin1()).append("-night")) )
+ {
+ name.append("-night");
+ }
+ iconName = name;
+ return;
+ }
+
+ case Mist:
+ {
+ name = "weather-mist";
+ if( night && iconExists( TQString(name.latin1()).append("-night")) )
+ {
+ name.append("-night");
+ }
+ iconName = name;
+ return;
+ }
+
+ case Overcast: { iconName = "weather-overcast"; return; }
+ case Hail: { iconName = "weather-freezing-rain"; return; }
+ case LightRain: { iconName = "weather-showers-scattered"; return; }
+ case Sleet: { iconName = "weather-snow-rain"; return; }
+ }
+}
+
+WeatherIcon::WeatherIcon( int condition, bool night, unsigned int strength )
+ : iconLoader()
+{
+ TQString name;
+
+ switch ( condition )
+ {
+ case Cloudy:
+ {
+ switch ( strength )
+ {
+ case 1: { name = "weather-few-clouds"; break; }
+
+ case 2:
+ {
+ name = "weather-moderate-clouds";
+ if (! iconExists(name) )
+ {
+ name = "weather-few-clouds";
+ }
+ break;
+ }
+
+ case 3: { name = "weather-clouds"; break; }
+
+ case 4:
+ {
+ name = "weather-ample-clouds";
+ if (! iconExists(name) )
+ {
+ name = "weather-clouds";
+ }
+ break;
+ }
+
+ case 5: { iconName = "weather-many-clouds"; return; }
+ default: { iconName = "weather-clouds"; return; }
+ }
+
+ iconName = name.append( night ? "-night" : "" );
+ return;
+ }
+
+ case Showers:
+ {
+ switch ( strength )
+ {
+ case 1: { name = "weather-showers-scattered"; break; }
+ case 2: { name = "weather-showers"; break; }
+ case 3:
+ default: { iconName = "weather-showers"; return; }
+ }
+
+ iconName = name.append( night ? "-night" : "-day" );
+ return;
+ }
+
+ case Snow:
+ {
+ switch( strength )
+ {
+ case 1: { name = "weather-snow-scattered"; break; }
+ case 2:
+ {
+ name = "weather-snow-moderate";
+ if (! iconExists( TQString(name.latin1()).append("-day")) )
+ {
+ name = "weather-snow-scattered";
+ }
+ break;
+ }
+ case 3:
+ {
+ name = "weather-snow-ample";
+ if ( iconExists( TQString(name.latin1()).append("-day") ) )
+ break;
+ }
+ case 4: { iconName = "weather-snow-scattered"; return; }
+ case 5:
+ default: { iconName = "weather-snow"; return; }
+ }
+
+ iconName = name.append( night ? "-night" : "-day" );
+ return;
+ }
+
+ case Thunderstorm:
+ switch ( strength )
+ {
+ case 1: { name = "weather-storm"; break; }
+ case 2:
+ {
+ name = "weather-storm-moderate";
+ if (! iconExists( TQString(name.latin1()).append("-day")) )
+ {
+ name = "weather-storm";
+ }
+ break;
+ }
+ case 3:
+ default: { iconName = "weather-storm"; return; }
+ }
+
+ iconName = name.append( night ? "-night" : "-day" );
+ return;
+ }
+}
+
+WeatherIcon::~WeatherIcon()
+{}
+
+
+bool WeatherIcon::iconExists( TQString& icon, bool inTheme )
+{
+ if ( inTheme )
+ {
+ return iconLoader->theme()->iconPath(icon, TDEIcon::SizeMedium, TDEIcon::MatchExact).isValid();
+ }
+ else
+ {
+ return !(iconLoader->iconPath(icon, TDEIcon::SizeMedium, true).isNull());
+ }
+}