diff options
Diffstat (limited to 'kweather/weather_icon.cpp')
-rw-r--r-- | kweather/weather_icon.cpp | 171 |
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()); + } +} |