diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | ae2a03c2941bf92573f89b88ef73f8aa842bea0a (patch) | |
tree | 3566563f3fb6ac3cb3496669d8f233062d3091bc /kweather/weatherservice.cpp | |
download | tdetoys-ae2a03c2941bf92573f89b88ef73f8aa842bea0a.tar.gz tdetoys-ae2a03c2941bf92573f89b88ef73f8aa842bea0a.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdetoys@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kweather/weatherservice.cpp')
-rw-r--r-- | kweather/weatherservice.cpp | 343 |
1 files changed, 343 insertions, 0 deletions
diff --git a/kweather/weatherservice.cpp b/kweather/weatherservice.cpp new file mode 100644 index 0000000..c35ed8f --- /dev/null +++ b/kweather/weatherservice.cpp @@ -0,0 +1,343 @@ +/* This file is part of the KDE project + Copyright (C) 2001-2004 Ian Geiser <geiseri@kde.org> + Copyright (C) 2002-2004 Nadeem Hasan <nhasan@kde.org> + Copyright (C) 2003-2004 John Ratke + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include <kdebug.h> +#include <kapplication.h> +#include <kconfig.h> +#include <kglobal.h> +#include <klocale.h> +#include <kstandarddirs.h> + +#include "weatherlib.h" +#include "weatherservice.h" +#include "stationdatabase.h" +#include "sun.h" + +WeatherService::WeatherService(QObject *parent, const char *name) : QObject (parent, name), DCOPObject("WeatherService") +{ + kdDebug(12006) << "Starting new service... " << endl; + + stationDB = new StationDatabase(); + + m_weatherLib = new WeatherLib(stationDB, this, "WeatherLib"); + connect(m_weatherLib, SIGNAL(fileUpdating( const QString&)), + SLOT(updating( const QString&))); + connect(m_weatherLib, SIGNAL(fileUpdate( const QString&)), + SLOT(updated( const QString&))); + connect(m_weatherLib, SIGNAL(stationRemoved(const QString&)), + SLOT(slotStationRemoved(const QString&))); + + KConfig *conf = kapp->config(); + + conf->setGroup("WEATHERSTATIONS"); + QStringList stations =conf->readListEntry("stations"); + QStringList::Iterator it = stations.begin(); + for ( ; it != stations.end(); ++it ) + m_weatherLib->update(*it); +} + +WeatherService::~WeatherService() +{ + kdDebug(12006) << "Going away... " << endl; + // Don't need to call saveSettings() because WeatherService::exit + // already does that. Plus it wouldn't work here anyway because + // we can't get the config after calling kapp->quit(); + delete stationDB; +} + +void WeatherService::updated(const QString &stationID) +{ + kdDebug(12006) << "Sending update for " << stationID << endl; + emit fileUpdate( stationID ); +} + +void WeatherService::updateAll() +{ + kdDebug(12006) << "Sending for all" << endl; + QStringList stations = m_weatherLib->stations(); + QStringList::ConstIterator end(stations.end()); + for ( QStringList::ConstIterator it = stations.begin(); it != end; ++it ) { + update(*it); + } + +} + +void WeatherService::updating(const QString &stationID) +{ + kdDebug(12006) << "Sending updating for " << stationID << endl; + emit fileUpdating( stationID ); +} + +void WeatherService::slotStationRemoved(const QString &stationID) +{ + kdDebug(12006) << "Sending stationRemoved for " << stationID << endl; + emit stationRemoved( stationID ); +} + +QString WeatherService::temperature(const QString &stationID) +{ + kdDebug (12006) << "Returning " << stationID << endl; + return m_weatherLib->temperature(stationID); +} + +QString WeatherService::dewPoint(const QString &stationID) +{ + return m_weatherLib->dewPoint(stationID); +} + +QString WeatherService::relativeHumidity(const QString &stationID) +{ + return m_weatherLib->relHumidity(stationID); +} + +QString WeatherService::heatIndex(const QString &stationID) +{ + return m_weatherLib->heatIndex(stationID); +} + +QString WeatherService::windChill(const QString &stationID) +{ + return m_weatherLib->windChill(stationID); +} + +QString WeatherService::wind(const QString &stationID) +{ + return m_weatherLib->wind(stationID); +} + +QString WeatherService::pressure(const QString &stationID) +{ + return m_weatherLib->pressure(stationID); +} + +QPixmap WeatherService::currentIcon(const QString &stationID) +{ + return icon( stationID ); +} + +QPixmap WeatherService::icon(const QString &stationID) +{ + kdDebug(12006) << "Get the current weather icon.." << endl; + QString icon = iconFileName(stationID); + QPixmap theIcon = QPixmap(icon); + return theIcon; +} + +QString WeatherService::currentIconString(const QString &stationID) +{ + return m_weatherLib->iconName(stationID); +} + +QString WeatherService::iconFileName(const QString &stationID) +{ + QString icon = m_weatherLib->iconName(stationID); + icon = locate( "data", "kweather/" + icon + ".png" ); + return icon; +} + +QString WeatherService::date(const QString &stationID) +{ + return m_weatherLib->date(stationID); +} + +QString WeatherService::visibility(const QString &stationID) +{ + return m_weatherLib->visibility(stationID); +} + +QStringList WeatherService::cover(const QString &stationID) +{ + return m_weatherLib->cover(stationID); +} + +QStringList WeatherService::weather(const QString &stationID) +{ + return m_weatherLib->weather(stationID); +} + +bool WeatherService::stationNeedsMaintenance(const QString &stationID) +{ + return m_weatherLib->stationNeedsMaintenance(stationID); +} + +void WeatherService::update(const QString &stationID) +{ + m_weatherLib->update(stationID); +} + +void WeatherService::forceUpdate(const QString &stationID) +{ + m_weatherLib->forceUpdate(stationID); +} + +void WeatherService::removeStation(const QString &stationID) +{ + m_weatherLib->remove(stationID); + saveSettings(); +} + +void WeatherService::addStation(const QString &stationID) +{ + m_weatherLib->update(stationID); + saveSettings(); +} + +void WeatherService::exit() +{ + saveSettings(); + kapp->quit(); +} + +QStringList WeatherService::listStations() +{ + return m_weatherLib->stations(); +} + +void WeatherService::saveSettings() +{ + KConfig *conf = kapp->config(); + conf->setGroup("WEATHERSTATIONS"); + conf->writeEntry( "stations", m_weatherLib->stations()); + conf->sync(); +} + +QString WeatherService::stationName(const QString &stationID) +{ + if ( stationDB ) + { + QString upperStationID = stationID.upper(); + return stationDB->stationNameFromID(upperStationID); + } + else + return stationID; +} +QString WeatherService::stationCode( const QString &stationName ) +{ + if ( stationDB ) + { + return stationDB->stationIDfromName(stationName); + } + else + return stationName; +} + +QString WeatherService::stationCountry(const QString &stationID) +{ + + if ( stationDB ) + { + QString upperStationID = stationID.upper(); + return stationDB->stationCountryFromID(upperStationID); + } + else + return stationID; +} +QString WeatherService::longitude(const QString &stationID) +{ + if ( stationDB ) + { + QString upperStationID = stationID.upper(); + return stationDB->stationLongitudeFromID(upperStationID); + } + else + return "None"; +} +QString WeatherService::latitude(const QString &stationID) +{ + if ( stationDB ) + { + QString upperStationID = stationID.upper(); + return stationDB->stationLatitudeFromID(upperStationID); + } + else + return "None"; +} + +QStringList WeatherService::findStations(float /*lon*/, float /*lat*/) +{ + QStringList stationList; + stationList << "KMKE" << "KPNE" << "KTPW"; + return stationList; +} + +QString WeatherService::getTime(const QString &stationID, TimeType timeType) +{ + QString upperStationID = stationID.upper(); + + QString latitude = stationDB->stationLatitudeFromID(upperStationID); + QString longitude = stationDB->stationLongitudeFromID(upperStationID); + + if ( latitude.compare( i18n("Unknown Station" ) ) == 0 || + longitude.compare( i18n("Unknown Station" ) ) == 0 ) + { + return i18n( "Unknown Station" ); + } + else + { + Sun theSun( latitude, longitude ); + + QTime time; + switch ( timeType ) + { + case RISE: + time = theSun.computeRiseTime(); + break; + case SET: + time = theSun.computeSetTime(); + break; + case CIVIL_START: + time = theSun.computeCivilTwilightStart(); + break; + case CIVIL_END: + time = theSun.computeCivilTwilightEnd(); + break; + } + + kdDebug(12006) << "station, lat, lon, time: " << upperStationID << " " << + latitude << " " << longitude << " " << time << endl; + + return KGlobal::locale()->formatTime(time); + } +} + +QString WeatherService::sunRiseTime(const QString &stationID) +{ + return getTime(stationID, RISE); +} + +QString WeatherService::sunSetTime(const QString &stationID) +{ + return getTime(stationID, SET); +} + +QString WeatherService::civilTwilightStart(const QString &stationID) +{ + return getTime(stationID, CIVIL_START); +} + +QString WeatherService::civilTwilightEnd(const QString &stationID) +{ + return getTime(stationID, CIVIL_END); +} + + + +#include "weatherservice.moc" |