You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdetoys/kweather/weather_icon.cpp

172 lines
3.3 KiB

#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());
}
}