summaryrefslogtreecommitdiffabout
path: root/kabc/addressbook.cpp
Unidiff
Diffstat (limited to 'kabc/addressbook.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addressbook.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp
index 6e8d027..3ec0795 100644
--- a/kabc/addressbook.cpp
+++ b/kabc/addressbook.cpp
@@ -64,714 +64,715 @@ struct AddressBook::Iterator::IteratorData
64{ 64{
65 Addressee::List::Iterator mIt; 65 Addressee::List::Iterator mIt;
66}; 66};
67 67
68struct AddressBook::ConstIterator::ConstIteratorData 68struct AddressBook::ConstIterator::ConstIteratorData
69{ 69{
70 Addressee::List::ConstIterator mIt; 70 Addressee::List::ConstIterator mIt;
71}; 71};
72 72
73AddressBook::Iterator::Iterator() 73AddressBook::Iterator::Iterator()
74{ 74{
75 d = new IteratorData; 75 d = new IteratorData;
76} 76}
77 77
78AddressBook::Iterator::Iterator( const AddressBook::Iterator &i ) 78AddressBook::Iterator::Iterator( const AddressBook::Iterator &i )
79{ 79{
80 d = new IteratorData; 80 d = new IteratorData;
81 d->mIt = i.d->mIt; 81 d->mIt = i.d->mIt;
82} 82}
83 83
84AddressBook::Iterator &AddressBook::Iterator::operator=( const AddressBook::Iterator &i ) 84AddressBook::Iterator &AddressBook::Iterator::operator=( const AddressBook::Iterator &i )
85{ 85{
86 if( this == &i ) return *this; // guard against self assignment 86 if( this == &i ) return *this; // guard against self assignment
87 delete d; // delete the old data the Iterator was completely constructed before 87 delete d; // delete the old data the Iterator was completely constructed before
88 d = new IteratorData; 88 d = new IteratorData;
89 d->mIt = i.d->mIt; 89 d->mIt = i.d->mIt;
90 return *this; 90 return *this;
91} 91}
92 92
93AddressBook::Iterator::~Iterator() 93AddressBook::Iterator::~Iterator()
94{ 94{
95 delete d; 95 delete d;
96} 96}
97 97
98const Addressee &AddressBook::Iterator::operator*() const 98const Addressee &AddressBook::Iterator::operator*() const
99{ 99{
100 return *(d->mIt); 100 return *(d->mIt);
101} 101}
102 102
103Addressee &AddressBook::Iterator::operator*() 103Addressee &AddressBook::Iterator::operator*()
104{ 104{
105 return *(d->mIt); 105 return *(d->mIt);
106} 106}
107 107
108Addressee *AddressBook::Iterator::operator->() 108Addressee *AddressBook::Iterator::operator->()
109{ 109{
110 return &(*(d->mIt)); 110 return &(*(d->mIt));
111} 111}
112 112
113AddressBook::Iterator &AddressBook::Iterator::operator++() 113AddressBook::Iterator &AddressBook::Iterator::operator++()
114{ 114{
115 (d->mIt)++; 115 (d->mIt)++;
116 return *this; 116 return *this;
117} 117}
118 118
119AddressBook::Iterator &AddressBook::Iterator::operator++(int) 119AddressBook::Iterator &AddressBook::Iterator::operator++(int)
120{ 120{
121 (d->mIt)++; 121 (d->mIt)++;
122 return *this; 122 return *this;
123} 123}
124 124
125AddressBook::Iterator &AddressBook::Iterator::operator--() 125AddressBook::Iterator &AddressBook::Iterator::operator--()
126{ 126{
127 (d->mIt)--; 127 (d->mIt)--;
128 return *this; 128 return *this;
129} 129}
130 130
131AddressBook::Iterator &AddressBook::Iterator::operator--(int) 131AddressBook::Iterator &AddressBook::Iterator::operator--(int)
132{ 132{
133 (d->mIt)--; 133 (d->mIt)--;
134 return *this; 134 return *this;
135} 135}
136 136
137bool AddressBook::Iterator::operator==( const Iterator &it ) 137bool AddressBook::Iterator::operator==( const Iterator &it )
138{ 138{
139 return ( d->mIt == it.d->mIt ); 139 return ( d->mIt == it.d->mIt );
140} 140}
141 141
142bool AddressBook::Iterator::operator!=( const Iterator &it ) 142bool AddressBook::Iterator::operator!=( const Iterator &it )
143{ 143{
144 return ( d->mIt != it.d->mIt ); 144 return ( d->mIt != it.d->mIt );
145} 145}
146 146
147 147
148AddressBook::ConstIterator::ConstIterator() 148AddressBook::ConstIterator::ConstIterator()
149{ 149{
150 d = new ConstIteratorData; 150 d = new ConstIteratorData;
151} 151}
152 152
153AddressBook::ConstIterator::ConstIterator( const AddressBook::ConstIterator &i ) 153AddressBook::ConstIterator::ConstIterator( const AddressBook::ConstIterator &i )
154{ 154{
155 d = new ConstIteratorData; 155 d = new ConstIteratorData;
156 d->mIt = i.d->mIt; 156 d->mIt = i.d->mIt;
157} 157}
158 158
159AddressBook::ConstIterator &AddressBook::ConstIterator::operator=( const AddressBook::ConstIterator &i ) 159AddressBook::ConstIterator &AddressBook::ConstIterator::operator=( const AddressBook::ConstIterator &i )
160{ 160{
161 if( this == &i ) return *this; // guard for self assignment 161 if( this == &i ) return *this; // guard for self assignment
162 delete d; // delete the old data because the Iterator was really constructed before 162 delete d; // delete the old data because the Iterator was really constructed before
163 d = new ConstIteratorData; 163 d = new ConstIteratorData;
164 d->mIt = i.d->mIt; 164 d->mIt = i.d->mIt;
165 return *this; 165 return *this;
166} 166}
167 167
168AddressBook::ConstIterator::~ConstIterator() 168AddressBook::ConstIterator::~ConstIterator()
169{ 169{
170 delete d; 170 delete d;
171} 171}
172 172
173const Addressee &AddressBook::ConstIterator::operator*() const 173const Addressee &AddressBook::ConstIterator::operator*() const
174{ 174{
175 return *(d->mIt); 175 return *(d->mIt);
176} 176}
177 177
178const Addressee* AddressBook::ConstIterator::operator->() const 178const Addressee* AddressBook::ConstIterator::operator->() const
179{ 179{
180 return &(*(d->mIt)); 180 return &(*(d->mIt));
181} 181}
182 182
183AddressBook::ConstIterator &AddressBook::ConstIterator::operator++() 183AddressBook::ConstIterator &AddressBook::ConstIterator::operator++()
184{ 184{
185 (d->mIt)++; 185 (d->mIt)++;
186 return *this; 186 return *this;
187} 187}
188 188
189AddressBook::ConstIterator &AddressBook::ConstIterator::operator++(int) 189AddressBook::ConstIterator &AddressBook::ConstIterator::operator++(int)
190{ 190{
191 (d->mIt)++; 191 (d->mIt)++;
192 return *this; 192 return *this;
193} 193}
194 194
195AddressBook::ConstIterator &AddressBook::ConstIterator::operator--() 195AddressBook::ConstIterator &AddressBook::ConstIterator::operator--()
196{ 196{
197 (d->mIt)--; 197 (d->mIt)--;
198 return *this; 198 return *this;
199} 199}
200 200
201AddressBook::ConstIterator &AddressBook::ConstIterator::operator--(int) 201AddressBook::ConstIterator &AddressBook::ConstIterator::operator--(int)
202{ 202{
203 (d->mIt)--; 203 (d->mIt)--;
204 return *this; 204 return *this;
205} 205}
206 206
207bool AddressBook::ConstIterator::operator==( const ConstIterator &it ) 207bool AddressBook::ConstIterator::operator==( const ConstIterator &it )
208{ 208{
209 return ( d->mIt == it.d->mIt ); 209 return ( d->mIt == it.d->mIt );
210} 210}
211 211
212bool AddressBook::ConstIterator::operator!=( const ConstIterator &it ) 212bool AddressBook::ConstIterator::operator!=( const ConstIterator &it )
213{ 213{
214 return ( d->mIt != it.d->mIt ); 214 return ( d->mIt != it.d->mIt );
215} 215}
216 216
217 217
218AddressBook::AddressBook() 218AddressBook::AddressBook()
219{ 219{
220 init(0, "contact"); 220 init(0, "contact");
221} 221}
222 222
223AddressBook::AddressBook( const QString &config ) 223AddressBook::AddressBook( const QString &config )
224{ 224{
225 init(config, "contact"); 225 init(config, "contact");
226} 226}
227 227
228AddressBook::AddressBook( const QString &config, const QString &family ) 228AddressBook::AddressBook( const QString &config, const QString &family )
229{ 229{
230 init(config, family); 230 init(config, family);
231 231
232} 232}
233 233
234// the default family is "contact" 234// the default family is "contact"
235void AddressBook::init(const QString &config, const QString &family ) 235void AddressBook::init(const QString &config, const QString &family )
236{ 236{
237 d = new AddressBookData; 237 d = new AddressBookData;
238 QString fami = family; 238 QString fami = family;
239 qDebug("new ab "); 239 qDebug("new ab ");
240 if (config != 0) { 240 if (config != 0) {
241 qDebug("config != 0 "); 241 qDebug("config != 0 ");
242 if ( family == "syncContact" ) { 242 if ( family == "syncContact" ) {
243 qDebug("creating sync config "); 243 qDebug("creating sync config ");
244 fami = "contact"; 244 fami = "contact";
245 KConfig* con = new KConfig( locateLocal("config", "syncContactrc") ); 245 KConfig* con = new KConfig( locateLocal("config", "syncContactrc") );
246 con->setGroup( "General" ); 246 con->setGroup( "General" );
247 con->writeEntry( "ResourceKeys", QString("sync") ); 247 con->writeEntry( "ResourceKeys", QString("sync") );
248 con->writeEntry( "Standard", QString("sync") ); 248 con->writeEntry( "Standard", QString("sync") );
249 con->setGroup( "Resource_sync" ); 249 con->setGroup( "Resource_sync" );
250 con->writeEntry( "FileFormat", QString("vcard") ); 250 con->writeEntry( "FileFormat", QString("vcard") );
251 con->writeEntry( "FileName", config ); 251 con->writeEntry( "FileName", config );
252 con->writeEntry( "ResourceIdentifier", QString("sync") ); 252 con->writeEntry( "ResourceIdentifier", QString("sync") );
253 con->writeEntry( "ResourceName", QString("sync_res") ); 253 con->writeEntry( "ResourceName", QString("sync_res") );
254 con->writeEntry( "ResourceType", QString("file") ); 254 con->writeEntry( "ResourceType", QString("file") );
255 //con->sync(); 255 //con->sync();
256 d->mConfig = con; 256 d->mConfig = con;
257 } 257 }
258 else 258 else
259 d->mConfig = new KConfig( locateLocal("config", config) ); 259 d->mConfig = new KConfig( locateLocal("config", config) );
260// qDebug("AddressBook::init 1 config=%s",config.latin1() ); 260// qDebug("AddressBook::init 1 config=%s",config.latin1() );
261 } 261 }
262 else { 262 else {
263 d->mConfig = 0; 263 d->mConfig = 0;
264// qDebug("AddressBook::init 1 config=0"); 264// qDebug("AddressBook::init 1 config=0");
265 } 265 }
266 266
267//US d->mErrorHandler = 0; 267//US d->mErrorHandler = 0;
268 d->mManager = new KRES::Manager<Resource>( fami, false ); 268 d->mManager = new KRES::Manager<Resource>( fami, false );
269 d->mManager->readConfig( d->mConfig ); 269 d->mManager->readConfig( d->mConfig );
270 if ( family == "syncContact" ) { 270 if ( family == "syncContact" ) {
271 KRES::Manager<Resource> *manager = d->mManager; 271 KRES::Manager<Resource> *manager = d->mManager;
272 KRES::Manager<Resource>::ActiveIterator it; 272 KRES::Manager<Resource>::ActiveIterator it;
273 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) { 273 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) {
274 (*it)->setAddressBook( this ); 274 (*it)->setAddressBook( this );
275 if ( !(*it)->open() ) 275 if ( !(*it)->open() )
276 error( QString( "Unable to open resource '%1'!" ).arg( (*it)->resourceName() ) ); 276 error( QString( "Unable to open resource '%1'!" ).arg( (*it)->resourceName() ) );
277 } 277 }
278 Resource *res = standardResource(); 278 Resource *res = standardResource();
279 if ( !res ) { 279 if ( !res ) {
280 qDebug("ERROR: no standard resource"); 280 qDebug("ERROR: no standard resource");
281 res = manager->createResource( "file" ); 281 res = manager->createResource( "file" );
282 if ( res ) 282 if ( res )
283 { 283 {
284 addResource( res ); 284 addResource( res );
285 } 285 }
286 else 286 else
287 qDebug(" No resource available!!!"); 287 qDebug(" No resource available!!!");
288 } 288 }
289 setStandardResource( res ); 289 setStandardResource( res );
290 manager->writeConfig(); 290 manager->writeConfig();
291 } 291 }
292 addCustomField( i18n( "Department" ), KABC::Field::Organization, 292 addCustomField( i18n( "Department" ), KABC::Field::Organization,
293 "X-Department", "KADDRESSBOOK" ); 293 "X-Department", "KADDRESSBOOK" );
294 addCustomField( i18n( "Profession" ), KABC::Field::Organization, 294 addCustomField( i18n( "Profession" ), KABC::Field::Organization,
295 "X-Profession", "KADDRESSBOOK" ); 295 "X-Profession", "KADDRESSBOOK" );
296 addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization, 296 addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization,
297 "X-AssistantsName", "KADDRESSBOOK" ); 297 "X-AssistantsName", "KADDRESSBOOK" );
298 addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization, 298 addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization,
299 "X-ManagersName", "KADDRESSBOOK" ); 299 "X-ManagersName", "KADDRESSBOOK" );
300 addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal, 300 addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal,
301 "X-SpousesName", "KADDRESSBOOK" ); 301 "X-SpousesName", "KADDRESSBOOK" );
302 addCustomField( i18n( "Office" ), KABC::Field::Personal, 302 addCustomField( i18n( "Office" ), KABC::Field::Personal,
303 "X-Office", "KADDRESSBOOK" ); 303 "X-Office", "KADDRESSBOOK" );
304 addCustomField( i18n( "IM Address" ), KABC::Field::Personal, 304 addCustomField( i18n( "IM Address" ), KABC::Field::Personal,
305 "X-IMAddress", "KADDRESSBOOK" ); 305 "X-IMAddress", "KADDRESSBOOK" );
306 addCustomField( i18n( "Anniversary" ), KABC::Field::Personal, 306 addCustomField( i18n( "Anniversary" ), KABC::Field::Personal,
307 "X-Anniversary", "KADDRESSBOOK" ); 307 "X-Anniversary", "KADDRESSBOOK" );
308 308
309 //US added this field to become compatible with Opie/qtopia addressbook 309 //US added this field to become compatible with Opie/qtopia addressbook
310 // values can be "female" or "male" or "". An empty field represents undefined. 310 // values can be "female" or "male" or "". An empty field represents undefined.
311 addCustomField( i18n( "Gender" ), KABC::Field::Personal, 311 addCustomField( i18n( "Gender" ), KABC::Field::Personal,
312 "X-Gender", "KADDRESSBOOK" ); 312 "X-Gender", "KADDRESSBOOK" );
313 addCustomField( i18n( "Children" ), KABC::Field::Personal, 313 addCustomField( i18n( "Children" ), KABC::Field::Personal,
314 "X-Children", "KADDRESSBOOK" ); 314 "X-Children", "KADDRESSBOOK" );
315 addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal, 315 addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal,
316 "X-FreeBusyUrl", "KADDRESSBOOK" ); 316 "X-FreeBusyUrl", "KADDRESSBOOK" );
317 addCustomField( i18n( "ExternalID" ), KABC::Field::Personal, 317 addCustomField( i18n( "ExternalID" ), KABC::Field::Personal,
318 "X-ExternalID", "KADDRESSBOOK" ); 318 "X-ExternalID", "KADDRESSBOOK" );
319} 319}
320 320
321AddressBook::~AddressBook() 321AddressBook::~AddressBook()
322{ 322{
323 delete d->mConfig; d->mConfig = 0; 323 delete d->mConfig; d->mConfig = 0;
324 delete d->mManager; d->mManager = 0; 324 delete d->mManager; d->mManager = 0;
325//US delete d->mErrorHandler; d->mErrorHandler = 0; 325//US delete d->mErrorHandler; d->mErrorHandler = 0;
326 delete d; d = 0; 326 delete d; d = 0;
327} 327}
328 328
329bool AddressBook::load() 329bool AddressBook::load()
330{ 330{
331 331
332 332
333 clear(); 333 clear();
334 334
335 KRES::Manager<Resource>::ActiveIterator it; 335 KRES::Manager<Resource>::ActiveIterator it;
336 bool ok = true; 336 bool ok = true;
337 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) 337 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it )
338 if ( !(*it)->load() ) { 338 if ( !(*it)->load() ) {
339 error( i18n("Unable to load resource '%1'").arg( (*it)->resourceName() ) ); 339 error( i18n("Unable to load resource '%1'").arg( (*it)->resourceName() ) );
340 ok = false; 340 ok = false;
341 } 341 }
342 342
343 // mark all addressees as unchanged 343 // mark all addressees as unchanged
344 Addressee::List::Iterator addrIt; 344 Addressee::List::Iterator addrIt;
345 for ( addrIt = d->mAddressees.begin(); addrIt != d->mAddressees.end(); ++addrIt ) 345 for ( addrIt = d->mAddressees.begin(); addrIt != d->mAddressees.end(); ++addrIt )
346 (*addrIt).setChanged( false ); 346 (*addrIt).setChanged( false );
347 347
348 return ok; 348 return ok;
349} 349}
350 350
351bool AddressBook::save( Ticket *ticket ) 351bool AddressBook::save( Ticket *ticket )
352{ 352{
353 kdDebug(5700) << "AddressBook::save()"<< endl; 353 kdDebug(5700) << "AddressBook::save()"<< endl;
354 354
355 if ( ticket->resource() ) { 355 if ( ticket->resource() ) {
356 deleteRemovedAddressees(); 356 deleteRemovedAddressees();
357 return ticket->resource()->save( ticket ); 357 return ticket->resource()->save( ticket );
358 } 358 }
359 359
360 return false; 360 return false;
361} 361}
362bool AddressBook::saveAB() 362bool AddressBook::saveAB()
363{ 363{
364 bool ok = true; 364 bool ok = true;
365 365
366 deleteRemovedAddressees(); 366 deleteRemovedAddressees();
367 367
368 KRES::Manager<Resource>::ActiveIterator it; 368 KRES::Manager<Resource>::ActiveIterator it;
369 KRES::Manager<Resource> *manager = d->mManager; 369 KRES::Manager<Resource> *manager = d->mManager;
370 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) { 370 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) {
371 if ( !(*it)->readOnly() && (*it)->isOpen() ) { 371 if ( !(*it)->readOnly() && (*it)->isOpen() ) {
372 Ticket *ticket = requestSaveTicket( *it ); 372 Ticket *ticket = requestSaveTicket( *it );
373// qDebug("StdAddressBook::save '%s'", (*it)->resourceName().latin1() ); 373// qDebug("StdAddressBook::save '%s'", (*it)->resourceName().latin1() );
374 if ( !ticket ) { 374 if ( !ticket ) {
375 error( i18n( "Unable to save to resource '%1'. It is locked." ) 375 error( i18n( "Unable to save to resource '%1'. It is locked." )
376 .arg( (*it)->resourceName() ) ); 376 .arg( (*it)->resourceName() ) );
377 return false; 377 return false;
378 } 378 }
379 379
380 //if ( !save( ticket ) ) 380 //if ( !save( ticket ) )
381 if ( ticket->resource() ) { 381 if ( ticket->resource() ) {
382 if ( ! ticket->resource()->save( ticket ) ) 382 if ( ! ticket->resource()->save( ticket ) )
383 ok = false; 383 ok = false;
384 } else 384 } else
385 ok = false; 385 ok = false;
386 386
387 } 387 }
388 } 388 }
389 return ok; 389 return ok;
390} 390}
391 391
392AddressBook::Iterator AddressBook::begin() 392AddressBook::Iterator AddressBook::begin()
393{ 393{
394 Iterator it = Iterator(); 394 Iterator it = Iterator();
395 it.d->mIt = d->mAddressees.begin(); 395 it.d->mIt = d->mAddressees.begin();
396 return it; 396 return it;
397} 397}
398 398
399AddressBook::ConstIterator AddressBook::begin() const 399AddressBook::ConstIterator AddressBook::begin() const
400{ 400{
401 ConstIterator it = ConstIterator(); 401 ConstIterator it = ConstIterator();
402 it.d->mIt = d->mAddressees.begin(); 402 it.d->mIt = d->mAddressees.begin();
403 return it; 403 return it;
404} 404}
405 405
406AddressBook::Iterator AddressBook::end() 406AddressBook::Iterator AddressBook::end()
407{ 407{
408 Iterator it = Iterator(); 408 Iterator it = Iterator();
409 it.d->mIt = d->mAddressees.end(); 409 it.d->mIt = d->mAddressees.end();
410 return it; 410 return it;
411} 411}
412 412
413AddressBook::ConstIterator AddressBook::end() const 413AddressBook::ConstIterator AddressBook::end() const
414{ 414{
415 ConstIterator it = ConstIterator(); 415 ConstIterator it = ConstIterator();
416 it.d->mIt = d->mAddressees.end(); 416 it.d->mIt = d->mAddressees.end();
417 return it; 417 return it;
418} 418}
419 419
420void AddressBook::clear() 420void AddressBook::clear()
421{ 421{
422 d->mAddressees.clear(); 422 d->mAddressees.clear();
423} 423}
424 424
425Ticket *AddressBook::requestSaveTicket( Resource *resource ) 425Ticket *AddressBook::requestSaveTicket( Resource *resource )
426{ 426{
427 kdDebug(5700) << "AddressBook::requestSaveTicket()" << endl; 427 kdDebug(5700) << "AddressBook::requestSaveTicket()" << endl;
428 428
429 if ( !resource ) 429 if ( !resource )
430 { 430 {
431 qDebug("AddressBook::requestSaveTicket no resource" ); 431 qDebug("AddressBook::requestSaveTicket no resource" );
432 resource = standardResource(); 432 resource = standardResource();
433 } 433 }
434 434
435 KRES::Manager<Resource>::ActiveIterator it; 435 KRES::Manager<Resource>::ActiveIterator it;
436 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) { 436 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) {
437 if ( (*it) == resource ) { 437 if ( (*it) == resource ) {
438 if ( (*it)->readOnly() || !(*it)->isOpen() ) 438 if ( (*it)->readOnly() || !(*it)->isOpen() )
439 return 0; 439 return 0;
440 else 440 else
441 return (*it)->requestSaveTicket(); 441 return (*it)->requestSaveTicket();
442 } 442 }
443 } 443 }
444 444
445 return 0; 445 return 0;
446} 446}
447 447
448void AddressBook::insertAddressee( const Addressee &a ) 448void AddressBook::insertAddressee( const Addressee &a, bool setRev )
449{ 449{
450 Addressee::List::Iterator it; 450 Addressee::List::Iterator it;
451 for ( it = d->mAddressees.begin(); it != d->mAddressees.end(); ++it ) { 451 for ( it = d->mAddressees.begin(); it != d->mAddressees.end(); ++it ) {
452 if ( a.uid() == (*it).uid() ) { 452 if ( a.uid() == (*it).uid() ) {
453 bool changed = false; 453 bool changed = false;
454 Addressee addr = a; 454 Addressee addr = a;
455 if ( addr != (*it) ) 455 if ( addr != (*it) )
456 changed = true; 456 changed = true;
457 457
458 (*it) = a; 458 (*it) = a;
459 if ( (*it).resource() == 0 ) 459 if ( (*it).resource() == 0 )
460 (*it).setResource( standardResource() ); 460 (*it).setResource( standardResource() );
461 461
462 if ( changed ) { 462 if ( changed ) {
463 (*it).setRevision( QDateTime::currentDateTime() ); 463 if ( setRev )
464 (*it).setRevision( QDateTime::currentDateTime() );
464 (*it).setChanged( true ); 465 (*it).setChanged( true );
465 } 466 }
466 467
467 return; 468 return;
468 } 469 }
469 } 470 }
470 d->mAddressees.append( a ); 471 d->mAddressees.append( a );
471 Addressee& addr = d->mAddressees.last(); 472 Addressee& addr = d->mAddressees.last();
472 if ( addr.resource() == 0 ) 473 if ( addr.resource() == 0 )
473 addr.setResource( standardResource() ); 474 addr.setResource( standardResource() );
474 475
475 addr.setChanged( true ); 476 addr.setChanged( true );
476} 477}
477 478
478void AddressBook::removeAddressee( const Addressee &a ) 479void AddressBook::removeAddressee( const Addressee &a )
479{ 480{
480 Iterator it; 481 Iterator it;
481 for ( it = begin(); it != end(); ++it ) { 482 for ( it = begin(); it != end(); ++it ) {
482 if ( a.uid() == (*it).uid() ) { 483 if ( a.uid() == (*it).uid() ) {
483 removeAddressee( it ); 484 removeAddressee( it );
484 return; 485 return;
485 } 486 }
486 } 487 }
487} 488}
488 489
489void AddressBook::removeAddressee( const Iterator &it ) 490void AddressBook::removeAddressee( const Iterator &it )
490{ 491{
491 d->mRemovedAddressees.append( (*it) ); 492 d->mRemovedAddressees.append( (*it) );
492 d->mAddressees.remove( it.d->mIt ); 493 d->mAddressees.remove( it.d->mIt );
493} 494}
494 495
495AddressBook::Iterator AddressBook::find( const Addressee &a ) 496AddressBook::Iterator AddressBook::find( const Addressee &a )
496{ 497{
497 Iterator it; 498 Iterator it;
498 for ( it = begin(); it != end(); ++it ) { 499 for ( it = begin(); it != end(); ++it ) {
499 if ( a.uid() == (*it).uid() ) { 500 if ( a.uid() == (*it).uid() ) {
500 return it; 501 return it;
501 } 502 }
502 } 503 }
503 return end(); 504 return end();
504} 505}
505 506
506Addressee AddressBook::findByUid( const QString &uid ) 507Addressee AddressBook::findByUid( const QString &uid )
507{ 508{
508 Iterator it; 509 Iterator it;
509 for ( it = begin(); it != end(); ++it ) { 510 for ( it = begin(); it != end(); ++it ) {
510 if ( uid == (*it).uid() ) { 511 if ( uid == (*it).uid() ) {
511 return *it; 512 return *it;
512 } 513 }
513 } 514 }
514 return Addressee(); 515 return Addressee();
515} 516}
516Addressee::List AddressBook::getExternLastSyncAddressees() 517Addressee::List AddressBook::getExternLastSyncAddressees()
517{ 518{
518 Addressee::List results; 519 Addressee::List results;
519 520
520 Iterator it; 521 Iterator it;
521 for ( it = begin(); it != end(); ++it ) { 522 for ( it = begin(); it != end(); ++it ) {
522 if ( (*it).uid().left( 20 ) == "last-syncAddressee-" ) { 523 if ( (*it).uid().left( 20 ) == "last-syncAddressee-" ) {
523 if ( (*it).familyName().left(3) == "E: " ) 524 if ( (*it).familyName().left(3) == "E: " )
524 results.append( *it ); 525 results.append( *it );
525 } 526 }
526 } 527 }
527 528
528 return results; 529 return results;
529} 530}
530void AddressBook::resetTempSyncStat() 531void AddressBook::resetTempSyncStat()
531{ 532{
532 Iterator it; 533 Iterator it;
533 for ( it = begin(); it != end(); ++it ) { 534 for ( it = begin(); it != end(); ++it ) {
534 (*it).setTempSyncStat ( SYNC_TEMPSTATE_INITIAL ); 535 (*it).setTempSyncStat ( SYNC_TEMPSTATE_INITIAL );
535 } 536 }
536 537
537} 538}
538 539
539QStringList AddressBook:: uidList() 540QStringList AddressBook:: uidList()
540{ 541{
541 QStringList results; 542 QStringList results;
542 Iterator it; 543 Iterator it;
543 for ( it = begin(); it != end(); ++it ) { 544 for ( it = begin(); it != end(); ++it ) {
544 results.append( (*it).uid() ); 545 results.append( (*it).uid() );
545 } 546 }
546 return results; 547 return results;
547} 548}
548 549
549 550
550Addressee::List AddressBook::allAddressees() 551Addressee::List AddressBook::allAddressees()
551{ 552{
552 return d->mAddressees; 553 return d->mAddressees;
553} 554}
554 555
555Addressee::List AddressBook::findByName( const QString &name ) 556Addressee::List AddressBook::findByName( const QString &name )
556{ 557{
557 Addressee::List results; 558 Addressee::List results;
558 559
559 Iterator it; 560 Iterator it;
560 for ( it = begin(); it != end(); ++it ) { 561 for ( it = begin(); it != end(); ++it ) {
561 if ( name == (*it).realName() ) { 562 if ( name == (*it).realName() ) {
562 results.append( *it ); 563 results.append( *it );
563 } 564 }
564 } 565 }
565 566
566 return results; 567 return results;
567} 568}
568 569
569Addressee::List AddressBook::findByEmail( const QString &email ) 570Addressee::List AddressBook::findByEmail( const QString &email )
570{ 571{
571 Addressee::List results; 572 Addressee::List results;
572 QStringList mailList; 573 QStringList mailList;
573 574
574 Iterator it; 575 Iterator it;
575 for ( it = begin(); it != end(); ++it ) { 576 for ( it = begin(); it != end(); ++it ) {
576 mailList = (*it).emails(); 577 mailList = (*it).emails();
577 for ( QStringList::Iterator ite = mailList.begin(); ite != mailList.end(); ++ite ) { 578 for ( QStringList::Iterator ite = mailList.begin(); ite != mailList.end(); ++ite ) {
578 if ( email == (*ite) ) { 579 if ( email == (*ite) ) {
579 results.append( *it ); 580 results.append( *it );
580 } 581 }
581 } 582 }
582 } 583 }
583 584
584 return results; 585 return results;
585} 586}
586 587
587Addressee::List AddressBook::findByCategory( const QString &category ) 588Addressee::List AddressBook::findByCategory( const QString &category )
588{ 589{
589 Addressee::List results; 590 Addressee::List results;
590 591
591 Iterator it; 592 Iterator it;
592 for ( it = begin(); it != end(); ++it ) { 593 for ( it = begin(); it != end(); ++it ) {
593 if ( (*it).hasCategory( category) ) { 594 if ( (*it).hasCategory( category) ) {
594 results.append( *it ); 595 results.append( *it );
595 } 596 }
596 } 597 }
597 598
598 return results; 599 return results;
599} 600}
600 601
601void AddressBook::dump() const 602void AddressBook::dump() const
602{ 603{
603 kdDebug(5700) << "AddressBook::dump() --- begin ---" << endl; 604 kdDebug(5700) << "AddressBook::dump() --- begin ---" << endl;
604 605
605 ConstIterator it; 606 ConstIterator it;
606 for( it = begin(); it != end(); ++it ) { 607 for( it = begin(); it != end(); ++it ) {
607 (*it).dump(); 608 (*it).dump();
608 } 609 }
609 610
610 kdDebug(5700) << "AddressBook::dump() --- end ---" << endl; 611 kdDebug(5700) << "AddressBook::dump() --- end ---" << endl;
611} 612}
612 613
613QString AddressBook::identifier() 614QString AddressBook::identifier()
614{ 615{
615 QStringList identifier; 616 QStringList identifier;
616 617
617 618
618 KRES::Manager<Resource>::ActiveIterator it; 619 KRES::Manager<Resource>::ActiveIterator it;
619 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) { 620 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) {
620 if ( !(*it)->identifier().isEmpty() ) 621 if ( !(*it)->identifier().isEmpty() )
621 identifier.append( (*it)->identifier() ); 622 identifier.append( (*it)->identifier() );
622 } 623 }
623 624
624 return identifier.join( ":" ); 625 return identifier.join( ":" );
625} 626}
626 627
627Field::List AddressBook::fields( int category ) 628Field::List AddressBook::fields( int category )
628{ 629{
629 if ( d->mAllFields.isEmpty() ) { 630 if ( d->mAllFields.isEmpty() ) {
630 d->mAllFields = Field::allFields(); 631 d->mAllFields = Field::allFields();
631 } 632 }
632 633
633 if ( category == Field::All ) return d->mAllFields; 634 if ( category == Field::All ) return d->mAllFields;
634 635
635 Field::List result; 636 Field::List result;
636 Field::List::ConstIterator it; 637 Field::List::ConstIterator it;
637 for( it = d->mAllFields.begin(); it != d->mAllFields.end(); ++it ) { 638 for( it = d->mAllFields.begin(); it != d->mAllFields.end(); ++it ) {
638 if ( (*it)->category() & category ) result.append( *it ); 639 if ( (*it)->category() & category ) result.append( *it );
639 } 640 }
640 641
641 return result; 642 return result;
642} 643}
643 644
644bool AddressBook::addCustomField( const QString &label, int category, 645bool AddressBook::addCustomField( const QString &label, int category,
645 const QString &key, const QString &app ) 646 const QString &key, const QString &app )
646{ 647{
647 if ( d->mAllFields.isEmpty() ) { 648 if ( d->mAllFields.isEmpty() ) {
648 d->mAllFields = Field::allFields(); 649 d->mAllFields = Field::allFields();
649 } 650 }
650//US QString a = app.isNull() ? KGlobal::instance()->instanceName() : app; 651//US QString a = app.isNull() ? KGlobal::instance()->instanceName() : app;
651 QString a = app.isNull() ? KGlobal::getAppName() : app; 652 QString a = app.isNull() ? KGlobal::getAppName() : app;
652 653
653 QString k = key.isNull() ? label : key; 654 QString k = key.isNull() ? label : key;
654 655
655 Field *field = Field::createCustomField( label, category, k, a ); 656 Field *field = Field::createCustomField( label, category, k, a );
656 657
657 if ( !field ) return false; 658 if ( !field ) return false;
658 659
659 d->mAllFields.append( field ); 660 d->mAllFields.append( field );
660 661
661 return true; 662 return true;
662} 663}
663 664
664QDataStream &KABC::operator<<( QDataStream &s, const AddressBook &ab ) 665QDataStream &KABC::operator<<( QDataStream &s, const AddressBook &ab )
665{ 666{
666 if (!ab.d) return s; 667 if (!ab.d) return s;
667 668
668 return s << ab.d->mAddressees; 669 return s << ab.d->mAddressees;
669} 670}
670 671
671QDataStream &KABC::operator>>( QDataStream &s, AddressBook &ab ) 672QDataStream &KABC::operator>>( QDataStream &s, AddressBook &ab )
672{ 673{
673 if (!ab.d) return s; 674 if (!ab.d) return s;
674 675
675 s >> ab.d->mAddressees; 676 s >> ab.d->mAddressees;
676 677
677 return s; 678 return s;
678} 679}
679 680
680bool AddressBook::addResource( Resource *resource ) 681bool AddressBook::addResource( Resource *resource )
681{ 682{
682 if ( !resource->open() ) { 683 if ( !resource->open() ) {
683 kdDebug(5700) << "AddressBook::addResource(): can't add resource" << endl; 684 kdDebug(5700) << "AddressBook::addResource(): can't add resource" << endl;
684 return false; 685 return false;
685 } 686 }
686 687
687 resource->setAddressBook( this ); 688 resource->setAddressBook( this );
688 689
689 d->mManager->add( resource ); 690 d->mManager->add( resource );
690 return true; 691 return true;
691} 692}
692 693
693bool AddressBook::removeResource( Resource *resource ) 694bool AddressBook::removeResource( Resource *resource )
694{ 695{
695 resource->close(); 696 resource->close();
696 697
697 if ( resource == standardResource() ) 698 if ( resource == standardResource() )
698 d->mManager->setStandardResource( 0 ); 699 d->mManager->setStandardResource( 0 );
699 700
700 resource->setAddressBook( 0 ); 701 resource->setAddressBook( 0 );
701 702
702 d->mManager->remove( resource ); 703 d->mManager->remove( resource );
703 return true; 704 return true;
704} 705}
705 706
706QPtrList<Resource> AddressBook::resources() 707QPtrList<Resource> AddressBook::resources()
707{ 708{
708 QPtrList<Resource> list; 709 QPtrList<Resource> list;
709 710
710// qDebug("AddressBook::resources() 1"); 711// qDebug("AddressBook::resources() 1");
711 712
712 KRES::Manager<Resource>::ActiveIterator it; 713 KRES::Manager<Resource>::ActiveIterator it;
713 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) 714 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it )
714 list.append( *it ); 715 list.append( *it );
715 716
716 return list; 717 return list;
717} 718}
718 719
719/*US 720/*US
720void AddressBook::setErrorHandler( ErrorHandler *handler ) 721void AddressBook::setErrorHandler( ErrorHandler *handler )
721{ 722{
722 delete d->mErrorHandler; 723 delete d->mErrorHandler;
723 d->mErrorHandler = handler; 724 d->mErrorHandler = handler;
724} 725}
725*/ 726*/
726 727
727void AddressBook::error( const QString& msg ) 728void AddressBook::error( const QString& msg )
728{ 729{
729/*US 730/*US
730 if ( !d->mErrorHandler ) // create default error handler 731 if ( !d->mErrorHandler ) // create default error handler
731 d->mErrorHandler = new ConsoleErrorHandler; 732 d->mErrorHandler = new ConsoleErrorHandler;
732 733
733 if ( d->mErrorHandler ) 734 if ( d->mErrorHandler )
734 d->mErrorHandler->error( msg ); 735 d->mErrorHandler->error( msg );
735 else 736 else
736 kdError(5700) << "no error handler defined" << endl; 737 kdError(5700) << "no error handler defined" << endl;
737*/ 738*/
738 kdDebug(5700) << "msg" << endl; 739 kdDebug(5700) << "msg" << endl;
739 qDebug(msg); 740 qDebug(msg);
740} 741}
741 742
742void AddressBook::deleteRemovedAddressees() 743void AddressBook::deleteRemovedAddressees()
743{ 744{
744 Addressee::List::Iterator it; 745 Addressee::List::Iterator it;
745 for ( it = d->mRemovedAddressees.begin(); it != d->mRemovedAddressees.end(); ++it ) { 746 for ( it = d->mRemovedAddressees.begin(); it != d->mRemovedAddressees.end(); ++it ) {
746 Resource *resource = (*it).resource(); 747 Resource *resource = (*it).resource();
747 if ( resource && !resource->readOnly() && resource->isOpen() ) 748 if ( resource && !resource->readOnly() && resource->isOpen() )
748 resource->removeAddressee( *it ); 749 resource->removeAddressee( *it );
749 } 750 }
750 751
751 d->mRemovedAddressees.clear(); 752 d->mRemovedAddressees.clear();
752} 753}
753 754
754void AddressBook::setStandardResource( Resource *resource ) 755void AddressBook::setStandardResource( Resource *resource )
755{ 756{
756// qDebug("AddressBook::setStandardResource 1"); 757// qDebug("AddressBook::setStandardResource 1");
757 d->mManager->setStandardResource( resource ); 758 d->mManager->setStandardResource( resource );
758} 759}
759 760
760Resource *AddressBook::standardResource() 761Resource *AddressBook::standardResource()
761{ 762{
762 return d->mManager->standardResource(); 763 return d->mManager->standardResource();
763} 764}
764 765
765KRES::Manager<Resource> *AddressBook::resourceManager() 766KRES::Manager<Resource> *AddressBook::resourceManager()
766{ 767{
767 return d->mManager; 768 return d->mManager;
768} 769}
769 770
770void AddressBook::cleanUp() 771void AddressBook::cleanUp()
771{ 772{
772 KRES::Manager<Resource>::ActiveIterator it; 773 KRES::Manager<Resource>::ActiveIterator it;
773 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) { 774 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) {
774 if ( !(*it)->readOnly() && (*it)->isOpen() ) 775 if ( !(*it)->readOnly() && (*it)->isOpen() )
775 (*it)->cleanUp(); 776 (*it)->cleanUp();
776 } 777 }
777} 778}