exchangecalendar.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <stdlib.h>
00022
00023 #include <qdatetime.h>
00024 #include <qstring.h>
00025 #include <qptrlist.h>
00026
00027 #include <kdebug.h>
00028
00029 #include <libkcal/calendarlocal.h>
00030 #include <libkcal/calendar.h>
00031 #include <libkcal/journal.h>
00032
00033 #include "dateset.h"
00034 #include "exchangeaccount.h"
00035 #include "exchangeclient.h"
00036
00037 #include "exchangecalendar.h"
00038
00039 using namespace KCal;
00040 using namespace KPIM;
00041
00042 ExchangeCalendar::ExchangeCalendar( KPIM::ExchangeAccount* account )
00043 : Calendar()
00044 {
00045 init( account );
00046 mCache = new CalendarLocal();
00047 }
00048
00049 ExchangeCalendar::ExchangeCalendar( KPIM::ExchangeAccount* account, const QString &timeZoneId)
00050 : Calendar(timeZoneId)
00051 {
00052 init( account );
00053 mCache = new CalendarLocal( timeZoneId );
00054 }
00055
00056 void ExchangeCalendar::init( KPIM::ExchangeAccount* account )
00057 {
00058 kdDebug() << "ExchangeCalendar::init()" << endl;
00059 mAccount = account;
00060 mClient = new ExchangeClient( account );
00061 mDates = new DateSet();
00062
00063 mEventDates = new QMap<Event,QDateTime>();
00064 mCacheDates = new QMap<QDate, QDateTime>();
00065
00066 mCachedSeconds = 600;
00067
00068
00069 }
00070
00071
00072 ExchangeCalendar::~ExchangeCalendar()
00073 {
00074 kdDebug() << "Destructing ExchangeCalendar" << endl;
00075 close();
00076
00077
00078 delete mDates;
00079 delete mClient;
00080 delete mEventDates;
00081 delete mCacheDates;
00082 delete mCache;
00083 }
00084
00085
00086 bool ExchangeCalendar::load( const QString &fileName )
00087 {
00088
00089 return true;
00090 }
00091
00092 bool ExchangeCalendar::save( const QString &fileName, CalFormat *format )
00093 {
00094 return mCache->save( fileName, format );
00095 }
00096
00097 void ExchangeCalendar::close()
00098 {
00099 mCache->close();
00100 setModified( false );
00101 }
00102
00103
00104 void ExchangeCalendar::addEvent(Event *anEvent)
00105 {
00106 kdDebug() << "ExchangeCalendar::addEvent" << endl;
00107 mCache->addEvent( anEvent );
00108 insertEvent(anEvent);
00109
00110 anEvent->registerObserver( this );
00111
00112 setModified( true );
00113 }
00114
00115
00116 void ExchangeCalendar::deleteEvent(Event *event)
00117 {
00118 kdDebug(5800) << "ExchangeCalendar::deleteEvent" << endl;
00119 mCache->deleteEvent( event );
00120 setModified( true );
00121 }
00122
00123
00124 Event *ExchangeCalendar::event( const QString &uid )
00125 {
00126 kdDebug(5800) << "ExchangeCalendar::event(): " << uid << endl;
00127
00128 return mCache->event( uid );
00129 }
00130
00131 void ExchangeCalendar::addTodo(Todo *todo)
00132 {
00133 mCache->addTodo( todo );
00134
00135 todo->registerObserver( this );
00136
00137 setModified( true );
00138 }
00139
00140 void ExchangeCalendar::deleteTodo(Todo *todo)
00141 {
00142 mCache->deleteTodo( todo );
00143
00144 setModified( true );
00145 }
00146
00147 QPtrList<Todo> ExchangeCalendar::rawTodos() const
00148 {
00149 return mCache->rawTodos();
00150 }
00151
00152 Todo *ExchangeCalendar::todo( const QString &uid )
00153 {
00154 return mCache->todo( uid );
00155 }
00156
00157 QPtrList<Todo> ExchangeCalendar::todos( const QDate &date )
00158 {
00159 return mCache->todos( date );
00160 }
00161
00162 int ExchangeCalendar::numEvents(const QDate &qd)
00163 {
00164 kdDebug() << "ExchangeCalendar::numEvents" << endl;
00165 return mCache->numEvents( qd );
00166 }
00167
00168
00169 Alarm::List ExchangeCalendar::alarmsTo( const QDateTime &to )
00170 {
00171 return mCache->alarmsTo( to );
00172 }
00173
00174 Alarm::List ExchangeCalendar::alarms( const QDateTime &from, const QDateTime &to )
00175 {
00176 kdDebug(5800) << "ExchangeCalendar::alarms(" << from.toString() << " - " << to.toString() << ")\n";
00177 return mCache->alarms( from, to );
00178 }
00179
00180
00181
00182
00183 void ExchangeCalendar::update(IncidenceBase *incidence)
00184 {
00185 setModified( true );
00186 }
00187
00188
00189
00190
00191 void ExchangeCalendar::insertEvent(const Event *anEvent)
00192 {
00193 kdDebug() << "ExchangeCalendar::insertEvent" << endl;
00194
00195 }
00196
00197
00198
00199 QPtrList<Event> ExchangeCalendar::rawEventsForDate(const QDate &qd, bool sorted)
00200 {
00201 kdDebug() << "ExchangeCalendar::rawEventsForDate(" << qd.toString() << "," << sorted << ")" << endl;
00202
00203
00204
00205 QDateTime now = QDateTime::currentDateTime();
00206
00207
00208
00209 QDate start = QDate( qd.year(), qd.month(), 1 );
00210 if ( !mDates->contains( start ) || (*mCacheDates)[start].secsTo( now ) > mCachedSeconds ) {
00211 kdDebug() << "Reading events for month of " << start.toString() << endl;
00212 QDate end = start.addMonths( 1 ).addDays( -1 );
00213 mClient->downloadSynchronous( mCache, start, end, true );
00214 mDates->add( start );
00215 mCacheDates->insert( start, now );
00216 }
00217
00218
00219 QPtrList<Event> events = mCache->rawEventsForDate( qd, sorted );
00220 kdDebug() << "Found " << events.count() << " events." << endl;
00221 return events;
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250 }
00251
00252
00253 QPtrList<Event> ExchangeCalendar::rawEvents( const QDate &start, const QDate &end,
00254 bool inclusive )
00255 {
00256 kdDebug() << "ExchangeCalendar::rawEvents(start,end,inclusive)" << endl;
00257 return mCache->rawEvents( start, end, inclusive );
00258 }
00259
00260 QPtrList<Event> ExchangeCalendar::rawEventsForDate(const QDateTime &qdt)
00261 {
00262 kdDebug() << "ExchangeCalendar::rawEventsForDate(qdt)" << endl;
00263 return rawEventsForDate( qdt.date() );
00264 }
00265
00266 QPtrList<Event> ExchangeCalendar::rawEvents()
00267 {
00268 kdDebug() << "ExchangeCalendar::rawEvents()" << endl;
00269 return mCache->rawEvents();
00270 }
00271
00272 void ExchangeCalendar::addJournal(Journal *journal)
00273 {
00274 kdDebug(5800) << "Adding Journal on " << journal->dtStart().toString() << endl;
00275 mCache->addJournal( journal );
00276
00277 journal->registerObserver( this );
00278
00279 setModified( true );
00280 }
00281
00282 Journal *ExchangeCalendar::journal(const QDate &date)
00283 {
00284
00285 return mCache->journal( date );
00286 }
00287
00288 Journal *ExchangeCalendar::journal(const QString &uid)
00289 {
00290 return mCache->journal( uid );
00291 }
00292
00293 QPtrList<Journal> ExchangeCalendar::journals()
00294 {
00295 return mCache->journals();
00296 }
This file is part of the documentation for kdelibs Version 3.1.5.