summaryrefslogtreecommitdiffabout
path: root/libkcal
Unidiff
Diffstat (limited to 'libkcal') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/calendar.h1
-rw-r--r--libkcal/calendarlocal.cpp25
-rw-r--r--libkcal/calendarlocal.h1
3 files changed, 26 insertions, 1 deletions
diff --git a/libkcal/calendar.h b/libkcal/calendar.h
index 0a94914..66836a1 100644
--- a/libkcal/calendar.h
+++ b/libkcal/calendar.h
@@ -223,161 +223,162 @@ public:
223 */ 223 */
224 virtual QPtrList<Todo> todos(); 224 virtual QPtrList<Todo> todos();
225 /** 225 /**
226 Searches todolist for an event with this unique string identifier, 226 Searches todolist for an event with this unique string identifier,
227 returns a pointer or null. 227 returns a pointer or null.
228 */ 228 */
229 virtual Todo *todo( const QString &uid ) = 0; 229 virtual Todo *todo( const QString &uid ) = 0;
230 virtual Todo *todo( QString, QString ) = 0; 230 virtual Todo *todo( QString, QString ) = 0;
231 /** 231 /**
232 Returns list of todos due on the specified date. 232 Returns list of todos due on the specified date.
233 */ 233 */
234 virtual QPtrList<Todo> todos( const QDate &date ) = 0; 234 virtual QPtrList<Todo> todos( const QDate &date ) = 0;
235 /** 235 /**
236 Return unfiltered list of todos. 236 Return unfiltered list of todos.
237 */ 237 */
238 virtual QPtrList<Todo> rawTodos() = 0; 238 virtual QPtrList<Todo> rawTodos() = 0;
239 239
240 /** 240 /**
241 Add a Journal entry to calendar. 241 Add a Journal entry to calendar.
242 242
243 @return true on success, false on error. 243 @return true on success, false on error.
244 */ 244 */
245 virtual bool addJournal( Journal * ) = 0; 245 virtual bool addJournal( Journal * ) = 0;
246 /** 246 /**
247 Return Journal for given date. 247 Return Journal for given date.
248 */ 248 */
249 virtual Journal *journal( const QDate & ) = 0; 249 virtual Journal *journal( const QDate & ) = 0;
250 virtual QPtrList<Journal> journals4Date( const QDate & ) = 0; 250 virtual QPtrList<Journal> journals4Date( const QDate & ) = 0;
251 /** 251 /**
252 Return Journal with given UID. 252 Return Journal with given UID.
253 */ 253 */
254 virtual Journal *journal( const QString &UID ) = 0; 254 virtual Journal *journal( const QString &UID ) = 0;
255 /** 255 /**
256 Return list of all Journal entries. 256 Return list of all Journal entries.
257 */ 257 */
258 virtual QPtrList<Journal> journals() = 0; 258 virtual QPtrList<Journal> journals() = 0;
259 259
260 /** 260 /**
261 Searches all incidence types for an incidence with this unique 261 Searches all incidence types for an incidence with this unique
262 string identifier, returns a pointer or null. 262 string identifier, returns a pointer or null.
263 */ 263 */
264 Incidence* incidence( const QString&UID ); 264 Incidence* incidence( const QString&UID );
265 265
266 /** 266 /**
267 Setup relations for an incidence. 267 Setup relations for an incidence.
268 */ 268 */
269 virtual void setupRelations( Incidence * ); 269 virtual void setupRelations( Incidence * );
270 /** 270 /**
271 Remove all relations to an incidence 271 Remove all relations to an incidence
272 */ 272 */
273 virtual void removeRelations( Incidence * ); 273 virtual void removeRelations( Incidence * );
274 274
275 /** 275 /**
276 Set calendar filter, which filters events for the events() functions. 276 Set calendar filter, which filters events for the events() functions.
277 The Filter object is owned by the caller. 277 The Filter object is owned by the caller.
278 */ 278 */
279 void setFilter( CalFilter * ); 279 void setFilter( CalFilter * );
280 /** 280 /**
281 Return calendar filter. 281 Return calendar filter.
282 */ 282 */
283 CalFilter *filter(); 283 CalFilter *filter();
284 virtual QDateTime nextAlarm( int daysTo ) = 0; 284 virtual QDateTime nextAlarm( int daysTo ) = 0;
285 virtual QString nextSummary( ) const = 0; 285 virtual QString nextSummary( ) const = 0;
286 virtual void reInitAlarmSettings() = 0; 286 virtual void reInitAlarmSettings() = 0;
287 virtual QDateTime nextAlarmEventDateTime() const = 0; 287 virtual QDateTime nextAlarmEventDateTime() const = 0;
288 virtual void checkAlarmForIncidence( Incidence *, bool ) = 0; 288 virtual void checkAlarmForIncidence( Incidence *, bool ) = 0;
289 /** 289 /**
290 Return all alarms, which ocur in the given time interval. 290 Return all alarms, which ocur in the given time interval.
291 */ 291 */
292 virtual Alarm::List alarms( const QDateTime &from, 292 virtual Alarm::List alarms( const QDateTime &from,
293 const QDateTime &to ) = 0; 293 const QDateTime &to ) = 0;
294 294
295 class Observer { 295 class Observer {
296 public: 296 public:
297 virtual void calendarModified( bool, Calendar * ) = 0; 297 virtual void calendarModified( bool, Calendar * ) = 0;
298 }; 298 };
299 299
300 void registerObserver( Observer * ); 300 void registerObserver( Observer * );
301 301
302 void setModified( bool ); 302 void setModified( bool );
303 303
304 /** 304 /**
305 Set product id returned by loadedProductId(). This function is only 305 Set product id returned by loadedProductId(). This function is only
306 useful for the calendar loading code. 306 useful for the calendar loading code.
307 */ 307 */
308 void setLoadedProductId( const QString & ); 308 void setLoadedProductId( const QString & );
309 /** 309 /**
310 Return product id taken from file that has been loaded. Returns 310 Return product id taken from file that has been loaded. Returns
311 QString::null, if no calendar has been loaded. 311 QString::null, if no calendar has been loaded.
312 */ 312 */
313 QString loadedProductId(); 313 QString loadedProductId();
314 int defaultCalendar(); 314 int defaultCalendar();
315 void setDontDeleteIncidencesOnClose (); 315 void setDontDeleteIncidencesOnClose ();
316 public slots: 316 public slots:
317 void setDefaultCalendar( int ); 317 void setDefaultCalendar( int );
318 virtual void setCalendarEnabled( int id, bool enable ) = 0; 318 virtual void setCalendarEnabled( int id, bool enable ) = 0;
319 virtual void setAllCalendarEnabled( bool enable ) = 0;
319 virtual void setAlarmEnabled( int id, bool enable ) = 0; 320 virtual void setAlarmEnabled( int id, bool enable ) = 0;
320 virtual void setReadOnly( int id, bool enable ) = 0; 321 virtual void setReadOnly( int id, bool enable ) = 0;
321 virtual void setDefaultCalendarEnabledOnly() = 0; 322 virtual void setDefaultCalendarEnabledOnly() = 0;
322 virtual void setCalendarRemove( int id ) = 0; 323 virtual void setCalendarRemove( int id ) = 0;
323 virtual void getIncidenceCount( int calId, int& events, int & todos, int & journals) = 0; 324 virtual void getIncidenceCount( int calId, int& events, int & todos, int & journals) = 0;
324 325
325 signals: 326 signals:
326 void calendarChanged(); 327 void calendarChanged();
327 void calendarSaved(); 328 void calendarSaved();
328 void calendarLoaded(); 329 void calendarLoaded();
329 void addAlarm(const QDateTime &qdt, const QString &noti ); 330 void addAlarm(const QDateTime &qdt, const QString &noti );
330 void removeAlarm(const QDateTime &qdt, const QString &noti ); 331 void removeAlarm(const QDateTime &qdt, const QString &noti );
331 332
332 protected: 333 protected:
333 /** 334 /**
334 Get unfiltered events, which occur on the given date. 335 Get unfiltered events, which occur on the given date.
335 */ 336 */
336 virtual QPtrList<Event> rawEventsForDate( const QDateTime &qdt ) = 0; 337 virtual QPtrList<Event> rawEventsForDate( const QDateTime &qdt ) = 0;
337 /** 338 /**
338 Get unfiltered events, which occur on the given date. 339 Get unfiltered events, which occur on the given date.
339 */ 340 */
340 virtual QPtrList<Event> rawEventsForDate( const QDate &date, 341 virtual QPtrList<Event> rawEventsForDate( const QDate &date,
341 bool sorted = false ) = 0; 342 bool sorted = false ) = 0;
342 /** 343 /**
343 Get events in a range of dates. If inclusive is set to true, only events 344 Get events in a range of dates. If inclusive is set to true, only events
344 are returned, which are completely included in the range. 345 are returned, which are completely included in the range.
345 */ 346 */
346 virtual QPtrList<Event> rawEvents( const QDate &start, const QDate &end, 347 virtual QPtrList<Event> rawEvents( const QDate &start, const QDate &end,
347 bool inclusive = false ) = 0; 348 bool inclusive = false ) = 0;
348 349
349 Incidence *mNextAlarmIncidence; 350 Incidence *mNextAlarmIncidence;
350 Incidence *mUndoIncidence; 351 Incidence *mUndoIncidence;
351 int mDefaultCalendar; 352 int mDefaultCalendar;
352 bool mDeleteIncidencesOnClose; 353 bool mDeleteIncidencesOnClose;
353 354
354private: 355private:
355 void init(); 356 void init();
356 357
357 QString mOwner; // who the calendar belongs to 358 QString mOwner; // who the calendar belongs to
358 QString mOwnerEmail; // email address of the owner 359 QString mOwnerEmail; // email address of the owner
359 int mTimeZone; // timezone OFFSET from GMT (MINUTES) 360 int mTimeZone; // timezone OFFSET from GMT (MINUTES)
360 bool mLocalTime; // use local time, not UTC or a time zone 361 bool mLocalTime; // use local time, not UTC or a time zone
361 362
362 363
363 CalFilter *mFilter; 364 CalFilter *mFilter;
364 CalFilter *mDefaultFilter; 365 CalFilter *mDefaultFilter;
365 366
366 367
367 QString mTimeZoneId; 368 QString mTimeZoneId;
368 369
369 Observer *mObserver; 370 Observer *mObserver;
370 bool mNewObserver; 371 bool mNewObserver;
371 372
372 bool mModified; 373 bool mModified;
373 374
374 QString mLoadedProductId; 375 QString mLoadedProductId;
375 376
376 // This list is used to put together related todos 377 // This list is used to put together related todos
377 QDict<Incidence> mOrphans; 378 QDict<Incidence> mOrphans;
378 QDict<Incidence> mOrphanUids; 379 QDict<Incidence> mOrphanUids;
379}; 380};
380 381
381} 382}
382 383
383#endif 384#endif
diff --git a/libkcal/calendarlocal.cpp b/libkcal/calendarlocal.cpp
index 45e3128..2a57724 100644
--- a/libkcal/calendarlocal.cpp
+++ b/libkcal/calendarlocal.cpp
@@ -97,209 +97,219 @@ Incidence* CalendarLocal::incidenceForUid( const QString& uid , bool doNotCheckD
97 } 97 }
98 } 98 }
99 if ( retVal ) return retVal; 99 if ( retVal ) return retVal;
100 Event *event; 100 Event *event;
101 for ( event = mEventList.first(); event; event = mEventList.next() ) { 101 for ( event = mEventList.first(); event; event = mEventList.next() ) {
102 if ( event->uid() == uid ) { 102 if ( event->uid() == uid ) {
103 if ( doNotCheckDuplicates ) return event; 103 if ( doNotCheckDuplicates ) return event;
104 if ( retVal ) { 104 if ( retVal ) {
105 if ( retVal->calID() > event->calID() ) { 105 if ( retVal->calID() > event->calID() ) {
106 retVal = event; 106 retVal = event;
107 } 107 }
108 } else { 108 } else {
109 retVal = event; 109 retVal = event;
110 } 110 }
111 } 111 }
112 } 112 }
113 if ( retVal ) return retVal; 113 if ( retVal ) return retVal;
114 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 114 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
115 if ( it->uid() == uid ) { 115 if ( it->uid() == uid ) {
116 if ( doNotCheckDuplicates ) return it; 116 if ( doNotCheckDuplicates ) return it;
117 if ( retVal ) { 117 if ( retVal ) {
118 if ( retVal->calID() > it->calID() ) { 118 if ( retVal->calID() > it->calID() ) {
119 retVal = it; 119 retVal = it;
120 } 120 }
121 } else { 121 } else {
122 retVal = it; 122 retVal = it;
123 } 123 }
124 } 124 }
125 return retVal; 125 return retVal;
126} 126}
127 127
128bool CalendarLocal::mergeCalendar( Calendar* remote ) 128bool CalendarLocal::mergeCalendar( Calendar* remote )
129{ 129{
130 // 1 look for raw inc in local 130 // 1 look for raw inc in local
131 // if inc not in remote, delete in local 131 // if inc not in remote, delete in local
132 // 2 look for raw inc in remote 132 // 2 look for raw inc in remote
133 // if inc in local, replace it 133 // if inc in local, replace it
134 // if not in local, add it to default calendar 134 // if not in local, add it to default calendar
135 QPtrList<Incidence> localInc = rawIncidences(); 135 QPtrList<Incidence> localInc = rawIncidences();
136 Incidence* inL = localInc.first(); 136 Incidence* inL = localInc.first();
137 while ( inL ) { 137 while ( inL ) {
138 if ( ! inL->isReadOnly () ) 138 if ( ! inL->isReadOnly () )
139 if ( !remote->incidenceForUid( inL->uid(), true )) 139 if ( !remote->incidenceForUid( inL->uid(), true ))
140 deleteIncidence( inL ); 140 deleteIncidence( inL );
141 inL = localInc.next(); 141 inL = localInc.next();
142 } 142 }
143 QPtrList<Incidence> er = remote->rawIncidences(); 143 QPtrList<Incidence> er = remote->rawIncidences();
144 Incidence* inR = er.first(); 144 Incidence* inR = er.first();
145 while ( inR ) { 145 while ( inR ) {
146 inL = incidenceForUid( inR->uid(),false ); 146 inL = incidenceForUid( inR->uid(),false );
147 if ( inL ) { 147 if ( inL ) {
148 if ( ! inL->isReadOnly () || inL->uid().left(15) == QString("last-syncEvent-") ) { 148 if ( ! inL->isReadOnly () || inL->uid().left(15) == QString("last-syncEvent-") ) {
149 int calID = inL->calID(); 149 int calID = inL->calID();
150 deleteIncidence( inL ); 150 deleteIncidence( inL );
151 inL = inR->clone(); 151 inL = inR->clone();
152 inL->setCalID( calID ); 152 inL->setCalID( calID );
153 addIncidence( inL ); 153 addIncidence( inL );
154 } 154 }
155 } else { 155 } else {
156 inL = inR->clone(); 156 inL = inR->clone();
157 inL->setCalID( 0 );// add to default cal 157 inL->setCalID( 0 );// add to default cal
158 addIncidence( inL ); 158 addIncidence( inL );
159 } 159 }
160 inR = er.next(); 160 inR = er.next();
161 } 161 }
162 return true; 162 return true;
163} 163}
164 164
165 165
166bool CalendarLocal::addCalendarFile( QString name, int id ) 166bool CalendarLocal::addCalendarFile( QString name, int id )
167{ 167{
168 CalendarLocal calendar( timeZoneId() ); 168 CalendarLocal calendar( timeZoneId() );
169 calendar.setDefaultCalendar( id ); 169 calendar.setDefaultCalendar( id );
170 if ( calendar.load( name ) ) { 170 if ( calendar.load( name ) ) {
171 addCalendar( &calendar ); 171 addCalendar( &calendar );
172 return true; 172 return true;
173 } 173 }
174 return false; 174 return false;
175} 175}
176void CalendarLocal::setSyncEventsEnabled() 176void CalendarLocal::setSyncEventsEnabled()
177{ 177{
178 Event * ev; 178 Event * ev;
179 ev = mEventList.first(); 179 ev = mEventList.first();
180 while ( ev ) { 180 while ( ev ) {
181 if ( ev->uid().left(15) == QString("last-syncEvent-") ) 181 if ( ev->uid().left(15) == QString("last-syncEvent-") )
182 ev->setCalEnabled( true ); 182 ev->setCalEnabled( true );
183 ev = mEventList.next(); 183 ev = mEventList.next();
184 } 184 }
185} 185}
186void CalendarLocal::setSyncEventsReadOnly() 186void CalendarLocal::setSyncEventsReadOnly()
187{ 187{
188 Event * ev; 188 Event * ev;
189 ev = mEventList.first(); 189 ev = mEventList.first();
190 while ( ev ) { 190 while ( ev ) {
191 if ( ev->uid().left(15) == QString("last-syncEvent-") ) { 191 if ( ev->uid().left(15) == QString("last-syncEvent-") ) {
192 ev->setReadOnly( true ); 192 ev->setReadOnly( true );
193 ev->setCalID( 1 );
194 } 193 }
195 ev = mEventList.next(); 194 ev = mEventList.next();
196 } 195 }
197} 196}
197
198void CalendarLocal::addCalendar( Calendar* cal ) 198void CalendarLocal::addCalendar( Calendar* cal )
199{ 199{
200 cal->setDontDeleteIncidencesOnClose(); 200 cal->setDontDeleteIncidencesOnClose();
201 setSyncEventsEnabled();
201 { 202 {
202 QPtrList<Event> EventList = cal->rawEvents(); 203 QPtrList<Event> EventList = cal->rawEvents();
204 QPtrList<Event> el;
203 Event * ev = EventList.first(); 205 Event * ev = EventList.first();
204 while ( ev ) { 206 while ( ev ) {
207 if ( ev->uid().left( 15 ) == QString("last-syncEvent-") ) {
208 Event * se = event( ev->uid() );
209 if ( se )
210 el.append( se );
211 }
205 ev->unRegisterObserver( cal ); 212 ev->unRegisterObserver( cal );
206 ev->registerObserver( this ); 213 ev->registerObserver( this );
207 mEventList.append( ev ); 214 mEventList.append( ev );
208 ev = EventList.next(); 215 ev = EventList.next();
209 } 216 }
217 for ( ev = el.first(); ev; ev = el.next() ) {
218 deleteIncidence ( ev );
219 }
210 } 220 }
211 { 221 {
212 222
213 QPtrList<Todo> TodoList = cal->rawTodos(); 223 QPtrList<Todo> TodoList = cal->rawTodos();
214 Todo * ev = TodoList.first(); 224 Todo * ev = TodoList.first();
215 while ( ev ) { 225 while ( ev ) {
216 QString rel = ev->relatedToUid(); 226 QString rel = ev->relatedToUid();
217 if ( !rel.isEmpty() ){ 227 if ( !rel.isEmpty() ){
218 ev->setRelatedTo ( 0 ); 228 ev->setRelatedTo ( 0 );
219 ev->setRelatedToUid( rel ); 229 ev->setRelatedToUid( rel );
220 } 230 }
221 ev = TodoList.next(); 231 ev = TodoList.next();
222 } 232 }
223 //TodoList = cal->rawTodos(); 233 //TodoList = cal->rawTodos();
224 ev = TodoList.first(); 234 ev = TodoList.first();
225 while ( ev ) { 235 while ( ev ) {
226 ev->unRegisterObserver( cal ); 236 ev->unRegisterObserver( cal );
227 ev->registerObserver( this ); 237 ev->registerObserver( this );
228 mTodoList.append( ev ); 238 mTodoList.append( ev );
229 setupRelations( ev ); 239 setupRelations( ev );
230 ev = TodoList.next(); 240 ev = TodoList.next();
231 } 241 }
232 } 242 }
233 { 243 {
234 QPtrList<Journal> JournalList = cal->journals(); 244 QPtrList<Journal> JournalList = cal->journals();
235 Journal * ev = JournalList.first(); 245 Journal * ev = JournalList.first();
236 while ( ev ) { 246 while ( ev ) {
237 ev->unRegisterObserver( cal ); 247 ev->unRegisterObserver( cal );
238 ev->registerObserver( this ); 248 ev->registerObserver( this );
239 mJournalList.append( ev ); 249 mJournalList.append( ev );
240 ev = JournalList.next(); 250 ev = JournalList.next();
241 } 251 }
242 } 252 }
243 setModified( true ); 253 setModified( true );
244} 254}
245bool CalendarLocal::load( const QString &fileName ) 255bool CalendarLocal::load( const QString &fileName )
246{ 256{
247 FileStorage storage( this, fileName ); 257 FileStorage storage( this, fileName );
248 return storage.load(); 258 return storage.load();
249} 259}
250 260
251bool CalendarLocal::save( const QString &fileName, CalFormat *format ) 261bool CalendarLocal::save( const QString &fileName, CalFormat *format )
252{ 262{
253 FileStorage storage( this, fileName, format ); 263 FileStorage storage( this, fileName, format );
254 return storage.save(); 264 return storage.save();
255} 265}
256 266
257void CalendarLocal::stopAllTodos() 267void CalendarLocal::stopAllTodos()
258{ 268{
259 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() ) 269 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
260 it->setRunning( false ); 270 it->setRunning( false );
261 271
262} 272}
263void CalendarLocal::close() 273void CalendarLocal::close()
264{ 274{
265 275
266 Todo * i; 276 Todo * i;
267 for( i = mTodoList.first(); i; i = mTodoList.next() ) i->setRunning(false); 277 for( i = mTodoList.first(); i; i = mTodoList.next() ) i->setRunning(false);
268 278
269 mEventList.setAutoDelete( true ); 279 mEventList.setAutoDelete( true );
270 mTodoList.setAutoDelete( true ); 280 mTodoList.setAutoDelete( true );
271 mJournalList.setAutoDelete( true ); 281 mJournalList.setAutoDelete( true );
272 282
273 mEventList.clear(); 283 mEventList.clear();
274 mTodoList.clear(); 284 mTodoList.clear();
275 mJournalList.clear(); 285 mJournalList.clear();
276 286
277 mEventList.setAutoDelete( false ); 287 mEventList.setAutoDelete( false );
278 mTodoList.setAutoDelete( false ); 288 mTodoList.setAutoDelete( false );
279 mJournalList.setAutoDelete( false ); 289 mJournalList.setAutoDelete( false );
280 290
281 setModified( false ); 291 setModified( false );
282} 292}
283 293
284bool CalendarLocal::addAnniversaryNoDup( Event *event ) 294bool CalendarLocal::addAnniversaryNoDup( Event *event )
285{ 295{
286 QString cat; 296 QString cat;
287 bool isBirthday = true; 297 bool isBirthday = true;
288 if( event->categoriesStr() == i18n( "Anniversary" ) ) { 298 if( event->categoriesStr() == i18n( "Anniversary" ) ) {
289 isBirthday = false; 299 isBirthday = false;
290 cat = i18n( "Anniversary" ); 300 cat = i18n( "Anniversary" );
291 } else if( event->categoriesStr() == i18n( "Birthday" ) ) { 301 } else if( event->categoriesStr() == i18n( "Birthday" ) ) {
292 isBirthday = true; 302 isBirthday = true;
293 cat = i18n( "Birthday" ); 303 cat = i18n( "Birthday" );
294 } else { 304 } else {
295 qDebug("addAnniversaryNoDup called without fitting category! "); 305 qDebug("addAnniversaryNoDup called without fitting category! ");
296 return false; 306 return false;
297 } 307 }
298 Event * eve; 308 Event * eve;
299 for ( eve = mEventList.first(); eve ; eve = mEventList.next() ) { 309 for ( eve = mEventList.first(); eve ; eve = mEventList.next() ) {
300 if ( !(eve->categories().contains( cat ) )) 310 if ( !(eve->categories().contains( cat ) ))
301 continue; 311 continue;
302 // now we have an event with fitting category 312 // now we have an event with fitting category
303 if ( eve->dtStart().date() != event->dtStart().date() ) 313 if ( eve->dtStart().date() != event->dtStart().date() )
304 continue; 314 continue;
305 // now we have an event with fitting category+date 315 // now we have an event with fitting category+date
@@ -910,147 +920,160 @@ bool CalendarLocal::addJournal(Journal *journal)
910 mJournalList.append(journal); 920 mJournalList.append(journal);
911 921
912 journal->registerObserver( this ); 922 journal->registerObserver( this );
913 923
914 setModified( true ); 924 setModified( true );
915 if ( journal->calID() == 0 ) 925 if ( journal->calID() == 0 )
916 journal->setCalID( mDefaultCalendar ); 926 journal->setCalID( mDefaultCalendar );
917 journal->setCalEnabled( true ); 927 journal->setCalEnabled( true );
918 return true; 928 return true;
919} 929}
920 930
921void CalendarLocal::deleteJournal( Journal *journal ) 931void CalendarLocal::deleteJournal( Journal *journal )
922{ 932{
923 clearUndo(journal); 933 clearUndo(journal);
924 if ( mJournalList.removeRef(journal) ) { 934 if ( mJournalList.removeRef(journal) ) {
925 setModified( true ); 935 setModified( true );
926 } 936 }
927} 937}
928 938
929QPtrList<Journal> CalendarLocal::journals4Date( const QDate & date ) 939QPtrList<Journal> CalendarLocal::journals4Date( const QDate & date )
930{ 940{
931 QPtrList<Journal> el; 941 QPtrList<Journal> el;
932 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 942 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
933 if ( it->calEnabled() && it->dtStart().date() == date) el.append( it ); 943 if ( it->calEnabled() && it->dtStart().date() == date) el.append( it );
934 return el; 944 return el;
935} 945}
936Journal *CalendarLocal::journal( const QDate &date ) 946Journal *CalendarLocal::journal( const QDate &date )
937{ 947{
938// kdDebug(5800) << "CalendarLocal::journal() " << date.toString() << endl; 948// kdDebug(5800) << "CalendarLocal::journal() " << date.toString() << endl;
939 949
940 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 950 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
941 if ( it->calEnabled() && it->dtStart().date() == date ) 951 if ( it->calEnabled() && it->dtStart().date() == date )
942 return it; 952 return it;
943 953
944 return 0; 954 return 0;
945} 955}
946 956
947Journal *CalendarLocal::journal( const QString &uid ) 957Journal *CalendarLocal::journal( const QString &uid )
948{ 958{
949 Journal * retVal = 0; 959 Journal * retVal = 0;
950 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 960 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
951 if ( it->calEnabled() && it->uid() == uid ) { 961 if ( it->calEnabled() && it->uid() == uid ) {
952 if ( retVal ) { 962 if ( retVal ) {
953 if ( retVal->calID() > it->calID() ) { 963 if ( retVal->calID() > it->calID() ) {
954 retVal = it; 964 retVal = it;
955 } 965 }
956 } else { 966 } else {
957 retVal = it; 967 retVal = it;
958 } 968 }
959 } 969 }
960 return retVal; 970 return retVal;
961} 971}
962 972
963QPtrList<Journal> CalendarLocal::journals() 973QPtrList<Journal> CalendarLocal::journals()
964{ 974{
965 QPtrList<Journal> el; 975 QPtrList<Journal> el;
966 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 976 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
967 if ( it->calEnabled() ) el.append( it ); 977 if ( it->calEnabled() ) el.append( it );
968 return el; 978 return el;
969} 979}
970void CalendarLocal::setCalendarRemove( int id ) 980void CalendarLocal::setCalendarRemove( int id )
971{ 981{
972 982
973 { 983 {
974 QPtrList<Event> EventList = mEventList; 984 QPtrList<Event> EventList = mEventList;
975 Event * ev = EventList.first(); 985 Event * ev = EventList.first();
976 while ( ev ) { 986 while ( ev ) {
977 if ( ev->calID() == id ) 987 if ( ev->calID() == id )
978 deleteEvent( ev ); 988 deleteEvent( ev );
979 ev = EventList.next(); 989 ev = EventList.next();
980 } 990 }
981 } 991 }
982 { 992 {
983 993
984 QPtrList<Todo> TodoList = mTodoList; 994 QPtrList<Todo> TodoList = mTodoList;
985 Todo * ev = TodoList.first(); 995 Todo * ev = TodoList.first();
986 while ( ev ) { 996 while ( ev ) {
987 if ( ev->calID() == id ) 997 if ( ev->calID() == id )
988 deleteTodo( ev ); 998 deleteTodo( ev );
989 ev = TodoList.next(); 999 ev = TodoList.next();
990 } 1000 }
991 } 1001 }
992 { 1002 {
993 QPtrList<Journal> JournalList = mJournalList; 1003 QPtrList<Journal> JournalList = mJournalList;
994 Journal * ev = JournalList.first(); 1004 Journal * ev = JournalList.first();
995 while ( ev ) { 1005 while ( ev ) {
996 if ( ev->calID() == id ) 1006 if ( ev->calID() == id )
997 deleteJournal( ev ); 1007 deleteJournal( ev );
998 ev = JournalList.next(); 1008 ev = JournalList.next();
999 } 1009 }
1000 } 1010 }
1001 1011
1002 clearUndo(0); 1012 clearUndo(0);
1003 1013
1004} 1014}
1005 1015
1016void CalendarLocal::setAllCalendarEnabled( bool enable )
1017{
1018 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
1019 it->setCalEnabled( enable );
1020
1021 for ( Event *it = mEventList.first(); it; it = mEventList.next() )
1022 it->setCalEnabled( enable );
1023
1024 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
1025 it->setCalEnabled( enable );
1026
1027
1028}
1006void CalendarLocal::setCalendarEnabled( int id, bool enable ) 1029void CalendarLocal::setCalendarEnabled( int id, bool enable )
1007{ 1030{
1008 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 1031 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
1009 if ( it->calID() == id ) it->setCalEnabled( enable ); 1032 if ( it->calID() == id ) it->setCalEnabled( enable );
1010 1033
1011 for ( Event *it = mEventList.first(); it; it = mEventList.next() ) 1034 for ( Event *it = mEventList.first(); it; it = mEventList.next() )
1012 if ( it->calID() == id ) it->setCalEnabled( enable ); 1035 if ( it->calID() == id ) it->setCalEnabled( enable );
1013 1036
1014 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() ) 1037 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
1015 if ( it->calID() == id ) it->setCalEnabled( enable ); 1038 if ( it->calID() == id ) it->setCalEnabled( enable );
1016 1039
1017} 1040}
1018 1041
1019void CalendarLocal::setReadOnly( int id, bool enable ) 1042void CalendarLocal::setReadOnly( int id, bool enable )
1020{ 1043{
1021 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 1044 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
1022 if ( it->calID() == id ) it->setReadOnly( enable ); 1045 if ( it->calID() == id ) it->setReadOnly( enable );
1023 1046
1024 for ( Event *it = mEventList.first(); it; it = mEventList.next() ) 1047 for ( Event *it = mEventList.first(); it; it = mEventList.next() )
1025 if ( it->calID() == id ) it->setReadOnly( enable ); 1048 if ( it->calID() == id ) it->setReadOnly( enable );
1026 1049
1027 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() ) 1050 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
1028 if ( it->calID() == id ) it->setReadOnly( enable ); 1051 if ( it->calID() == id ) it->setReadOnly( enable );
1029 1052
1030} 1053}
1031 1054
1032void CalendarLocal::setAlarmEnabled( int id, bool enable ) 1055void CalendarLocal::setAlarmEnabled( int id, bool enable )
1033{ 1056{
1034 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 1057 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
1035 if ( it->calID() == id ) it->setAlarmEnabled( enable ); 1058 if ( it->calID() == id ) it->setAlarmEnabled( enable );
1036 1059
1037 for ( Event *it = mEventList.first(); it; it = mEventList.next() ) 1060 for ( Event *it = mEventList.first(); it; it = mEventList.next() )
1038 if ( it->calID() == id ) it->setAlarmEnabled( enable ); 1061 if ( it->calID() == id ) it->setAlarmEnabled( enable );
1039 1062
1040 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() ) 1063 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
1041 if ( it->calID() == id ) it->setAlarmEnabled( enable ); 1064 if ( it->calID() == id ) it->setAlarmEnabled( enable );
1042 reInitAlarmSettings(); 1065 reInitAlarmSettings();
1043 1066
1044} 1067}
1045void CalendarLocal::setDefaultCalendarEnabledOnly() 1068void CalendarLocal::setDefaultCalendarEnabledOnly()
1046{ 1069{
1047 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 1070 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
1048 it->setCalEnabled( it->calID() == mDefaultCalendar ); 1071 it->setCalEnabled( it->calID() == mDefaultCalendar );
1049 1072
1050 for ( Event *it = mEventList.first(); it; it = mEventList.next() ) 1073 for ( Event *it = mEventList.first(); it; it = mEventList.next() )
1051 it->setCalEnabled( it->calID() == mDefaultCalendar); 1074 it->setCalEnabled( it->calID() == mDefaultCalendar);
1052 1075
1053 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() ) 1076 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
1054 it->setCalEnabled( it->calID() == mDefaultCalendar); 1077 it->setCalEnabled( it->calID() == mDefaultCalendar);
1055 1078
1056} 1079}
diff --git a/libkcal/calendarlocal.h b/libkcal/calendarlocal.h
index eb7bf34..b70f0c9 100644
--- a/libkcal/calendarlocal.h
+++ b/libkcal/calendarlocal.h
@@ -101,132 +101,133 @@ class CalendarLocal : public Calendar
101 bool addTodoNoDup( Todo *todo ); 101 bool addTodoNoDup( Todo *todo );
102 /** 102 /**
103 Remove a todo from the todolist. 103 Remove a todo from the todolist.
104 */ 104 */
105 void deleteTodo( Todo * ); 105 void deleteTodo( Todo * );
106 /** 106 /**
107 Searches todolist for an event with this unique string identifier, 107 Searches todolist for an event with this unique string identifier,
108 returns a pointer or null. 108 returns a pointer or null.
109 */ 109 */
110 Todo *todo( const QString &uid ); 110 Todo *todo( const QString &uid );
111 /** 111 /**
112 Return list of all todos. 112 Return list of all todos.
113 */ 113 */
114 QPtrList<Todo> rawTodos(); 114 QPtrList<Todo> rawTodos();
115 /** 115 /**
116 Returns list of todos due on the specified date. 116 Returns list of todos due on the specified date.
117 */ 117 */
118 QPtrList<Todo> todos( const QDate &date ); 118 QPtrList<Todo> todos( const QDate &date );
119 /** 119 /**
120 Return list of all todos. 120 Return list of all todos.
121 121
122 Workaround because compiler does not recognize function of base class. 122 Workaround because compiler does not recognize function of base class.
123 */ 123 */
124 QPtrList<Todo> todos() { return Calendar::todos(); } 124 QPtrList<Todo> todos() { return Calendar::todos(); }
125 125
126 /** 126 /**
127 Add a Journal entry to calendar. 127 Add a Journal entry to calendar.
128 */ 128 */
129 bool addJournal( Journal * ); 129 bool addJournal( Journal * );
130 /** 130 /**
131 Remove a Journal from the calendar. 131 Remove a Journal from the calendar.
132 */ 132 */
133 void deleteJournal( Journal * ); 133 void deleteJournal( Journal * );
134 /** 134 /**
135 Return Journal for given date. 135 Return Journal for given date.
136 */ 136 */
137 Journal *journal( const QDate & ); 137 Journal *journal( const QDate & );
138 QPtrList<Journal> journals4Date( const QDate & ); 138 QPtrList<Journal> journals4Date( const QDate & );
139 /** 139 /**
140 Return Journal with given UID. 140 Return Journal with given UID.
141 */ 141 */
142 Journal *journal( const QString &uid ); 142 Journal *journal( const QString &uid );
143 /** 143 /**
144 Return list of all Journals stored in calendar. 144 Return list of all Journals stored in calendar.
145 */ 145 */
146 QPtrList<Journal> journals(); 146 QPtrList<Journal> journals();
147 147
148 /** 148 /**
149 Return all alarms, which ocur in the given time interval. 149 Return all alarms, which ocur in the given time interval.
150 */ 150 */
151 Alarm::List alarms( const QDateTime &from, const QDateTime &to ); 151 Alarm::List alarms( const QDateTime &from, const QDateTime &to );
152 152
153 /** 153 /**
154 Return all alarms, which ocur before given date. 154 Return all alarms, which ocur before given date.
155 */ 155 */
156 Alarm::List alarmsTo( const QDateTime &to ); 156 Alarm::List alarmsTo( const QDateTime &to );
157 157
158 QDateTime nextAlarm( int daysTo ) ; 158 QDateTime nextAlarm( int daysTo ) ;
159 QDateTime nextAlarmEventDateTime() const; 159 QDateTime nextAlarmEventDateTime() const;
160 void checkAlarmForIncidence( Incidence *, bool deleted ) ; 160 void checkAlarmForIncidence( Incidence *, bool deleted ) ;
161 void registerAlarm(); 161 void registerAlarm();
162 void deRegisterAlarm(); 162 void deRegisterAlarm();
163 QString getAlarmNotification(); 163 QString getAlarmNotification();
164 QString nextSummary() const ; 164 QString nextSummary() const ;
165 /** 165 /**
166 This method should be called whenever a Event is modified directly 166 This method should be called whenever a Event is modified directly
167 via it's pointer. It makes sure that the calendar is internally 167 via it's pointer. It makes sure that the calendar is internally
168 consistent. 168 consistent.
169 */ 169 */
170 void update( IncidenceBase *incidence ); 170 void update( IncidenceBase *incidence );
171 171
172 /** 172 /**
173 Builds and then returns a list of all events that match for the 173 Builds and then returns a list of all events that match for the
174 date specified. useful for dayView, etc. etc. 174 date specified. useful for dayView, etc. etc.
175 */ 175 */
176 QPtrList<Event> rawEventsForDate( const QDate &date, bool sorted = false ); 176 QPtrList<Event> rawEventsForDate( const QDate &date, bool sorted = false );
177 /** 177 /**
178 Get unfiltered events for date \a qdt. 178 Get unfiltered events for date \a qdt.
179 */ 179 */
180 QPtrList<Event> rawEventsForDate( const QDateTime &qdt ); 180 QPtrList<Event> rawEventsForDate( const QDateTime &qdt );
181 /** 181 /**
182 Get unfiltered events in a range of dates. If inclusive is set to true, 182 Get unfiltered events in a range of dates. If inclusive is set to true,
183 only events are returned, which are completely included in the range. 183 only events are returned, which are completely included in the range.
184 */ 184 */
185 QPtrList<Event> rawEvents( const QDate &start, const QDate &end, 185 QPtrList<Event> rawEvents( const QDate &start, const QDate &end,
186 bool inclusive = false ); 186 bool inclusive = false );
187 Todo *todo( QString, QString ); 187 Todo *todo( QString, QString );
188 Event *event( QString, QString ); 188 Event *event( QString, QString );
189 void getIncidenceCount( int calId, int& events, int & todos, int & journals); 189 void getIncidenceCount( int calId, int& events, int & todos, int & journals);
190 190
191public slots: 191public slots:
192 void setCalendarEnabled( int id, bool enable ); 192 void setCalendarEnabled( int id, bool enable );
193 void setAlarmEnabled( int id, bool enable ); 193 void setAlarmEnabled( int id, bool enable );
194 void setReadOnly( int id, bool enable ); 194 void setReadOnly( int id, bool enable );
195 void setDefaultCalendarEnabledOnly(); 195 void setDefaultCalendarEnabledOnly();
196 void setCalendarRemove( int id ); 196 void setCalendarRemove( int id );
197 void setAllCalendarEnabled( bool enable );
197 198
198 protected: 199 protected:
199 200
200 // Event* mNextAlarmEvent; 201 // Event* mNextAlarmEvent;
201 QString mNextSummary; 202 QString mNextSummary;
202 QString mNextAlarmEventDateTimeString; 203 QString mNextAlarmEventDateTimeString;
203 QString mLastAlarmNotificationString; 204 QString mLastAlarmNotificationString;
204 QDateTime mNextAlarmEventDateTime; 205 QDateTime mNextAlarmEventDateTime;
205 QDateTime mNextAlarmDateTime; 206 QDateTime mNextAlarmDateTime;
206 void reInitAlarmSettings(); 207 void reInitAlarmSettings();
207 208
208 /** Notification function of IncidenceBase::Observer. */ 209 /** Notification function of IncidenceBase::Observer. */
209 void incidenceUpdated( IncidenceBase *i ) { update( i ); } 210 void incidenceUpdated( IncidenceBase *i ) { update( i ); }
210 211
211 /** inserts an event into its "proper place" in the calendar. */ 212 /** inserts an event into its "proper place" in the calendar. */
212 void insertEvent( Event *event ); 213 void insertEvent( Event *event );
213 214
214 /** Append alarms of incidence in interval to list of alarms. */ 215 /** Append alarms of incidence in interval to list of alarms. */
215 void appendAlarms( Alarm::List &alarms, Incidence *incidence, 216 void appendAlarms( Alarm::List &alarms, Incidence *incidence,
216 const QDateTime &from, const QDateTime &to ); 217 const QDateTime &from, const QDateTime &to );
217 218
218 /** Append alarms of recurring events in interval to list of alarms. */ 219 /** Append alarms of recurring events in interval to list of alarms. */
219 void appendRecurringAlarms( Alarm::List &alarms, Incidence *incidence, 220 void appendRecurringAlarms( Alarm::List &alarms, Incidence *incidence,
220 const QDateTime &from, const QDateTime &to ); 221 const QDateTime &from, const QDateTime &to );
221 222
222 private: 223 private:
223 void init(); 224 void init();
224 225
225 QPtrList<Event> mEventList; 226 QPtrList<Event> mEventList;
226 QPtrList<Todo> mTodoList; 227 QPtrList<Todo> mTodoList;
227 QPtrList<Journal> mJournalList; 228 QPtrList<Journal> mJournalList;
228}; 229};
229 230
230} 231}
231 232
232#endif 233#endif