diff options
Diffstat (limited to 'kdecore/ktimezones.h')
-rw-r--r-- | kdecore/ktimezones.h | 351 |
1 files changed, 0 insertions, 351 deletions
diff --git a/kdecore/ktimezones.h b/kdecore/ktimezones.h deleted file mode 100644 index 3055f202f..000000000 --- a/kdecore/ktimezones.h +++ /dev/null @@ -1,351 +0,0 @@ -/* - This file is part of the KDE libraries - Copyright (c) 2005 S.R.Haque <srhaque@iee.org>. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License version 2 as published by the Free Software Foundation. - - This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef _KTIMEZONES_H -#define _KTIMEZONES_H - -#include "kdelibs_export.h" -#include <tqdatetime.h> -#include <tqnamespace.h> -#include <tqmap.h> -#include <tqstring.h> -#include <ksharedptr.h> - -class KTimezoneDetails; -class KTimezoneDetailsPrivate; -class KTimezonePrivate; -class KTimezonesPrivate; - -/** - * The KTimezoneSource class contains information source-dependent functions - * related to a timezone. Create subclasses to implement custom sources of - * timezone information. - * - * For example, to be able to create {@link KTimezone } objects from libical's - * VTIMEZONE objects: - *<ul> - * <li>Subclass this class with a custom {@link parse() } routine. - * <li>Create one or more instances of this class. - * <li>Use the instance(s) to create {@link KTimezone } objects. - * <li>If required, add the objects to a {@link KTimezones } database. - *</ul> - * @since 3.5 - * @author S.R.Haque <srhaque@iee.org>. - */ -class KDECORE_EXPORT KTimezoneSource : - public KShared -{ -public: - KTimezoneSource(const TQString &db); - virtual ~KTimezoneSource(); - - /** - * Location of system timezone information. - * @return value which can be combined with zone name to retrieve timezone info. - */ - virtual TQString db(); - - /** - * Extract timezone detail information. The default implementation consists - * of a parser for zoneinfo files in tzfile(5). - * @return true if the parse encountered no errors. - */ - virtual bool parse(const TQString &zone, KTimezoneDetails &dataReceiver) const; - -private: - TQString m_db; -}; - -/** - * The KTimezone class contains core functions related to a timezone. Instances - * are created in the context of a {@link KTimezoneSource } which provides - * extended functionality via {@link KTimezoneDetails }. - * - * @see KTimezoneSource - * @see KTimezoneDetails - * @since 3.5 - * @author S.R.Haque <srhaque@iee.org>. - */ -class KDECORE_EXPORT KTimezone -{ -public: - /** - * A representation for unknown locations; this is a float - * that does not represent a real latitude or longitude. - */ - static const float UNKNOWN; - - /** - * A test for a valid latitude. The valid range is +90.0 (North Pole) - * to -90.0 (South Pole). - */ - static bool isValidLatitude(float latitude); - - /** - * A test for a valid longitude. The valid range is +180.0 (east of - * Greenwich) to -180.0 (west of Greenwich). - */ - static bool isValidLongitude(float longitude); - - /** - * Create a timezone. - * - * @param db database of timezones. - * @param name in system-dependent format. - * @param countryCode ISO 3166 2-character country code, empty if unknown. - * @param latitude in degrees, UNKNOWN if not known. - * @param longitude in degrees, UNKNOWN if not known. - * @param comment description of the timezone, if any. - */ - KTimezone( - KSharedPtr<KTimezoneSource> db, const TQString &name, - const TQString &countryCode = TQString(), float latitude = UNKNOWN, float longitude = UNKNOWN, - const TQString &comment = TQString()); - ~KTimezone(); - - /** - * Returns the name of the timezone. - * - * @return name in system-dependent format. - */ - TQString name() const; - - /** - * Returns the two-letter country code of the timezone. - * - * @return ISO 3166 2-character country code, empty if unknown. - */ - TQString countryCode() const; - - /** - * Returns the latitude of the timezone. - * - * @return latitude in degrees, UNKNOWN if not known. - */ - float latitude() const; - - /** - * Returns the latitude of the timezone. - * - * @return latitude in degrees, UNKNOWN if not known. - */ - float longitude() const; - - /** - * Returns the current offset of this timezone to UTC or the local - * timezone in seconds. - * - * Take care if you cache the results of this routine; that would - * break if the result were stored across a daylight savings change. - * - * @return offset in seconds. - */ - int offset(Qt::TimeSpec basisSpec = Qt::UTC) const; - - /** - * Returns the offset of the given timezone to UTC at the given - * date/time (which is interpreted as being UTC). - * - * @return offset in seconds. - */ - int offset(const TQDateTime &dateTime) const; - - /** - * Convert a date/time (which is interpreted as being localtime in this - * timezone) into localtime in the given timezone. - * - * @return converted date/time. - */ - TQDateTime convert(const KTimezone *newZone, const TQDateTime &dateTime) const; - - /** - * Returns any comment for the timezone. - * - * @return comment, may be empty. - */ - TQString comment() const; - - /** - * Extract timezone detail information. - * @return true if the parse encountered no errors. - */ - bool parse(KTimezoneDetails &dataReceiver) const; - -private: - KTimezone(const KTimezone&); - KTimezone& operator=(const KTimezone&); - - KSharedPtr<KTimezoneSource> m_db; - TQString m_name; - TQString m_countryCode; - float m_latitude; - float m_longitude; - TQString m_comment; - KTimezonePrivate *d; -}; - -/** - * The KTimezoneDetails class contains extended functions related to a - * timezone. - * - * The parser must be customised by overriding the given virtual callbacks: - *<ul> - * <li>{@link parseEnded() } - * <li>{@link parseStarted() } - * <li>{@link gotHeader() } - * <li>{@link gotTransitionTime() } - * <li>{@link gotLocalTimeIndex() } - * <li>{@link gotLocalTime() } - * <li>{@link gotAbbreviation() } - * <li>{@link gotLeapAdjustment() } - * <li>{@link gotIsStandard() } - * <li>{@link gotIsUTC() } - *</ul> - * - * @see KTimezone - * @since 3.5 - * @author S.R.Haque <srhaque@iee.org>. - */ -class KDECORE_EXPORT KTimezoneDetails -{ -public: - KTimezoneDetails(); - virtual ~KTimezoneDetails(); - - /** - * Always called after all other callbacks. - */ - virtual void parseEnded(); - - /** - * Always called before any other callback. - */ - virtual void parseStarted(); - - /** - * Called when the header is seen. - */ - virtual void gotHeader( - unsigned ttIsGmtCnt, unsigned ttIsStdCnt, unsigned leapCnt, - unsigned timeCnt, unsigned typeCnt, unsigned charCnt); - - /** - * Called when a transition time is seen. - */ - virtual void gotTransitionTime(int index, unsigned transitionTime); - - /** - * Called when a local time index is seen. - */ - virtual void gotLocalTimeIndex(int index, unsigned localTimeIndex); - - /** - * Called when a local time is seen. - */ - virtual void gotLocalTime(int index, int gmtOff, bool isDst, unsigned abbrIndex); - - /** - * Called when a timezone abbreviation is seen. Note that the index here - * is NOT a simple incrementing integer, rather it matches the sequence - * of abbrIndex values from {@link gotLocalTime() }. - */ - virtual void gotAbbreviation(int index, const TQString &abbr); - - /** - * Called when a leap second adjustment is seen. - */ - virtual void gotLeapAdjustment(int index, unsigned leapTime, unsigned leapSeconds); - - /** - * Called when a standard/wall time indicator is seen. - */ - virtual void gotIsStandard(int index, bool isStandard); - - /** - * Called when a UTC/local time indicator is seen. - */ - virtual void gotIsUTC(int index, bool isUTC); - -private: - KTimezoneDetailsPrivate *d; -}; - -/** - * The KTimezones class models a timezone database. It supports system - * timezones, and also has support for private timezone entries. - * - * @since 3.5 - * @author S.R.Haque <srhaque@iee.org>. - */ -class KDECORE_EXPORT KTimezones -{ -public: - KTimezones(); - ~KTimezones(); - - /** - * Returns the local timezone. The idea of this routine is to provide a - * robust lookup of the local timezone. - * - * The problem is that on Unix systems, there are a variety of mechanisms - * for setting this information, and no real way of getting it. For example, - * if you set your timezone to "Europe/London", then the tzname[] - * maintained by tzset() typically returns { "GMT", "BST" }. The point of - * this routine is to actually return "Europe/London" (or rather, the - * corresponding KTimezone). - * - * @return local timezone. If necessary, we will use a series of heuristics - * which end by returning UTC. We will never return NULL. - */ - const KTimezone *local(); - - /** - * Returns the given timezone. - * - * @param name Name of timezone. Empty is equivalent to UTC. - * @return named timezone, NULL on error. - */ - const KTimezone *zone(const TQString &name); - - typedef TQMap<TQString, KTimezone *> ZoneMap; - - /** - * Return timezone database. - * @return known timezones. - */ - const ZoneMap allZones(); - - /** - * Add user-defined timezone to database. - */ - void add(KTimezone *zone); - -private: - KTimezones(const KTimezones&); - KTimezones& operator=(const KTimezones&); - - float convertCoordinate(const TQString &coordinate); - - TQString m_zoneinfoDir; - ZoneMap *m_zones; - KTimezone *m_UTC; - KTimezonesPrivate *d; -}; - -#endif |