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
00114 CalendarResourceManager *
resourceManager()
const
00115
{
00116
return mManager;
00117 }
00118
00122
void setStandardDestinationPolicy();
00126
void setAskDestinationPolicy();
00127
00129
void close();
00130
00136 Ticket *requestSaveTicket(
ResourceCalendar * );
00142
virtual bool save( Ticket * );
00146
virtual void releaseSaveTicket( Ticket *ticket );
00147
00148
void save();
00149
00150
bool isSaving();
00151
00152
bool addIncidence(
Incidence * );
00153
00155
bool addEvent(
Event *anEvent);
00157
bool addEvent(
Event *anEvent,
ResourceCalendar *resource);
00159
void deleteEvent(
Event *);
00160
00164
Event *event(
const QString &UniqueStr);
00168
00172
Event::List rawEvents();
00173
00174
00175
00176
00177
00178 QString getHolidayForDate(
const QDate &qd);
00179
00183
bool addTodo(
Todo *todo );
00185
bool addTodo(
Todo *todo,
ResourceCalendar *resource);
00189
void deleteTodo(
Todo * );
00194
Todo *todo(
const QString &uid );
00198
Todo::List rawTodos();
00202
Todo::List todos(
const QDate &date );
00208 Todo::List todos() {
return Calendar::todos(); }
00209
00211
bool addJournal(
Journal *);
00213
void deleteJournal(
Journal * );
00215
bool addJournal(
Journal *journal,
ResourceCalendar *resource);
00217
Journal *journal(
const QDate &);
00219
Journal *journal(
const QString &UID);
00221
Journal::List journals();
00222
00224
Alarm::List alarms(
const QDateTime &from,
const QDateTime &to );
00225
00227
Alarm::List alarmsTo(
const QDateTime &to );
00228
00230
ResourceCalendar *resource(
Incidence *);
00231
00232
bool beginChange(
Incidence * );
00233
bool endChange(
Incidence * );
00234
00235 signals:
00236
void signalResourceAdded(
ResourceCalendar * );
00237
void signalResourceModified(
ResourceCalendar * );
00238
void signalResourceDeleted(
ResourceCalendar * );
00239
00240
protected:
00244
void incidenceUpdated(
IncidenceBase * );
00245
00250
Event::List rawEventsForDate(
const QDate &date,
bool sorted =
false );
00254
Event::List rawEventsForDate(
const QDateTime &qdt );
00259
Event::List rawEvents(
const QDate &start,
const QDate &end,
00260
bool inclusive =
false );
00261
00262
void connectResource(
ResourceCalendar * );
00263
00264
void resourceAdded(
ResourceCalendar *resource );
00265
void resourceModified(
ResourceCalendar *resource );
00266
void resourceDeleted(
ResourceCalendar *resource );
00267
00268
virtual void doSetTimeZoneId(
const QString& tzid );
00269
00270
int incrementChangeCount(
ResourceCalendar * );
00271
int decrementChangeCount(
ResourceCalendar * );
00272
00273
private:
00274
void init();
00275
00276
bool mOpen;
00277
00278 KRES::Manager<ResourceCalendar>* mManager;
00279 QMap <Incidence*, ResourceCalendar*> mResourceMap;
00280
00281 DestinationPolicy *mDestinationPolicy;
00282 StandardDestinationPolicy *mStandardPolicy;
00283 AskDestinationPolicy *mAskPolicy;
00284
00285 QMap<ResourceCalendar *, Ticket *> mTickets;
00286 QMap<ResourceCalendar *, int> mChangeCounts;
00287
00288
class Private;
00289 Private *d;
00290 };
00291
00292 }
00293
00294
#endif