summaryrefslogtreecommitdiffabout
path: root/libkcal
authorzautrix <zautrix>2004-10-17 18:08:43 (UTC)
committer zautrix <zautrix>2004-10-17 18:08:43 (UTC)
commit6f6d1d58938539215bb4fcb5b97cf9fb089a11ef (patch) (unidiff)
tree9937fe24c3fa3f29421b39a58b393e893a11636a /libkcal
parentd92f58ffa1937af8a4240b9d235da15f5f352769 (diff)
downloadkdepimpi-6f6d1d58938539215bb4fcb5b97cf9fb089a11ef.zip
kdepimpi-6f6d1d58938539215bb4fcb5b97cf9fb089a11ef.tar.gz
kdepimpi-6f6d1d58938539215bb4fcb5b97cf9fb089a11ef.tar.bz2
more KDE sync fixes
Diffstat (limited to 'libkcal') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/calendar.cpp8
-rw-r--r--libkcal/calendar.h2
2 files changed, 5 insertions, 5 deletions
diff --git a/libkcal/calendar.cpp b/libkcal/calendar.cpp
index eeb5f48..52daaaa 100644
--- a/libkcal/calendar.cpp
+++ b/libkcal/calendar.cpp
@@ -1,457 +1,457 @@
1/* 1/*
2 This file is part of libkcal. 2 This file is part of libkcal.
3 Copyright (c) 1998 Preston Brown 3 Copyright (c) 1998 Preston Brown
4 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 4 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
5 5
6 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
10 10
11 This library is distributed in the hope that it will be useful, 11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details. 14 Library General Public License for more details.
15 15
16 You should have received a copy of the GNU Library General Public License 16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to 17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. 19 Boston, MA 02111-1307, USA.
20*/ 20*/
21 21
22#include <stdlib.h> 22#include <stdlib.h>
23#include <time.h> 23#include <time.h>
24 24
25#include <kdebug.h> 25#include <kdebug.h>
26#include <kglobal.h> 26#include <kglobal.h>
27#include <klocale.h> 27#include <klocale.h>
28 28
29#include "exceptions.h" 29#include "exceptions.h"
30#include "calfilter.h" 30#include "calfilter.h"
31 31
32#include "calendar.h" 32#include "calendar.h"
33#include "syncdefines.h" 33#include "syncdefines.h"
34 34
35using namespace KCal; 35using namespace KCal;
36 36
37Calendar::Calendar() 37Calendar::Calendar()
38{ 38{
39 39
40 init(); 40 init();
41 setTimeZoneId( i18n (" 00:00 Europe/London(UTC)") ); 41 setTimeZoneId( i18n (" 00:00 Europe/London(UTC)") );
42} 42}
43 43
44Calendar::Calendar( const QString &timeZoneId ) 44Calendar::Calendar( const QString &timeZoneId )
45{ 45{
46 46
47 init(); 47 init();
48 setTimeZoneId(timeZoneId); 48 setTimeZoneId(timeZoneId);
49} 49}
50 50
51void Calendar::init() 51void Calendar::init()
52{ 52{
53 mObserver = 0; 53 mObserver = 0;
54 mNewObserver = false; 54 mNewObserver = false;
55 55
56 mModified = false; 56 mModified = false;
57 57
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} 112}
113 113
114const QString &Calendar::getOwner() const 114const QString &Calendar::getOwner() const
115{ 115{
116 return mOwner; 116 return mOwner;
117} 117}
118 118
119void Calendar::setOwner(const QString &os) 119void Calendar::setOwner(const QString &os)
120{ 120{
121 int i; 121 int i;
122 mOwner = os; 122 mOwner = os;
123 i = mOwner.find(','); 123 i = mOwner.find(',');
124 if (i != -1) 124 if (i != -1)
125 mOwner = mOwner.left(i); 125 mOwner = mOwner.left(i);
126 126
127 setModified( true ); 127 setModified( true );
128} 128}
129 129
130void Calendar::setTimeZone(const QString & tz) 130void Calendar::setTimeZone(const QString & tz)
131{ 131{
132 bool neg = FALSE; 132 bool neg = FALSE;
133 int hours, minutes; 133 int hours, minutes;
134 QString tmpStr(tz); 134 QString tmpStr(tz);
135 135
136 if (tmpStr.left(1) == "-") 136 if (tmpStr.left(1) == "-")
137 neg = TRUE; 137 neg = TRUE;
138 if (tmpStr.left(1) == "-" || tmpStr.left(1) == "+") 138 if (tmpStr.left(1) == "-" || tmpStr.left(1) == "+")
139 tmpStr.remove(0, 1); 139 tmpStr.remove(0, 1);
140 hours = tmpStr.left(2).toInt(); 140 hours = tmpStr.left(2).toInt();
141 if (tmpStr.length() > 2) 141 if (tmpStr.length() > 2)
142 minutes = tmpStr.right(2).toInt(); 142 minutes = tmpStr.right(2).toInt();
143 else 143 else
144 minutes = 0; 144 minutes = 0;
145 mTimeZone = (60*hours+minutes); 145 mTimeZone = (60*hours+minutes);
146 if (neg) 146 if (neg)
147 mTimeZone = -mTimeZone; 147 mTimeZone = -mTimeZone;
148 mLocalTime = false; 148 mLocalTime = false;
149 149
150 setModified( true ); 150 setModified( true );
151} 151}
152 152
153QString Calendar::getTimeZoneStr() const 153QString Calendar::getTimeZoneStr() const
154{ 154{
155 if (mLocalTime) 155 if (mLocalTime)
156 return ""; 156 return "";
157 QString tmpStr; 157 QString tmpStr;
158 int hours = abs(mTimeZone / 60); 158 int hours = abs(mTimeZone / 60);
159 int minutes = abs(mTimeZone % 60); 159 int minutes = abs(mTimeZone % 60);
160 bool neg = mTimeZone < 0; 160 bool neg = mTimeZone < 0;
161 161
162 tmpStr.sprintf("%c%.2d%.2d", 162 tmpStr.sprintf("%c%.2d%.2d",
163 (neg ? '-' : '+'), 163 (neg ? '-' : '+'),
164 hours, minutes); 164 hours, minutes);
165 return tmpStr; 165 return tmpStr;
166} 166}
167 167
168void Calendar::setTimeZone(int tz) 168void Calendar::setTimeZone(int tz)
169{ 169{
170 mTimeZone = tz; 170 mTimeZone = tz;
171 mLocalTime = false; 171 mLocalTime = false;
172 172
173 setModified( true ); 173 setModified( true );
174} 174}
175 175
176int Calendar::getTimeZone() const 176int Calendar::getTimeZone() const
177{ 177{
178 return mTimeZone; 178 return mTimeZone;
179} 179}
180 180
181void Calendar::setTimeZoneId(const QString &id) 181void Calendar::setTimeZoneId(const QString &id)
182{ 182{
183 mTimeZoneId = id; 183 mTimeZoneId = id;
184 mLocalTime = false; 184 mLocalTime = false;
185 mTimeZone = KGlobal::locale()->timezoneOffset(mTimeZoneId); 185 mTimeZone = KGlobal::locale()->timezoneOffset(mTimeZoneId);
186 if ( mTimeZone > 1000) 186 if ( mTimeZone > 1000)
187 setLocalTime(); 187 setLocalTime();
188 //qDebug("Calendar::setTimeZoneOffset %s %d ",mTimeZoneId.latin1(), mTimeZone); 188 //qDebug("Calendar::setTimeZoneOffset %s %d ",mTimeZoneId.latin1(), mTimeZone);
189 setModified( true ); 189 setModified( true );
190} 190}
191 191
192QString Calendar::timeZoneId() const 192QString Calendar::timeZoneId() const
193{ 193{
194 return mTimeZoneId; 194 return mTimeZoneId;
195} 195}
196 196
197void Calendar::setLocalTime() 197void Calendar::setLocalTime()
198{ 198{
199 //qDebug("Calendar::setLocalTime() "); 199 //qDebug("Calendar::setLocalTime() ");
200 mLocalTime = true; 200 mLocalTime = true;
201 mTimeZone = 0; 201 mTimeZone = 0;
202 mTimeZoneId = ""; 202 mTimeZoneId = "";
203 203
204 setModified( true ); 204 setModified( true );
205} 205}
206 206
207bool Calendar::isLocalTime() const 207bool Calendar::isLocalTime() const
208{ 208{
209 return mLocalTime; 209 return mLocalTime;
210} 210}
211 211
212const QString &Calendar::getEmail() 212const QString &Calendar::getEmail()
213{ 213{
214 return mOwnerEmail; 214 return mOwnerEmail;
215} 215}
216 216
217void Calendar::setEmail(const QString &e) 217void Calendar::setEmail(const QString &e)
218{ 218{
219 mOwnerEmail = e; 219 mOwnerEmail = e;
220 220
221 setModified( true ); 221 setModified( true );
222} 222}
223 223
224void Calendar::setFilter(CalFilter *filter) 224void Calendar::setFilter(CalFilter *filter)
225{ 225{
226 mFilter = filter; 226 mFilter = filter;
227} 227}
228 228
229CalFilter *Calendar::filter() 229CalFilter *Calendar::filter()
230{ 230{
231 return mFilter; 231 return mFilter;
232} 232}
233 233
234QPtrList<Incidence> Calendar::incidences() 234QPtrList<Incidence> Calendar::incidences()
235{ 235{
236 QPtrList<Incidence> incidences; 236 QPtrList<Incidence> incidences;
237 237
238 Incidence *i; 238 Incidence *i;
239 239
240 QPtrList<Event> e = events(); 240 QPtrList<Event> e = events();
241 for( i = e.first(); i; i = e.next() ) incidences.append( i ); 241 for( i = e.first(); i; i = e.next() ) incidences.append( i );
242 242
243 QPtrList<Todo> t = todos(); 243 QPtrList<Todo> t = todos();
244 for( i = t.first(); i; i = t.next() ) incidences.append( i ); 244 for( i = t.first(); i; i = t.next() ) incidences.append( i );
245 245
246 QPtrList<Journal> j = journals(); 246 QPtrList<Journal> j = journals();
247 for( i = j.first(); i; i = j.next() ) incidences.append( i ); 247 for( i = j.first(); i; i = j.next() ) incidences.append( i );
248 248
249 return incidences; 249 return incidences;
250} 250}
251 251
252void Calendar::resetPilotStat() 252void Calendar::resetPilotStat(int id )
253{ 253{
254 QPtrList<Incidence> incidences; 254 QPtrList<Incidence> incidences;
255 255
256 Incidence *i; 256 Incidence *i;
257 257
258 QPtrList<Event> e = rawEvents(); 258 QPtrList<Event> e = rawEvents();
259 for( i = e.first(); i; i = e.next() ) i->setPilotId( 0 ); 259 for( i = e.first(); i; i = e.next() ) i->setPilotId( id );
260 260
261 QPtrList<Todo> t = rawTodos(); 261 QPtrList<Todo> t = rawTodos();
262 for( i = t.first(); i; i = t.next() ) i->setPilotId( 0 ); 262 for( i = t.first(); i; i = t.next() ) i->setPilotId( id );
263 263
264 QPtrList<Journal> j = journals(); 264 QPtrList<Journal> j = journals();
265 for( i = j.first(); i; i = j.next() ) i->setPilotId( 0 ); 265 for( i = j.first(); i; i = j.next() ) i->setPilotId( id );
266} 266}
267void Calendar::resetTempSyncStat() 267void Calendar::resetTempSyncStat()
268{ 268{
269 QPtrList<Incidence> incidences; 269 QPtrList<Incidence> incidences;
270 270
271 Incidence *i; 271 Incidence *i;
272 272
273 QPtrList<Event> e = rawEvents(); 273 QPtrList<Event> e = rawEvents();
274 for( i = e.first(); i; i = e.next() ) i->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 274 for( i = e.first(); i; i = e.next() ) i->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
275 275
276 QPtrList<Todo> t = rawTodos(); 276 QPtrList<Todo> t = rawTodos();
277 for( i = t.first(); i; i = t.next() ) i->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 277 for( i = t.first(); i; i = t.next() ) i->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
278 278
279 QPtrList<Journal> j = journals(); 279 QPtrList<Journal> j = journals();
280 for( i = j.first(); i; i = j.next() ) i->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 280 for( i = j.first(); i; i = j.next() ) i->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
281} 281}
282QPtrList<Incidence> Calendar::rawIncidences() 282QPtrList<Incidence> Calendar::rawIncidences()
283{ 283{
284 QPtrList<Incidence> incidences; 284 QPtrList<Incidence> incidences;
285 285
286 Incidence *i; 286 Incidence *i;
287 287
288 QPtrList<Event> e = rawEvents(); 288 QPtrList<Event> e = rawEvents();
289 for( i = e.first(); i; i = e.next() ) incidences.append( i ); 289 for( i = e.first(); i; i = e.next() ) incidences.append( i );
290 290
291 QPtrList<Todo> t = rawTodos(); 291 QPtrList<Todo> t = rawTodos();
292 for( i = t.first(); i; i = t.next() ) incidences.append( i ); 292 for( i = t.first(); i; i = t.next() ) incidences.append( i );
293 293
294 QPtrList<Journal> j = journals(); 294 QPtrList<Journal> j = journals();
295 for( i = j.first(); i; i = j.next() ) incidences.append( i ); 295 for( i = j.first(); i; i = j.next() ) incidences.append( i );
296 296
297 return incidences; 297 return incidences;
298} 298}
299 299
300QPtrList<Event> Calendar::events( const QDate &date, bool sorted ) 300QPtrList<Event> Calendar::events( const QDate &date, bool sorted )
301{ 301{
302 QPtrList<Event> el = rawEventsForDate(date,sorted); 302 QPtrList<Event> el = rawEventsForDate(date,sorted);
303 mFilter->apply(&el); 303 mFilter->apply(&el);
304 return el; 304 return el;
305} 305}
306 306
307QPtrList<Event> Calendar::events( const QDateTime &qdt ) 307QPtrList<Event> Calendar::events( const QDateTime &qdt )
308{ 308{
309 QPtrList<Event> el = rawEventsForDate(qdt); 309 QPtrList<Event> el = rawEventsForDate(qdt);
310 mFilter->apply(&el); 310 mFilter->apply(&el);
311 return el; 311 return el;
312} 312}
313 313
314QPtrList<Event> Calendar::events( const QDate &start, const QDate &end, 314QPtrList<Event> Calendar::events( const QDate &start, const QDate &end,
315 bool inclusive) 315 bool inclusive)
316{ 316{
317 QPtrList<Event> el = rawEvents(start,end,inclusive); 317 QPtrList<Event> el = rawEvents(start,end,inclusive);
318 mFilter->apply(&el); 318 mFilter->apply(&el);
319 return el; 319 return el;
320} 320}
321 321
322QPtrList<Event> Calendar::events() 322QPtrList<Event> Calendar::events()
323{ 323{
324 QPtrList<Event> el = rawEvents(); 324 QPtrList<Event> el = rawEvents();
325 mFilter->apply(&el); 325 mFilter->apply(&el);
326 return el; 326 return el;
327} 327}
328 328
329 329
330bool Calendar::addIncidence(Incidence *i) 330bool Calendar::addIncidence(Incidence *i)
331{ 331{
332 Incidence::AddVisitor<Calendar> v(this); 332 Incidence::AddVisitor<Calendar> v(this);
333 333
334 return i->accept(v); 334 return i->accept(v);
335} 335}
336void Calendar::deleteIncidence(Incidence *in) 336void Calendar::deleteIncidence(Incidence *in)
337{ 337{
338 if ( in->type() == "Event" ) 338 if ( in->type() == "Event" )
339 deleteEvent( (Event*) in ); 339 deleteEvent( (Event*) in );
340 else if ( in->type() =="Todo" ) 340 else if ( in->type() =="Todo" )
341 deleteTodo( (Todo*) in); 341 deleteTodo( (Todo*) in);
342 else if ( in->type() =="Journal" ) 342 else if ( in->type() =="Journal" )
343 deleteJournal( (Journal*) in ); 343 deleteJournal( (Journal*) in );
344} 344}
345 345
346Incidence* Calendar::incidence( const QString& uid ) 346Incidence* Calendar::incidence( const QString& uid )
347{ 347{
348 Incidence* i; 348 Incidence* i;
349 349
350 if( (i = todo( uid )) != 0 ) 350 if( (i = todo( uid )) != 0 )
351 return i; 351 return i;
352 if( (i = event( uid )) != 0 ) 352 if( (i = event( uid )) != 0 )
353 return i; 353 return i;
354 if( (i = journal( uid )) != 0 ) 354 if( (i = journal( uid )) != 0 )
355 return i; 355 return i;
356 356
357 return 0; 357 return 0;
358} 358}
359 359
360QPtrList<Todo> Calendar::todos() 360QPtrList<Todo> Calendar::todos()
361{ 361{
362 QPtrList<Todo> tl = rawTodos(); 362 QPtrList<Todo> tl = rawTodos();
363 mFilter->apply( &tl ); 363 mFilter->apply( &tl );
364 return tl; 364 return tl;
365} 365}
366 366
367// When this is called, the todo have already been added to the calendar. 367// When this is called, the todo have already been added to the calendar.
368// This method is only about linking related todos 368// This method is only about linking related todos
369void Calendar::setupRelations( Incidence *incidence ) 369void Calendar::setupRelations( Incidence *incidence )
370{ 370{
371 QString uid = incidence->uid(); 371 QString uid = incidence->uid();
372 //qDebug("Calendar::setupRelations "); 372 //qDebug("Calendar::setupRelations ");
373 // First, go over the list of orphans and see if this is their parent 373 // First, go over the list of orphans and see if this is their parent
374 while( Incidence* i = mOrphans[ uid ] ) { 374 while( Incidence* i = mOrphans[ uid ] ) {
375 mOrphans.remove( uid ); 375 mOrphans.remove( uid );
376 i->setRelatedTo( incidence ); 376 i->setRelatedTo( incidence );
377 incidence->addRelation( i ); 377 incidence->addRelation( i );
378 mOrphanUids.remove( i->uid() ); 378 mOrphanUids.remove( i->uid() );
379 } 379 }
380 380
381 // Now see about this incidences parent 381 // Now see about this incidences parent
382 if( !incidence->relatedTo() && !incidence->relatedToUid().isEmpty() ) { 382 if( !incidence->relatedTo() && !incidence->relatedToUid().isEmpty() ) {
383 // This incidence has a uid it is related to, but is not registered to it yet 383 // This incidence has a uid it is related to, but is not registered to it yet
384 // Try to find it 384 // Try to find it
385 Incidence* parent = this->incidence( incidence->relatedToUid() ); 385 Incidence* parent = this->incidence( incidence->relatedToUid() );
386 if( parent ) { 386 if( parent ) {
387 // Found it 387 // Found it
388 incidence->setRelatedTo( parent ); 388 incidence->setRelatedTo( parent );
389 parent->addRelation( incidence ); 389 parent->addRelation( incidence );
390 } else { 390 } else {
391 // Not found, put this in the mOrphans list 391 // Not found, put this in the mOrphans list
392 mOrphans.insert( incidence->relatedToUid(), incidence ); 392 mOrphans.insert( incidence->relatedToUid(), incidence );
393 mOrphanUids.insert( incidence->uid(), incidence ); 393 mOrphanUids.insert( incidence->uid(), incidence );
394 } 394 }
395 } 395 }
396} 396}
397 397
398// If a task with subtasks is deleted, move it's subtasks to the orphans list 398// If a task with subtasks is deleted, move it's subtasks to the orphans list
399void Calendar::removeRelations( Incidence *incidence ) 399void Calendar::removeRelations( Incidence *incidence )
400{ 400{
401 // qDebug("Calendar::removeRelations "); 401 // qDebug("Calendar::removeRelations ");
402 QString uid = incidence->uid(); 402 QString uid = incidence->uid();
403 403
404 QPtrList<Incidence> relations = incidence->relations(); 404 QPtrList<Incidence> relations = incidence->relations();
405 for( Incidence* i = relations.first(); i; i = relations.next() ) 405 for( Incidence* i = relations.first(); i; i = relations.next() )
406 if( !mOrphanUids.find( i->uid() ) ) { 406 if( !mOrphanUids.find( i->uid() ) ) {
407 mOrphans.insert( uid, i ); 407 mOrphans.insert( uid, i );
408 mOrphanUids.insert( i->uid(), i ); 408 mOrphanUids.insert( i->uid(), i );
409 i->setRelatedTo( 0 ); 409 i->setRelatedTo( 0 );
410 i->setRelatedToUid( uid ); 410 i->setRelatedToUid( uid );
411 } 411 }
412 412
413 // If this incidence is related to something else, tell that about it 413 // If this incidence is related to something else, tell that about it
414 if( incidence->relatedTo() ) 414 if( incidence->relatedTo() )
415 incidence->relatedTo()->removeRelation( incidence ); 415 incidence->relatedTo()->removeRelation( incidence );
416 416
417 // Remove this one from the orphans list 417 // Remove this one from the orphans list
418 if( mOrphanUids.remove( uid ) ) 418 if( mOrphanUids.remove( uid ) )
419 // This incidence is located in the orphans list - it should be removed 419 // This incidence is located in the orphans list - it should be removed
420 if( !( incidence->relatedTo() != 0 && mOrphans.remove( incidence->relatedTo()->uid() ) ) ) { 420 if( !( incidence->relatedTo() != 0 && mOrphans.remove( incidence->relatedTo()->uid() ) ) ) {
421 // Removing wasn't that easy 421 // Removing wasn't that easy
422 for( QDictIterator<Incidence> it( mOrphans ); it.current(); ++it ) { 422 for( QDictIterator<Incidence> it( mOrphans ); it.current(); ++it ) {
423 if( it.current()->uid() == uid ) { 423 if( it.current()->uid() == uid ) {
424 mOrphans.remove( it.currentKey() ); 424 mOrphans.remove( it.currentKey() );
425 break; 425 break;
426 } 426 }
427 } 427 }
428 } 428 }
429} 429}
430 430
431void Calendar::registerObserver( Observer *observer ) 431void Calendar::registerObserver( Observer *observer )
432{ 432{
433 mObserver = observer; 433 mObserver = observer;
434 mNewObserver = true; 434 mNewObserver = true;
435} 435}
436 436
437void Calendar::setModified( bool modified ) 437void Calendar::setModified( bool modified )
438{ 438{
439 if ( mObserver ) mObserver->calendarModified( modified, this ); 439 if ( mObserver ) mObserver->calendarModified( modified, this );
440 if ( modified != mModified || mNewObserver ) { 440 if ( modified != mModified || mNewObserver ) {
441 mNewObserver = false; 441 mNewObserver = false;
442 // if ( mObserver ) mObserver->calendarModified( modified, this ); 442 // if ( mObserver ) mObserver->calendarModified( modified, this );
443 mModified = modified; 443 mModified = modified;
444 } 444 }
445} 445}
446 446
447void Calendar::setLoadedProductId( const QString &id ) 447void Calendar::setLoadedProductId( const QString &id )
448{ 448{
449 mLoadedProductId = id; 449 mLoadedProductId = id;
450} 450}
451 451
452QString Calendar::loadedProductId() 452QString Calendar::loadedProductId()
453{ 453{
454 return mLoadedProductId; 454 return mLoadedProductId;
455} 455}
456 456
457//#include "calendar.moc" 457//#include "calendar.moc"
diff --git a/libkcal/calendar.h b/libkcal/calendar.h
index d5294eb..b801186 100644
--- a/libkcal/calendar.h
+++ b/libkcal/calendar.h
@@ -1,352 +1,352 @@
1/* 1/*
2 This file is part of libkcal. 2 This file is part of libkcal.
3 Copyright (c) 1998 Preston Brown 3 Copyright (c) 1998 Preston Brown
4 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 4 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
5 5
6 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
10 10
11 This library is distributed in the hope that it will be useful, 11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details. 14 Library General Public License for more details.
15 15
16 You should have received a copy of the GNU Library General Public License 16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to 17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. 19 Boston, MA 02111-1307, USA.
20*/ 20*/
21 21
22#ifndef CALENDAR_H 22#ifndef CALENDAR_H
23#define CALENDAR_H 23#define CALENDAR_H
24 24
25#include <qobject.h> 25#include <qobject.h>
26#include <qstring.h> 26#include <qstring.h>
27#include <qdatetime.h> 27#include <qdatetime.h>
28#include <qptrlist.h> 28#include <qptrlist.h>
29#include <qdict.h> 29#include <qdict.h>
30 30
31#include "customproperties.h" 31#include "customproperties.h"
32#include "event.h" 32#include "event.h"
33#include "todo.h" 33#include "todo.h"
34#include "journal.h" 34#include "journal.h"
35#include "calfilter.h" 35#include "calfilter.h"
36 36
37//#define _TIME_ZONE "-0500" /* hardcoded, overridden in config file. */ 37//#define _TIME_ZONE "-0500" /* hardcoded, overridden in config file. */
38 38
39class KConfig; 39class KConfig;
40 40
41namespace KCal { 41namespace KCal {
42 42
43 43
44/** 44/**
45 This is the main "calendar" object class for KOrganizer. It holds 45 This is the main "calendar" object class for KOrganizer. It holds
46 information like all appointments/events, user information, etc. etc. 46 information like all appointments/events, user information, etc. etc.
47 one calendar is associated with each CalendarView (@see calendarview.h). 47 one calendar is associated with each CalendarView (@see calendarview.h).
48 This is an abstract base class defining the interface to a calendar. It is 48 This is an abstract base class defining the interface to a calendar. It is
49 implemented by subclasses like @see CalendarLocal, which use different 49 implemented by subclasses like @see CalendarLocal, which use different
50 methods to store and access the data. 50 methods to store and access the data.
51 51
52 Ownership of events etc. is handled by the following policy: As soon as an 52 Ownership of events etc. is handled by the following policy: As soon as an
53 event (or any other subclass of IncidenceBase) object is added to the 53 event (or any other subclass of IncidenceBase) object is added to the
54 Calendar by addEvent() it is owned by the Calendar object. The Calendar takes 54 Calendar by addEvent() it is owned by the Calendar object. The Calendar takes
55 care of deleting it. All Events returned by the query functions are returned 55 care of deleting it. All Events returned by the query functions are returned
56 as pointers, that means all changes to the returned events are immediately 56 as pointers, that means all changes to the returned events are immediately
57 visible in the Calendar. You shouldn't delete any Event object you get from 57 visible in the Calendar. You shouldn't delete any Event object you get from
58 Calendar. 58 Calendar.
59*/ 59*/
60class Calendar : public QObject, public CustomProperties, 60class Calendar : public QObject, public CustomProperties,
61 public IncidenceBase::Observer 61 public IncidenceBase::Observer
62{ 62{
63 Q_OBJECT 63 Q_OBJECT
64public: 64public:
65 Calendar(); 65 Calendar();
66 Calendar(const QString &timeZoneId); 66 Calendar(const QString &timeZoneId);
67 virtual ~Calendar(); 67 virtual ~Calendar();
68 void deleteIncidence(Incidence *in); 68 void deleteIncidence(Incidence *in);
69 void resetTempSyncStat(); 69 void resetTempSyncStat();
70 void resetPilotStat(); 70 void resetPilotStat(int id);
71 /** 71 /**
72 Clears out the current calendar, freeing all used memory etc. 72 Clears out the current calendar, freeing all used memory etc.
73 */ 73 */
74 virtual void close() = 0; 74 virtual void close() = 0;
75 75
76 /** 76 /**
77 Sync changes in memory to persistant storage. 77 Sync changes in memory to persistant storage.
78 */ 78 */
79 virtual void save() = 0; 79 virtual void save() = 0;
80 virtual QPtrList<Event> getExternLastSyncEvents() = 0; 80 virtual QPtrList<Event> getExternLastSyncEvents() = 0;
81 virtual bool isSaving() { return false; } 81 virtual bool isSaving() { return false; }
82 82
83 /** 83 /**
84 Return the owner of the calendar's full name. 84 Return the owner of the calendar's full name.
85 */ 85 */
86 const QString &getOwner() const; 86 const QString &getOwner() const;
87 /** 87 /**
88 Set the owner of the calendar. Should be owner's full name. 88 Set the owner of the calendar. Should be owner's full name.
89 */ 89 */
90 void setOwner( const QString &os ); 90 void setOwner( const QString &os );
91 /** 91 /**
92 Return the email address of the calendar owner. 92 Return the email address of the calendar owner.
93 */ 93 */
94 const QString &getEmail(); 94 const QString &getEmail();
95 /** 95 /**
96 Set the email address of the calendar owner. 96 Set the email address of the calendar owner.
97 */ 97 */
98 void setEmail( const QString & ); 98 void setEmail( const QString & );
99 99
100 /** 100 /**
101 Set time zone from a timezone string (e.g. -2:00) 101 Set time zone from a timezone string (e.g. -2:00)
102 */ 102 */
103 void setTimeZone( const QString &tz ); 103 void setTimeZone( const QString &tz );
104 /** 104 /**
105 Set time zone from a minutes value (e.g. -60) 105 Set time zone from a minutes value (e.g. -60)
106 */ 106 */
107 void setTimeZone( int tz ); 107 void setTimeZone( int tz );
108 /** 108 /**
109 Return time zone as offest in minutes. 109 Return time zone as offest in minutes.
110 */ 110 */
111 int getTimeZone() const; 111 int getTimeZone() const;
112 /** 112 /**
113 Compute an ISO 8601 format string from the time zone. 113 Compute an ISO 8601 format string from the time zone.
114 */ 114 */
115 QString getTimeZoneStr() const; 115 QString getTimeZoneStr() const;
116 /** 116 /**
117 Set time zone id (see /usr/share/zoneinfo/zone.tab for list of legal 117 Set time zone id (see /usr/share/zoneinfo/zone.tab for list of legal
118 values). 118 values).
119 */ 119 */
120 void setTimeZoneId( const QString & ); 120 void setTimeZoneId( const QString & );
121 /** 121 /**
122 Return time zone id. 122 Return time zone id.
123 */ 123 */
124 QString timeZoneId() const; 124 QString timeZoneId() const;
125 /** 125 /**
126 Use local time, not UTC or a time zone. 126 Use local time, not UTC or a time zone.
127 */ 127 */
128 void setLocalTime(); 128 void setLocalTime();
129 /** 129 /**
130 Return whether local time is being used. 130 Return whether local time is being used.
131 */ 131 */
132 bool isLocalTime() const; 132 bool isLocalTime() const;
133 133
134 /** 134 /**
135 Add an incidence to calendar. 135 Add an incidence to calendar.
136 136
137 @return true on success, false on error. 137 @return true on success, false on error.
138 */ 138 */
139 virtual bool addIncidence( Incidence * ); 139 virtual bool addIncidence( Incidence * );
140 /** 140 /**
141 Return filtered list of all incidences of this calendar. 141 Return filtered list of all incidences of this calendar.
142 */ 142 */
143 virtual QPtrList<Incidence> incidences(); 143 virtual QPtrList<Incidence> incidences();
144 144
145 /** 145 /**
146 Return unfiltered list of all incidences of this calendar. 146 Return unfiltered list of all incidences of this calendar.
147 */ 147 */
148 virtual QPtrList<Incidence> rawIncidences(); 148 virtual QPtrList<Incidence> rawIncidences();
149 149
150 /** 150 /**
151 Adds a Event to this calendar object. 151 Adds a Event to this calendar object.
152 @param anEvent a pointer to the event to add 152 @param anEvent a pointer to the event to add
153 153
154 @return true on success, false on error. 154 @return true on success, false on error.
155 */ 155 */
156 virtual bool addEventNoDup( Event *event ) = 0; 156 virtual bool addEventNoDup( Event *event ) = 0;
157 virtual bool addAnniversaryNoDup( Event *event ) = 0; 157 virtual bool addAnniversaryNoDup( Event *event ) = 0;
158 virtual bool addEvent( Event *anEvent ) = 0; 158 virtual bool addEvent( Event *anEvent ) = 0;
159 /** 159 /**
160 Delete event from calendar. 160 Delete event from calendar.
161 */ 161 */
162 virtual void deleteEvent( Event * ) = 0; 162 virtual void deleteEvent( Event * ) = 0;
163 /** 163 /**
164 Retrieves an event on the basis of the unique string ID. 164 Retrieves an event on the basis of the unique string ID.
165 */ 165 */
166 virtual Event *event( const QString &UniqueStr ) = 0; 166 virtual Event *event( const QString &UniqueStr ) = 0;
167 virtual Event *event( QString, QString ) = 0; 167 virtual Event *event( QString, QString ) = 0;
168 /** 168 /**
169 Builds and then returns a list of all events that match for the 169 Builds and then returns a list of all events that match for the
170 date specified. useful for dayView, etc. etc. 170 date specified. useful for dayView, etc. etc.
171 The calendar filter is applied. 171 The calendar filter is applied.
172 */ 172 */
173 QPtrList<Event> events( const QDate &date, bool sorted = false); 173 QPtrList<Event> events( const QDate &date, bool sorted = false);
174 /** 174 /**
175 Get events, which occur on the given date. 175 Get events, which occur on the given date.
176 The calendar filter is applied. 176 The calendar filter is applied.
177 */ 177 */
178 QPtrList<Event> events( const QDateTime &qdt ); 178 QPtrList<Event> events( const QDateTime &qdt );
179 /** 179 /**
180 Get events in a range of dates. If inclusive is set to true, only events 180 Get events in a range of dates. If inclusive is set to true, only events
181 are returned, which are completely included in the range. 181 are returned, which are completely included in the range.
182 The calendar filter is applied. 182 The calendar filter is applied.
183 */ 183 */
184 QPtrList<Event> events( const QDate &start, const QDate &end, 184 QPtrList<Event> events( const QDate &start, const QDate &end,
185 bool inclusive = false); 185 bool inclusive = false);
186 /** 186 /**
187 Return filtered list of all events in calendar. 187 Return filtered list of all events in calendar.
188 */ 188 */
189 virtual QPtrList<Event> events(); 189 virtual QPtrList<Event> events();
190 /** 190 /**
191 Return unfiltered list of all events in calendar. 191 Return unfiltered list of all events in calendar.
192 */ 192 */
193 virtual QPtrList<Event> rawEvents() = 0; 193 virtual QPtrList<Event> rawEvents() = 0;
194 194
195 /** 195 /**
196 Add a todo to the todolist. 196 Add a todo to the todolist.
197 197
198 @return true on success, false on error. 198 @return true on success, false on error.
199 */ 199 */
200 virtual bool addTodo( Todo *todo ) = 0; 200 virtual bool addTodo( Todo *todo ) = 0;
201 virtual bool addTodoNoDup( Todo *todo ) = 0; 201 virtual bool addTodoNoDup( Todo *todo ) = 0;
202 /** 202 /**
203 Remove a todo from the todolist. 203 Remove a todo from the todolist.
204 */ 204 */
205 virtual void deleteTodo( Todo * ) = 0; 205 virtual void deleteTodo( Todo * ) = 0;
206 virtual void deleteJournal( Journal * ) = 0; 206 virtual void deleteJournal( Journal * ) = 0;
207 /** 207 /**
208 Return filterd list of todos. 208 Return filterd list of todos.
209 */ 209 */
210 virtual QPtrList<Todo> todos(); 210 virtual QPtrList<Todo> todos();
211 /** 211 /**
212 Searches todolist for an event with this unique string identifier, 212 Searches todolist for an event with this unique string identifier,
213 returns a pointer or null. 213 returns a pointer or null.
214 */ 214 */
215 virtual Todo *todo( const QString &uid ) = 0; 215 virtual Todo *todo( const QString &uid ) = 0;
216 virtual Todo *todo( QString, QString ) = 0; 216 virtual Todo *todo( QString, QString ) = 0;
217 /** 217 /**
218 Returns list of todos due on the specified date. 218 Returns list of todos due on the specified date.
219 */ 219 */
220 virtual QPtrList<Todo> todos( const QDate &date ) = 0; 220 virtual QPtrList<Todo> todos( const QDate &date ) = 0;
221 /** 221 /**
222 Return unfiltered list of todos. 222 Return unfiltered list of todos.
223 */ 223 */
224 virtual QPtrList<Todo> rawTodos() = 0; 224 virtual QPtrList<Todo> rawTodos() = 0;
225 225
226 /** 226 /**
227 Add a Journal entry to calendar. 227 Add a Journal entry to calendar.
228 228
229 @return true on success, false on error. 229 @return true on success, false on error.
230 */ 230 */
231 virtual bool addJournal( Journal * ) = 0; 231 virtual bool addJournal( Journal * ) = 0;
232 /** 232 /**
233 Return Journal for given date. 233 Return Journal for given date.
234 */ 234 */
235 virtual Journal *journal( const QDate & ) = 0; 235 virtual Journal *journal( const QDate & ) = 0;
236 /** 236 /**
237 Return Journal with given UID. 237 Return Journal with given UID.
238 */ 238 */
239 virtual Journal *journal( const QString &UID ) = 0; 239 virtual Journal *journal( const QString &UID ) = 0;
240 /** 240 /**
241 Return list of all Journal entries. 241 Return list of all Journal entries.
242 */ 242 */
243 virtual QPtrList<Journal> journals() = 0; 243 virtual QPtrList<Journal> journals() = 0;
244 244
245 /** 245 /**
246 Searches all incidence types for an incidence with this unique 246 Searches all incidence types for an incidence with this unique
247 string identifier, returns a pointer or null. 247 string identifier, returns a pointer or null.
248 */ 248 */
249 Incidence* incidence( const QString&UID ); 249 Incidence* incidence( const QString&UID );
250 250
251 /** 251 /**
252 Setup relations for an incidence. 252 Setup relations for an incidence.
253 */ 253 */
254 virtual void setupRelations( Incidence * ); 254 virtual void setupRelations( Incidence * );
255 /** 255 /**
256 Remove all relations to an incidence 256 Remove all relations to an incidence
257 */ 257 */
258 virtual void removeRelations( Incidence * ); 258 virtual void removeRelations( Incidence * );
259 259
260 /** 260 /**
261 Set calendar filter, which filters events for the events() functions. 261 Set calendar filter, which filters events for the events() functions.
262 The Filter object is owned by the caller. 262 The Filter object is owned by the caller.
263 */ 263 */
264 void setFilter( CalFilter * ); 264 void setFilter( CalFilter * );
265 /** 265 /**
266 Return calendar filter. 266 Return calendar filter.
267 */ 267 */
268 CalFilter *filter(); 268 CalFilter *filter();
269 virtual QDateTime nextAlarm( int daysTo ) = 0; 269 virtual QDateTime nextAlarm( int daysTo ) = 0;
270 virtual QString nextSummary( ) const = 0; 270 virtual QString nextSummary( ) const = 0;
271 virtual void reInitAlarmSettings() = 0; 271 virtual void reInitAlarmSettings() = 0;
272 virtual QDateTime nextAlarmEventDateTime() const = 0; 272 virtual QDateTime nextAlarmEventDateTime() const = 0;
273 virtual void checkAlarmForIncidence( Incidence *, bool ) = 0; 273 virtual void checkAlarmForIncidence( Incidence *, bool ) = 0;
274 /** 274 /**
275 Return all alarms, which ocur in the given time interval. 275 Return all alarms, which ocur in the given time interval.
276 */ 276 */
277 virtual Alarm::List alarms( const QDateTime &from, 277 virtual Alarm::List alarms( const QDateTime &from,
278 const QDateTime &to ) = 0; 278 const QDateTime &to ) = 0;
279 279
280 class Observer { 280 class Observer {
281 public: 281 public:
282 virtual void calendarModified( bool, Calendar * ) = 0; 282 virtual void calendarModified( bool, Calendar * ) = 0;
283 }; 283 };
284 284
285 void registerObserver( Observer * ); 285 void registerObserver( Observer * );
286 286
287 void setModified( bool ); 287 void setModified( bool );
288 288
289 /** 289 /**
290 Set product id returned by loadedProductId(). This function is only 290 Set product id returned by loadedProductId(). This function is only
291 useful for the calendar loading code. 291 useful for the calendar loading code.
292 */ 292 */
293 void setLoadedProductId( const QString & ); 293 void setLoadedProductId( const QString & );
294 /** 294 /**
295 Return product id taken from file that has been loaded. Returns 295 Return product id taken from file that has been loaded. Returns
296 QString::null, if no calendar has been loaded. 296 QString::null, if no calendar has been loaded.
297 */ 297 */
298 QString loadedProductId(); 298 QString loadedProductId();
299 299
300 signals: 300 signals:
301 void calendarChanged(); 301 void calendarChanged();
302 void calendarSaved(); 302 void calendarSaved();
303 void calendarLoaded(); 303 void calendarLoaded();
304 void addAlarm(const QDateTime &qdt, const QString &noti ); 304 void addAlarm(const QDateTime &qdt, const QString &noti );
305 void removeAlarm(const QDateTime &qdt, const QString &noti ); 305 void removeAlarm(const QDateTime &qdt, const QString &noti );
306 306
307 protected: 307 protected:
308 /** 308 /**
309 Get unfiltered events, which occur on the given date. 309 Get unfiltered events, which occur on the given date.
310 */ 310 */
311 virtual QPtrList<Event> rawEventsForDate( const QDateTime &qdt ) = 0; 311 virtual QPtrList<Event> rawEventsForDate( const QDateTime &qdt ) = 0;
312 /** 312 /**
313 Get unfiltered events, which occur on the given date. 313 Get unfiltered events, which occur on the given date.
314 */ 314 */
315 virtual QPtrList<Event> rawEventsForDate( const QDate &date, 315 virtual QPtrList<Event> rawEventsForDate( const QDate &date,
316 bool sorted = false ) = 0; 316 bool sorted = false ) = 0;
317 /** 317 /**
318 Get events in a range of dates. If inclusive is set to true, only events 318 Get events in a range of dates. If inclusive is set to true, only events
319 are returned, which are completely included in the range. 319 are returned, which are completely included in the range.
320 */ 320 */
321 virtual QPtrList<Event> rawEvents( const QDate &start, const QDate &end, 321 virtual QPtrList<Event> rawEvents( const QDate &start, const QDate &end,
322 bool inclusive = false ) = 0; 322 bool inclusive = false ) = 0;
323 Incidence *mNextAlarmIncidence; 323 Incidence *mNextAlarmIncidence;
324 324
325private: 325private:
326 void init(); 326 void init();
327 327
328 QString mOwner; // who the calendar belongs to 328 QString mOwner; // who the calendar belongs to
329 QString mOwnerEmail; // email address of the owner 329 QString mOwnerEmail; // email address of the owner
330 int mTimeZone; // timezone OFFSET from GMT (MINUTES) 330 int mTimeZone; // timezone OFFSET from GMT (MINUTES)
331 bool mLocalTime; // use local time, not UTC or a time zone 331 bool mLocalTime; // use local time, not UTC or a time zone
332 332
333 CalFilter *mFilter; 333 CalFilter *mFilter;
334 CalFilter *mDefaultFilter; 334 CalFilter *mDefaultFilter;
335 335
336 QString mTimeZoneId; 336 QString mTimeZoneId;
337 337
338 Observer *mObserver; 338 Observer *mObserver;
339 bool mNewObserver; 339 bool mNewObserver;
340 340
341 bool mModified; 341 bool mModified;
342 342
343 QString mLoadedProductId; 343 QString mLoadedProductId;
344 344
345 // This list is used to put together related todos 345 // This list is used to put together related todos
346 QDict<Incidence> mOrphans; 346 QDict<Incidence> mOrphans;
347 QDict<Incidence> mOrphanUids; 347 QDict<Incidence> mOrphanUids;
348}; 348};
349 349
350} 350}
351 351
352#endif 352#endif