ktimezones.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _KTIMEZONES_H
00021 #define _KTIMEZONES_H
00022
00023 #include "kdelibs_export.h"
00024 #include <qdatetime.h>
00025 #include <qnamespace.h>
00026 #include <qmap.h>
00027 #include <qstring.h>
00028 #include <ksharedptr.h>
00029 class KTimezoneDetails;
00030 class KTimezoneDetailsPrivate;
00031 class KTimezonePrivate;
00032 class KTimezonesPrivate;
00033
00050 class KDECORE_EXPORT KTimezoneSource :
00051 public KShared
00052 {
00053 public:
00054 KTimezoneSource(const QString &db);
00055 virtual ~KTimezoneSource();
00056
00061 virtual QString db();
00062
00068 virtual bool parse(const QString &zone, KTimezoneDetails &dataReceiver) const;
00069
00070 private:
00071 QString m_db;
00072 };
00073
00084 class KDECORE_EXPORT KTimezone
00085 {
00086 public:
00091 static const float UNKNOWN;
00092
00097 static bool isValidLatitude(float latitude);
00098
00103 static bool isValidLongitude(float longitude);
00104
00115 KTimezone(
00116 KSharedPtr<KTimezoneSource> db, const QString &name,
00117 const QString &countryCode = QString(), float latitude = UNKNOWN, float longitude = UNKNOWN,
00118 const QString &comment = QString());
00119 ~KTimezone();
00120
00126 QString name() const;
00127
00133 QString countryCode() const;
00134
00140 float latitude() const;
00141
00147 float longitude() const;
00148
00158 int offset(Qt::TimeSpec basisSpec = Qt::UTC) const;
00159
00166 int offset(const QDateTime &dateTime) const;
00167
00174 QDateTime convert(const KTimezone *newZone, const QDateTime &dateTime) const;
00175
00181 QString comment() const;
00182
00187 bool parse(KTimezoneDetails &dataReceiver) const;
00188
00189 private:
00190 KSharedPtr<KTimezoneSource> m_db;
00191 QString m_name;
00192 QString m_countryCode;
00193 float m_latitude;
00194 float m_longitude;
00195 QString m_comment;
00196 KTimezonePrivate *d;
00197 };
00198
00221 class KDECORE_EXPORT KTimezoneDetails
00222 {
00223 public:
00224 KTimezoneDetails();
00225 virtual ~KTimezoneDetails();
00226
00230 virtual void parseEnded();
00231
00235 virtual void parseStarted();
00236
00240 virtual void gotHeader(
00241 unsigned ttIsGmtCnt, unsigned ttIsStdCnt, unsigned leapCnt,
00242 unsigned timeCnt, unsigned typeCnt, unsigned charCnt);
00243
00247 virtual void gotTransitionTime(int index, unsigned transitionTime);
00248
00252 virtual void gotLocalTimeIndex(int index, unsigned localTimeIndex);
00253
00257 virtual void gotLocalTime(int index, int gmtOff, bool isDst, unsigned abbrIndex);
00258
00264 virtual void gotAbbreviation(int index, const QString &abbr);
00265
00269 virtual void gotLeapAdjustment(int index, unsigned leapTime, unsigned leapSeconds);
00270
00274 virtual void gotIsStandard(int index, bool isStandard);
00275
00279 virtual void gotIsUTC(int index, bool isUTC);
00280
00281 private:
00282 KTimezoneDetailsPrivate *d;
00283 };
00284
00292 class KDECORE_EXPORT KTimezones
00293 {
00294 public:
00295 KTimezones();
00296 ~KTimezones();
00297
00312 const KTimezone *local();
00313
00320 const KTimezone *zone(const QString &name);
00321
00322 typedef QMap<QString, KTimezone *> ZoneMap;
00323
00328 const ZoneMap allZones();
00329
00333 void add(KTimezone *zone);
00334
00335 private:
00336 float convertCoordinate(const QString &coordinate);
00337
00338 QString m_zoneinfoDir;
00339 ZoneMap *m_zones;
00340 KTimezone *m_UTC;
00341 KTimezonesPrivate *d;
00342 };
00343
00344 #endif
|