00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
#ifndef KCAL_ICALFORMATIMPL_H
00022
#define KCAL_ICALFORMATIMPL_H
00023
00024
#include <qstring.h>
00025
#include <qdict.h>
00026
00027
#include "scheduler.h"
00028
#include "freebusy.h"
00029
00030
extern "C" {
00031
#include <ical.h>
00032
#include <icalss.h>
00033 }
00034
00035
namespace KCal {
00036
00037
class Compat;
00038
00044
class ICalFormatImpl
00045 {
00046
public:
00048 ICalFormatImpl(
ICalFormat *parent );
00049
virtual ~ICalFormatImpl();
00050
00051
bool populate(
Calendar *, icalcomponent *fs);
00052
00053 icalcomponent *writeIncidence(
Incidence *incidence);
00054 icalcomponent *writeTodo(
Todo *todo);
00055 icalcomponent *writeEvent(
Event *event);
00056 icalcomponent *writeFreeBusy(
FreeBusy *freebusy,
00057 Scheduler::Method method);
00058 icalcomponent *writeJournal(
Journal *journal);
00059
void writeIncidence(icalcomponent *parent,
Incidence *incidence);
00060 icalproperty *writeAttendee(
Attendee *attendee);
00061 icalproperty *writeAttachment(
Attachment *attach);
00062 icalproperty *writeRecurrenceRule(
Recurrence *);
00063 icalproperty *writeAlarm(
Alarm *alarm);
00064
00065 QString extractErrorProperty(icalcomponent *);
00066
Todo *readTodo(icalcomponent *vtodo);
00067
Event *readEvent(icalcomponent *vevent);
00068
FreeBusy *readFreeBusy(icalcomponent *vfreebusy);
00069
Journal *readJournal(icalcomponent *vjournal);
00070
Attendee *readAttendee(icalproperty *attendee);
00071
Attachment *readAttachment(icalproperty *attach);
00072
void readIncidence(icalcomponent *parent,
Incidence *incidence);
00073
void readRecurrenceRule(icalproperty *rrule,
Incidence *event);
00074
void readRecurrence(
const struct icalrecurrencetype &r,
Recurrence* recur );
00075
void readAlarm(icalcomponent *alarm,
Incidence *incidence);
00077
const QString &loadedProductId() {
return mLoadedProductId; }
00078
00079 icaltimetype writeICalDate(
const QDate &);
00080 QDate readICalDate(icaltimetype);
00081 icaltimetype writeICalDateTime(
const QDateTime &);
00082 QDateTime readICalDateTime(icaltimetype);
00083 icaldurationtype writeICalDuration(
int seconds);
00084
int readICalDuration(icaldurationtype);
00085 icalcomponent *createCalendarComponent(
Calendar * = 0);
00086 icalcomponent *createScheduleComponent(
IncidenceBase *,Scheduler::Method);
00087
00088
private:
00089
void writeIncidenceBase(icalcomponent *parent,
IncidenceBase *);
00090
void readIncidenceBase(icalcomponent *parent,
IncidenceBase *);
00091
void writeCustomProperties(icalcomponent *parent,
CustomProperties *);
00092
void readCustomProperties(icalcomponent *parent,
CustomProperties *);
00093
void dumpIcalRecurrence(icalrecurrencetype);
00094
void readTimezone(icalcomponent *vtimezone);
00095
void readTzidParameter( icalcomponent *parent, icaltimetype &t );
00096
00097
ICalFormat *mParent;
00098
Calendar *mCalendar;
00099 QDict<class Timezone> mTimezones;
00100
00101 QString mLoadedProductId;
00102
int mCalendarVersion;
00103
00104 Event::List mEventsRelate;
00105 Todo::List mTodosRelate;
00106
00107
static const int mSecondsPerWeek;
00108
static const int mSecondsPerDay;
00109
static const int mSecondsPerHour;
00110
static const int mSecondsPerMinute;
00111
00112
Compat *mCompat;
00113
00114
class Private;
00115 Private *d;
00116 };
00117
00118 }
00119
00120
#endif