resourcecached.h
00001 /* 00002 This file is part of libkcal. 00003 00004 Copyright (c) 2003,2004 Cornelius Schumacher <schumacher@kde.org> 00005 00006 This library is free software; you can redistribute it and/or 00007 modify it under the terms of the GNU Library General Public 00008 License as published by the Free Software Foundation; either 00009 version 2 of the License, or (at your option) any later version. 00010 00011 This library is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 Library General Public License for more details. 00015 00016 You should have received a copy of the GNU Library General Public License 00017 along with this library; see the file COPYING.LIB. If not, write to 00018 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00019 Boston, MA 02110-1301, USA. 00020 */ 00021 #ifndef KCAL_RESOURCECACHED_H 00022 #define KCAL_RESOURCECACHED_H 00023 00024 #include "resourcecalendar.h" 00025 00026 #include "libemailfunctions/idmapper.h" 00027 #include "incidence.h" 00028 #include "calendarlocal.h" 00029 00030 #include <kconfig.h> 00031 00032 #include <tqptrlist.h> 00033 #include <tqstring.h> 00034 #include <tqdatetime.h> 00035 #include <tqtimer.h> 00036 00037 #include <kdepimmacros.h> 00038 00039 namespace KCal { 00040 00045 class KDE_EXPORT ResourceCached : public ResourceCalendar, 00046 public KCal::Calendar::Observer 00047 { 00048 Q_OBJECT 00049 TQ_OBJECT 00050 public: 00056 enum { ReloadNever, ReloadOnStartup, ReloadInterval }; 00062 enum { SaveNever, SaveOnExit, SaveInterval, SaveDelayed, SaveAlways }; 00063 00064 ResourceCached( const KConfig * ); 00065 virtual ~ResourceCached(); 00066 00067 void readConfig( const KConfig *config ); 00068 void writeConfig( KConfig *config ); 00069 00070 static bool editorWindowOpen(); 00071 static void setEditorWindowOpen(bool open); 00072 00080 void setReloadPolicy( int policy ); 00086 int reloadPolicy() const; 00087 00092 void setReloadInterval( int minutes ); 00093 00097 int reloadInterval() const; 00098 00108 void setSavePolicy( int policy ); 00114 int savePolicy() const; 00115 00120 void setSaveInterval( int minutes ); 00121 00125 int saveInterval() const; 00126 00130 TQDateTime lastLoad() const; 00131 00135 TQDateTime lastSave() const; 00136 00140 KDE_DEPRECATED bool addEvent( Event *event ); 00141 bool addEvent( Event *event, const TQString &subresource ); 00142 00146 bool deleteEvent(Event *); 00147 00151 Event *event(const TQString &UniqueStr); 00155 Event::List events(); 00159 Event::List rawEvents( EventSortField sortField = EventSortUnsorted, SortDirection sortDirection = SortDirectionAscending ); 00164 Event::List rawEventsForDate( const TQDate &date, EventSortField sortField = EventSortUnsorted, SortDirection sortDirection = SortDirectionAscending ); 00165 00169 Event::List rawEventsForDate( const TQDateTime &qdt ); 00174 Event::List rawEvents( const TQDate &start, const TQDate &end, 00175 bool inclusive = false ); 00176 00180 KDE_DEPRECATED bool addTodo( Todo *todo ); 00181 bool addTodo( Todo *todo, const TQString &subresource ); 00182 00186 bool deleteTodo( Todo * ); 00191 Todo *todo( const TQString &uid ); 00195 Todo::List rawTodos( TodoSortField sortField = TodoSortUnsorted, SortDirection sortDirection = SortDirectionAscending ); 00199 Todo::List rawTodosForDate( const TQDate &date ); 00203 KDE_DEPRECATED bool addJournal( Journal *journal ); 00204 bool addJournal( Journal *journal, const TQString &subresource ); 00205 00209 bool deleteJournal( Journal * ); 00213 Journal *journal( const TQString &uid ); 00217 Journal::List rawJournals( JournalSortField sortField = JournalSortUnsorted,SortDirection sortDirection = SortDirectionAscending ); 00221 Journal::List rawJournalsForDate( const TQDate &date ); 00222 00226 Alarm::List alarms( const TQDateTime &from, const TQDateTime &to ); 00227 00231 Alarm::List alarmsTo( const TQDateTime &to ); 00232 00236 void setTimeZoneId( const TQString &timeZoneId ); 00237 00238 TQString timeZoneId() const; 00239 00243 const Person &getOwner() const; 00247 void setOwner( const Person &owner ); 00248 00249 void enableChangeNotification(); 00250 void disableChangeNotification(); 00251 00252 void clearChange( Incidence * ); 00253 void clearChange( const TQString &uid ); 00254 00255 void clearChanges(); 00256 00257 bool hasChanges() const; 00258 00259 Incidence::List allChanges() const; 00260 00261 Incidence::List addedIncidences() const; 00262 Incidence::List changedIncidences() const; 00263 Incidence::List deletedIncidences() const; 00264 00268 void loadCache(); 00269 00273 void saveCache(); 00274 00278 void clearCache(); 00279 00283 void clearEventsCache(); 00284 00288 void clearTodosCache(); 00289 00293 void clearJournalsCache(); 00294 00295 void cleanUpEventCache( const KCal::Event::List &eventList ); 00296 void cleanUpTodoCache( const KCal::Todo::List &todoList ); 00297 00301 KPIM::IdMapper& idMapper(); 00302 00303 protected: 00304 // From Calendar::Observer 00305 void calendarIncidenceAdded( KCal::Incidence *incidence ); 00306 void calendarIncidenceChanged( KCal::Incidence *incidence ); 00307 void calendarIncidenceDeleted( KCal::Incidence *incidence ); 00308 00309 CalendarLocal mCalendar; 00310 00315 virtual void doClose(); 00320 virtual bool doOpen(); 00324 bool checkForReload(); 00328 bool checkForSave(); 00329 00330 void checkForAutomaticSave(); 00331 00332 void addInfoText( TQString & ) const; 00333 00334 void setupSaveTimer(); 00335 void setupReloadTimer(); 00336 00341 virtual TQString cacheFile() const; 00342 00346 virtual TQString changesCacheFile( const TQString& ) const; 00347 void loadChangesCache( TQMap<Incidence*, bool>&, const TQString& ); 00348 void loadChangesCache(); 00349 void saveChangesCache( const TQMap<Incidence*, bool>&, const TQString& ); 00350 void saveChangesCache(); 00351 00352 protected slots: 00353 void slotReload(); 00354 void slotSave(); 00355 00356 void setIdMapperIdentifier(); 00357 00358 private: 00359 int mReloadPolicy; 00360 int mReloadInterval; 00361 TQTimer mReloadTimer; 00362 bool mReloaded; 00363 00364 int mSavePolicy; 00365 int mSaveInterval; 00366 TQTimer mSaveTimer; 00367 00368 TQDateTime mLastLoad; 00369 TQDateTime mLastSave; 00370 00371 TQMap<KCal::Incidence *,bool> mAddedIncidences; 00372 TQMap<KCal::Incidence *,bool> mChangedIncidences; 00373 TQMap<KCal::Incidence *,bool> mDeletedIncidences; 00374 00375 KPIM::IdMapper mIdMapper; 00376 00377 class Private; 00378 Private *d; 00379 }; 00380 00381 } 00382 00383 #endif