KCal Library
icaltimezones.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef KCAL_ICALTIMEZONES_H
00023 #define KCAL_ICALTIMEZONES_H
00024
00025 #include <ktimezone.h>
00026
00027 #include "kcal_export.h"
00028
00029 #ifndef ICALCOMPONENT_H
00030 typedef struct icalcomponent_impl icalcomponent;
00031 #endif
00032 #ifndef ICALTIMEZONE_DEFINED
00033 #define ICALTIMEZONE_DEFINED
00034 typedef struct _icaltimezone icaltimezone;
00035 #endif
00036
00037 namespace KCal {
00038
00039 class ICalTimeZone;
00040 class ICalTimeZoneSource;
00041 class ICalTimeZoneData;
00042 class ICalTimeZonesPrivate;
00043 class ICalTimeZonePrivate;
00044 class ICalTimeZoneSourcePrivate;
00045 class ICalTimeZoneDataPrivate;
00046
00047
00065 class KCAL_EXPORT ICalTimeZones
00066 {
00067 public:
00071 ICalTimeZones();
00075 ~ICalTimeZones();
00076
00085 ICalTimeZone zone(const QString &name) const;
00086
00087 typedef QMap<QString, ICalTimeZone> ZoneMap;
00088
00094 const ZoneMap zones() const;
00095
00103 bool add(const ICalTimeZone &zone);
00104
00111 ICalTimeZone remove(const ICalTimeZone &zone);
00112
00119 ICalTimeZone remove(const QString &name);
00120
00124 void clear();
00125
00126 private:
00127 ICalTimeZones(const ICalTimeZones &);
00128 ICalTimeZones &operator=(const ICalTimeZones &);
00129
00130 ICalTimeZonesPrivate *const d;
00131 };
00132
00133
00143 class KCAL_EXPORT ICalTimeZone : public KTimeZone
00144 {
00145 public:
00151 ICalTimeZone();
00152
00160 ICalTimeZone(ICalTimeZoneSource *source, const QString &name, ICalTimeZoneData *data);
00161
00168 explicit ICalTimeZone(const KTimeZone &tz, const QDate &earliest = QDate());
00169
00173 virtual ~ICalTimeZone();
00174
00181 QString city() const;
00182
00188 QByteArray url() const;
00189
00195 QDateTime lastModified() const;
00196
00202 QByteArray vtimezone() const;
00203
00211 icaltimezone *icalTimezone() const;
00212
00225 bool update(const ICalTimeZone &other);
00226
00237 static ICalTimeZone utc();
00238
00239 private:
00240
00241
00242 };
00243
00244
00258 class KCAL_EXPORT ICalTimeZoneBackend : public KTimeZoneBackend
00259 {
00260 public:
00262 ICalTimeZoneBackend();
00273 ICalTimeZoneBackend(ICalTimeZoneSource *source, const QString &name, const QString &countryCode = QString(),
00274 float latitude = KTimeZone::UNKNOWN, float longitude = KTimeZone::UNKNOWN,
00275 const QString &comment = QString());
00281 ICalTimeZoneBackend(const KTimeZone &tz, const QDate &earliest);
00282
00283 virtual ~ICalTimeZoneBackend();
00284
00290 virtual KTimeZoneBackend *clone() const;
00291
00297 virtual QByteArray type() const;
00298
00307 virtual bool hasTransitions(const KTimeZone* caller) const;
00308
00309 private:
00310 ICalTimeZonePrivate *d;
00311 };
00312
00313
00325 class KCAL_EXPORT ICalTimeZoneSource : public KTimeZoneSource
00326 {
00327 public:
00331 ICalTimeZoneSource();
00335 virtual ~ICalTimeZoneSource();
00336
00344 ICalTimeZone parse(icalcomponent *vtimezone);
00345
00360 bool parse(icalcomponent *calendar, ICalTimeZones &zones);
00361
00375 bool parse(const QString &fileName, ICalTimeZones &zones);
00376
00389 ICalTimeZone parse(icaltimezone *tz);
00390
00402 ICalTimeZone standardZone(const QString &zone, bool icalBuiltIn = false);
00403
00412 static QByteArray icalTzidPrefix();
00413
00414 using KTimeZoneSource::parse;
00415
00416 private:
00417 ICalTimeZoneSourcePrivate *const d;
00418 };
00419
00420
00431 class KCAL_EXPORT ICalTimeZoneData : public KTimeZoneData
00432 {
00433 friend class ICalTimeZoneSource;
00434
00435 public:
00439 ICalTimeZoneData();
00445 ICalTimeZoneData(const ICalTimeZoneData &rhs);
00457 ICalTimeZoneData(const KTimeZoneData &rhs, const KTimeZone &tz, const QDate &earliest);
00461 virtual ~ICalTimeZoneData();
00468 ICalTimeZoneData &operator=(const ICalTimeZoneData &rhs);
00469
00476 virtual KTimeZoneData *clone() const;
00477
00484 QString city() const;
00485
00491 QByteArray url() const;
00492
00498 QDateTime lastModified() const;
00499
00505 QByteArray vtimezone() const;
00506
00514 icaltimezone *icalTimezone() const;
00515
00521 virtual bool hasTransitions() const;
00522
00523 private:
00524 ICalTimeZoneDataPrivate *const d;
00525 };
00526
00527 }
00528
00529 #endif