00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef KCAL_RESOURCECACHED_H
00023 #define KCAL_RESOURCECACHED_H
00024
00025 #include "resourcecalendar.h"
00026 #include "incidence.h"
00027
00028 #include <kdatetime.h>
00029
00030 #include <QtCore/QString>
00031
00032 class KConfigGroup;
00033 namespace KRES { class IdMapper; }
00034
00035 namespace KCal {
00036
00037 class CalendarLocal;
00038
00043 class KCAL_EXPORT_DEPRECATED ResourceCached : public ResourceCalendar,
00044 public KCal::Calendar::CalendarObserver
00045 {
00046 Q_OBJECT
00047 public:
00052 enum {
00053 ReloadNever,
00054 ReloadOnStartup,
00055 ReloadInterval
00056 };
00057
00062 enum {
00063 SaveNever,
00064 SaveOnExit,
00065 SaveInterval,
00066 SaveDelayed,
00067 SaveAlways
00068 };
00069
00075 enum CacheAction {
00076 DefaultCache,
00077 NoSyncCache,
00078 SyncCache
00079 };
00080
00081 ResourceCached();
00082 explicit ResourceCached( const KConfigGroup &group );
00083 virtual ~ResourceCached();
00084
00085 void readConfig( const KConfigGroup &group );
00086 void writeConfig( KConfigGroup &group );
00087
00095 void setReloadPolicy( int policy );
00101 int reloadPolicy() const;
00102
00107 void setReloadInterval( int minutes );
00108
00112 int reloadInterval() const;
00113
00122 bool inhibitDefaultReload( bool inhibit );
00123 bool defaultReloadInhibited() const;
00124
00128 bool reloaded() const;
00129
00139 void setSavePolicy( int policy );
00145 int savePolicy() const;
00146
00151 void setSaveInterval( int minutes );
00152
00156 int saveInterval() const;
00157
00161 KDateTime lastLoad() const;
00162
00166 KDateTime lastSave() const;
00167
00174 bool load( CacheAction action );
00175
00179 virtual bool load();
00180
00191 bool save( CacheAction action, Incidence *incidence = 0 );
00192
00196 virtual bool save( Incidence *incidence = 0 );
00197
00203 bool addEvent( Event *event );
00204
00208 bool deleteEvent( Event *event );
00209
00213 void deleteAllEvents();
00214
00218 Event *event( const QString &UniqueStr );
00219
00223 Event::List events();
00224
00228 Event::List rawEvents( EventSortField sortField = EventSortUnsorted,
00229 SortDirection sortDirection = SortDirectionAscending );
00230
00240 Event::List rawEventsForDate( const QDate &date,
00241 const KDateTime::Spec &timeSpec = KDateTime::Spec(),
00242 EventSortField sortField = EventSortUnsorted,
00243 SortDirection sortDirection = SortDirectionAscending );
00244
00248 Event::List rawEventsForDate( const KDateTime &dt );
00249
00260 Event::List rawEvents( const QDate &start, const QDate &end,
00261 const KDateTime::Spec &timeSpec = KDateTime::Spec(),
00262 bool inclusive = false );
00263
00269 bool addTodo( Todo *todo );
00270
00274 bool deleteTodo( Todo * );
00275
00279 void deleteAllTodos();
00280
00285 Todo *todo( const QString &uid );
00286
00290 Todo::List rawTodos( TodoSortField sortField = TodoSortUnsorted,
00291 SortDirection sortDirection = SortDirectionAscending );
00292
00296 Todo::List rawTodosForDate( const QDate &date );
00297
00303 virtual KDE_DEPRECATED bool addJournal( Journal *journal );
00304
00308 virtual bool deleteJournal( Journal * );
00309
00313 virtual void deleteAllJournals();
00314
00318 virtual Journal *journal( const QString &uid );
00319
00323 Journal::List rawJournals( JournalSortField sortField = JournalSortUnsorted,
00324 SortDirection sortDirection = SortDirectionAscending );
00325
00329 Journal::List rawJournalsForDate( const QDate &date );
00330
00334 Alarm::List alarms( const KDateTime &from, const KDateTime &to );
00335
00339 Alarm::List alarmsTo( const KDateTime &to );
00340
00347 void setTimeSpec( const KDateTime::Spec &timeSpec );
00348
00354 KDateTime::Spec timeSpec() const;
00355
00362 void setTimeZoneId( const QString &timeZoneId );
00363
00370 QString timeZoneId() const;
00371
00376 virtual void shiftTimes( const KDateTime::Spec &oldSpec, const KDateTime::Spec &newSpec );
00377
00381 Person owner() const;
00382
00387 void setOwner( const Person &owner );
00388
00389 void enableChangeNotification();
00390 void disableChangeNotification();
00391
00392 void clearChange( Incidence *incidence );
00393 void clearChange( const QString &uid );
00394
00395 void clearChanges();
00396
00397 bool hasChanges() const;
00398
00399 Incidence::List allChanges() const;
00400
00401 Incidence::List addedIncidences() const;
00402 Incidence::List changedIncidences() const;
00403 Incidence::List deletedIncidences() const;
00404
00409 bool loadFromCache();
00410
00414 void saveToCache();
00415
00419 void clearCache();
00420
00421 void cleanUpEventCache( const KCal::Event::List &eventList );
00422 void cleanUpTodoCache( const KCal::Todo::List &todoList );
00423
00427 KRES::IdMapper &idMapper();
00428
00429 using QObject::event;
00430
00431 protected:
00432 CalendarLocal *calendar() const;
00433
00434
00435 void calendarIncidenceAdded( KCal::Incidence *incidence );
00436 void calendarIncidenceChanged( KCal::Incidence *incidence );
00437 void calendarIncidenceDeleted( KCal::Incidence *incidence );
00438
00443 virtual void doClose();
00444
00450 virtual bool doOpen();
00451
00455 virtual bool doLoad( bool syncCache ) = 0;
00456
00463 void setReloaded( bool done );
00464
00473 virtual bool doSave( bool syncCache ) = 0;
00474
00484 virtual bool doSave( bool syncCache, Incidence *incidence );
00485
00489 bool checkForReload();
00490
00494 bool checkForSave();
00495
00496 void checkForAutomaticSave();
00497
00498 void addInfoText( QString & ) const;
00499
00500 void setupSaveTimer();
00501 void setupReloadTimer();
00502
00507 virtual QString cacheFile() const;
00508
00512 virtual QString changesCacheFile( const QString &type ) const;
00513 void loadChangesCache( QMap<Incidence *, bool> &map, const QString &type );
00514 void loadChangesCache();
00515 void saveChangesCache( const QMap<Incidence *, bool> &map, const QString &type );
00516 void saveChangesCache();
00517
00518 protected Q_SLOTS:
00519 void slotReload();
00520 void slotSave();
00521
00522 void setIdMapperIdentifier();
00523
00524 private:
00525
00526 Q_DISABLE_COPY( ResourceCached )
00527 class Private;
00528 Private *const d;
00529
00530 };
00531
00532 }
00533
00534 #endif