summaryrefslogtreecommitdiffstats
path: root/kweather
diff options
context:
space:
mode:
authorMavridis Philippe <mavridisf@gmail.com>2021-12-12 15:50:37 +0200
committerMavridis Philippe <mavridisf@gmail.com>2022-01-14 12:39:01 +0200
commit6668b34bc5deb36e73aa45e0457ed6740f828efd (patch)
treef2ff95858cc06d5eaad187b6750717a58a175a60 /kweather
parent67e995b6fc4da17811aefb7c8d841c9812e4eec9 (diff)
downloadtdetoys-6668b34bc5deb36e73aa45e0457ed6740f828efd.tar.gz
tdetoys-6668b34bc5deb36e73aa45e0457ed6740f828efd.zip
Implemented icon theme option.
Changes in this commit include: * The option itself; * A method of updating the option right after Apply or Ok is pressed in the settings dialog; * A new WeatherIconPrivate class to store the methods previously in WeatherIcons, as well as the settings; * Improved icon name helper function in METAR parser; * A few cleanups to the WeatherIcon class. Signed-off-by: Mavridis Philippe <mavridisf@gmail.com>
Diffstat (limited to 'kweather')
-rw-r--r--kweather/kcmweather.cpp8
-rw-r--r--kweather/kweather.cpp19
-rw-r--r--kweather/kweather.h6
-rw-r--r--kweather/metar_parser.cpp63
-rw-r--r--kweather/metar_parser.h4
-rw-r--r--kweather/prefdialogdata.ui63
-rw-r--r--kweather/weather_icon.cpp132
-rw-r--r--kweather/weather_icon.h31
-rw-r--r--kweather/weatherlib.cpp24
-rw-r--r--kweather/weatherlib.h1
-rw-r--r--kweather/weatherservice.cpp20
-rw-r--r--kweather/weatherservice.h3
12 files changed, 274 insertions, 100 deletions
diff --git a/kweather/kcmweather.cpp b/kweather/kcmweather.cpp
index 9251737..b480980 100644
--- a/kweather/kcmweather.cpp
+++ b/kweather/kcmweather.cpp
@@ -71,6 +71,8 @@ KCMWeather::KCMWeather( TQWidget *parent, const char *name )
TQT_SLOT( reportLocationChanged() ) );
connect( mWidget->m_textColor, TQT_SIGNAL( changed(const TQColor &) ),
TQT_SLOT( textColorChanged(const TQColor &) ) );
+ connect( mWidget->m_iconTheme, TQT_SIGNAL( released( int ) ),
+ TQT_SLOT( changed() ) );
TDEAboutData *about = new TDEAboutData(
I18N_NOOP( "kcmweather" ),
@@ -182,6 +184,9 @@ void KCMWeather::load()
mWidget->m_viewMode->setButton( config.readNumEntry( "smallview_mode", dockwidget::ShowAll ) );
changeViewMode( config.readNumEntry( "smallview_mode", dockwidget::ShowAll ) );
+
+ mWidget->m_iconTheme->setButton( config.readBoolEntry("use_icon_theme", true) ? 0 : 1 );
+
emit changed( false );
}
@@ -202,6 +207,9 @@ void KCMWeather::save()
config.writeEntry( "report_location", loc);
config.writeEntry( "smallview_mode", mViewMode );
+
+ config.writeEntry( "use_icon_theme", mWidget->m_iconTheme->selectedId() == 0 );
+
config.sync();
emit changed( false );
diff --git a/kweather/kweather.cpp b/kweather/kweather.cpp
index eb87f98..2682a72 100644
--- a/kweather/kweather.cpp
+++ b/kweather/kweather.cpp
@@ -216,6 +216,7 @@ void kweather::loadPrefs(){
fileName = kcConfig->readPathEntry("log_file_name");
reportLocation = kcConfig->readEntry("report_location");
mViewMode = kcConfig->readNumEntry("smallview_mode", dockwidget::ShowAll);
+ setUseIconTheme(kcConfig->readBoolEntry("use_icon_theme", true));
static TQColor black(TQt::black);
mTextColor = kcConfig->readColorEntry("textColor", &black);
@@ -231,9 +232,23 @@ void kweather::savePrefs(){
kcConfig->writeEntry("report_location", reportLocation);
kcConfig->writeEntry("smallview_mode", mViewMode);
kcConfig->writePathEntry("log_file_name", fileName );
+ kcConfig->writeEntry("use_icon_theme", useIconTheme );
kcConfig->sync();
}
+void kweather::setUseIconTheme( bool use )
+{
+ useIconTheme = use;
+
+ if ( !mWeatherService )
+ initDCOP();
+
+ DCOPRef ws( "KWeatherService", "WeatherService" );
+ DCOPReply reply = ws.call( "useIconTheme", useIconTheme );
+ if( ! reply.isValid() )
+ kdDebug() << "[kweather::setUseIconTheme] DCOP call failed" << endl;
+}
+
void kweather::showWeather()
{
kdDebug(12004) << "Show weather" << endl;
@@ -332,6 +347,10 @@ void kweather::slotPrefsAccepted()
dockWidget->setLocationCode(reportLocation);
dockWidget->setViewMode(mViewMode);
+
+ setUseIconTheme(useIconTheme);
+ slotUpdateNow();
+
setLabelColor();
emit updateLayout();
diff --git a/kweather/kweather.h b/kweather/kweather.h
index 5a3b06e..c8b7113 100644
--- a/kweather/kweather.h
+++ b/kweather/kweather.h
@@ -68,13 +68,15 @@ private: // Private methods
void showWeather();
void writeLogEntry();
void mousePressEvent(TQMouseEvent *e);
-
+ void setUseIconTheme(bool use);
+
bool attach();
-
+
TQString reportLocation;
TQString fileName;
TQString metarData;
bool logOn;
+ bool useIconTheme;
bool mFirstRun;
int mViewMode;
TQTimer *timeOut;
diff --git a/kweather/metar_parser.cpp b/kweather/metar_parser.cpp
index 7ec252d..9456095 100644
--- a/kweather/metar_parser.cpp
+++ b/kweather/metar_parser.cpp
@@ -58,6 +58,7 @@ void MetarParser::reset()
{
// Initialize the WeatherInfo structure
weatherInfo.theWeather = TQString();
+ weatherInfo.iconPath = TQString();
weatherInfo.clouds = 0;
weatherInfo.windMPH = 0;
weatherInfo.tempC = 0;
@@ -258,7 +259,7 @@ bool MetarParser::parseCurrent(const TQString &s)
if (sCode.contains("DZ"))
{
phenomena = i18n("Drizzle");
- weatherInfo.theWeather = iconName( WeatherIcon::LightRain, false );
+ getIcon( WeatherIcon::LightRain, false );
}
else if (sCode.contains("RA"))
{
@@ -273,32 +274,32 @@ bool MetarParser::parseCurrent(const TQString &s)
else if (sCode.contains("SG"))
{
phenomena = i18n("Snow Grains");
- weatherInfo.theWeather = iconName( WeatherIcon::Snow, false, 4 );
+ getIcon( WeatherIcon::Snow, false, 4 );
}
else if (sCode.contains("IC"))
{
phenomena = i18n("Ice Crystals");
- weatherInfo.theWeather = iconName( WeatherIcon::Hail, false );
+ getIcon( WeatherIcon::Hail, false );
}
else if (sCode.contains("PE"))
{
phenomena = i18n("Ice Pellets");
- weatherInfo.theWeather = iconName( WeatherIcon::Hail, false );
+ getIcon( WeatherIcon::Hail, false );
}
else if (s.contains("GR"))
{
phenomena = i18n("Hail");
- weatherInfo.theWeather = iconName( WeatherIcon::Hail, false );
+ getIcon( WeatherIcon::Hail, false );
}
else if (sCode.contains("GS"))
{
phenomena = i18n("Small Hail Pellets");
- weatherInfo.theWeather = iconName( WeatherIcon::Hail, false );
+ getIcon( WeatherIcon::Hail, false );
}
else if (s.contains("UP"))
{
phenomena = i18n("Unknown Precipitation");
- weatherInfo.theWeather = iconName( WeatherIcon::Showers, isNight(weatherInfo.reportLocation), 1);
+ getIcon( WeatherIcon::Showers, isNight(weatherInfo.reportLocation), 1);
}
else if (sCode.contains("BR"))
{
@@ -727,17 +728,17 @@ void MetarParser::calcCurrentIcon()
if (weatherInfo.theWeather.isEmpty())
{
if (weatherInfo.clouds == 0)
- weatherInfo.theWeather = iconName( WeatherIcon::Sunny, night );
+ getIcon( WeatherIcon::Sunny, night );
else if (weatherInfo.clouds > 0 && weatherInfo.clouds <= 2)
- weatherInfo.theWeather = iconName( WeatherIcon::Cloudy, night, 1 );
+ getIcon( WeatherIcon::Cloudy, night, 1 );
else if ( weatherInfo.clouds > 2 && weatherInfo.clouds <= 4)
- weatherInfo.theWeather = iconName( WeatherIcon::Cloudy, night, 2 );
+ getIcon( WeatherIcon::Cloudy, night, 2 );
else if ( weatherInfo.clouds > 4 && weatherInfo.clouds <= 8)
- weatherInfo.theWeather = iconName( WeatherIcon::Cloudy, night, 3 );
+ getIcon( WeatherIcon::Cloudy, night, 3 );
else if ( weatherInfo.clouds > 8 && weatherInfo.clouds < 63)
- weatherInfo.theWeather = iconName( WeatherIcon::Cloudy, night, 4 );
+ getIcon( WeatherIcon::Cloudy, night, 4 );
else
- weatherInfo.theWeather = iconName( WeatherIcon::Cloudy, night, 5 );
+ getIcon( WeatherIcon::Cloudy, night, 5 );
}
else if (weatherInfo.theWeather == "tstorm")
{
@@ -745,11 +746,11 @@ void MetarParser::calcCurrentIcon()
weatherInfo.clouds = 30;
if (weatherInfo.clouds >= 0 && weatherInfo.clouds <= 10)
- weatherInfo.theWeather = iconName( WeatherIcon::Thunderstorm, night, 1 );
+ getIcon( WeatherIcon::Thunderstorm, night, 1 );
else if ( weatherInfo.clouds > 10 && weatherInfo.clouds <= 20)
- weatherInfo.theWeather = iconName( WeatherIcon::Thunderstorm, night, 2 );
+ getIcon( WeatherIcon::Thunderstorm, night, 2 );
else
- weatherInfo.theWeather = iconName( WeatherIcon::Thunderstorm, night, 3 );
+ getIcon( WeatherIcon::Thunderstorm, night, 3 );
}
else if (weatherInfo.theWeather == "shower")
{
@@ -757,11 +758,11 @@ void MetarParser::calcCurrentIcon()
weatherInfo.clouds = 30;
if (weatherInfo.clouds >= 0 && weatherInfo.clouds <= 10)
- weatherInfo.theWeather = iconName( WeatherIcon::Showers, night, 1 );
+ getIcon( WeatherIcon::Showers, night, 1 );
else if ( weatherInfo.clouds > 10 && weatherInfo.clouds <= 20)
- weatherInfo.theWeather = iconName( WeatherIcon::Showers, night, 2 );
+ getIcon( WeatherIcon::Showers, night, 2 );
else
- weatherInfo.theWeather = iconName( WeatherIcon::Showers, night, 3 );
+ getIcon( WeatherIcon::Showers, night, 3 );
}
else if (weatherInfo.theWeather == "snow")
{
@@ -769,22 +770,22 @@ void MetarParser::calcCurrentIcon()
weatherInfo.clouds = 30;
if (weatherInfo.clouds >= 0 && weatherInfo.clouds <= 8)
- weatherInfo.theWeather = iconName( WeatherIcon::Snow, night, 1 );
+ getIcon( WeatherIcon::Snow, night, 1 );
else if ( weatherInfo.clouds > 8 && weatherInfo.clouds <= 16)
- weatherInfo.theWeather = iconName( WeatherIcon::Snow, night, 2 );
+ getIcon( WeatherIcon::Snow, night, 2 );
else if (weatherInfo.clouds > 16 && weatherInfo.clouds <= 24)
- weatherInfo.theWeather = iconName( WeatherIcon::Snow, night, 3 );
+ getIcon( WeatherIcon::Snow, night, 3 );
else
- weatherInfo.theWeather = iconName( WeatherIcon::Snow, night, 5 );
+ getIcon( WeatherIcon::Snow, night, 5 );
}
else if ( weatherInfo.theWeather == "mist" || weatherInfo.theWeather == "fog" )
{
if ( weatherInfo.clouds >= 63 )
- weatherInfo.theWeather = iconName( WeatherIcon::Cloudy, night, 5 );
+ getIcon( WeatherIcon::Cloudy, night, 5 );
else if ( weatherInfo.theWeather == "mist" )
- weatherInfo.theWeather = iconName( WeatherIcon::Mist, night );
+ getIcon( WeatherIcon::Mist, night );
else if ( weatherInfo.theWeather == "fog" )
- weatherInfo.theWeather = iconName( WeatherIcon::Fog, night );
+ getIcon( WeatherIcon::Fog, night );
}
kdDebug(12006) << "Clouds: " << weatherInfo.clouds << ", Icon: "
@@ -860,23 +861,23 @@ bool MetarParser::isNight(const TQString &stationID) const
}
}
-TQString MetarParser::iconName( int condition, bool night, int strength ) const
+void MetarParser::getIcon( int condition, bool night, int strength )
{
- TQString _iconName;
if( strength != 0 )
{
// Ranged
WeatherIcon* wi = new WeatherIcon( condition, night, strength );
- _iconName = wi->name();
+ weatherInfo.iconName = wi->name();
+ weatherInfo.iconPath = wi->path();
delete wi;
}
else
{
// Simple
WeatherIcon* wi = new WeatherIcon( condition, night );
- _iconName = wi->name();
+ weatherInfo.iconName = wi->name();
+ weatherInfo.iconPath = wi->path();
delete wi;
}
- return _iconName;
}
diff --git a/kweather/metar_parser.h b/kweather/metar_parser.h
index a5ab028..6a645d2 100644
--- a/kweather/metar_parser.h
+++ b/kweather/metar_parser.h
@@ -32,6 +32,8 @@ struct WeatherInfo
{
/** The current weather state outside */
TQString theWeather;
+ TQString iconName;
+ TQString iconPath;
int clouds;
float windMPH;
float tempC;
@@ -92,7 +94,7 @@ class MetarParser
void calcCurrentIcon();
void calcWindChill();
bool isNight(const TQString &stationID) const;
- TQString iconName( int condition, bool night, int strength = 0 ) const;
+ void getIcon( int condition, bool night, int strength = 0 );
/*
* Reset the internal WeatherInfo struct of the class so that
diff --git a/kweather/prefdialogdata.ui b/kweather/prefdialogdata.ui
index db4844e..8fa70b1 100644
--- a/kweather/prefdialogdata.ui
+++ b/kweather/prefdialogdata.ui
@@ -9,8 +9,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>429</width>
- <height>341</height>
+ <width>761</width>
+ <height>464</height>
</rect>
</property>
<property name="sizePolicy">
@@ -27,6 +27,9 @@
<height>0</height>
</size>
</property>
+ <property name="caption">
+ <string>prefsDialogData</string>
+ </property>
<property name="focusPolicy">
<enum>TabFocus</enum>
</property>
@@ -50,7 +53,7 @@
</sizepolicy>
</property>
<property name="frameShape">
- <enum>GroupBoxPanel</enum>
+ <enum>NoFrame</enum>
</property>
<property name="frameShadow">
<enum>Sunken</enum>
@@ -67,7 +70,7 @@
<cstring>TextLabel1_4_2_2</cstring>
</property>
<property name="text">
- <string>&amp;Location:</string>
+ <string>Lo&amp;cation:</string>
</property>
<property name="buddy" stdset="0">
<cstring>m_reportLocation</cstring>
@@ -152,7 +155,10 @@
</sizepolicy>
</property>
<property name="text">
- <string>&amp;Show icon only</string>
+ <string>Show icon onl&amp;y</string>
+ </property>
+ <property name="accel">
+ <string>Alt+Y</string>
</property>
<property name="buttonGroupId">
<number>1</number>
@@ -171,6 +177,9 @@
<property name="text">
<string>Show &amp;icon and temperature</string>
</property>
+ <property name="accel">
+ <string>Alt+I</string>
+ </property>
<property name="buttonGroupId">
<number>2</number>
</property>
@@ -180,7 +189,7 @@
<cstring>CheckBox10</cstring>
</property>
<property name="text">
- <string>Show icon, temperature, &amp;wind and pressure information</string>
+ <string>Show icon, temperature, wind &amp;and pressure information</string>
</property>
<property name="checked">
<bool>true</bool>
@@ -271,6 +280,44 @@
</widget>
</grid>
</widget>
+ <widget class="TQButtonGroup">
+ <property name="name">
+ <cstring>m_iconTheme</cstring>
+ </property>
+ <property name="title">
+ <string>Weather Icon</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="TQRadioButton">
+ <property name="name">
+ <cstring>m_systemIcons</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Use system icon theme</string>
+ </property>
+ <property name="accel">
+ <string>Alt+U</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget class="TQRadioButton">
+ <property name="name">
+ <cstring>m_kweatherIcons</cstring>
+ </property>
+ <property name="text">
+ <string>Use &amp;KWeather theme</string>
+ </property>
+ <property name="accel">
+ <string>Alt+K</string>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
<widget class="TQGroupBox">
<property name="name">
<cstring>groupBox3</cstring>
@@ -320,7 +367,7 @@
</property>
<property name="sizeHint">
<size>
- <width>170</width>
+ <width>637</width>
<height>20</height>
</size>
</property>
@@ -329,8 +376,6 @@
</widget>
</vbox>
</widget>
-<customwidgets>
-</customwidgets>
<connections>
<connection>
<sender>m_enableLog</sender>
diff --git a/kweather/weather_icon.cpp b/kweather/weather_icon.cpp
index e358833..8cd2520 100644
--- a/kweather/weather_icon.cpp
+++ b/kweather/weather_icon.cpp
@@ -1,12 +1,92 @@
+#include <tqpair.h>
+
#include <kstandarddirs.h>
#include <kiconloader.h>
#include <kdebug.h>
#include "weather_icon.h"
-WeatherIcon::WeatherIcon( int condition, bool night )
+WeatherIconPrivate* WeatherIconPrivate::s_instance = 0;
+
+WeatherIconPrivate::WeatherIconPrivate()
{
iconLoader = new TDEIconLoader("kweather");
+}
+
+WeatherIconPrivate::~WeatherIconPrivate()
+{
+ delete iconLoader;
+}
+
+WeatherIconPrivate* WeatherIconPrivate::instance()
+{
+ if ( s_instance == 0 )
+ s_instance = new WeatherIconPrivate();
+
+ return s_instance;
+}
+
+void WeatherIconPrivate::useIconTheme( bool use )
+{
+ m_useIconTheme = use;
+}
+
+bool WeatherIconPrivate::usingIconTheme()
+{
+ return m_useIconTheme;
+}
+
+TQPair<TQString,TQString> WeatherIconPrivate::findIcon( TQStringList fallback )
+{
+ kdDebug() << "[WeatherIcon::findIcon] use icon theme? " << m_useIconTheme << endl;
+ if( m_useIconTheme )
+ {
+ // Check in theme
+ for ( TQStringList::Iterator icon = fallback.begin(); icon != fallback.end(); ++icon )
+ {
+ kdDebug() << "[WeatherIcon::findIcon] Searching for `" << *icon << "` in theme" << endl;
+ TQString iPath = iconPath(*icon, true);
+ if( !( iPath.isNull() ) )
+ {
+ kdDebug() << "[WeatherIcon::findIcon] FOUND `" << *icon << "` in theme: " << iPath << endl;
+ return qMakePair(*icon, iPath);
+ }
+ }
+ }
+
+ // Check in kweather fallback
+ for ( TQStringList::Iterator icon = fallback.begin(); icon != fallback.end(); ++icon )
+ {
+ kdDebug() << "[WeatherIcon::findIcon] Searching for `" << *icon << "` in kweather icons" << endl;
+ TQString iPath = iconPath(*icon, false);
+ if( !( iPath.isNull() ) )
+ {
+ kdDebug() << "[WeatherIcon::findIcon] FOUND `" << *icon << "` in kweather icons: " << iPath << endl;
+ return qMakePair(*icon, iPath);
+ }
+ }
+ return qMakePair(WeatherIcon::unknown(), iconPath(WeatherIcon::unknown()));
+}
+
+TQString WeatherIconPrivate::iconPath( TQString icon, bool inTheme )
+{
+ if( inTheme )
+ {
+ return iconLoader->iconPath(icon, TDEIcon::Desktop, true);
+ }
+ else
+ {
+ return locate( "data", "kweather/" + icon + ".png" );
+ }
+}
+
+TQString WeatherIconPrivate::iconPath( TQString icon )
+{
+ return iconPath(icon, m_useIconTheme);
+}
+
+WeatherIcon::WeatherIcon( int condition, bool night )
+{
TQStringList fallback;
switch( condition )
@@ -82,13 +162,14 @@ WeatherIcon::WeatherIcon( int condition, bool night )
}
}
- iconName = findIcon(fallback);
+ TQPair<TQString,TQString> foundIcon = WeatherIconPrivate::instance()->findIcon(fallback);
+ iconName = foundIcon.first;
+ iconPath = foundIcon.second;
return;
}
WeatherIcon::WeatherIcon( int condition, bool night, unsigned int strength )
{
- iconLoader = new TDEIconLoader("kweather");
TQStringList fallback;
switch ( condition )
@@ -367,48 +448,13 @@ WeatherIcon::WeatherIcon( int condition, bool night, unsigned int strength )
break;
}
- iconName = findIcon(fallback);
+ TQPair<TQString,TQString> foundIcon = WeatherIconPrivate::instance()->findIcon(fallback);
+ iconName = foundIcon.first;
+ iconPath = foundIcon.second;
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 )
- {
- return !( iconLoader->iconPath(icon, TDEIcon::Desktop, true).isNull() );
- }
- else
- {
- return !( locate( "data", "kweather/" + icon + ".png" ).isNull() );
- }
-}
+ iconName = TQString::null;
+} \ No newline at end of file
diff --git a/kweather/weather_icon.h b/kweather/weather_icon.h
index 3ae8ddc..f18c472 100644
--- a/kweather/weather_icon.h
+++ b/kweather/weather_icon.h
@@ -1,5 +1,28 @@
class TDEIconLoader;
+class WeatherIconPrivate {
+ friend class WeatherIcon;
+
+ public:
+ WeatherIconPrivate();
+ ~WeatherIconPrivate();
+
+ static WeatherIconPrivate* instance();
+
+ void useIconTheme( bool use );
+ bool usingIconTheme();
+
+ TQString iconPath( TQString icon, bool inTheme );
+ TQString iconPath( TQString icon );
+
+ private:
+ static WeatherIconPrivate* s_instance;
+ TDEIconLoader* iconLoader;
+ bool m_useIconTheme;
+
+ TQPair<TQString,TQString> findIcon( TQStringList fallback );
+};
+
class WeatherIcon {
public:
enum SimpleCondition { Sunny, Fog, Mist, Overcast, Hail, LightRain, Sleet };
@@ -10,12 +33,10 @@ class WeatherIcon {
~WeatherIcon();
static TQString unknown() { return "weather-none-available"; };
- TQString& name() { return iconName; }
+ TQString name() { return iconName; }
+ TQString path() { return iconPath; }
private:
- TQString findIcon( TQStringList fallback );
- bool iconExists( TQString& icon, bool inTheme = true );
-
- TDEIconLoader* iconLoader;
TQString iconName;
+ TQString iconPath;
};
diff --git a/kweather/weatherlib.cpp b/kweather/weatherlib.cpp
index 32d653c..a7bb13c 100644
--- a/kweather/weatherlib.cpp
+++ b/kweather/weatherlib.cpp
@@ -272,14 +272,34 @@ TQString WeatherLib::windChill(const TQString &stationID){
TQString WeatherLib::iconName(const TQString &stationID){
- TQString result = WeatherIcon::unknown();
+ TQString result;
+
+ // isEmpty is true for null or 0 length strings
+ if ( !stationID.isEmpty() )
+ {
+ Data *d = findData(stationID);
+ result = d->wi.iconName;
+ }
+
+ if( result == TQString::null )
+ result = WeatherIcon::unknown();
+
+ return result;
+}
+
+TQString WeatherLib::iconPath(const TQString &stationID){
+
+ TQString result;
// isEmpty is true for null or 0 length strings
if ( !stationID.isEmpty() )
{
Data *d = findData(stationID);
- result = d->wi.theWeather;
+ result = d->wi.iconPath;
}
+
+ if( result == TQString::null )
+ result = WeatherIconPrivate::instance()->iconPath(WeatherIcon::unknown());
return result;
}
diff --git a/kweather/weatherlib.h b/kweather/weatherlib.h
index 2e5f8b3..5dde37c 100644
--- a/kweather/weatherlib.h
+++ b/kweather/weatherlib.h
@@ -48,6 +48,7 @@ class WeatherLib : public TQObject
TQString wind(const TQString &stationID);
TQString pressure(const TQString &stationID);
TQString iconName(const TQString &stationID);
+ TQString iconPath(const TQString &stationID);
TQString date(const TQString &stationID);
TQStringList weather(const TQString &stationID);
TQString visibility(const TQString &stationID);
diff --git a/kweather/weatherservice.cpp b/kweather/weatherservice.cpp
index f54d803..556a015 100644
--- a/kweather/weatherservice.cpp
+++ b/kweather/weatherservice.cpp
@@ -30,6 +30,7 @@
#include "weatherlib.h"
#include "weatherservice.h"
#include "stationdatabase.h"
+#include "weather_icon.h"
#include "sun.h"
WeatherService::WeatherService(TQObject *parent, const char *name) : TQObject (parent, name), DCOPObject("WeatherService")
@@ -150,13 +151,18 @@ TQString WeatherService::currentIconString(const TQString &stationID)
TQString WeatherService::iconFileName(const TQString &stationID)
{
- TQString _name = m_weatherLib->iconName(stationID);
- TQString icon = kapp->iconLoader()->iconPath(_name, TDEIcon::Desktop, true);
- if( icon.isNull() )
- {
- icon = locate( "data", "kweather/" + _name + ".png" );
- }
- return icon;
+ return m_weatherLib->iconPath(stationID);
+}
+
+void WeatherService::useIconTheme(bool use)
+{
+ kdDebug() << "[!!!] received signal to set useIconTheme to " << use << endl;
+ WeatherIconPrivate::instance()->useIconTheme(use);
+}
+
+bool WeatherService::usingIconTheme()
+{
+ return WeatherIconPrivate::instance()->usingIconTheme();
}
TQString WeatherService::date(const TQString &stationID)
diff --git a/kweather/weatherservice.h b/kweather/weatherservice.h
index dba1ac9..ae0f39b 100644
--- a/kweather/weatherservice.h
+++ b/kweather/weatherservice.h
@@ -90,6 +90,9 @@ class WeatherService : public TQObject, public DCOPObject
void addStation(const TQString &stationID);
TQStringList listStations();
TQString stationCode( const TQString &stationName );
+
+ void useIconTheme( bool use );
+ bool usingIconTheme();
void exit();