summaryrefslogtreecommitdiffabout
path: root/libkcal/calendarlocal.cpp
Unidiff
Diffstat (limited to 'libkcal/calendarlocal.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/calendarlocal.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/libkcal/calendarlocal.cpp b/libkcal/calendarlocal.cpp
index 0ddfeca..45e3128 100644
--- a/libkcal/calendarlocal.cpp
+++ b/libkcal/calendarlocal.cpp
@@ -80,199 +80,211 @@ bool CalendarLocal::mergeCalendarFile( QString name )
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( calID );
153 addIncidence( inL ); 153 addIncidence( inL );
154 } 154 }
155 } else { 155 } else {
156 inL = inR->clone(); 156 inL = inR->clone();
157 inL->setCalID( 0 );// add to default cal 157 inL->setCalID( 0 );// add to default cal
158 addIncidence( inL ); 158 addIncidence( inL );
159 } 159 }
160 inR = er.next(); 160 inR = er.next();
161 } 161 }
162 return true; 162 return true;
163} 163}
164 164
165 165
166bool CalendarLocal::addCalendarFile( QString name, int id ) 166bool CalendarLocal::addCalendarFile( QString name, int id )
167{ 167{
168 CalendarLocal calendar( timeZoneId() ); 168 CalendarLocal calendar( timeZoneId() );
169 calendar.setDefaultCalendar( id ); 169 calendar.setDefaultCalendar( id );
170 if ( calendar.load( name ) ) { 170 if ( calendar.load( name ) ) {
171 addCalendar( &calendar ); 171 addCalendar( &calendar );
172 return true; 172 return true;
173 } 173 }
174 return false; 174 return false;
175} 175}
176void CalendarLocal::setSyncEventsReadOnly() 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->setReadOnly( true ); 182 ev->setCalEnabled( true );
183 ev = mEventList.next();
184 }
185}
186void CalendarLocal::setSyncEventsReadOnly()
187{
188 Event * ev;
189 ev = mEventList.first();
190 while ( ev ) {
191 if ( ev->uid().left(15) == QString("last-syncEvent-") ) {
192 ev->setReadOnly( true );
193 ev->setCalID( 1 );
194 }
183 ev = mEventList.next(); 195 ev = mEventList.next();
184 } 196 }
185} 197}
186void CalendarLocal::addCalendar( Calendar* cal ) 198void CalendarLocal::addCalendar( Calendar* cal )
187{ 199{
188 cal->setDontDeleteIncidencesOnClose(); 200 cal->setDontDeleteIncidencesOnClose();
189 { 201 {
190 QPtrList<Event> EventList = cal->rawEvents(); 202 QPtrList<Event> EventList = cal->rawEvents();
191 Event * ev = EventList.first(); 203 Event * ev = EventList.first();
192 while ( ev ) { 204 while ( ev ) {
193 ev->unRegisterObserver( cal ); 205 ev->unRegisterObserver( cal );
194 ev->registerObserver( this ); 206 ev->registerObserver( this );
195 mEventList.append( ev ); 207 mEventList.append( ev );
196 ev = EventList.next(); 208 ev = EventList.next();
197 } 209 }
198 } 210 }
199 { 211 {
200 212
201 QPtrList<Todo> TodoList = cal->rawTodos(); 213 QPtrList<Todo> TodoList = cal->rawTodos();
202 Todo * ev = TodoList.first(); 214 Todo * ev = TodoList.first();
203 while ( ev ) { 215 while ( ev ) {
204 QString rel = ev->relatedToUid(); 216 QString rel = ev->relatedToUid();
205 if ( !rel.isEmpty() ){ 217 if ( !rel.isEmpty() ){
206 ev->setRelatedTo ( 0 ); 218 ev->setRelatedTo ( 0 );
207 ev->setRelatedToUid( rel ); 219 ev->setRelatedToUid( rel );
208 } 220 }
209 ev = TodoList.next(); 221 ev = TodoList.next();
210 } 222 }
211 //TodoList = cal->rawTodos(); 223 //TodoList = cal->rawTodos();
212 ev = TodoList.first(); 224 ev = TodoList.first();
213 while ( ev ) { 225 while ( ev ) {
214 ev->unRegisterObserver( cal ); 226 ev->unRegisterObserver( cal );
215 ev->registerObserver( this ); 227 ev->registerObserver( this );
216 mTodoList.append( ev ); 228 mTodoList.append( ev );
217 setupRelations( ev ); 229 setupRelations( ev );
218 ev = TodoList.next(); 230 ev = TodoList.next();
219 } 231 }
220 } 232 }
221 { 233 {
222 QPtrList<Journal> JournalList = cal->journals(); 234 QPtrList<Journal> JournalList = cal->journals();
223 Journal * ev = JournalList.first(); 235 Journal * ev = JournalList.first();
224 while ( ev ) { 236 while ( ev ) {
225 ev->unRegisterObserver( cal ); 237 ev->unRegisterObserver( cal );
226 ev->registerObserver( this ); 238 ev->registerObserver( this );
227 mJournalList.append( ev ); 239 mJournalList.append( ev );
228 ev = JournalList.next(); 240 ev = JournalList.next();
229 } 241 }
230 } 242 }
231 setModified( true ); 243 setModified( true );
232} 244}
233bool CalendarLocal::load( const QString &fileName ) 245bool CalendarLocal::load( const QString &fileName )
234{ 246{
235 FileStorage storage( this, fileName ); 247 FileStorage storage( this, fileName );
236 return storage.load(); 248 return storage.load();
237} 249}
238 250
239bool CalendarLocal::save( const QString &fileName, CalFormat *format ) 251bool CalendarLocal::save( const QString &fileName, CalFormat *format )
240{ 252{
241 FileStorage storage( this, fileName, format ); 253 FileStorage storage( this, fileName, format );
242 return storage.save(); 254 return storage.save();
243} 255}
244 256
245void CalendarLocal::stopAllTodos() 257void CalendarLocal::stopAllTodos()
246{ 258{
247 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() ) 259 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
248 it->setRunning( false ); 260 it->setRunning( false );
249 261
250} 262}
251void CalendarLocal::close() 263void CalendarLocal::close()
252{ 264{
253 265
254 Todo * i; 266 Todo * i;
255 for( i = mTodoList.first(); i; i = mTodoList.next() ) i->setRunning(false); 267 for( i = mTodoList.first(); i; i = mTodoList.next() ) i->setRunning(false);
256 268
257 mEventList.setAutoDelete( true ); 269 mEventList.setAutoDelete( true );
258 mTodoList.setAutoDelete( true ); 270 mTodoList.setAutoDelete( true );
259 mJournalList.setAutoDelete( true ); 271 mJournalList.setAutoDelete( true );
260 272
261 mEventList.clear(); 273 mEventList.clear();
262 mTodoList.clear(); 274 mTodoList.clear();
263 mJournalList.clear(); 275 mJournalList.clear();
264 276
265 mEventList.setAutoDelete( false ); 277 mEventList.setAutoDelete( false );
266 mTodoList.setAutoDelete( false ); 278 mTodoList.setAutoDelete( false );
267 mJournalList.setAutoDelete( false ); 279 mJournalList.setAutoDelete( false );
268 280
269 setModified( false ); 281 setModified( false );
270} 282}
271 283
272bool CalendarLocal::addAnniversaryNoDup( Event *event ) 284bool CalendarLocal::addAnniversaryNoDup( Event *event )
273{ 285{
274 QString cat; 286 QString cat;
275 bool isBirthday = true; 287 bool isBirthday = true;
276 if( event->categoriesStr() == i18n( "Anniversary" ) ) { 288 if( event->categoriesStr() == i18n( "Anniversary" ) ) {
277 isBirthday = false; 289 isBirthday = false;
278 cat = i18n( "Anniversary" ); 290 cat = i18n( "Anniversary" );