• Skip to content
  • Skip to link menu
KDE 4.0 API Reference
  • KDE API Reference
  • KDE-PIM Libraries
  • Sitemap
  • Contact Us
 

KCal Library

icaltimezones.h

00001 /*
00002     This file is part of the kcal library.
00003 
00004     Copyright (c) 2005-2007 David Jarvie <djarvie@kde.org>
00005 
00006     This library is free software; you can redistribute it and/or
00007     modify it under the terms of the GNU Library General Public
00008     License as published by the Free Software Foundation; either
00009     version 2 of the License, or (at your option) any later version.
00010 
00011     This library is distributed in the hope that it will be useful,
00012     but WITHOUT ANY WARRANTY; without even the implied warranty of
00013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014     Library General Public License for more details.
00015 
00016     You should have received a copy of the GNU Library General Public License
00017     along with this library; see the file COPYING.LIB.  If not, write to
00018     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00019     Boston, MA 02110-1301, USA.
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 &);              // prohibit copying
00128     ICalTimeZones &operator=(const ICalTimeZones &);   // prohibit copying
00129 
00130     ICalTimeZonesPrivate *const d;
00131 };
00132 
00133 
00143 class KCAL_EXPORT ICalTimeZone : public KTimeZone  //krazy:exclude=dpointer (no d-pointer for KTimeZone derived classes)
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     // d-pointer is in ICalTimeZoneBackend.
00241     // This is a requirement for classes inherited from KTimeZone.
00242 };
00243 
00244 
00258 class KCAL_EXPORT ICalTimeZoneBackend : public KTimeZoneBackend  //krazy:exclude=dpointer (non-const d-pointer for KTimeZoneBackend-derived classes)
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;   // non-const
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;   // prevent warning about hidden virtual method
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

KCal Library

Skip menu "KCal Library"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

KDE-PIM Libraries

Skip menu "KDE-PIM Libraries"
  • kabc
  • kblog
  • kcal
  • kimap
  • kioslave
  •   imap4
  •   mbox
  • kldap
  • kmime
  • kpimidentities
  • kpimutils
  • kresources
  • ktnef
  • kxmlrpcclient
  • mailtransport
  • qgpgme
  • syndication
  •   atom
  •   rdf
  •   rss2
Generated for KDE-PIM Libraries by doxygen 1.5.5
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal