summaryrefslogtreecommitdiffabout
path: root/libkcal
Unidiff
Diffstat (limited to 'libkcal') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/calendar.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/libkcal/calendar.cpp b/libkcal/calendar.cpp
index 1350f6d..9b38d3f 100644
--- a/libkcal/calendar.cpp
+++ b/libkcal/calendar.cpp
@@ -38,489 +38,489 @@ Calendar::Calendar()
38 38
39 init(); 39 init();
40 setTimeZoneId( " 00:00 Europe/London(UTC)" ); 40 setTimeZoneId( " 00:00 Europe/London(UTC)" );
41} 41}
42 42
43Calendar::Calendar( const QString &timeZoneId ) 43Calendar::Calendar( const QString &timeZoneId )
44{ 44{
45 45
46 init(); 46 init();
47 setTimeZoneId(timeZoneId); 47 setTimeZoneId(timeZoneId);
48} 48}
49 49
50void Calendar::init() 50void Calendar::init()
51{ 51{
52 mObserver = 0; 52 mObserver = 0;
53 mNewObserver = false; 53 mNewObserver = false;
54 mUndoIncidence = 0; 54 mUndoIncidence = 0;
55 mDeleteIncidencesOnClose = true; 55 mDeleteIncidencesOnClose = true;
56 mModified = false; 56 mModified = false;
57 mDefaultCalendar = 1; 57 mDefaultCalendar = 1;
58 // Setup default filter, which does nothing 58 // Setup default filter, which does nothing
59 mDefaultFilter = new CalFilter; 59 mDefaultFilter = new CalFilter;
60 mFilter = mDefaultFilter; 60 mFilter = mDefaultFilter;
61 mFilter->setEnabled(false); 61 mFilter->setEnabled(false);
62 62
63 // initialize random numbers. This is a hack, and not 63 // initialize random numbers. This is a hack, and not
64 // even that good of one at that. 64 // even that good of one at that.
65// srandom(time(0)); 65// srandom(time(0));
66 66
67 // user information... 67 // user information...
68 setOwner(i18n("Unknown Name")); 68 setOwner(i18n("Unknown Name"));
69 setEmail(i18n("unknown@nowhere")); 69 setEmail(i18n("unknown@nowhere"));
70 70
71#if 0 71#if 0
72 tmpStr = KOPrefs::instance()->mTimeZone; 72 tmpStr = KOPrefs::instance()->mTimeZone;
73// kdDebug(5800) << "Calendar::Calendar(): TimeZone: " << tmpStr << endl; 73// kdDebug(5800) << "Calendar::Calendar(): TimeZone: " << tmpStr << endl;
74 int dstSetting = KOPrefs::instance()->mDaylightSavings; 74 int dstSetting = KOPrefs::instance()->mDaylightSavings;
75 extern long int timezone; 75 extern long int timezone;
76 struct tm *now; 76 struct tm *now;
77 time_t curtime; 77 time_t curtime;
78 curtime = time(0); 78 curtime = time(0);
79 now = localtime(&curtime); 79 now = localtime(&curtime);
80 int hourOff = - ((timezone / 60) / 60); 80 int hourOff = - ((timezone / 60) / 60);
81 if (now->tm_isdst) 81 if (now->tm_isdst)
82 hourOff += 1; 82 hourOff += 1;
83 QString tzStr; 83 QString tzStr;
84 tzStr.sprintf("%.2d%.2d", 84 tzStr.sprintf("%.2d%.2d",
85 hourOff, 85 hourOff,
86 abs((timezone / 60) % 60)); 86 abs((timezone / 60) % 60));
87 87
88 // if no time zone was in the config file, write what we just discovered. 88 // if no time zone was in the config file, write what we just discovered.
89 if (tmpStr.isEmpty()) { 89 if (tmpStr.isEmpty()) {
90// KOPrefs::instance()->mTimeZone = tzStr; 90// KOPrefs::instance()->mTimeZone = tzStr;
91 } else { 91 } else {
92 tzStr = tmpStr; 92 tzStr = tmpStr;
93 } 93 }
94 94
95 // if daylight savings has changed since last load time, we need 95 // if daylight savings has changed since last load time, we need
96 // to rewrite these settings to the config file. 96 // to rewrite these settings to the config file.
97 if ((now->tm_isdst && !dstSetting) || 97 if ((now->tm_isdst && !dstSetting) ||
98 (!now->tm_isdst && dstSetting)) { 98 (!now->tm_isdst && dstSetting)) {
99 KOPrefs::instance()->mTimeZone = tzStr; 99 KOPrefs::instance()->mTimeZone = tzStr;
100 KOPrefs::instance()->mDaylightSavings = now->tm_isdst; 100 KOPrefs::instance()->mDaylightSavings = now->tm_isdst;
101 } 101 }
102 102
103 setTimeZone(tzStr); 103 setTimeZone(tzStr);
104#endif 104#endif
105 105
106// KOPrefs::instance()->writeConfig(); 106// KOPrefs::instance()->writeConfig();
107} 107}
108 108
109Calendar::~Calendar() 109Calendar::~Calendar()
110{ 110{
111 delete mDefaultFilter; 111 delete mDefaultFilter;
112 clearUndo( 0 ); 112 clearUndo( 0 );
113} 113}
114void Calendar::clearUndo( Incidence * newUndo ) 114void Calendar::clearUndo( Incidence * newUndo )
115{ 115{
116 116
117 if ( mUndoIncidence ) { 117 if ( mUndoIncidence ) {
118 if ( mUndoIncidence->typeID() == eventID ) 118 if ( mUndoIncidence->typeID() == eventID )
119 delete ((Event*) mUndoIncidence) ; 119 delete ((Event*) mUndoIncidence) ;
120 else if ( mUndoIncidence->typeID() == todoID ) 120 else if ( mUndoIncidence->typeID() == todoID )
121 delete ( (Todo*) mUndoIncidence ); 121 delete ( (Todo*) mUndoIncidence );
122 else if ( mUndoIncidence->typeID() == journalID ) 122 else if ( mUndoIncidence->typeID() == journalID )
123 delete ( (Journal*) mUndoIncidence ); 123 delete ( (Journal*) mUndoIncidence );
124 else 124 else
125 delete mUndoIncidence; 125 delete mUndoIncidence;
126 } 126 }
127 mUndoIncidence = newUndo; 127 mUndoIncidence = newUndo;
128 if ( mUndoIncidence ) { 128 if ( mUndoIncidence ) {
129 mUndoIncidence->clearRelations(); 129 mUndoIncidence->clearRelations();
130 } 130 }
131 131
132} 132}
133 133
134void Calendar::setDontDeleteIncidencesOnClose () 134void Calendar::setDontDeleteIncidencesOnClose ()
135{ 135{
136 mDeleteIncidencesOnClose = false; 136 mDeleteIncidencesOnClose = false;
137} 137}
138void Calendar::setDefaultCalendar( int d ) 138void Calendar::setDefaultCalendar( int d )
139{ 139{
140 mDefaultCalendar = d; 140 mDefaultCalendar = d;
141} 141}
142int Calendar::defaultCalendar() 142int Calendar::defaultCalendar()
143{ 143{
144 return mDefaultCalendar; 144 return mDefaultCalendar;
145} 145}
146const QString &Calendar::getOwner() const 146const QString &Calendar::getOwner() const
147{ 147{
148 return mOwner; 148 return mOwner;
149} 149}
150 150
151bool Calendar::undoDeleteIncidence() 151bool Calendar::undoDeleteIncidence()
152{ 152{
153 if (!mUndoIncidence) 153 if (!mUndoIncidence)
154 return false; 154 return false;
155 addIncidence(mUndoIncidence); 155 addIncidence(mUndoIncidence);
156 mUndoIncidence = 0; 156 mUndoIncidence = 0;
157 return true; 157 return true;
158} 158}
159void Calendar::setOwner(const QString &os) 159void Calendar::setOwner(const QString &os)
160{ 160{
161 int i; 161 int i;
162 mOwner = os; 162 mOwner = os;
163 i = mOwner.find(','); 163 i = mOwner.find(',');
164 if (i != -1) 164 if (i != -1)
165 mOwner = mOwner.left(i); 165 mOwner = mOwner.left(i);
166 166
167 setModified( true ); 167 setModified( true );
168} 168}
169 169
170void Calendar::setTimeZone(const QString & tz) 170void Calendar::setTimeZone(const QString & tz)
171{ 171{
172 bool neg = FALSE; 172 bool neg = FALSE;
173 int hours, minutes; 173 int hours, minutes;
174 QString tmpStr(tz); 174 QString tmpStr(tz);
175 175
176 if (tmpStr.left(1) == "-") 176 if (tmpStr.left(1) == "-")
177 neg = TRUE; 177 neg = TRUE;
178 if (tmpStr.left(1) == "-" || tmpStr.left(1) == "+") 178 if (tmpStr.left(1) == "-" || tmpStr.left(1) == "+")
179 tmpStr.remove(0, 1); 179 tmpStr.remove(0, 1);
180 hours = tmpStr.left(2).toInt(); 180 hours = tmpStr.left(2).toInt();
181 if (tmpStr.length() > 2) 181 if (tmpStr.length() > 2)
182 minutes = tmpStr.right(2).toInt(); 182 minutes = tmpStr.right(2).toInt();
183 else 183 else
184 minutes = 0; 184 minutes = 0;
185 mTimeZone = (60*hours+minutes); 185 mTimeZone = (60*hours+minutes);
186 if (neg) 186 if (neg)
187 mTimeZone = -mTimeZone; 187 mTimeZone = -mTimeZone;
188 mLocalTime = false; 188 mLocalTime = false;
189 189
190 setModified( true ); 190 setModified( true );
191} 191}
192 192
193QString Calendar::getTimeZoneStr() const 193QString Calendar::getTimeZoneStr() const
194{ 194{
195 if (mLocalTime) 195 if (mLocalTime)
196 return ""; 196 return "";
197 QString tmpStr; 197 QString tmpStr;
198 int hours = abs(mTimeZone / 60); 198 int hours = abs(mTimeZone / 60);
199 int minutes = abs(mTimeZone % 60); 199 int minutes = abs(mTimeZone % 60);
200 bool neg = mTimeZone < 0; 200 bool neg = mTimeZone < 0;
201 201
202 tmpStr.sprintf("%c%.2d%.2d", 202 tmpStr.sprintf("%c%.2d%.2d",
203 (neg ? '-' : '+'), 203 (neg ? '-' : '+'),
204 hours, minutes); 204 hours, minutes);
205 return tmpStr; 205 return tmpStr;
206} 206}
207 207
208void Calendar::setTimeZone(int tz) 208void Calendar::setTimeZone(int tz)
209{ 209{
210 mTimeZone = tz; 210 mTimeZone = tz;
211 mLocalTime = false; 211 mLocalTime = false;
212 212
213 setModified( true ); 213 setModified( true );
214} 214}
215 215
216int Calendar::getTimeZone() const 216int Calendar::getTimeZone() const
217{ 217{
218 return mTimeZone; 218 return mTimeZone;
219} 219}
220 220
221void Calendar::setTimeZoneId(const QString &id) 221void Calendar::setTimeZoneId(const QString &id)
222{ 222{
223 mTimeZoneId = id; 223 mTimeZoneId = id;
224 mLocalTime = false; 224 mLocalTime = false;
225 mTimeZone = KGlobal::locale()->timezoneOffset(mTimeZoneId); 225 mTimeZone = KGlobal::locale()->timezoneOffset(mTimeZoneId);
226 if ( mTimeZone > 1000) 226 if ( mTimeZone > 1000)
227 setLocalTime(); 227 setLocalTime();
228 //qDebug("Calendar::setTimeZoneOffset %s %d ",mTimeZoneId.latin1(), mTimeZone); 228 //qDebug("Calendar::setTimeZoneOffset %s %d ",mTimeZoneId.latin1(), mTimeZone);
229 setModified( true ); 229 setModified( true );
230} 230}
231 231
232QString Calendar::timeZoneId() const 232QString Calendar::timeZoneId() const
233{ 233{
234 return mTimeZoneId; 234 return mTimeZoneId;
235} 235}
236 236
237void Calendar::setLocalTime() 237void Calendar::setLocalTime()
238{ 238{
239 //qDebug("Calendar::setLocalTime() "); 239 //qDebug("Calendar::setLocalTime() ");
240 mLocalTime = true; 240 mLocalTime = true;
241 mTimeZone = 0; 241 mTimeZone = 0;
242 mTimeZoneId = ""; 242 mTimeZoneId = "";
243 243
244 setModified( true ); 244 setModified( true );
245} 245}
246 246
247bool Calendar::isLocalTime() const 247bool Calendar::isLocalTime() const
248{ 248{
249 return mLocalTime; 249 return mLocalTime;
250} 250}
251 251
252const QString &Calendar::getEmail() 252const QString &Calendar::getEmail()
253{ 253{
254 return mOwnerEmail; 254 return mOwnerEmail;
255} 255}
256 256
257void Calendar::setEmail(const QString &e) 257void Calendar::setEmail(const QString &e)
258{ 258{
259 mOwnerEmail = e; 259 mOwnerEmail = e;
260 260
261 setModified( true ); 261 setModified( true );
262} 262}
263 263
264void Calendar::setFilter(CalFilter *filter) 264void Calendar::setFilter(CalFilter *filter)
265{ 265{
266 mFilter = filter; 266 mFilter = filter;
267} 267}
268 268
269CalFilter *Calendar::filter() 269CalFilter *Calendar::filter()
270{ 270{
271 return mFilter; 271 return mFilter;
272} 272}
273 273
274QPtrList<Incidence> Calendar::incidences() 274QPtrList<Incidence> Calendar::incidences()
275{ 275{
276 QPtrList<Incidence> incidences; 276 QPtrList<Incidence> incidences;
277 277
278 Incidence *i; 278 Incidence *i;
279 279
280 QPtrList<Event> e = events(); 280 QPtrList<Event> e = events();
281 for( i = e.first(); i; i = e.next() ) incidences.append( i ); 281 for( i = e.first(); i; i = e.next() ) incidences.append( i );
282 282
283 QPtrList<Todo> t = todos(); 283 QPtrList<Todo> t = todos();
284 for( i = t.first(); i; i = t.next() ) incidences.append( i ); 284 for( i = t.first(); i; i = t.next() ) incidences.append( i );
285 285
286 QPtrList<Journal> j = journals(); 286 QPtrList<Journal> j = journals();
287 for( i = j.first(); i; i = j.next() ) incidences.append( i ); 287 for( i = j.first(); i; i = j.next() ) incidences.append( i );
288 288
289 return incidences; 289 return incidences;
290} 290}
291 291
292void Calendar::resetPilotStat(int id ) 292void Calendar::resetPilotStat(int id )
293{ 293{
294 QPtrList<Incidence> incidences; 294 QPtrList<Incidence> incidences;
295 295
296 Incidence *i; 296 Incidence *i;
297 297
298 QPtrList<Event> e = rawEvents(); 298 QPtrList<Event> e = rawEvents();
299 for( i = e.first(); i; i = e.next() ) i->setPilotId( id ); 299 for( i = e.first(); i; i = e.next() ) i->setPilotId( id );
300 300
301 QPtrList<Todo> t = rawTodos(); 301 QPtrList<Todo> t = rawTodos();
302 for( i = t.first(); i; i = t.next() ) i->setPilotId( id ); 302 for( i = t.first(); i; i = t.next() ) i->setPilotId( id );
303 303
304 QPtrList<Journal> j = journals(); 304 QPtrList<Journal> j = journals();
305 for( i = j.first(); i; i = j.next() ) i->setPilotId( id ); 305 for( i = j.first(); i; i = j.next() ) i->setPilotId( id );
306} 306}
307void Calendar::resetTempSyncStat() 307void Calendar::resetTempSyncStat()
308{ 308{
309 QPtrList<Incidence> incidences; 309 QPtrList<Incidence> incidences;
310 310
311 Incidence *i; 311 Incidence *i;
312 312
313 QPtrList<Event> e = rawEvents(); 313 QPtrList<Event> e = rawEvents();
314 for( i = e.first(); i; i = e.next() ) i->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 314 for( i = e.first(); i; i = e.next() ) i->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
315 315
316 QPtrList<Todo> t = rawTodos(); 316 QPtrList<Todo> t = rawTodos();
317 for( i = t.first(); i; i = t.next() ) i->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 317 for( i = t.first(); i; i = t.next() ) i->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
318 318
319 QPtrList<Journal> j = journals(); 319 QPtrList<Journal> j = journals();
320 for( i = j.first(); i; i = j.next() ) i->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 320 for( i = j.first(); i; i = j.next() ) i->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
321} 321}
322QPtrList<Incidence> Calendar::rawIncidences() 322QPtrList<Incidence> Calendar::rawIncidences()
323{ 323{
324 QPtrList<Incidence> incidences; 324 QPtrList<Incidence> incidences;
325 325
326 Incidence *i; 326 Incidence *i;
327 327
328 QPtrList<Event> e = rawEvents(); 328 QPtrList<Event> e = rawEvents();
329 for( i = e.first(); i; i = e.next() ) incidences.append( i ); 329 for( i = e.first(); i; i = e.next() ) incidences.append( i );
330 330
331 QPtrList<Todo> t = rawTodos(); 331 QPtrList<Todo> t = rawTodos();
332 for( i = t.first(); i; i = t.next() ) incidences.append( i ); 332 for( i = t.first(); i; i = t.next() ) incidences.append( i );
333 333
334 QPtrList<Journal> j = journals(); 334 QPtrList<Journal> j = journals();
335 for( i = j.first(); i; i = j.next() ) incidences.append( i ); 335 for( i = j.first(); i; i = j.next() ) incidences.append( i );
336 336
337 return incidences; 337 return incidences;
338} 338}
339 339
340QPtrList<Event> Calendar::events( const QDate &date, bool sorted ) 340QPtrList<Event> Calendar::events( const QDate &date, bool sorted )
341{ 341{
342 QPtrList<Event> el = rawEventsForDate(date,sorted); 342 QPtrList<Event> el = rawEventsForDate(date,sorted);
343 mFilter->apply(&el); 343 mFilter->apply(&el);
344 return el; 344 return el;
345} 345}
346 346
347QPtrList<Event> Calendar::events( const QDateTime &qdt ) 347QPtrList<Event> Calendar::events( const QDateTime &qdt )
348{ 348{
349 QPtrList<Event> el = rawEventsForDate(qdt); 349 QPtrList<Event> el = rawEventsForDate(qdt);
350 mFilter->apply(&el); 350 mFilter->apply(&el);
351 return el; 351 return el;
352} 352}
353 353
354QPtrList<Event> Calendar::events( const QDate &start, const QDate &end, 354QPtrList<Event> Calendar::events( const QDate &start, const QDate &end,
355 bool inclusive) 355 bool inclusive)
356{ 356{
357 QPtrList<Event> el = rawEvents(start,end,inclusive); 357 QPtrList<Event> el = rawEvents(start,end,inclusive);
358 mFilter->apply(&el); 358 mFilter->apply(&el);
359 return el; 359 return el;
360} 360}
361 361
362QPtrList<Event> Calendar::events() 362QPtrList<Event> Calendar::events()
363{ 363{
364 QPtrList<Event> el = rawEvents(); 364 QPtrList<Event> el = rawEvents();
365 mFilter->apply(&el); 365 mFilter->apply(&el);
366 return el; 366 return el;
367} 367}
368void Calendar::addIncidenceBranch(Incidence *i) 368void Calendar::addIncidenceBranch(Incidence *i)
369{ 369{
370 addIncidence( i ); 370 addIncidence( i );
371 Incidence * inc; 371 Incidence * inc;
372 QPtrList<Incidence> Relations = i->relations(); 372 QPtrList<Incidence> Relations = i->relations();
373 for (inc=Relations.first();inc;inc=Relations.next()) { 373 for (inc=Relations.first();inc;inc=Relations.next()) {
374 addIncidenceBranch( inc ); 374 addIncidenceBranch( inc );
375 } 375 }
376} 376}
377 377
378bool Calendar::addIncidence(Incidence *i) 378bool Calendar::addIncidence(Incidence *i)
379{ 379{
380 Incidence::AddVisitor<Calendar> v(this); 380 Incidence::AddVisitor<Calendar> v(this);
381 if ( i->calID() == 0 ) 381 if ( i->calID() == 0 )
382 i->setCalID_block( mDefaultCalendar ); 382 i->setCalID_block( mDefaultCalendar );
383 i->setCalEnabled( true ); 383 i->setCalEnabled( true );
384 return i->accept(v); 384 return i->accept(v);
385} 385}
386void Calendar::deleteIncidence(Incidence *in) 386void Calendar::deleteIncidence(Incidence *in)
387{ 387{
388 if ( in->typeID() == eventID ) 388 if ( in->typeID() == eventID )
389 deleteEvent( (Event*) in ); 389 deleteEvent( (Event*) in );
390 else if ( in->typeID() == todoID ) 390 else if ( in->typeID() == todoID )
391 deleteTodo( (Todo*) in); 391 deleteTodo( (Todo*) in);
392 else if ( in->typeID() == journalID ) 392 else if ( in->typeID() == journalID )
393 deleteJournal( (Journal*) in ); 393 deleteJournal( (Journal*) in );
394} 394}
395 395
396Incidence* Calendar::incidence( const QString& uid ) 396Incidence* Calendar::incidence( const QString& uid )
397{ 397{
398 Incidence* i; 398 Incidence* i;
399 399
400 if( (i = todo( uid )) != 0 ) 400 if( (i = todo( uid )) != 0 )
401 return i; 401 return i;
402 if( (i = event( uid )) != 0 ) 402 if( (i = event( uid )) != 0 )
403 return i; 403 return i;
404 if( (i = journal( uid )) != 0 ) 404 if( (i = journal( uid )) != 0 )
405 return i; 405 return i;
406 406
407 return 0; 407 return 0;
408} 408}
409 409
410QPtrList<Todo> Calendar::todos() 410QPtrList<Todo> Calendar::todos()
411{ 411{
412 QPtrList<Todo> tl = rawTodos(); 412 QPtrList<Todo> tl = rawTodos();
413 mFilter->apply( &tl ); 413 mFilter->apply( &tl );
414 return tl; 414 return tl;
415} 415}
416 416
417// When this is called, the todo have already been added to the calendar. 417// When this is called, the todo have already been added to the calendar.
418// This method is only about linking related todos 418// This method is only about linking related todos
419void Calendar::setupRelations( Incidence *incidence ) 419void Calendar::setupRelations( Incidence *incidence )
420{ 420{
421 QString uid = incidence->uid(); 421 QString uid = incidence->uid();
422 //qDebug("Calendar::setupRelations %s", incidence->summary().latin1()); 422 qDebug("Calendar::setupRelations %s", incidence->summary().latin1());
423 // First, go over the list of orphans and see if this is their parent 423 // First, go over the list of orphans and see if this is their parent
424 while( Incidence* i = mOrphans[ uid ] ) { 424 while( Incidence* i = mOrphans[ uid ] ) {
425 mOrphans.remove( uid ); 425 mOrphans.remove( uid );
426 i->setRelatedTo( incidence ); 426 i->setRelatedTo( incidence );
427 //qDebug("Add child %s ti inc %s", i->summary().latin1(),incidence->summary().latin1()); 427 qDebug("Add child %s ti inc %s", i->summary().latin1(),incidence->summary().latin1());
428 incidence->addRelation( i ); 428 incidence->addRelation( i );
429 mOrphanUids.remove( i->uid() ); 429 mOrphanUids.remove( i->uid() );
430 } 430 }
431 431
432 // Now see about this incidences parent 432 // Now see about this incidences parent
433 if( !incidence->relatedTo() && !incidence->relatedToUid().isEmpty() ) { 433 if( !incidence->relatedTo() && !incidence->relatedToUid().isEmpty() ) {
434 // This incidence has a uid it is related to, but is not registered to it yet 434 // This incidence has a uid it is related to, but is not registered to it yet
435 // Try to find it 435 // Try to find it
436 //qDebug("Test parent for %s", incidence->summary().latin1()); 436 qDebug("Test parent for %s", incidence->summary().latin1());
437 Incidence* parent = this->incidenceForUid( incidence->relatedToUid(), true ); 437 Incidence* parent = this->incidenceForUid( incidence->relatedToUid(), true );
438 if( parent ) { 438 if( parent ) {
439 // Found it 439 // Found it
440 // qDebug("parent found for for %s", incidence->summary().latin1()); 440 qDebug("parent found for for %s", incidence->summary().latin1());
441 incidence->setRelatedTo( parent ); 441 incidence->setRelatedTo( parent );
442 parent->addRelation( incidence ); 442 parent->addRelation( incidence );
443 } else { 443 } else {
444 // qDebug("NO parent found for for %s", incidence->summary().latin1()); 444 qDebug("NO parent found for for %s", incidence->summary().latin1());
445 // Not found, put this in the mOrphans list 445 // Not found, put this in the mOrphans list
446 mOrphans.insert( incidence->relatedToUid(), incidence ); 446 mOrphans.insert( incidence->relatedToUid(), incidence );
447 mOrphanUids.insert( incidence->uid(), incidence ); 447 mOrphanUids.insert( incidence->uid(), incidence );
448 } 448 }
449 } 449 }
450} 450}
451 451
452// If a task with subtasks is deleted, move it's subtasks to the orphans list 452// If a task with subtasks is deleted, move it's subtasks to the orphans list
453void Calendar::removeRelations( Incidence *incidence ) 453void Calendar::removeRelations( Incidence *incidence )
454{ 454{
455 // qDebug("Calendar::removeRelations "); 455 // qDebug("Calendar::removeRelations ");
456 QString uid = incidence->uid(); 456 QString uid = incidence->uid();
457 457
458 QPtrList<Incidence> relations = incidence->relations(); 458 QPtrList<Incidence> relations = incidence->relations();
459 for( Incidence* i = relations.first(); i; i = relations.next() ) 459 for( Incidence* i = relations.first(); i; i = relations.next() )
460 if( !mOrphanUids.find( i->uid() ) ) { 460 if( !mOrphanUids.find( i->uid() ) ) {
461 mOrphans.insert( uid, i ); 461 mOrphans.insert( uid, i );
462 mOrphanUids.insert( i->uid(), i ); 462 mOrphanUids.insert( i->uid(), i );
463 i->setRelatedTo( 0 ); 463 i->setRelatedTo( 0 );
464 i->setRelatedToUid( uid ); 464 i->setRelatedToUid( uid );
465 } 465 }
466 466
467 // If this incidence is related to something else, tell that about it 467 // If this incidence is related to something else, tell that about it
468 if( incidence->relatedTo() ) 468 if( incidence->relatedTo() )
469 incidence->relatedTo()->removeRelation( incidence ); 469 incidence->relatedTo()->removeRelation( incidence );
470 470
471 // Remove this one from the orphans list 471 // Remove this one from the orphans list
472 if( mOrphanUids.remove( uid ) ) { 472 if( mOrphanUids.remove( uid ) ) {
473 QString r2uid = incidence->relatedToUid(); 473 QString r2uid = incidence->relatedToUid();
474 QPtrList<Incidence> tempList; 474 QPtrList<Incidence> tempList;
475 while( Incidence* i = mOrphans[ r2uid ] ) { 475 while( Incidence* i = mOrphans[ r2uid ] ) {
476 mOrphans.remove( r2uid ); 476 mOrphans.remove( r2uid );
477 if ( i != incidence ) tempList.append( i ); 477 if ( i != incidence ) tempList.append( i );
478 } 478 }
479 Incidence* inc = tempList.first(); 479 Incidence* inc = tempList.first();
480 while ( inc ) { 480 while ( inc ) {
481 mOrphans.insert( r2uid, inc ); 481 mOrphans.insert( r2uid, inc );
482 inc = tempList.next(); 482 inc = tempList.next();
483 } 483 }
484 } 484 }
485 // LR: and another big bad bug found 485 // LR: and another big bad bug found
486#if 0 486#if 0
487 // This incidence is located in the orphans list - it should be removed 487 // This incidence is located in the orphans list - it should be removed
488 if( !( incidence->relatedTo() != 0 && mOrphans.remove( incidence->relatedTo()->uid() ) ) ) { 488 if( !( incidence->relatedTo() != 0 && mOrphans.remove( incidence->relatedTo()->uid() ) ) ) {
489 // Removing wasn't that easy 489 // Removing wasn't that easy
490 for( QDictIterator<Incidence> it( mOrphans ); it.current(); ++it ) { 490 for( QDictIterator<Incidence> it( mOrphans ); it.current(); ++it ) {
491 if( it.current()->uid() == uid ) { 491 if( it.current()->uid() == uid ) {
492 mOrphans.remove( it.currentKey() ); 492 mOrphans.remove( it.currentKey() );
493 break; 493 break;
494 } 494 }
495 } 495 }
496 } 496 }
497#endif 497#endif
498} 498}
499 499
500void Calendar::registerObserver( Observer *observer ) 500void Calendar::registerObserver( Observer *observer )
501{ 501{
502 mObserver = observer; 502 mObserver = observer;
503 mNewObserver = true; 503 mNewObserver = true;
504} 504}
505 505
506void Calendar::setModified( bool modified ) 506void Calendar::setModified( bool modified )
507{ 507{
508 if ( mObserver ) mObserver->calendarModified( modified, this ); 508 if ( mObserver ) mObserver->calendarModified( modified, this );
509 if ( modified != mModified || mNewObserver ) { 509 if ( modified != mModified || mNewObserver ) {
510 mNewObserver = false; 510 mNewObserver = false;
511 // if ( mObserver ) mObserver->calendarModified( modified, this ); 511 // if ( mObserver ) mObserver->calendarModified( modified, this );
512 mModified = modified; 512 mModified = modified;
513 } 513 }
514} 514}
515 515
516void Calendar::setLoadedProductId( const QString &id ) 516void Calendar::setLoadedProductId( const QString &id )
517{ 517{
518 mLoadedProductId = id; 518 mLoadedProductId = id;
519} 519}
520 520
521QString Calendar::loadedProductId() 521QString Calendar::loadedProductId()
522{ 522{
523 return mLoadedProductId; 523 return mLoadedProductId;
524} 524}
525 525
526//#include "calendar.moc" 526//#include "calendar.moc"