summaryrefslogtreecommitdiffabout
path: root/libkcal/calendarlocal.cpp
authorzautrix <zautrix>2005-11-25 23:24:37 (UTC)
committer zautrix <zautrix>2005-11-25 23:24:37 (UTC)
commit3cd0013c04172b312ee21e80224a3b7734b4d413 (patch) (unidiff)
tree9c5557ecfe874a8a4901a674c5eddcc91f585b0c /libkcal/calendarlocal.cpp
parent0e18027f386280bf427ef9d0ffec61a5516cebda (diff)
downloadkdepimpi-3cd0013c04172b312ee21e80224a3b7734b4d413.zip
kdepimpi-3cd0013c04172b312ee21e80224a3b7734b4d413.tar.gz
kdepimpi-3cd0013c04172b312ee21e80224a3b7734b4d413.tar.bz2
sync
Diffstat (limited to 'libkcal/calendarlocal.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/calendarlocal.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/libkcal/calendarlocal.cpp b/libkcal/calendarlocal.cpp
index c82ea92..b02f706 100644
--- a/libkcal/calendarlocal.cpp
+++ b/libkcal/calendarlocal.cpp
@@ -56,440 +56,440 @@ CalendarLocal::CalendarLocal(const QString &timeZoneId)
56{ 56{
57 init(); 57 init();
58} 58}
59 59
60void CalendarLocal::init() 60void CalendarLocal::init()
61{ 61{
62 mNextAlarmIncidence = 0; 62 mNextAlarmIncidence = 0;
63} 63}
64 64
65 65
66CalendarLocal::~CalendarLocal() 66CalendarLocal::~CalendarLocal()
67{ 67{
68 registerObserver( 0 ); 68 registerObserver( 0 );
69 if ( mDeleteIncidencesOnClose ) 69 if ( mDeleteIncidencesOnClose )
70 close(); 70 close();
71} 71}
72bool CalendarLocal::mergeCalendarFile( QString name ) 72bool CalendarLocal::mergeCalendarFile( QString name )
73{ 73{
74 CalendarLocal calendar( timeZoneId() ); 74 CalendarLocal calendar( timeZoneId() );
75 calendar.setDefaultCalendar( 1 ); 75 calendar.setDefaultCalendar( 1 );
76 if ( calendar.load( name ) ) { 76 if ( calendar.load( name ) ) {
77 mergeCalendar( &calendar ); 77 mergeCalendar( &calendar );
78 return true; 78 return true;
79 } 79 }
80 return false; 80 return false;
81} 81}
82 82
83Incidence* CalendarLocal::incidenceForUid( const QString& uid , bool doNotCheckDuplicates) 83Incidence* CalendarLocal::incidenceForUid( const QString& uid , bool doNotCheckDuplicates)
84{ 84{
85 Todo *todo;; 85 Todo *todo;;
86 Incidence *retVal = 0; 86 Incidence *retVal = 0;
87 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) { 87 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) {
88 if ( todo->uid() == uid ) { 88 if ( todo->uid() == uid ) {
89 if ( doNotCheckDuplicates ) return todo; 89 if ( doNotCheckDuplicates ) return todo;
90 if ( retVal ) { 90 if ( retVal ) {
91 if ( retVal->calID() > todo->calID() ) { 91 if ( retVal->calID() > todo->calID() ) {
92 retVal = todo; 92 retVal = todo;
93 } 93 }
94 } else { 94 } else {
95 retVal = todo; 95 retVal = todo;
96 } 96 }
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_block( 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_block( 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 } 193 }
194 ev = mEventList.next(); 194 ev = mEventList.next();
195 } 195 }
196} 196}
197 197
198void CalendarLocal::addCalendar( Calendar* cal ) 198void CalendarLocal::addCalendar( Calendar* cal )
199{ 199{
200 cal->setDontDeleteIncidencesOnClose(); 200 cal->setDontDeleteIncidencesOnClose();
201 setSyncEventsEnabled(); 201 setSyncEventsEnabled();
202 { 202 {
203 QPtrList<Event> EventList = cal->rawEvents(); 203 QPtrList<Event> EventList = cal->rawEvents();
204 QPtrList<Event> el; 204 QPtrList<Event> el;
205 Event * ev = EventList.first(); 205 Event * ev = EventList.first();
206 while ( ev ) { 206 while ( ev ) {
207 if ( ev->uid().left( 15 ) == QString("last-syncEvent-") ) { 207 if ( ev->uid().left( 15 ) == QString("last-syncEvent-") ) {
208 Event * se = event( ev->uid() ); 208 Event * se = event( ev->uid() );
209 if ( se ) 209 if ( se )
210 el.append( se ); 210 el.append( se );
211 ev->setCalID( 1 ); 211 ev->setCalID_block( 1 );
212 } 212 }
213 ev->unRegisterObserver( cal ); 213 ev->unRegisterObserver( cal );
214 ev->registerObserver( this ); 214 ev->registerObserver( this );
215 mEventList.append( ev ); 215 mEventList.append( ev );
216 ev = EventList.next(); 216 ev = EventList.next();
217 } 217 }
218 for ( ev = el.first(); ev; ev = el.next() ) { 218 for ( ev = el.first(); ev; ev = el.next() ) {
219 deleteIncidence ( ev ); 219 deleteIncidence ( ev );
220 } 220 }
221 } 221 }
222 { 222 {
223 223
224 QPtrList<Todo> TodoList = cal->rawTodos(); 224 QPtrList<Todo> TodoList = cal->rawTodos();
225 Todo * ev = TodoList.first(); 225 Todo * ev = TodoList.first();
226 while ( ev ) { 226 while ( ev ) {
227 QString rel = ev->relatedToUid(); 227 QString rel = ev->relatedToUid();
228 if ( !rel.isEmpty() ){ 228 if ( !rel.isEmpty() ){
229 ev->setRelatedTo ( 0 ); 229 ev->setRelatedTo ( 0 );
230 ev->setRelatedToUid( rel ); 230 ev->setRelatedToUid( rel );
231 } 231 }
232 ev = TodoList.next(); 232 ev = TodoList.next();
233 } 233 }
234 //TodoList = cal->rawTodos(); 234 //TodoList = cal->rawTodos();
235 ev = TodoList.first(); 235 ev = TodoList.first();
236 while ( ev ) { 236 while ( ev ) {
237 ev->unRegisterObserver( cal ); 237 ev->unRegisterObserver( cal );
238 ev->registerObserver( this ); 238 ev->registerObserver( this );
239 mTodoList.append( ev ); 239 mTodoList.append( ev );
240 setupRelations( ev ); 240 setupRelations( ev );
241 ev = TodoList.next(); 241 ev = TodoList.next();
242 } 242 }
243 } 243 }
244 { 244 {
245 QPtrList<Journal> JournalList = cal->journals(); 245 QPtrList<Journal> JournalList = cal->journals();
246 Journal * ev = JournalList.first(); 246 Journal * ev = JournalList.first();
247 while ( ev ) { 247 while ( ev ) {
248 ev->unRegisterObserver( cal ); 248 ev->unRegisterObserver( cal );
249 ev->registerObserver( this ); 249 ev->registerObserver( this );
250 mJournalList.append( ev ); 250 mJournalList.append( ev );
251 ev = JournalList.next(); 251 ev = JournalList.next();
252 } 252 }
253 } 253 }
254 setModified( true ); 254 setModified( true );
255} 255}
256bool CalendarLocal::load( const QString &fileName ) 256bool CalendarLocal::load( const QString &fileName )
257{ 257{
258 FileStorage storage( this, fileName ); 258 FileStorage storage( this, fileName );
259 return storage.load(); 259 return storage.load();
260} 260}
261 261
262bool CalendarLocal::save( const QString &fileName, CalFormat *format ) 262bool CalendarLocal::save( const QString &fileName, CalFormat *format )
263{ 263{
264 FileStorage storage( this, fileName, format ); 264 FileStorage storage( this, fileName, format );
265 return storage.save(); 265 return storage.save();
266} 266}
267 267
268void CalendarLocal::stopAllTodos() 268void CalendarLocal::stopAllTodos()
269{ 269{
270 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() ) 270 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
271 it->setRunning( false ); 271 it->setRunning( false );
272 272
273} 273}
274void CalendarLocal::close() 274void CalendarLocal::close()
275{ 275{
276 276
277 Todo * i; 277 Todo * i;
278 for( i = mTodoList.first(); i; i = mTodoList.next() ) i->setRunning(false); 278 for( i = mTodoList.first(); i; i = mTodoList.next() ) i->setRunning(false);
279 279
280 mEventList.setAutoDelete( true ); 280 mEventList.setAutoDelete( true );
281 mTodoList.setAutoDelete( true ); 281 mTodoList.setAutoDelete( true );
282 mJournalList.setAutoDelete( true ); 282 mJournalList.setAutoDelete( true );
283 283
284 mEventList.clear(); 284 mEventList.clear();
285 mTodoList.clear(); 285 mTodoList.clear();
286 mJournalList.clear(); 286 mJournalList.clear();
287 287
288 mEventList.setAutoDelete( false ); 288 mEventList.setAutoDelete( false );
289 mTodoList.setAutoDelete( false ); 289 mTodoList.setAutoDelete( false );
290 mJournalList.setAutoDelete( false ); 290 mJournalList.setAutoDelete( false );
291 291
292 setModified( false ); 292 setModified( false );
293} 293}
294 294
295bool CalendarLocal::addAnniversaryNoDup( Event *event ) 295bool CalendarLocal::addAnniversaryNoDup( Event *event )
296{ 296{
297 QString cat; 297 QString cat;
298 bool isBirthday = true; 298 bool isBirthday = true;
299 if( event->categoriesStr() == i18n( "Anniversary" ) ) { 299 if( event->categoriesStr() == i18n( "Anniversary" ) ) {
300 isBirthday = false; 300 isBirthday = false;
301 cat = i18n( "Anniversary" ); 301 cat = i18n( "Anniversary" );
302 } else if( event->categoriesStr() == i18n( "Birthday" ) ) { 302 } else if( event->categoriesStr() == i18n( "Birthday" ) ) {
303 isBirthday = true; 303 isBirthday = true;
304 cat = i18n( "Birthday" ); 304 cat = i18n( "Birthday" );
305 } else { 305 } else {
306 qDebug("addAnniversaryNoDup called without fitting category! "); 306 qDebug("addAnniversaryNoDup called without fitting category! ");
307 return false; 307 return false;
308 } 308 }
309 Event * eve; 309 Event * eve;
310 for ( eve = mEventList.first(); eve ; eve = mEventList.next() ) { 310 for ( eve = mEventList.first(); eve ; eve = mEventList.next() ) {
311 if ( !(eve->categories().contains( cat ) )) 311 if ( !(eve->categories().contains( cat ) ))
312 continue; 312 continue;
313 // now we have an event with fitting category 313 // now we have an event with fitting category
314 if ( eve->dtStart().date() != event->dtStart().date() ) 314 if ( eve->dtStart().date() != event->dtStart().date() )
315 continue; 315 continue;
316 // now we have an event with fitting category+date 316 // now we have an event with fitting category+date
317 if ( eve->summary() != event->summary() ) 317 if ( eve->summary() != event->summary() )
318 continue; 318 continue;
319 // now we have an event with fitting category+date+summary 319 // now we have an event with fitting category+date+summary
320 return false; 320 return false;
321 } 321 }
322 return addEvent( event ); 322 return addEvent( event );
323 323
324} 324}
325bool CalendarLocal::addEventNoDup( Event *event ) 325bool CalendarLocal::addEventNoDup( Event *event )
326{ 326{
327 Event * eve; 327 Event * eve;
328 for ( eve = mEventList.first(); eve ; eve = mEventList.next() ) { 328 for ( eve = mEventList.first(); eve ; eve = mEventList.next() ) {
329 if ( *eve == *event ) { 329 if ( *eve == *event ) {
330 //qDebug("CalendarLocal::Duplicate event found! Not inserted! "); 330 //qDebug("CalendarLocal::Duplicate event found! Not inserted! ");
331 return false; 331 return false;
332 } 332 }
333 } 333 }
334 return addEvent( event ); 334 return addEvent( event );
335} 335}
336 336
337bool CalendarLocal::addEvent( Event *event ) 337bool CalendarLocal::addEvent( Event *event )
338{ 338{
339 insertEvent( event ); 339 insertEvent( event );
340 340
341 event->registerObserver( this ); 341 event->registerObserver( this );
342 342
343 setModified( true ); 343 setModified( true );
344 if ( event->calID() == 0 ) 344 if ( event->calID() == 0 )
345 event->setCalID( mDefaultCalendar ); 345 event->setCalID_block( mDefaultCalendar );
346 event->setCalEnabled( true ); 346 event->setCalEnabled( true );
347 347
348 return true; 348 return true;
349} 349}
350 350
351void CalendarLocal::deleteEvent( Event *event ) 351void CalendarLocal::deleteEvent( Event *event )
352{ 352{
353 clearUndo(event); 353 clearUndo(event);
354 if ( mEventList.removeRef( event ) ) { 354 if ( mEventList.removeRef( event ) ) {
355 setModified( true ); 355 setModified( true );
356 } 356 }
357} 357}
358 358
359 359
360Event *CalendarLocal::event( const QString &uid ) 360Event *CalendarLocal::event( const QString &uid )
361{ 361{
362 Event *event; 362 Event *event;
363 Event *retVal = 0; 363 Event *retVal = 0;
364 for ( event = mEventList.first(); event; event = mEventList.next() ) { 364 for ( event = mEventList.first(); event; event = mEventList.next() ) {
365 if ( event->calEnabled() && event->uid() == uid ) { 365 if ( event->calEnabled() && event->uid() == uid ) {
366 if ( retVal ) { 366 if ( retVal ) {
367 if ( retVal->calID() > event->calID() ) { 367 if ( retVal->calID() > event->calID() ) {
368 retVal = event; 368 retVal = event;
369 } 369 }
370 } else { 370 } else {
371 retVal = event; 371 retVal = event;
372 } 372 }
373 } 373 }
374 } 374 }
375 return retVal; 375 return retVal;
376} 376}
377bool CalendarLocal::addTodoNoDup( Todo *todo ) 377bool CalendarLocal::addTodoNoDup( Todo *todo )
378{ 378{
379 Todo * eve; 379 Todo * eve;
380 for ( eve = mTodoList.first(); eve ; eve = mTodoList.next() ) { 380 for ( eve = mTodoList.first(); eve ; eve = mTodoList.next() ) {
381 if ( *eve == *todo ) { 381 if ( *eve == *todo ) {
382 //qDebug("duplicate todo found! not inserted! "); 382 //qDebug("duplicate todo found! not inserted! ");
383 return false; 383 return false;
384 } 384 }
385 } 385 }
386 return addTodo( todo ); 386 return addTodo( todo );
387} 387}
388bool CalendarLocal::addTodo( Todo *todo ) 388bool CalendarLocal::addTodo( Todo *todo )
389{ 389{
390 mTodoList.append( todo ); 390 mTodoList.append( todo );
391 391
392 todo->registerObserver( this ); 392 todo->registerObserver( this );
393 393
394 // Set up subtask relations 394 // Set up subtask relations
395 setupRelations( todo ); 395 setupRelations( todo );
396 396
397 setModified( true ); 397 setModified( true );
398 if ( todo->calID() == 0 ) 398 if ( todo->calID() == 0 )
399 todo->setCalID( mDefaultCalendar ); 399 todo->setCalID_block( mDefaultCalendar );
400 todo->setCalEnabled( true ); 400 todo->setCalEnabled( true );
401 return true; 401 return true;
402} 402}
403 403
404void CalendarLocal::deleteTodo( Todo *todo ) 404void CalendarLocal::deleteTodo( Todo *todo )
405{ 405{
406 // Handle orphaned children 406 // Handle orphaned children
407 removeRelations( todo ); 407 removeRelations( todo );
408 clearUndo(todo); 408 clearUndo(todo);
409 409
410 if ( mTodoList.removeRef( todo ) ) { 410 if ( mTodoList.removeRef( todo ) ) {
411 setModified( true ); 411 setModified( true );
412 } 412 }
413} 413}
414 414
415QPtrList<Todo> CalendarLocal::rawTodos() 415QPtrList<Todo> CalendarLocal::rawTodos()
416{ 416{
417 QPtrList<Todo> el; 417 QPtrList<Todo> el;
418 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() ) 418 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
419 if ( it->calEnabled() ) el.append( it ); 419 if ( it->calEnabled() ) el.append( it );
420 return el; 420 return el;
421} 421}
422Todo *CalendarLocal::todo( QString syncProf, QString id ) 422Todo *CalendarLocal::todo( QString syncProf, QString id )
423{ 423{
424 Todo *todo; 424 Todo *todo;
425 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) { 425 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) {
426 if ( todo->calEnabled() && todo->getID( syncProf ) == id ) return todo; 426 if ( todo->calEnabled() && todo->getID( syncProf ) == id ) return todo;
427 } 427 }
428 428
429 return 0; 429 return 0;
430} 430}
431void CalendarLocal::removeSyncInfo( QString syncProfile) 431void CalendarLocal::removeSyncInfo( QString syncProfile)
432{ 432{
433 QPtrList<Incidence> all = rawIncidences() ; 433 QPtrList<Incidence> all = rawIncidences() ;
434 Incidence *inc; 434 Incidence *inc;
435 for ( inc = all.first(); inc; inc = all.next() ) { 435 for ( inc = all.first(); inc; inc = all.next() ) {
436 inc->removeID( syncProfile ); 436 inc->removeID( syncProfile );
437 } 437 }
438 if ( syncProfile.isEmpty() ) { 438 if ( syncProfile.isEmpty() ) {
439 QPtrList<Event> el; 439 QPtrList<Event> el;
440 Event *todo; 440 Event *todo;
441 for ( todo = mEventList.first(); todo; todo = mEventList.next() ) { 441 for ( todo = mEventList.first(); todo; todo = mEventList.next() ) {
442 if ( todo->uid().left( 15 ) == QString("last-syncEvent-") ) 442 if ( todo->uid().left( 15 ) == QString("last-syncEvent-") )
443 el.append( todo ); 443 el.append( todo );
444 } 444 }
445 for ( todo = el.first(); todo; todo = el.next() ) { 445 for ( todo = el.first(); todo; todo = el.next() ) {
446 deleteIncidence ( todo ); 446 deleteIncidence ( todo );
447 } 447 }
448 } else { 448 } else {
449 Event *lse = event( "last-syncEvent-"+ syncProfile); 449 Event *lse = event( "last-syncEvent-"+ syncProfile);
450 if ( lse ) 450 if ( lse )
451 deleteIncidence ( lse ); 451 deleteIncidence ( lse );
452 } 452 }
453} 453}
454QPtrList<Event> CalendarLocal::getExternLastSyncEvents() 454QPtrList<Event> CalendarLocal::getExternLastSyncEvents()
455{ 455{
456 QPtrList<Event> el; 456 QPtrList<Event> el;
457 Event *todo; 457 Event *todo;
458 for ( todo = mEventList.first(); todo; todo = mEventList.next() ) { 458 for ( todo = mEventList.first(); todo; todo = mEventList.next() ) {
459 if ( todo->uid().left( 15 ) == QString("last-syncEvent-") ) 459 if ( todo->uid().left( 15 ) == QString("last-syncEvent-") )
460 if ( todo->summary().left(3) == "E: " ) 460 if ( todo->summary().left(3) == "E: " )
461 el.append( todo ); 461 el.append( todo );
462 } 462 }
463 463
464 return el; 464 return el;
465 465
466} 466}
467Event *CalendarLocal::event( QString syncProf, QString id ) 467Event *CalendarLocal::event( QString syncProf, QString id )
468{ 468{
469 Event *todo; 469 Event *todo;
470 for ( todo = mEventList.first(); todo; todo = mEventList.next() ) { 470 for ( todo = mEventList.first(); todo; todo = mEventList.next() ) {
471 if ( todo->calEnabled() && todo->getID( syncProf ) == id ) return todo; 471 if ( todo->calEnabled() && todo->getID( syncProf ) == id ) return todo;
472 } 472 }
473 473
474 return 0; 474 return 0;
475} 475}
476Todo *CalendarLocal::todo( const QString &uid ) 476Todo *CalendarLocal::todo( const QString &uid )
477{ 477{
478 Todo *todo; 478 Todo *todo;
479 Todo *retVal = 0; 479 Todo *retVal = 0;
480 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) { 480 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) {
481 if ( todo->calEnabled() && todo->uid() == uid ) { 481 if ( todo->calEnabled() && todo->uid() == uid ) {
482 if ( retVal ) { 482 if ( retVal ) {
483 if ( retVal->calID() > todo->calID() ) { 483 if ( retVal->calID() > todo->calID() ) {
484 retVal = todo; 484 retVal = todo;
485 } 485 }
486 } else { 486 } else {
487 retVal = todo; 487 retVal = todo;
488 } 488 }
489 } 489 }
490 } 490 }
491 return retVal; 491 return retVal;
492} 492}
493void CalendarLocal::getIncidenceCount( int calId, int& events, int & todos, int & journals) 493void CalendarLocal::getIncidenceCount( int calId, int& events, int & todos, int & journals)
494{ 494{
495 events = 0; 495 events = 0;
@@ -831,193 +831,193 @@ QPtrList<Event> CalendarLocal::rawEvents( const QDate &start, const QDate &end,
831 Event *event = 0; 831 Event *event = 0;
832 832
833 QPtrList<Event> eventList; 833 QPtrList<Event> eventList;
834 834
835 // Get non-recurring events 835 // Get non-recurring events
836 for( event = mEventList.first(); event; event = mEventList.next() ) { 836 for( event = mEventList.first(); event; event = mEventList.next() ) {
837 if ( !event->calEnabled() ) continue; 837 if ( !event->calEnabled() ) continue;
838 if ( event->doesRecur() ) { 838 if ( event->doesRecur() ) {
839 QDate rStart = event->dtStart().date(); 839 QDate rStart = event->dtStart().date();
840 bool found = false; 840 bool found = false;
841 if ( inclusive ) { 841 if ( inclusive ) {
842 if ( rStart >= start && rStart <= end ) { 842 if ( rStart >= start && rStart <= end ) {
843 // Start date of event is in range. Now check for end date. 843 // Start date of event is in range. Now check for end date.
844 // if duration is negative, event recurs forever, so do not include it. 844 // if duration is negative, event recurs forever, so do not include it.
845 if ( event->recurrence()->duration() == 0 ) { // End date set 845 if ( event->recurrence()->duration() == 0 ) { // End date set
846 QDate rEnd = event->recurrence()->endDate(); 846 QDate rEnd = event->recurrence()->endDate();
847 if ( rEnd >= start && rEnd <= end ) { // End date within range 847 if ( rEnd >= start && rEnd <= end ) { // End date within range
848 found = true; 848 found = true;
849 } 849 }
850 } else if ( event->recurrence()->duration() > 0 ) { // Duration set 850 } else if ( event->recurrence()->duration() > 0 ) { // Duration set
851 // TODO: Calculate end date from duration. Should be done in Event 851 // TODO: Calculate end date from duration. Should be done in Event
852 // For now exclude all events with a duration. 852 // For now exclude all events with a duration.
853 } 853 }
854 } 854 }
855 } else { 855 } else {
856 bool founOne; 856 bool founOne;
857 QDate next = event->getNextOccurence( start, &founOne ).date(); 857 QDate next = event->getNextOccurence( start, &founOne ).date();
858 if ( founOne ) { 858 if ( founOne ) {
859 if ( next <= end ) { 859 if ( next <= end ) {
860 found = true; 860 found = true;
861 } 861 }
862 } 862 }
863 863
864 /* 864 /*
865 // crap !!! 865 // crap !!!
866 if ( rStart <= end ) { // Start date not after range 866 if ( rStart <= end ) { // Start date not after range
867 if ( rStart >= start ) { // Start date within range 867 if ( rStart >= start ) { // Start date within range
868 found = true; 868 found = true;
869 } else if ( event->recurrence()->duration() == -1 ) { // Recurs forever 869 } else if ( event->recurrence()->duration() == -1 ) { // Recurs forever
870 found = true; 870 found = true;
871 } else if ( event->recurrence()->duration() == 0 ) { // End date set 871 } else if ( event->recurrence()->duration() == 0 ) { // End date set
872 QDate rEnd = event->recurrence()->endDate(); 872 QDate rEnd = event->recurrence()->endDate();
873 if ( rEnd >= start && rEnd <= end ) { // End date within range 873 if ( rEnd >= start && rEnd <= end ) { // End date within range
874 found = true; 874 found = true;
875 } 875 }
876 } else { // Duration set 876 } else { // Duration set
877 // TODO: Calculate end date from duration. Should be done in Event 877 // TODO: Calculate end date from duration. Should be done in Event
878 // For now include all events with a duration. 878 // For now include all events with a duration.
879 found = true; 879 found = true;
880 } 880 }
881 } 881 }
882 */ 882 */
883 883
884 } 884 }
885 885
886 if ( found ) eventList.append( event ); 886 if ( found ) eventList.append( event );
887 } else { 887 } else {
888 QDate s = event->dtStart().date(); 888 QDate s = event->dtStart().date();
889 QDate e = event->dtEnd().date(); 889 QDate e = event->dtEnd().date();
890 890
891 if ( inclusive ) { 891 if ( inclusive ) {
892 if ( s >= start && e <= end ) { 892 if ( s >= start && e <= end ) {
893 eventList.append( event ); 893 eventList.append( event );
894 } 894 }
895 } else { 895 } else {
896 if ( ( e >= start && s <= end ) ) { 896 if ( ( e >= start && s <= end ) ) {
897 eventList.append( event ); 897 eventList.append( event );
898 } 898 }
899 } 899 }
900 } 900 }
901 } 901 }
902 902
903 return eventList; 903 return eventList;
904} 904}
905 905
906QPtrList<Event> CalendarLocal::rawEventsForDate( const QDateTime &qdt ) 906QPtrList<Event> CalendarLocal::rawEventsForDate( const QDateTime &qdt )
907{ 907{
908 return rawEventsForDate( qdt.date() ); 908 return rawEventsForDate( qdt.date() );
909} 909}
910 910
911QPtrList<Event> CalendarLocal::rawEvents() 911QPtrList<Event> CalendarLocal::rawEvents()
912{ 912{
913 QPtrList<Event> el; 913 QPtrList<Event> el;
914 for ( Event *it = mEventList.first(); it; it = mEventList.next() ) 914 for ( Event *it = mEventList.first(); it; it = mEventList.next() )
915 if ( it->calEnabled() ) el.append( it ); 915 if ( it->calEnabled() ) el.append( it );
916 return el; 916 return el;
917} 917}
918 918
919bool CalendarLocal::addJournal(Journal *journal) 919bool CalendarLocal::addJournal(Journal *journal)
920{ 920{
921 mJournalList.append(journal); 921 mJournalList.append(journal);
922 922
923 journal->registerObserver( this ); 923 journal->registerObserver( this );
924 924
925 setModified( true ); 925 setModified( true );
926 if ( journal->calID() == 0 ) 926 if ( journal->calID() == 0 )
927 journal->setCalID( mDefaultCalendar ); 927 journal->setCalID_block( mDefaultCalendar );
928 journal->setCalEnabled( true ); 928 journal->setCalEnabled( true );
929 return true; 929 return true;
930} 930}
931 931
932void CalendarLocal::deleteJournal( Journal *journal ) 932void CalendarLocal::deleteJournal( Journal *journal )
933{ 933{
934 clearUndo(journal); 934 clearUndo(journal);
935 if ( mJournalList.removeRef(journal) ) { 935 if ( mJournalList.removeRef(journal) ) {
936 setModified( true ); 936 setModified( true );
937 } 937 }
938} 938}
939 939
940QPtrList<Journal> CalendarLocal::journals4Date( const QDate & date ) 940QPtrList<Journal> CalendarLocal::journals4Date( const QDate & date )
941{ 941{
942 QPtrList<Journal> el; 942 QPtrList<Journal> el;
943 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 943 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
944 if ( it->calEnabled() && it->dtStart().date() == date) el.append( it ); 944 if ( it->calEnabled() && it->dtStart().date() == date) el.append( it );
945 return el; 945 return el;
946} 946}
947Journal *CalendarLocal::journal( const QDate &date ) 947Journal *CalendarLocal::journal( const QDate &date )
948{ 948{
949// kdDebug(5800) << "CalendarLocal::journal() " << date.toString() << endl; 949// kdDebug(5800) << "CalendarLocal::journal() " << date.toString() << endl;
950 950
951 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 951 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
952 if ( it->calEnabled() && it->dtStart().date() == date ) 952 if ( it->calEnabled() && it->dtStart().date() == date )
953 return it; 953 return it;
954 954
955 return 0; 955 return 0;
956} 956}
957 957
958Journal *CalendarLocal::journal( const QString &uid ) 958Journal *CalendarLocal::journal( const QString &uid )
959{ 959{
960 Journal * retVal = 0; 960 Journal * retVal = 0;
961 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 961 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
962 if ( it->calEnabled() && it->uid() == uid ) { 962 if ( it->calEnabled() && it->uid() == uid ) {
963 if ( retVal ) { 963 if ( retVal ) {
964 if ( retVal->calID() > it->calID() ) { 964 if ( retVal->calID() > it->calID() ) {
965 retVal = it; 965 retVal = it;
966 } 966 }
967 } else { 967 } else {
968 retVal = it; 968 retVal = it;
969 } 969 }
970 } 970 }
971 return retVal; 971 return retVal;
972} 972}
973 973
974QPtrList<Journal> CalendarLocal::journals() 974QPtrList<Journal> CalendarLocal::journals()
975{ 975{
976 QPtrList<Journal> el; 976 QPtrList<Journal> el;
977 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 977 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
978 if ( it->calEnabled() ) el.append( it ); 978 if ( it->calEnabled() ) el.append( it );
979 return el; 979 return el;
980} 980}
981void CalendarLocal::setCalendarRemove( int id ) 981void CalendarLocal::setCalendarRemove( int id )
982{ 982{
983 983
984 { 984 {
985 QPtrList<Event> EventList = mEventList; 985 QPtrList<Event> EventList = mEventList;
986 Event * ev = EventList.first(); 986 Event * ev = EventList.first();
987 while ( ev ) { 987 while ( ev ) {
988 if ( ev->calID() == id && ev->uid().left( 15 ) != QString("last-syncEvent-") ) 988 if ( ev->calID() == id && ev->uid().left( 15 ) != QString("last-syncEvent-") )
989 deleteEvent( ev ); 989 deleteEvent( ev );
990 ev = EventList.next(); 990 ev = EventList.next();
991 } 991 }
992 } 992 }
993 { 993 {
994 994
995 QPtrList<Todo> TodoList = mTodoList; 995 QPtrList<Todo> TodoList = mTodoList;
996 Todo * ev = TodoList.first(); 996 Todo * ev = TodoList.first();
997 while ( ev ) { 997 while ( ev ) {
998 if ( ev->calID() == id ) 998 if ( ev->calID() == id )
999 deleteTodo( ev ); 999 deleteTodo( ev );
1000 ev = TodoList.next(); 1000 ev = TodoList.next();
1001 } 1001 }
1002 } 1002 }
1003 { 1003 {
1004 QPtrList<Journal> JournalList = mJournalList; 1004 QPtrList<Journal> JournalList = mJournalList;
1005 Journal * ev = JournalList.first(); 1005 Journal * ev = JournalList.first();
1006 while ( ev ) { 1006 while ( ev ) {
1007 if ( ev->calID() == id ) 1007 if ( ev->calID() == id )
1008 deleteJournal( ev ); 1008 deleteJournal( ev );
1009 ev = JournalList.next(); 1009 ev = JournalList.next();
1010 } 1010 }
1011 } 1011 }
1012 1012
1013 clearUndo(0); 1013 clearUndo(0);
1014 1014
1015} 1015}
1016 1016
1017void CalendarLocal::setAllCalendarEnabled( bool enable ) 1017void CalendarLocal::setAllCalendarEnabled( bool enable )
1018{ 1018{
1019 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 1019 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
1020 it->setCalEnabled( enable ); 1020 it->setCalEnabled( enable );
1021 1021
1022 for ( Event *it = mEventList.first(); it; it = mEventList.next() ) 1022 for ( Event *it = mEventList.first(); it; it = mEventList.next() )
1023 it->setCalEnabled( enable ); 1023 it->setCalEnabled( enable );