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
00064 class KCAL_EXPORT ICalTimeZones
00065 {
00066 public:
00070 ICalTimeZones();
00074 ~ICalTimeZones();
00075
00084 ICalTimeZone zone( const QString &name ) const;
00085
00086 typedef QMap<QString, ICalTimeZone> ZoneMap;
00087
00093 const ZoneMap zones() const;
00094
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
00142 class KCAL_EXPORT ICalTimeZone : public KTimeZone
00143
00144 {
00145 public:
00151 ICalTimeZone();
00152
00161 ICalTimeZone( ICalTimeZoneSource *source, const QString &name, ICalTimeZoneData *data );
00162
00169 explicit ICalTimeZone( const KTimeZone &tz, const QDate &earliest = QDate() );
00170
00174 virtual ~ICalTimeZone();
00175
00182 QString city() const;
00183
00189 QByteArray url() const;
00190
00196 QDateTime lastModified() const;
00197
00203 QByteArray vtimezone() const;
00204
00212 icaltimezone *icalTimezone() const;
00213
00226 bool update( const ICalTimeZone &other );
00227
00238 static ICalTimeZone utc();
00239
00240 private:
00241
00242
00243 };
00244
00258 class KCAL_EXPORT ICalTimeZoneBackend : public KTimeZoneBackend
00259 {
00260 public:
00262 ICalTimeZoneBackend();
00273 ICalTimeZoneBackend( ICalTimeZoneSource *source, const QString &name,
00274 const QString &countryCode = QString(),
00275 float latitude = KTimeZone::UNKNOWN,
00276 float longitude = KTimeZone::UNKNOWN,
00277 const QString &comment = QString() );
00278
00284 ICalTimeZoneBackend( const KTimeZone &tz, const QDate &earliest );
00285
00286 virtual ~ICalTimeZoneBackend();
00287
00293 virtual KTimeZoneBackend *clone() const;
00294
00300 virtual QByteArray type() const;
00301
00310 virtual bool hasTransitions( const KTimeZone *caller ) const;
00311
00312 private:
00313 ICalTimeZonePrivate *d;
00314
00315 };
00316
00328 class KCAL_EXPORT ICalTimeZoneSource : public KTimeZoneSource
00329 {
00330 public:
00334 ICalTimeZoneSource();
00335
00339 virtual ~ICalTimeZoneSource();
00340
00348 ICalTimeZone parse( icalcomponent *vtimezone );
00349
00364 bool parse( icalcomponent *calendar, ICalTimeZones &zones );
00365
00379 bool parse( const QString &fileName, ICalTimeZones &zones );
00380
00393 ICalTimeZone parse( icaltimezone *tz );
00394
00406 ICalTimeZone standardZone( const QString &zone, bool icalBuiltIn = false );
00407
00416 static QByteArray icalTzidPrefix();
00417
00418 using KTimeZoneSource::parse;
00419
00420 private:
00421 ICalTimeZoneSourcePrivate *const d;
00422 };
00423
00434 class KCAL_EXPORT ICalTimeZoneData : public KTimeZoneData
00435 {
00436 friend class ICalTimeZoneSource;
00437
00438 public:
00442 ICalTimeZoneData();
00443
00449 ICalTimeZoneData( const ICalTimeZoneData &rhs );
00450
00462 ICalTimeZoneData( const KTimeZoneData &rhs, const KTimeZone &tz, const QDate &earliest );
00463
00467 virtual ~ICalTimeZoneData();
00468
00475 ICalTimeZoneData &operator=( const ICalTimeZoneData &rhs );
00476
00483 virtual KTimeZoneData *clone() const;
00484
00491 QString city() const;
00492
00498 QByteArray url() const;
00499
00505 QDateTime lastModified() const;
00506
00512 QByteArray vtimezone() const;
00513
00521 icaltimezone *icalTimezone() const;
00522
00528 virtual bool hasTransitions() const;
00529
00530 private:
00531 ICalTimeZoneDataPrivate *const d;
00532 };
00533
00534 }
00535
00536 #endif