00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
#ifndef KCAL_CALENDARRESOURCES_H
00022
#define KCAL_CALENDARRESOURCES_H
00023
00024
#include <qintdict.h>
00025
#include <qmap.h>
00026
00027
#include "calendar.h"
00028
#include "resourcecalendar.h"
00029
00030
#include <kresources/manager.h>
00031
00032
class QWidget;
00033
00034
namespace KCal {
00035
00036
class CalFormat;
00037
00041 class CalendarResources :
public Calendar,
00042
public KRES::ManagerObserver<ResourceCalendar>
00043 {
00044 Q_OBJECT
00045
public:
00046
class DestinationPolicy
00047 {
00048
public:
00049 DestinationPolicy( CalendarResourceManager *manager )
00050 : mManager( manager ) {}
00051
00052
virtual ResourceCalendar *destination(
Incidence * ) = 0;
00053
00054
protected:
00055 CalendarResourceManager *
resourceManager() {
return mManager; }
00056
00057
private:
00058 CalendarResourceManager *mManager;
00059 };
00060
00061
class StandardDestinationPolicy :
public DestinationPolicy
00062 {
00063
public:
00064 StandardDestinationPolicy( CalendarResourceManager *manager )
00065 : DestinationPolicy( manager ) {}
00066
00067
ResourceCalendar *destination(
Incidence * );
00068
00069
private:
00070
class Private;
00071 Private *d;
00072 };
00073
00074
class AskDestinationPolicy :
public DestinationPolicy
00075 {
00076
public:
00077 AskDestinationPolicy( CalendarResourceManager *manager,
00078
QWidget *parent = 0 )
00079 : DestinationPolicy( manager ), mParent( parent ) {}
00080
00081
ResourceCalendar *destination(
Incidence * );
00082
00083
private:
00084
QWidget *mParent;
00085
00086
class Private;
00087 Private *d;
00088 };
00089
00090
class Ticket
00091 {
00092
friend class CalendarResources;
00093
public:
00094
ResourceCalendar *resource()
const {
return mResource; }
00095
00096
private:
00097 Ticket(
ResourceCalendar *r ) : mResource( r ) {}
00098
00099
ResourceCalendar *mResource;
00100
00101
class Private;
00102 Private *d;
00103 };
00104
00106
CalendarResources();
00108
CalendarResources(
const QString &timeZoneId );
00109 ~
CalendarResources();
00110
00119
void readConfig( KConfig *config = 0 );
00120
00125
void load();
00126
00130 CalendarResourceManager *
resourceManager()
const
00131
{
00132
return mManager;
00133 }
00134
00138
void setStandardDestinationPolicy();
00142
void setAskDestinationPolicy();
00143
00145
void close();
00146
00152 Ticket *requestSaveTicket(
ResourceCalendar * );
00158
virtual bool save( Ticket * );
00162
virtual void releaseSaveTicket( Ticket *ticket );
00163
00164
void save();
00165
00166
bool isSaving();
00167
00168
bool addIncidence(
Incidence * );
00169
00171
bool addEvent(
Event *anEvent);
00173
bool addEvent(
Event *anEvent,
ResourceCalendar *resource);
00175
void deleteEvent(
Event *);
00176
00180
Event *event(
const QString &UniqueStr);
00184
00188
Event::List rawEvents();
00189
00190
00191
00192
00193
00194
QString getHolidayForDate(
const QDate &qd);
00195
00199
bool addTodo(
Todo *todo );
00201
bool addTodo(
Todo *todo,
ResourceCalendar *resource);
00205
void deleteTodo(
Todo * );
00210
Todo *todo(
const QString &uid );
00214
Todo::List rawTodos();
00218
Todo::List rawTodosForDate(
const QDate &date );
00219
00221
bool addJournal(
Journal *);
00223
void deleteJournal(
Journal * );
00225
bool addJournal(
Journal *journal,
ResourceCalendar *resource);
00227
Journal *journal(
const QDate &);
00229
Journal *journal(
const QString &UID);
00231
Journal::List journals();
00232
00234
Alarm::List alarms(
const QDateTime &from,
const QDateTime &to );
00235
00237
Alarm::List alarmsTo(
const QDateTime &to );
00238
00240
ResourceCalendar *resource(
Incidence *);
00241
00242
bool beginChange(
Incidence * );
00243
bool endChange(
Incidence * );
00244
00245 signals:
00246
void signalResourceAdded(
ResourceCalendar * );
00247
void signalResourceModified(
ResourceCalendar * );
00248
void signalResourceDeleted(
ResourceCalendar * );
00249
00250
void signalErrorMessage(
const QString & );
00251
00252
protected:
00256
void incidenceUpdated(
IncidenceBase * );
00257
00258
public:
00263
Event::List rawEventsForDate(
const QDate &date,
bool sorted =
false );
00267
Event::List rawEventsForDate(
const QDateTime &qdt );
00272
Event::List rawEvents(
const QDate &start,
const QDate &end,
00273
bool inclusive =
false );
00274
00275
protected:
00276
void connectResource(
ResourceCalendar * );
00277
00278
void resourceAdded(
ResourceCalendar *resource );
00279
void resourceModified(
ResourceCalendar *resource );
00280
void resourceDeleted(
ResourceCalendar *resource );
00281
00282
virtual void doSetTimeZoneId(
const QString& tzid );
00283
00284
int incrementChangeCount(
ResourceCalendar * );
00285
int decrementChangeCount(
ResourceCalendar * );
00286
00287
protected slots:
00288
void slotLoadError(
ResourceCalendar *r,
const QString &err );
00289
void slotSaveError(
ResourceCalendar *r,
const QString &err );
00290
00291
private:
00292
void init();
00293
00294
bool mOpen;
00295
00296 KRES::Manager<ResourceCalendar>* mManager;
00297 QMap <Incidence*, ResourceCalendar*> mResourceMap;
00298
00299 DestinationPolicy *mDestinationPolicy;
00300 StandardDestinationPolicy *mStandardPolicy;
00301 AskDestinationPolicy *mAskPolicy;
00302
00303
QMap<ResourceCalendar *, Ticket *> mTickets;
00304
QMap<ResourceCalendar *, int> mChangeCounts;
00305
00306
class Private;
00307 Private *d;
00308 };
00309
00310 }
00311
00312
#endif