00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00194 #ifndef MKCAL_EXTENDEDCALENDAR_H
00195 #define MKCAL_EXTENDEDCALENDAR_H
00196
00197 #include "mkcal_export.h"
00198
00199 #include <calendar.h>
00200 #include <icaltimezones.h>
00201 #include <extendedstorageobserver.h>
00202
00203 namespace mKCal {
00204
00205 class ExtendedStorage;
00206 class Notebook;
00207
00212 class MKCAL_EXPORT ExtendedCalendar : public KCalCore::Calendar,
00213 public ExtendedStorageObserver
00214 {
00215 public:
00220 enum IncidenceSortField {
00221 IncidenceSortUnsorted,
00222 IncidenceSortDate,
00226 IncidenceSortCreated
00227 };
00228
00232 typedef QSharedPointer<ExtendedCalendar> Ptr;
00233
00238 explicit ExtendedCalendar( const KDateTime::Spec &timeSpec );
00239
00244 explicit ExtendedCalendar( const QString &timeZoneId );
00245
00250 virtual ~ExtendedCalendar();
00251
00256 bool reload();
00257
00262 bool save();
00263
00267 void close();
00268
00277 KCalCore::ICalTimeZone parseZone( KCalCore::MSTimeZone *tz );
00278
00283 void doSetTimeSpec( const KDateTime::Spec &timeSpec );
00284
00295 KCalCore::Incidence::Ptr dissociateSingleOccurrence( const KCalCore::Incidence::Ptr &incidence,
00296 const KDateTime &dateTime,
00297 const KDateTime::Spec &spec );
00298
00299
00300
00307 bool addEvent( const KCalCore::Event::Ptr &event );
00308
00318 bool addEvent( const KCalCore::Event::Ptr &event, const QString ¬ebookUid );
00319
00324 bool deleteEventInstances( const KCalCore::Event::Ptr &event );
00325
00334 bool deleteEvent( const KCalCore::Event::Ptr &event );
00335
00340 void deleteAllEvents();
00341
00346 KCalCore::Event::List rawEvents(
00347 KCalCore::EventSortField sortField = KCalCore::EventSortUnsorted,
00348 KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending ) const;
00349
00354 KCalCore::Event::List rawEvents(
00355 const QDate &start, const QDate &end,
00356 const KDateTime::Spec ×pec = KDateTime::Spec(),
00357 bool inclusive = false ) const;
00358
00364 KCalCore::Event::List rawEventsForDate(
00365 const QDate &date, const KDateTime::Spec ×pec = KDateTime::Spec(),
00366 KCalCore::EventSortField sortField = KCalCore::EventSortUnsorted,
00367 KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending ) const;
00368
00373 KCalCore::Event::List rawEventsForDate( const KDateTime &dt ) const;
00374
00379 KCalCore::Event::Ptr event( const QString &uid,
00380 const KDateTime &recurrenceId = KDateTime() ) const;
00381
00386 KCalCore::Event::Ptr deletedEvent( const QString &uid,
00387 const KDateTime &recurrenceId = KDateTime() ) const;
00388
00393 KCalCore::Event::List deletedEvents(
00394 KCalCore::EventSortField sortField = KCalCore::EventSortUnsorted,
00395 KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending ) const;
00396
00402 KCalCore::Event::List eventInstances(
00403 const KCalCore::Incidence::Ptr &event,
00404 KCalCore::EventSortField sortField = KCalCore::EventSortUnsorted,
00405 KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending ) const;
00406
00407
00408
00415 bool addTodo( const KCalCore::Todo::Ptr &todo );
00416
00426 bool addTodo( const KCalCore::Todo::Ptr &todo, const QString ¬ebookUid );
00427
00435 bool deleteTodo( const KCalCore::Todo::Ptr &todo );
00436
00441 bool deleteTodoInstances( const KCalCore::Todo::Ptr &todo );
00442
00447 void deleteAllTodos();
00448
00453 KCalCore::Todo::List rawTodos(
00454 KCalCore::TodoSortField sortField = KCalCore::TodoSortUnsorted,
00455 KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending ) const;
00456
00461 KCalCore::Todo::List rawTodos(
00462 const QDate &start, const QDate &end,
00463 const KDateTime::Spec ×pec = KDateTime::Spec(),
00464 bool inclusive = false ) const;
00465
00470 KCalCore::Todo::List rawTodosForDate( const QDate &date ) const;
00471
00476 KCalCore::Todo::Ptr todo( const QString &uid,
00477 const KDateTime &recurrenceId = KDateTime() ) const;
00478
00483 KCalCore::Todo::Ptr deletedTodo( const QString &uid,
00484 const KDateTime &recurrenceId = KDateTime() ) const;
00485
00490 KCalCore::Todo::List deletedTodos(
00491 KCalCore::TodoSortField sortField = KCalCore::TodoSortUnsorted,
00492 KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending ) const;
00493
00499 KCalCore::Todo::List todoInstances(
00500 const KCalCore::Incidence::Ptr &todo,
00501 KCalCore::TodoSortField sortField = KCalCore::TodoSortUnsorted,
00502 KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending ) const;
00503
00504
00505
00512 bool addJournal( const KCalCore::Journal::Ptr &journal );
00513
00523 bool addJournal( const KCalCore::Journal::Ptr &journal, const QString ¬ebookUid );
00524
00532 bool deleteJournal( const KCalCore::Journal::Ptr &journal );
00533
00538 bool deleteJournalInstances( const KCalCore::Journal::Ptr &journal );
00539
00544 void deleteAllJournals();
00545
00550 KCalCore::Journal::List rawJournals(
00551 KCalCore::JournalSortField sortField = KCalCore::JournalSortUnsorted,
00552 KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending ) const;
00553
00567 KCalCore::Journal::List rawJournals(
00568 const QDate &start, const QDate &end,
00569 const KDateTime::Spec ×pec = KDateTime::Spec(),
00570 bool inclusive = false ) const;
00571
00576 KCalCore::Journal::List rawJournalsForDate( const QDate &date ) const;
00577
00582 KCalCore::Journal::Ptr journal( const QString &uid,
00583 const KDateTime &recurrenceId = KDateTime() ) const;
00584
00589 KCalCore::Journal::Ptr deletedJournal( const QString &uid,
00590 const KDateTime &recurrenceId = KDateTime() ) const;
00591
00596 KCalCore::Journal::List deletedJournals(
00597 KCalCore::JournalSortField sortField = KCalCore::JournalSortUnsorted,
00598 KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending ) const;
00599
00605 KCalCore::Journal::List journalInstances(
00606 const KCalCore::Incidence::Ptr &journal,
00607 KCalCore::JournalSortField sortField = KCalCore::JournalSortUnsorted,
00608 KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending ) const;
00609
00610
00611
00616 KCalCore::Alarm::List alarms( const KDateTime &from, const KDateTime &to ) const;
00617
00624 KCalCore::Alarm::List alarmsTo( const KDateTime &to ) const;
00625
00631 void incidenceUpdate( const QString &uid, const KDateTime &recurrenceId );
00632
00638 void incidenceUpdated( const QString &uid, const KDateTime &recurrenceId );
00639
00640 using QObject::event;
00641
00642
00643
00650 QStringList attendees();
00651
00658 KCalCore::Incidence::List attendeeIncidences( const QString &email );
00659
00665 KCalCore::Incidence::List geoIncidences();
00666
00676 KCalCore::Incidence::List geoIncidences( float geoLatitude, float geoLongitude,
00677 float diffLatitude, float diffLongitude );
00678
00687 virtual KCalCore::Incidence::List incidences( const QDate &date, const QList<KCalCore::Incidence::IncidenceType> &types );
00688
00693 void deleteAllIncidences();
00694
00702 bool deleteIncidenceInstances( const KCalCore::Incidence::Ptr &incidence );
00703
00713 static KCalCore::Incidence::List sortIncidences(
00714 KCalCore::Incidence::List *list,
00715 IncidenceSortField sortField = IncidenceSortDate,
00716 KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending );
00717
00723 typedef struct ExpandedIncidenceValidity
00724 {
00725 QDateTime dtStart;
00726 QDateTime dtEnd;
00727 } ExpandedIncidenceValidity;
00728
00735 typedef QPair<ExpandedIncidenceValidity,KCalCore::Incidence::Ptr> ExpandedIncidence;
00736
00740 typedef QVector<ExpandedIncidence> ExpandedIncidenceList;
00741 typedef QVectorIterator<ExpandedIncidence> ExpandedIncidenceIterator;
00742
00760 ExpandedIncidenceList expandRecurrences( KCalCore::Incidence::List *list,
00761 const KDateTime &start,
00762 const KDateTime &end,
00763 int maxExpand = 1000,
00764 bool *expandLimitHit = 0 );
00765
00790 ExpandedIncidenceList expandMultiDay( const ExpandedIncidenceList &list,
00791 const QDate &startDate,
00792 const QDate &endDate,
00793 int maxExpand = 1000,
00794 bool merge = true,
00795 bool *expandLimitHit = 0 );
00796
00797 using KCalCore::Calendar::incidences;
00798
00808 KCalCore::Incidence::List incidences( const QDate &start, const QDate &end );
00809
00820 static QSharedPointer<ExtendedStorage> defaultStorage( const ExtendedCalendar::Ptr &calendar,
00821 bool synchronousTrackerSave = false );
00822
00823
00824
00833 KCalCore::Todo::List uncompletedTodos( bool hasDate, int hasGeo );
00834
00844 KCalCore::Todo::List completedTodos( bool hasDate, int hasGeo,
00845 const KDateTime &start, const KDateTime &end );
00846
00855 KCalCore::Incidence::List incidences( bool hasDate, const KDateTime &start,
00856 const KDateTime &end );
00857
00866 KCalCore::Incidence::List geoIncidences( bool hasDate, const KDateTime &start,
00867 const KDateTime &end );
00868
00876 KCalCore::Incidence::List unreadInvitationIncidences(
00877 const KCalCore::Person::Ptr &person = KCalCore::Person::Ptr() );
00878
00887 KCalCore::Incidence::List oldInvitationIncidences( const KDateTime &start,
00888 const KDateTime &end );
00889
00899 KCalCore::Incidence::List contactIncidences( const KCalCore::Person::Ptr &person,
00900 const KDateTime &start, const KDateTime &end );
00901
00902 using KCalCore::Calendar::journals;
00903
00911 KCalCore::Journal::List journals( const QDate &start, const QDate &end );
00912
00916 KCalCore::Journal::List journals( const QDate &date ) const;
00917
00929 KCalCore::Incidence::List addIncidences( KCalCore::Incidence::List *list,
00930 const QString ¬ebookUid,
00931 bool duplicateRemovalEnabled = true );
00932
00939 int eventCount( const QString ¬ebookUid = QString());
00940
00947 int todoCount( const QString ¬ebookUid = QString());
00948
00955 int journalCount( const QString ¬ebookUid = QString());
00956
00961 virtual void virtual_hook( int id, void *data );
00962
00963 protected:
00964
00969 virtual void storageModified( ExtendedStorage *storage, const QString &info );
00970 virtual void storageProgress( ExtendedStorage *storage, const QString &info );
00971 virtual void storageFinished( ExtendedStorage *storage, bool error, const QString &info );
00972
00973
00974 private:
00975
00976 Q_DISABLE_COPY( ExtendedCalendar )
00977 class MKCAL_HIDE Private;
00978 Private *const d;
00979
00980 };
00981
00982 }
00983
00984 #endif