00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00031 #ifndef MKCAL_EXTENDEDSTORAGE_H
00032 #define MKCAL_EXTENDEDSTORAGE_H
00033
00034 #include "mkcal_export.h"
00035 #include "extendedcalendar.h"
00036 #include "notebook.h"
00037
00038 #include <calstorage.h>
00039 #include <calendar.h>
00040
00041 #include <kdatetime.h>
00042
00043 namespace KCalCore {
00044 class Incidence;
00045 }
00046
00047 namespace mKCal {
00048
00052 enum DBOperation {
00053 DBNone,
00054 DBInsert,
00055 DBUpdate,
00056 DBDelete,
00057 DBDeleteAll,
00058 DBSelect,
00059 DBSelectPlain,
00060 DBSelectGeo,
00061 DBSelectRecurring,
00062 DBSelectAttendee,
00063 DBUpdateVisibility
00064 };
00065
00066 enum StorageOperation {
00067 StorageNone = 0,
00068 StorageOpen,
00069 StorageLoad,
00070 StorageSave,
00071 StorageInserted,
00072 StorageModified,
00073 StorageDeleted,
00074 StorageAll,
00075 StorageDuplicate
00076 };
00077
00078
00079 const char *const DBusService = "com.nokia.organiser";
00080 const char *const DBusInterface = "com.nokia.OrganiserAlarmIf";
00081 const char *const DBusPath = "/";
00082 const char *const DBusName = "alarm";
00083
00091 class MKCAL_EXPORT ExtendedStorage
00092 : public KCalCore::CalStorage, public KCalCore::Calendar::CalendarObserver
00093 {
00094 Q_OBJECT
00095
00096 public:
00097
00101 typedef QSharedPointer<ExtendedStorage> Ptr;
00102
00121 explicit ExtendedStorage( const ExtendedCalendar::Ptr &cal, bool validateNotebooks = false );
00122
00126 virtual ~ExtendedStorage();
00127
00132 virtual bool open() = 0;
00133
00138 virtual bool load() = 0;
00139
00147 virtual bool load( const QString &uid, const KDateTime &recurrenceId = KDateTime() ) = 0;
00148
00155 virtual bool load( const QDate &date ) = 0;
00156
00164 virtual bool load( const QDate &start, const QDate &end ) = 0;
00165
00172 virtual bool loadNotebookIncidences( const QString ¬ebookUid ) = 0;
00173
00177 virtual bool loadJournals() = 0;
00178
00184 virtual bool loadPlainIncidences() = 0;
00185
00191 virtual bool loadRecurringIncidences() = 0;
00192
00198 virtual bool loadGeoIncidences() = 0;
00199
00209 virtual bool loadGeoIncidences( float geoLatitude, float geoLongitude,
00210 float diffLatitude, float diffLongitude ) = 0;
00211
00217 virtual bool loadAttendeeIncidences() = 0;
00218
00219
00220
00226 virtual int loadUncompletedTodos() = 0;
00227
00237 virtual int loadCompletedTodos( bool hasDate, int limit, KDateTime *last ) = 0;
00238
00249 virtual int loadIncidences( bool hasDate, int limit, KDateTime *last ) = 0;
00250
00262 virtual int loadFutureIncidences( int limit, KDateTime *last ) = 0;
00263
00274 virtual int loadGeoIncidences( bool hasDate, int limit, KDateTime *last ) = 0;
00275
00281 virtual int loadUnreadInvitationIncidences() = 0;
00282
00292 virtual int loadOldInvitationIncidences( int limit, KDateTime *last ) = 0;
00293
00301 virtual KCalCore::Person::List loadContacts() = 0;
00302
00312 virtual int loadContactIncidences( const KCalCore::Person::Ptr &person,
00313 int limit, KDateTime *last ) = 0;
00314
00324 virtual int loadJournals( int limit, KDateTime *last ) = 0;
00325
00330 virtual bool save() = 0;
00331
00340 virtual bool notifyOpened( const KCalCore::Incidence::Ptr &incidence ) = 0;
00341
00347 virtual bool cancel() = 0;
00348
00353 virtual bool close() = 0;
00354
00355
00356
00361 virtual void calendarModified( bool modified, KCalCore::Calendar *calendar ) = 0;
00362
00367 virtual void calendarIncidenceAdded( const KCalCore::Incidence::Ptr &incidence ) = 0;
00368
00373 virtual void calendarIncidenceChanged( const KCalCore::Incidence::Ptr &incidence ) = 0;
00374
00379 virtual void calendarIncidenceDeleted( const KCalCore::Incidence::Ptr &incidence ) = 0;
00380
00385 virtual void calendarIncidenceAdditionCanceled( const KCalCore::Incidence::Ptr &incidence ) = 0;
00386
00387
00388
00401 virtual bool insertedIncidences( KCalCore::Incidence::List *list,
00402 const KDateTime &after = KDateTime(),
00403 const QString ¬ebookUid = QString() ) = 0;
00404
00415 virtual bool modifiedIncidences( KCalCore::Incidence::List *list,
00416 const KDateTime &after = KDateTime(),
00417 const QString ¬ebookUid = QString() ) = 0;
00418
00427 virtual bool deletedIncidences( KCalCore::Incidence::List *list,
00428 const KDateTime &after = KDateTime(),
00429 const QString ¬ebookUid = QString() ) = 0;
00430
00439 virtual bool deletedIncidencesCreatedAfter( KCalCore::Incidence::List *list,
00440 const KDateTime &after = KDateTime(),
00441 const QString ¬ebookUid = QString() ) = 0;
00442
00450 virtual bool allIncidences( KCalCore::Incidence::List *list,
00451 const QString ¬ebookUid = QString() ) = 0;
00452
00461 virtual bool duplicateIncidences( KCalCore::Incidence::List *list,
00462 const KCalCore::Incidence::Ptr &incidence,
00463 const QString ¬ebookUid = QString() ) = 0;
00464
00471 virtual KDateTime incidenceDeletedDate( const KCalCore::Incidence::Ptr &incidence ) = 0;
00472
00478 virtual int eventCount() = 0;
00479
00485 virtual int todoCount() = 0;
00486
00492 virtual int journalCount() = 0;
00493
00494
00495
00504 void registerObserver( ExtendedStorageObserver *observer );
00505
00514 void unregisterObserver( ExtendedStorageObserver *observer );
00515
00516
00517
00530 bool addNotebook( const Notebook::Ptr &nb, bool signal = true );
00531
00539 bool updateNotebook( const Notebook::Ptr &nb );
00540
00550 bool deleteNotebook( const Notebook::Ptr &nb, bool onlyMemory = false );
00551
00558 bool setDefaultNotebook( const Notebook::Ptr &nb );
00559
00565 Notebook::Ptr defaultNotebook();
00566
00573 Notebook::Ptr notebook( const QString &uid );
00574
00582 Notebook::Ptr notebook( Notebook::List &list, const QString &uid );
00583
00589 Notebook::List notebooks();
00590
00598 void setValidateNotebooks( bool validateNotebooks );
00599
00607 bool validateNotebooks();
00608
00616 bool isValidNotebook( const QString ¬ebookUid );
00617
00618
00619
00630 KCalCore::Incidence::Ptr checkAlarm( const QString &uid, const QString &recurrenceId,
00631 bool loadAlways = false );
00632
00644 void resetAlarms( const KCalCore::Incidence::Ptr &incidence );
00645
00649 void resetAlarms( const KCalCore::Incidence::List &incidences );
00650
00655 void setAlarms( const KCalCore::Incidence::Ptr &incidence );
00656
00657
00661 void clearAlarms( const QString ¬ebookUid );
00662
00671 Notebook::Ptr createDefaultNotebook( QString name = "",
00672 QString color = "");
00673
00681 virtual void virtual_hook( int id, void *data ) = 0;
00682
00688 bool isOwnSave();
00689
00697 void setNotebookVisibility(const QString& id, bool visible);
00698
00702 void resetDefaultNotebook();
00703
00704 protected:
00705 virtual bool loadNotebooks() = 0;
00706 virtual bool reloadNotebooks() = 0;
00707 virtual bool modifyNotebook( const Notebook::Ptr &nb, DBOperation dbop,
00708 bool signal = true ) = 0;
00709
00710 bool getLoadDates( const QDate &start, const QDate &end,
00711 KDateTime &loadStart, KDateTime &loadEnd );
00712
00713 void setLoadDates( const QDate &start, const QDate &end );
00714
00715 void setModified( const QString &info, bool mySave = false );
00716 void setProgress( const QString &info );
00717 void setFinished( bool error, const QString &info );
00718 void clearAlarms( const KCalCore::Incidence::Ptr &incidence );
00719 void clearAlarms( const KCalCore::Incidence::List &incidences );
00720
00721 bool isUncompletedTodosLoaded();
00722 void setIsUncompletedTodosLoaded( bool loaded );
00723
00724 bool isCompletedTodosDateLoaded();
00725 void setIsCompletedTodosDateLoaded( bool loaded );
00726 bool isCompletedTodosCreatedLoaded();
00727 void setIsCompletedTodosCreatedLoaded( bool loaded );
00728
00729 bool isJournalsLoaded();
00730 void setIsJournalsLoaded( bool loaded );
00731
00732 bool isDateLoaded();
00733 void setIsDateLoaded( bool loaded );
00734 bool isCreatedLoaded();
00735 void setIsCreatedLoaded( bool loaded );
00736 bool isFutureDateLoaded();
00737 void setIsFutureDateLoaded( bool loaded );
00738
00739 bool isGeoDateLoaded();
00740 void setIsGeoDateLoaded( bool loaded );
00741 bool isGeoCreatedLoaded();
00742 void setIsGeoCreatedLoaded( bool loaded );
00743
00744 bool isUnreadIncidencesLoaded();
00745 void setIsUnreadIncidencesLoaded( bool loaded );
00746
00747 bool isInvitationIncidencesLoaded();
00748 void setIsInvitationIncidencesLoaded( bool loaded );
00749
00750 void clearLoaded(bool mySave = false);
00751 static bool notebookModifiedEarlierThan(const Notebook::Ptr& nb1,
00752 const Notebook::Ptr& nb2);
00753
00754 private:
00755
00756 Q_DISABLE_COPY( ExtendedStorage )
00757 class MKCAL_HIDE Private;
00758 Private *const d;
00759
00760 };
00761
00762 }
00763
00764 #endif