00001
#ifndef _KPILOT_VCAL_CONDUITBASE_H
00002
#define _KPILOT_VCAL_CONDUITBASE_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
#include <plugin.h>
00033
#include <options.h>
00034
00035
00036
00037
namespace KCal
00038 {
00039
class Calendar;
00040
class Incidence;
00041 }
00042
00043
class PilotRecord;
00044
class PilotSerialDatabase;
00045
class PilotLocalDatabase;
00046
class PilotAppCategory;
00047
00048
00049
class VCalConduitPrivateBase
00050 {
00051
protected:
00052
bool reading;
00053 KCal::Calendar *fCalendar;
00054
public:
00055 VCalConduitPrivateBase(KCal::Calendar *buddy):fCalendar(buddy) { reading=
false;};
00056
00057
virtual int updateIncidences()=0;
00058
virtual void addIncidence(KCal::Incidence*)=0;
00059
virtual void removeIncidence(KCal::Incidence *)=0;
00060
virtual KCal::Incidence *findIncidence(recordid_t)=0;
00061
virtual KCal::Incidence *findIncidence(PilotAppCategory*tosearch)=0;
00062
virtual KCal::Incidence *getNextIncidence()=0;
00063
virtual KCal::Incidence *getNextModifiedIncidence()=0;
00064
virtual int count()=0;
00065 } ;
00066
00067
00068
00069
class VCalConduitBase :
public ConduitAction
00070 {
00071 Q_OBJECT
00072
public:
00073 VCalConduitBase(KPilotDeviceLink *,
00074
const char *name=0L,
00075
const QStringList &args = QStringList());
00076
virtual ~VCalConduitBase();
00077
00078
protected:
00079
virtual bool exec();
00080
00081
protected slots:
00085
void slotPalmRecToPC();
00089
void slotPCRecToPalm();
00090
void slotDeletedIncidence();
00091
void cleanup();
00092
00093
00094
protected:
00095
00096
virtual int resolveConflict(KCal::Incidence*e, PilotAppCategory*de);
00097
00098
00099
virtual KCal::Incidence* addRecord(PilotRecord *);
00100
virtual KCal::Incidence* changeRecord(PilotRecord *,PilotRecord *);
00101
virtual KCal::Incidence* deleteRecord(PilotRecord *,PilotRecord *);
00102
00103
00104
virtual void addPalmRecord(KCal::Incidence*e);
00105
virtual void changePalmRecord(KCal::Incidence*e, PilotRecord*s);
00106
virtual void deletePalmRecord(KCal::Incidence*e, PilotRecord*s);
00107
00108
virtual void updateIncidenceOnPalm(KCal::Incidence*e, PilotAppCategory*de);
00109
00110
virtual void readConfig();
00111
virtual bool openCalendar();
00112
00113
00114
00115
00116
virtual PilotRecord*recordFromIncidence(PilotAppCategory*de,
const KCal::Incidence*e)=0;
00117
virtual KCal::Incidence *incidenceFromRecord(KCal::Incidence *e,
const PilotAppCategory *de)=0;
00118
00119
virtual PilotAppCategory*newPilotEntry(PilotRecord*r)=0;
00120
virtual KCal::Incidence*newIncidence()=0;
00121
00122
00123
00124
virtual const QString configGroup() {
return VCalConduitFactoryBase::getGroup(); };
00125
virtual const QString dbname() = 0;
00126
00127
virtual const QString getTitle(PilotAppCategory*de)=0;
00128
00129
00130
00131
virtual void preSync(){};
00132
virtual void postSync();
00133
virtual void preRecord(PilotRecord*){};
00134
virtual void preIncidence(KCal::Incidence *){};
00135
00136
protected:
00137 KCal::Calendar *fCalendar;
00138
00139 QString fCalendarFile;
00140
bool archive;
00141
int pilotindex;
00142
enum eCalendarTypeEnum {
00143 eCalendarResource=0,
00144 eCalendarLocal
00145 } fCalendarType;
00146
00147
protected:
00148 VCalConduitPrivateBase *fP;
00149
virtual VCalConduitPrivateBase* newVCalPrivate(KCal::Calendar *fCalendar)=0;
00150 } ;
00151
00152
#endif