|
|
|
@ -1,59 +1,95 @@
|
|
|
|
|
#include <kstandarddirs.h>
|
|
|
|
|
#include <kiconloader.h>
|
|
|
|
|
#include <kdebug.h>
|
|
|
|
|
|
|
|
|
|
#include "weather_icon.h"
|
|
|
|
|
|
|
|
|
|
WeatherIcon::WeatherIcon( int condition, bool night )
|
|
|
|
|
{
|
|
|
|
|
TQString name;
|
|
|
|
|
iconLoader = new TDEIconLoader("kweather");
|
|
|
|
|
TQStringList fallback;
|
|
|
|
|
|
|
|
|
|
switch( condition )
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
case Sunny:
|
|
|
|
|
{
|
|
|
|
|
name = "weather-clear";
|
|
|
|
|
iconName = ( night ? name.append("-night") : name );
|
|
|
|
|
return;
|
|
|
|
|
if( night )
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-clear-night"; //xdg, kweather
|
|
|
|
|
}
|
|
|
|
|
fallback << "weather-clear"; // xdg, kweather
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case Fog:
|
|
|
|
|
{
|
|
|
|
|
name = "weather-fog";
|
|
|
|
|
if( night )
|
|
|
|
|
{
|
|
|
|
|
TQString night_icon = name + "-night";
|
|
|
|
|
if( iconExists(night_icon) )
|
|
|
|
|
name = night_icon;
|
|
|
|
|
fallback << "weather-fog-night"; // themes, kweather
|
|
|
|
|
}
|
|
|
|
|
iconName = name;
|
|
|
|
|
return;
|
|
|
|
|
fallback << "weather-fog"; // xdg, kweather
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case Mist:
|
|
|
|
|
{
|
|
|
|
|
name = "weather-mist";
|
|
|
|
|
if( night )
|
|
|
|
|
{
|
|
|
|
|
TQString night_icon = name + "-night";
|
|
|
|
|
if( iconExists(night_icon) )
|
|
|
|
|
name = night_icon;
|
|
|
|
|
fallback << "weather-mist-night"; // themes, kweather
|
|
|
|
|
}
|
|
|
|
|
iconName = name;
|
|
|
|
|
return;
|
|
|
|
|
fallback << "weather-mist"; // themes, kweather
|
|
|
|
|
|
|
|
|
|
if( night )
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-fog-night"; // themes, kweather
|
|
|
|
|
}
|
|
|
|
|
fallback << "weather-fog"; // xdg, kweather
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case Overcast:
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-overcast"; // xdg, kweather
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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; }
|
|
|
|
|
case Hail:
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-hail"; // themes
|
|
|
|
|
fallback << "weather-freezing-rain"; // themes, kweather
|
|
|
|
|
fallback << "weather-snow"; // xdg, kweather
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case LightRain:
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-showers-scattered"; // xdg, kweather
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case Sleet:
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-snow-rain"; // themes, kweather
|
|
|
|
|
fallback << "weather-snow"; // xdg, kweather
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
iconName = findIcon(fallback);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
WeatherIcon::WeatherIcon( int condition, bool night, unsigned int strength )
|
|
|
|
|
{
|
|
|
|
|
iconLoader = new TDEIconLoader("kweather");
|
|
|
|
|
TQString name;
|
|
|
|
|
TQStringList fallback;
|
|
|
|
|
|
|
|
|
|
switch ( condition )
|
|
|
|
|
{
|
|
|
|
@ -61,120 +97,312 @@ WeatherIcon::WeatherIcon( int condition, bool night, unsigned int strength )
|
|
|
|
|
{
|
|
|
|
|
switch ( strength )
|
|
|
|
|
{
|
|
|
|
|
case 1: { name = "weather-few-clouds"; break; }
|
|
|
|
|
case 1:
|
|
|
|
|
{
|
|
|
|
|
if( night )
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-few-clouds-night"; // xdg, kweather
|
|
|
|
|
}
|
|
|
|
|
fallback << "weather-few-clouds"; // xdg, kweather
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case 2:
|
|
|
|
|
{
|
|
|
|
|
name = "weather-moderate-clouds";
|
|
|
|
|
if (! iconExists(name) )
|
|
|
|
|
if( night )
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-moderate-clouds-night"; // kweather
|
|
|
|
|
}
|
|
|
|
|
fallback << "weather-moderate-clouds"; // kweather
|
|
|
|
|
|
|
|
|
|
if( night )
|
|
|
|
|
{
|
|
|
|
|
name = "weather-few-clouds";
|
|
|
|
|
fallback << "weather-few-clouds-night"; // xdg, kweather
|
|
|
|
|
}
|
|
|
|
|
fallback << "weather-few-clouds"; // xdg, kweather
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case 3: { name = "weather-clouds"; break; }
|
|
|
|
|
case 3: {
|
|
|
|
|
if( night )
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-clouds-night"; // themes, kweather
|
|
|
|
|
}
|
|
|
|
|
fallback << "weather-clouds"; // themes, kweather
|
|
|
|
|
|
|
|
|
|
if( night )
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-few-clouds-night"; // xdg, kweather
|
|
|
|
|
}
|
|
|
|
|
fallback << "weather-few-clouds"; // xdg, kweather
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case 4:
|
|
|
|
|
{
|
|
|
|
|
name = "weather-ample-clouds";
|
|
|
|
|
if (! iconExists(name) )
|
|
|
|
|
if( night )
|
|
|
|
|
{
|
|
|
|
|
name = "weather-clouds";
|
|
|
|
|
fallback << "weather-ample-clouds-night"; // kweather
|
|
|
|
|
}
|
|
|
|
|
fallback << "weather-ample-clouds"; // kweather
|
|
|
|
|
|
|
|
|
|
fallback << "weather-many-clouds"; // themes, kweather
|
|
|
|
|
|
|
|
|
|
fallback << "weather-overcast"; // xdg, kweather
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case 5: { iconName = "weather-many-clouds"; return; }
|
|
|
|
|
default: { iconName = "weather-clouds"; return; }
|
|
|
|
|
case 5: {
|
|
|
|
|
fallback << "weather-many-clouds"; // themes, kweather
|
|
|
|
|
|
|
|
|
|
fallback << "weather-overcast"; // xdg, kweather
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
iconName = name.append( night ? "-night" : "" );
|
|
|
|
|
return;
|
|
|
|
|
default: {
|
|
|
|
|
fallback << "weather-clouds"; // themes, kweather
|
|
|
|
|
|
|
|
|
|
fallback << "weather-few-clouds"; // xdg, kweather
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case Showers:
|
|
|
|
|
{
|
|
|
|
|
switch ( strength )
|
|
|
|
|
{
|
|
|
|
|
case 1: { name = "weather-showers-scattered"; break; }
|
|
|
|
|
case 2: { name = "weather-showers"; break; }
|
|
|
|
|
case 1:
|
|
|
|
|
{
|
|
|
|
|
if( night )
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-showers-scattered-night"; // themes, kweather
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-showers-scattered-day"; // themes, kweather
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fallback << "weather-showers-scattered"; // xdg, kweather
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case 2:
|
|
|
|
|
{
|
|
|
|
|
if( night )
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-showers-night"; // themes, kweather
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-showers-day"; // themes, kweather
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fallback << "weather-showers"; // xdg, kweather
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case 3:
|
|
|
|
|
default: { iconName = "weather-showers"; return; }
|
|
|
|
|
default:
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-showers"; // xdg, kweather
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
iconName = name.append( night ? "-night" : "-day" );
|
|
|
|
|
return;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case Snow:
|
|
|
|
|
{
|
|
|
|
|
switch( strength )
|
|
|
|
|
{
|
|
|
|
|
case 1: { name = "weather-snow-scattered"; break; }
|
|
|
|
|
case 1:
|
|
|
|
|
{
|
|
|
|
|
if( night )
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-snow-scattered-night"; // themes, kweather
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-snow-scattered-day"; // themes, kweather
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fallback << "weather-snow-scattered"; // xdg, kweather
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case 2:
|
|
|
|
|
{
|
|
|
|
|
name = "weather-snow-moderate";
|
|
|
|
|
TQString test_icon = name + "-day";
|
|
|
|
|
if (! iconExists(test_icon) )
|
|
|
|
|
if( night )
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-snow-moderate-night"; // kweather
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
name = "weather-snow-scattered";
|
|
|
|
|
fallback << "weather-snow-moderate-day"; // kweather
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fallback << "weather-snow-moderate"; // kweather
|
|
|
|
|
|
|
|
|
|
if( night )
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-snow-scattered-night"; // themes, kweather
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-snow-scattered-day"; // themes, kweather
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fallback << "weather-snow-scattered"; // xdg, kweather
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case 3:
|
|
|
|
|
{
|
|
|
|
|
name = "weather-snow-ample";
|
|
|
|
|
TQString test_icon = name + "-day";
|
|
|
|
|
if ( iconExists(test_icon) )
|
|
|
|
|
if( night )
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-snow-ample-night"; // kweather
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-snow-ample-day"; // kweather
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fallback << "weather-snow-ample"; // kweather
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fallback << "weather-snow"; // xdg, kweather
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case 4:
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-snow-scattered"; // xdg, kweather
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case 4: { iconName = "weather-snow-scattered"; return; }
|
|
|
|
|
|
|
|
|
|
case 5:
|
|
|
|
|
default: { iconName = "weather-snow"; return; }
|
|
|
|
|
default:
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-snow"; // xdg, kweather
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
iconName = name.append( night ? "-night" : "-day" );
|
|
|
|
|
return;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case Thunderstorm:
|
|
|
|
|
switch ( strength )
|
|
|
|
|
{
|
|
|
|
|
case 1: { name = "weather-storm"; break; }
|
|
|
|
|
case 1:
|
|
|
|
|
{
|
|
|
|
|
if( night )
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-storm-night"; // themes, kweather
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-storm-day"; // themes, kweather
|
|
|
|
|
}
|
|
|
|
|
fallback << "weather-storm"; // xdg, kweather
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case 2:
|
|
|
|
|
{
|
|
|
|
|
name = "weather-storm-moderate";
|
|
|
|
|
TQString test_icon = name + "-day";
|
|
|
|
|
if (! iconExists(test_icon) )
|
|
|
|
|
if( night )
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-storm-moderate-night"; // kweather
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-storm-moderate-day"; // kweather
|
|
|
|
|
}
|
|
|
|
|
fallback << "weather-storm-moderate"; // kweather
|
|
|
|
|
|
|
|
|
|
if( night )
|
|
|
|
|
{
|
|
|
|
|
name = "weather-storm";
|
|
|
|
|
fallback << "weather-storm-night"; // themes, kweather
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-storm-day"; // themes, kweather
|
|
|
|
|
}
|
|
|
|
|
fallback << "weather-storm"; // xdg, kweather
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case 3:
|
|
|
|
|
default: { iconName = "weather-storm"; return; }
|
|
|
|
|
default:
|
|
|
|
|
{
|
|
|
|
|
fallback << "weather-storm"; // xdg, kweather
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
iconName = name.append( night ? "-night" : "-day" );
|
|
|
|
|
return;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
iconName = findIcon(fallback);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
WeatherIcon::~WeatherIcon()
|
|
|
|
|
{}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TQString WeatherIcon::findIcon( TQStringList fallback )
|
|
|
|
|
{
|
|
|
|
|
// Check in theme
|
|
|
|
|
for ( TQStringList::Iterator icon = fallback.begin(); icon != fallback.end(); ++icon )
|
|
|
|
|
{
|
|
|
|
|
kdDebug() << "[WeatherIcon::findIcon] Searching for `" << *icon << "` in theme" << endl;
|
|
|
|
|
if( iconExists(*icon) )
|
|
|
|
|
{
|
|
|
|
|
kdDebug() << "[WeatherIcon::findIcon] FOUND `" << *icon << "` in theme" << endl;
|
|
|
|
|
return *icon;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Check in kweather fallback
|
|
|
|
|
for ( TQStringList::Iterator icon = fallback.begin(); icon != fallback.end(); ++icon )
|
|
|
|
|
{
|
|
|
|
|
kdDebug() << "[WeatherIcon::findIcon] Searching for `" << *icon << "` in kweather icons" << endl;
|
|
|
|
|
if( iconExists(*icon, false) )
|
|
|
|
|
{
|
|
|
|
|
kdDebug() << "[WeatherIcon::findIcon] FOUND `" << *icon << "` in kweather icons" << endl;
|
|
|
|
|
return *icon;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return unknown();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool WeatherIcon::iconExists( TQString& icon, bool inTheme )
|
|
|
|
|
{
|
|
|
|
|
if ( inTheme )
|
|
|
|
|
if( inTheme )
|
|
|
|
|
{
|
|
|
|
|
return iconLoader->theme()->iconPath(icon, TDEIcon::SizeMedium, TDEIcon::MatchExact).isValid();
|
|
|
|
|
return !( iconLoader->iconPath(icon, TDEIcon::Desktop, true).isNull() );
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return !(iconLoader->iconPath(icon, TDEIcon::SizeMedium, true).isNull());
|
|
|
|
|
return !( locate( "data", "kweather/" + icon + ".png" ).isNull() );
|
|
|
|
|
}
|
|
|
|
|
}
|