From ae2a03c2941bf92573f89b88ef73f8aa842bea0a Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: 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 --- kweather/stationdatabase.cpp | 170 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 kweather/stationdatabase.cpp (limited to 'kweather/stationdatabase.cpp') diff --git a/kweather/stationdatabase.cpp b/kweather/stationdatabase.cpp new file mode 100644 index 0000000..00f13c1 --- /dev/null +++ b/kweather/stationdatabase.cpp @@ -0,0 +1,170 @@ +// +// +// C++ Implementation: $MODULE$ +// +// Description: +// +// +// Author: ian reinhart geiser , (C) 2003 +// +// Copyright: See COPYING file that comes with this distribution +// +// +#include "stationdatabase.h" + +#include +#include +#include + +class StationInfo +{ + public: + QString cityName; + QString country; + QString longitude; + QString latitude; + StationInfo () {} +}; + +StationDatabase::StationDatabase(const QString path) : mPath(path) +{ +} + + +StationDatabase::~StationDatabase() +{ +} + +bool StationDatabase::loadStation( const QString & stationID ) +{ + QFile file( mPath ); + bool found = FALSE; + + if ( !file.open( IO_ReadOnly ) ) + return false; + + QTextStream stream( &file ); + stream.setEncoding( QTextStream::UnicodeUTF8 ); + QString line; + while ( !stream.eof() ) + { + line = stream.readLine(); // line of text excluding '\n' + QStringList data = QStringList::split( ";", line, true ); + + if ( data[ 0 ].stripWhiteSpace() == stationID ) + { + StationInfo station; + station.cityName = data[ 3 ].stripWhiteSpace(); + station.country = data[ 5 ].stripWhiteSpace(); + station.latitude = data[ 7 ].stripWhiteSpace(); + station.longitude = data[ 8 ].stripWhiteSpace(); + + theDB.insert( data[ 0 ], station ); + found = TRUE; + break; + } + } + + file.close(); + return found; +} + +/*! + \fn StationDatabase::stationNameFromID(const QString& id) + */ +QString StationDatabase::stationNameFromID( const QString & stationID ) +{ + QString result; + + if ( theDB.find( stationID ) == theDB.end() ) + { + if ( loadStation( stationID ) ) + result = theDB[ stationID ].cityName; + else + result = i18n( "Unknown Station" ); + } + else + { + result = theDB[ stationID ].cityName; + } + + return result; +} + +/*! + \fn StationDatabase::stationLongitudeFromID( const QString &stationID) + */ +QString StationDatabase::stationLongitudeFromID( const QString & stationID ) +{ + QString result; + + if ( theDB.find( stationID ) == theDB.end() ) + { + if ( loadStation( stationID ) ) + result = theDB[ stationID ].longitude; + else + result = i18n( "Unknown Station" ); + } + else + { + result = theDB[ stationID ].longitude; + } + + return result; +} + +/*! + \fn StationDatabase::stationLatitudeFromID(const QString &stationID) + */ +QString StationDatabase::stationLatitudeFromID( const QString & stationID ) +{ + QString result; + + if ( theDB.find( stationID ) == theDB.end() ) + { + if ( loadStation( stationID ) ) + result = theDB[ stationID ].latitude; + else + result = i18n( "Unknown Station" ); + } + else + { + result = theDB[ stationID ].latitude; + } + + return result; +} + +/*! + \fn StationDatabase::stationCountryFromID( const QString &stationID) + */ +QString StationDatabase::stationCountryFromID( const QString &stationID ) +{ + QString result; + + if ( theDB.find( stationID ) == theDB.end() ) + { + if ( loadStation( stationID ) ) + result = theDB[ stationID ].country; + else + result = i18n( "Unknown Station" ); + } + else + { + result = theDB[ stationID ].country; + } + + return result; +} + +QString StationDatabase::stationIDfromName( const QString &name ) +{ + QMap::Iterator itr = theDB.begin(); + for( ; itr != theDB.end(); ++itr) + { + kdDebug() << "Checking " << itr.data().cityName << endl; + if( itr.data().cityName == name ) + return itr.key(); + } + return "0000"; +} -- cgit v1.2.1