summaryrefslogtreecommitdiffabout
path: root/kabc/addressbook.cpp
Unidiff
Diffstat (limited to 'kabc/addressbook.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addressbook.cpp27
1 files changed, 21 insertions, 6 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp
index 86dc7c2..17b9ba2 100644
--- a/kabc/addressbook.cpp
+++ b/kabc/addressbook.cpp
@@ -43,880 +43,895 @@ $Id$
43#include <klocale.h> 43#include <klocale.h>
44#include <kdebug.h> 44#include <kdebug.h>
45#include <libkcal/syncdefines.h> 45#include <libkcal/syncdefines.h>
46#include "addressbook.h" 46#include "addressbook.h"
47#include "resource.h" 47#include "resource.h"
48 48
49//US #include "addressbook.moc" 49//US #include "addressbook.moc"
50 50
51using namespace KABC; 51using namespace KABC;
52 52
53struct AddressBook::AddressBookData 53struct AddressBook::AddressBookData
54{ 54{
55 Addressee::List mAddressees; 55 Addressee::List mAddressees;
56 Addressee::List mRemovedAddressees; 56 Addressee::List mRemovedAddressees;
57 Field::List mAllFields; 57 Field::List mAllFields;
58 KConfig *mConfig; 58 KConfig *mConfig;
59 KRES::Manager<Resource> *mManager; 59 KRES::Manager<Resource> *mManager;
60//US ErrorHandler *mErrorHandler; 60//US ErrorHandler *mErrorHandler;
61}; 61};
62 62
63struct AddressBook::Iterator::IteratorData 63struct 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 blockLSEchange = false; 237 blockLSEchange = false;
238 d = new AddressBookData; 238 d = new AddressBookData;
239 QString fami = family; 239 QString fami = family;
240 qDebug("new ab "); 240 qDebug("new ab ");
241 if (config != 0) { 241 if (config != 0) {
242 qDebug("config != 0 "); 242 qDebug("config != 0 ");
243 if ( family == "syncContact" ) { 243 if ( family == "syncContact" ) {
244 qDebug("creating sync config "); 244 qDebug("creating sync config ");
245 fami = "contact"; 245 fami = "contact";
246 KConfig* con = new KConfig( locateLocal("config", "syncContactrc") ); 246 KConfig* con = new KConfig( locateLocal("config", "syncContactrc") );
247 con->setGroup( "General" ); 247 con->setGroup( "General" );
248 con->writeEntry( "ResourceKeys", QString("sync") ); 248 con->writeEntry( "ResourceKeys", QString("sync") );
249 con->writeEntry( "Standard", QString("sync") ); 249 con->writeEntry( "Standard", QString("sync") );
250 con->setGroup( "Resource_sync" ); 250 con->setGroup( "Resource_sync" );
251 con->writeEntry( "FileName", config ); 251 con->writeEntry( "FileName", config );
252 con->writeEntry( "FileFormat", QString("vcard") ); 252 con->writeEntry( "FileFormat", QString("vcard") );
253 con->writeEntry( "ResourceIdentifier", QString("sync") ); 253 con->writeEntry( "ResourceIdentifier", QString("sync") );
254 con->writeEntry( "ResourceName", QString("sync_res") ); 254 con->writeEntry( "ResourceName", QString("sync_res") );
255 if ( config.right(4) == ".xml" ) 255 if ( config.right(4) == ".xml" )
256 con->writeEntry( "ResourceType", QString("qtopia") ); 256 con->writeEntry( "ResourceType", QString("qtopia") );
257 else 257 else
258 con->writeEntry( "ResourceType", QString("file") ); 258 con->writeEntry( "ResourceType", QString("file") );
259 //con->sync(); 259 //con->sync();
260 d->mConfig = con; 260 d->mConfig = con;
261 } 261 }
262 else 262 else
263 d->mConfig = new KConfig( locateLocal("config", config) ); 263 d->mConfig = new KConfig( locateLocal("config", config) );
264// qDebug("AddressBook::init 1 config=%s",config.latin1() ); 264// qDebug("AddressBook::init 1 config=%s",config.latin1() );
265 } 265 }
266 else { 266 else {
267 d->mConfig = 0; 267 d->mConfig = 0;
268// qDebug("AddressBook::init 1 config=0"); 268// qDebug("AddressBook::init 1 config=0");
269 } 269 }
270 270
271//US d->mErrorHandler = 0; 271//US d->mErrorHandler = 0;
272 d->mManager = new KRES::Manager<Resource>( fami, false ); 272 d->mManager = new KRES::Manager<Resource>( fami, false );
273 d->mManager->readConfig( d->mConfig ); 273 d->mManager->readConfig( d->mConfig );
274 if ( family == "syncContact" ) { 274 if ( family == "syncContact" ) {
275 KRES::Manager<Resource> *manager = d->mManager; 275 KRES::Manager<Resource> *manager = d->mManager;
276 KRES::Manager<Resource>::ActiveIterator it; 276 KRES::Manager<Resource>::ActiveIterator it;
277 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) { 277 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) {
278 (*it)->setAddressBook( this ); 278 (*it)->setAddressBook( this );
279 if ( !(*it)->open() ) 279 if ( !(*it)->open() )
280 error( QString( "Unable to open resource '%1'!" ).arg( (*it)->resourceName() ) ); 280 error( QString( "Unable to open resource '%1'!" ).arg( (*it)->resourceName() ) );
281 } 281 }
282 Resource *res = standardResource(); 282 Resource *res = standardResource();
283 if ( !res ) { 283 if ( !res ) {
284 qDebug("ERROR: no standard resource"); 284 qDebug("ERROR: no standard resource");
285 res = manager->createResource( "file" ); 285 res = manager->createResource( "file" );
286 if ( res ) 286 if ( res )
287 { 287 {
288 addResource( res ); 288 addResource( res );
289 } 289 }
290 else 290 else
291 qDebug(" No resource available!!!"); 291 qDebug(" No resource available!!!");
292 } 292 }
293 setStandardResource( res ); 293 setStandardResource( res );
294 manager->writeConfig(); 294 manager->writeConfig();
295 } 295 }
296 addCustomField( i18n( "Department" ), KABC::Field::Organization, 296 addCustomField( i18n( "Department" ), KABC::Field::Organization,
297 "X-Department", "KADDRESSBOOK" ); 297 "X-Department", "KADDRESSBOOK" );
298 addCustomField( i18n( "Profession" ), KABC::Field::Organization, 298 addCustomField( i18n( "Profession" ), KABC::Field::Organization,
299 "X-Profession", "KADDRESSBOOK" ); 299 "X-Profession", "KADDRESSBOOK" );
300 addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization, 300 addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization,
301 "X-AssistantsName", "KADDRESSBOOK" ); 301 "X-AssistantsName", "KADDRESSBOOK" );
302 addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization, 302 addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization,
303 "X-ManagersName", "KADDRESSBOOK" ); 303 "X-ManagersName", "KADDRESSBOOK" );
304 addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal, 304 addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal,
305 "X-SpousesName", "KADDRESSBOOK" ); 305 "X-SpousesName", "KADDRESSBOOK" );
306 addCustomField( i18n( "Office" ), KABC::Field::Personal, 306 addCustomField( i18n( "Office" ), KABC::Field::Personal,
307 "X-Office", "KADDRESSBOOK" ); 307 "X-Office", "KADDRESSBOOK" );
308 addCustomField( i18n( "IM Address" ), KABC::Field::Personal, 308 addCustomField( i18n( "IM Address" ), KABC::Field::Personal,
309 "X-IMAddress", "KADDRESSBOOK" ); 309 "X-IMAddress", "KADDRESSBOOK" );
310 addCustomField( i18n( "Anniversary" ), KABC::Field::Personal, 310 addCustomField( i18n( "Anniversary" ), KABC::Field::Personal,
311 "X-Anniversary", "KADDRESSBOOK" ); 311 "X-Anniversary", "KADDRESSBOOK" );
312 312
313 //US added this field to become compatible with Opie/qtopia addressbook 313 //US added this field to become compatible with Opie/qtopia addressbook
314 // values can be "female" or "male" or "". An empty field represents undefined. 314 // values can be "female" or "male" or "". An empty field represents undefined.
315 addCustomField( i18n( "Gender" ), KABC::Field::Personal, 315 addCustomField( i18n( "Gender" ), KABC::Field::Personal,
316 "X-Gender", "KADDRESSBOOK" ); 316 "X-Gender", "KADDRESSBOOK" );
317 addCustomField( i18n( "Children" ), KABC::Field::Personal, 317 addCustomField( i18n( "Children" ), KABC::Field::Personal,
318 "X-Children", "KADDRESSBOOK" ); 318 "X-Children", "KADDRESSBOOK" );
319 addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal, 319 addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal,
320 "X-FreeBusyUrl", "KADDRESSBOOK" ); 320 "X-FreeBusyUrl", "KADDRESSBOOK" );
321 addCustomField( i18n( "ExternalID" ), KABC::Field::Personal, 321 addCustomField( i18n( "ExternalID" ), KABC::Field::Personal,
322 "X-ExternalID", "KADDRESSBOOK" ); 322 "X-ExternalID", "KADDRESSBOOK" );
323} 323}
324 324
325AddressBook::~AddressBook() 325AddressBook::~AddressBook()
326{ 326{
327 delete d->mConfig; d->mConfig = 0; 327 delete d->mConfig; d->mConfig = 0;
328 delete d->mManager; d->mManager = 0; 328 delete d->mManager; d->mManager = 0;
329//US delete d->mErrorHandler; d->mErrorHandler = 0; 329//US delete d->mErrorHandler; d->mErrorHandler = 0;
330 delete d; d = 0; 330 delete d; d = 0;
331} 331}
332 332
333bool AddressBook::load() 333bool AddressBook::load()
334{ 334{
335 335
336 336
337 clear(); 337 clear();
338 338
339 KRES::Manager<Resource>::ActiveIterator it; 339 KRES::Manager<Resource>::ActiveIterator it;
340 bool ok = true; 340 bool ok = true;
341 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) 341 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it )
342 if ( !(*it)->load() ) { 342 if ( !(*it)->load() ) {
343 error( i18n("Unable to load resource '%1'").arg( (*it)->resourceName() ) ); 343 error( i18n("Unable to load resource '%1'").arg( (*it)->resourceName() ) );
344 ok = false; 344 ok = false;
345 } 345 }
346 346
347 // mark all addressees as unchanged 347 // mark all addressees as unchanged
348 Addressee::List::Iterator addrIt; 348 Addressee::List::Iterator addrIt;
349 for ( addrIt = d->mAddressees.begin(); addrIt != d->mAddressees.end(); ++addrIt ) { 349 for ( addrIt = d->mAddressees.begin(); addrIt != d->mAddressees.end(); ++addrIt ) {
350 (*addrIt).setChanged( false ); 350 (*addrIt).setChanged( false );
351 QString id = (*addrIt).custom( "KADDRESSBOOK", "X-ExternalID" ); 351 QString id = (*addrIt).custom( "KADDRESSBOOK", "X-ExternalID" );
352 if ( !id.isEmpty() ) { 352 if ( !id.isEmpty() ) {
353 //qDebug("setId aa %s ", id.latin1()); 353 //qDebug("setId aa %s ", id.latin1());
354 (*addrIt).setIDStr(id ); 354 (*addrIt).setIDStr(id );
355 } 355 }
356 } 356 }
357 blockLSEchange = true; 357 blockLSEchange = true;
358 return ok; 358 return ok;
359} 359}
360 360
361bool AddressBook::save( Ticket *ticket ) 361bool AddressBook::save( Ticket *ticket )
362{ 362{
363 kdDebug(5700) << "AddressBook::save()"<< endl; 363 kdDebug(5700) << "AddressBook::save()"<< endl;
364 364
365 if ( ticket->resource() ) { 365 if ( ticket->resource() ) {
366 deleteRemovedAddressees(); 366 deleteRemovedAddressees();
367 return ticket->resource()->save( ticket ); 367 return ticket->resource()->save( ticket );
368 } 368 }
369 369
370 return false; 370 return false;
371} 371}
372bool AddressBook::saveAB() 372bool AddressBook::saveAB()
373{ 373{
374 bool ok = true; 374 bool ok = true;
375 375
376 deleteRemovedAddressees(); 376 deleteRemovedAddressees();
377 Iterator ait; 377 Iterator ait;
378 for ( ait = begin(); ait != end(); ++ait ) { 378 for ( ait = begin(); ait != end(); ++ait ) {
379 if ( !(*ait).IDStr().isEmpty() ) { 379 if ( !(*ait).IDStr().isEmpty() ) {
380 (*ait).insertCustom( "KADDRESSBOOK", "X-ExternalID", (*ait).IDStr() ); 380 (*ait).insertCustom( "KADDRESSBOOK", "X-ExternalID", (*ait).IDStr() );
381 } 381 }
382 } 382 }
383 KRES::Manager<Resource>::ActiveIterator it; 383 KRES::Manager<Resource>::ActiveIterator it;
384 KRES::Manager<Resource> *manager = d->mManager; 384 KRES::Manager<Resource> *manager = d->mManager;
385 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) { 385 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) {
386 if ( !(*it)->readOnly() && (*it)->isOpen() ) { 386 if ( !(*it)->readOnly() && (*it)->isOpen() ) {
387 Ticket *ticket = requestSaveTicket( *it ); 387 Ticket *ticket = requestSaveTicket( *it );
388// qDebug("StdAddressBook::save '%s'", (*it)->resourceName().latin1() ); 388// qDebug("StdAddressBook::save '%s'", (*it)->resourceName().latin1() );
389 if ( !ticket ) { 389 if ( !ticket ) {
390 error( i18n( "Unable to save to resource '%1'. It is locked." ) 390 error( i18n( "Unable to save to resource '%1'. It is locked." )
391 .arg( (*it)->resourceName() ) ); 391 .arg( (*it)->resourceName() ) );
392 return false; 392 return false;
393 } 393 }
394 394
395 //if ( !save( ticket ) ) 395 //if ( !save( ticket ) )
396 if ( ticket->resource() ) { 396 if ( ticket->resource() ) {
397 if ( ! ticket->resource()->save( ticket ) ) 397 if ( ! ticket->resource()->save( ticket ) )
398 ok = false; 398 ok = false;
399 } else 399 } else
400 ok = false; 400 ok = false;
401 401
402 } 402 }
403 } 403 }
404 return ok; 404 return ok;
405} 405}
406 406
407AddressBook::Iterator AddressBook::begin() 407AddressBook::Iterator AddressBook::begin()
408{ 408{
409 Iterator it = Iterator(); 409 Iterator it = Iterator();
410 it.d->mIt = d->mAddressees.begin(); 410 it.d->mIt = d->mAddressees.begin();
411 return it; 411 return it;
412} 412}
413 413
414AddressBook::ConstIterator AddressBook::begin() const 414AddressBook::ConstIterator AddressBook::begin() const
415{ 415{
416 ConstIterator it = ConstIterator(); 416 ConstIterator it = ConstIterator();
417 it.d->mIt = d->mAddressees.begin(); 417 it.d->mIt = d->mAddressees.begin();
418 return it; 418 return it;
419} 419}
420 420
421AddressBook::Iterator AddressBook::end() 421AddressBook::Iterator AddressBook::end()
422{ 422{
423 Iterator it = Iterator(); 423 Iterator it = Iterator();
424 it.d->mIt = d->mAddressees.end(); 424 it.d->mIt = d->mAddressees.end();
425 return it; 425 return it;
426} 426}
427 427
428AddressBook::ConstIterator AddressBook::end() const 428AddressBook::ConstIterator AddressBook::end() const
429{ 429{
430 ConstIterator it = ConstIterator(); 430 ConstIterator it = ConstIterator();
431 it.d->mIt = d->mAddressees.end(); 431 it.d->mIt = d->mAddressees.end();
432 return it; 432 return it;
433} 433}
434 434
435void AddressBook::clear() 435void AddressBook::clear()
436{ 436{
437 d->mAddressees.clear(); 437 d->mAddressees.clear();
438} 438}
439 439
440Ticket *AddressBook::requestSaveTicket( Resource *resource ) 440Ticket *AddressBook::requestSaveTicket( Resource *resource )
441{ 441{
442 kdDebug(5700) << "AddressBook::requestSaveTicket()" << endl; 442 kdDebug(5700) << "AddressBook::requestSaveTicket()" << endl;
443 443
444 if ( !resource ) 444 if ( !resource )
445 { 445 {
446 qDebug("AddressBook::requestSaveTicket no resource" ); 446 qDebug("AddressBook::requestSaveTicket no resource" );
447 resource = standardResource(); 447 resource = standardResource();
448 } 448 }
449 449
450 KRES::Manager<Resource>::ActiveIterator it; 450 KRES::Manager<Resource>::ActiveIterator it;
451 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) { 451 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) {
452 if ( (*it) == resource ) { 452 if ( (*it) == resource ) {
453 if ( (*it)->readOnly() || !(*it)->isOpen() ) 453 if ( (*it)->readOnly() || !(*it)->isOpen() )
454 return 0; 454 return 0;
455 else 455 else
456 return (*it)->requestSaveTicket(); 456 return (*it)->requestSaveTicket();
457 } 457 }
458 } 458 }
459 459
460 return 0; 460 return 0;
461} 461}
462 462
463void AddressBook::insertAddressee( const Addressee &a, bool setRev ) 463void AddressBook::insertAddressee( const Addressee &a, bool setRev )
464{ 464{
465 if ( blockLSEchange && setRev && a.uid().left( 19 ) == QString("last-syncAddressee-") ) { 465 if ( blockLSEchange && setRev && a.uid().left( 19 ) == QString("last-syncAddressee-") ) {
466 //qDebug("block insert "); 466 //qDebug("block insert ");
467 return; 467 return;
468 } 468 }
469 //qDebug("inserting.... %s ",a.uid().latin1() ); 469 //qDebug("inserting.... %s ",a.uid().latin1() );
470 bool found = false; 470 bool found = false;
471 Addressee::List::Iterator it; 471 Addressee::List::Iterator it;
472 for ( it = d->mAddressees.begin(); it != d->mAddressees.end(); ++it ) { 472 for ( it = d->mAddressees.begin(); it != d->mAddressees.end(); ++it ) {
473 if ( a.uid() == (*it).uid() ) { 473 if ( a.uid() == (*it).uid() ) {
474 474
475 bool changed = false; 475 bool changed = false;
476 Addressee addr = a; 476 Addressee addr = a;
477 if ( addr != (*it) ) 477 if ( addr != (*it) )
478 changed = true; 478 changed = true;
479 479
480 (*it) = a; 480 (*it) = a;
481 if ( (*it).resource() == 0 ) 481 if ( (*it).resource() == 0 )
482 (*it).setResource( standardResource() ); 482 (*it).setResource( standardResource() );
483 483
484 if ( changed ) { 484 if ( changed ) {
485 if ( setRev ) { 485 if ( setRev ) {
486 486
487 // get rid of micro seconds 487 // get rid of micro seconds
488 QDateTime dt = QDateTime::currentDateTime(); 488 QDateTime dt = QDateTime::currentDateTime();
489 QTime t = dt.time(); 489 QTime t = dt.time();
490 dt.setTime( QTime (t.hour (), t.minute (), t.second () ) ); 490 dt.setTime( QTime (t.hour (), t.minute (), t.second () ) );
491 (*it).setRevision( dt ); 491 (*it).setRevision( dt );
492 } 492 }
493 (*it).setChanged( true ); 493 (*it).setChanged( true );
494 } 494 }
495 495
496 found = true; 496 found = true;
497 } else { 497 } else {
498 if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) { 498 if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) {
499 QString name = (*it).uid().mid( 19 ); 499 QString name = (*it).uid().mid( 19 );
500 Addressee b = a; 500 Addressee b = a;
501 QString id = b.getID( name ); 501 QString id = b.getID( name );
502 if ( ! id.isEmpty() ) { 502 if ( ! id.isEmpty() ) {
503 QString des = (*it).note(); 503 QString des = (*it).note();
504 int startN; 504 int startN;
505 if( (startN = des.find( id ) ) >= 0 ) { 505 if( (startN = des.find( id ) ) >= 0 ) {
506 int endN = des.find( ",", startN+1 ); 506 int endN = des.find( ",", startN+1 );
507 des = des.left( startN ) + des.mid( endN+1 ); 507 des = des.left( startN ) + des.mid( endN+1 );
508 (*it).setNote( des ); 508 (*it).setNote( des );
509 } 509 }
510 } 510 }
511 } 511 }
512 } 512 }
513 } 513 }
514 if ( found ) 514 if ( found )
515 return; 515 return;
516 d->mAddressees.append( a ); 516 d->mAddressees.append( a );
517 Addressee& addr = d->mAddressees.last(); 517 Addressee& addr = d->mAddressees.last();
518 if ( addr.resource() == 0 ) 518 if ( addr.resource() == 0 )
519 addr.setResource( standardResource() ); 519 addr.setResource( standardResource() );
520 520
521 addr.setChanged( true ); 521 addr.setChanged( true );
522} 522}
523 523
524void AddressBook::removeAddressee( const Addressee &a ) 524void AddressBook::removeAddressee( const Addressee &a )
525{ 525{
526 Iterator it; 526 Iterator it;
527 Iterator it2; 527 Iterator it2;
528 bool found = false; 528 bool found = false;
529 for ( it = begin(); it != end(); ++it ) { 529 for ( it = begin(); it != end(); ++it ) {
530 if ( a.uid() == (*it).uid() ) { 530 if ( a.uid() == (*it).uid() ) {
531 found = true; 531 found = true;
532 it2 = it; 532 it2 = it;
533 } else { 533 } else {
534 if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) { 534 if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) {
535 QString name = (*it).uid().mid( 19 ); 535 QString name = (*it).uid().mid( 19 );
536 Addressee b = a; 536 Addressee b = a;
537 QString id = b.getID( name ); 537 QString id = b.getID( name );
538 if ( ! id.isEmpty() ) { 538 if ( ! id.isEmpty() ) {
539 QString des = (*it).note(); 539 QString des = (*it).note();
540 if( des.find( id ) < 0 ) { 540 if( des.find( id ) < 0 ) {
541 des += id + ","; 541 des += id + ",";
542 (*it).setNote( des ); 542 (*it).setNote( des );
543 } 543 }
544 } 544 }
545 } 545 }
546 546
547 } 547 }
548 } 548 }
549 549
550 if ( found ) 550 if ( found )
551 removeAddressee( it2 ); 551 removeAddressee( it2 );
552 552
553} 553}
554 554
555void AddressBook::removeDeletedAddressees() 555void AddressBook::removeSyncAddressees( bool removeDeleted )
556{ 556{
557 deleteRemovedAddressees();
558 Iterator it = begin(); 557 Iterator it = begin();
559 Iterator it2 ; 558 Iterator it2 ;
560 QDateTime dt ( QDate( 2004,1,1) ); 559 QDateTime dt ( QDate( 2004,1,1) );
561 while ( it != end() ) { 560 while ( it != end() ) {
562 (*it).setRevision( dt ); 561 (*it).setRevision( dt );
563 (*it).removeCustom( "KADDRESSBOOK", "X-ExternalID" ); 562 (*it).removeCustom( "KADDRESSBOOK", "X-ExternalID" );
564 (*it).setIDStr(""); 563 (*it).setIDStr("");
565 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_DELETE || (*it).uid().left( 19 ) == QString("last-syncAddressee-")) { 564 if ( ( (*it).tempSyncStat() == SYNC_TEMPSTATE_DELETE && removeDeleted )|| (*it).uid().left( 19 ) == QString("last-syncAddressee-")) {
566 it2 = it; 565 it2 = it;
567 //qDebug("removing %s ",(*it).uid().latin1() ); 566 //qDebug("removing %s ",(*it).uid().latin1() );
568 ++it; 567 ++it;
569 removeAddressee( it2 ); 568 removeAddressee( it2 );
570 } else { 569 } else {
571 //qDebug("skipping %s ",(*it).uid().latin1() ); 570 //qDebug("skipping %s ",(*it).uid().latin1() );
572 ++it; 571 ++it;
573 } 572 }
574 } 573 }
575 deleteRemovedAddressees(); 574 deleteRemovedAddressees();
576} 575}
577 576
578void AddressBook::removeAddressee( const Iterator &it ) 577void AddressBook::removeAddressee( const Iterator &it )
579{ 578{
580 d->mRemovedAddressees.append( (*it) ); 579 d->mRemovedAddressees.append( (*it) );
581 d->mAddressees.remove( it.d->mIt ); 580 d->mAddressees.remove( it.d->mIt );
582} 581}
583 582
584AddressBook::Iterator AddressBook::find( const Addressee &a ) 583AddressBook::Iterator AddressBook::find( const Addressee &a )
585{ 584{
586 Iterator it; 585 Iterator it;
587 for ( it = begin(); it != end(); ++it ) { 586 for ( it = begin(); it != end(); ++it ) {
588 if ( a.uid() == (*it).uid() ) { 587 if ( a.uid() == (*it).uid() ) {
589 return it; 588 return it;
590 } 589 }
591 } 590 }
592 return end(); 591 return end();
593} 592}
594 593
595Addressee AddressBook::findByUid( const QString &uid ) 594Addressee AddressBook::findByUid( const QString &uid )
596{ 595{
597 Iterator it; 596 Iterator it;
598 for ( it = begin(); it != end(); ++it ) { 597 for ( it = begin(); it != end(); ++it ) {
599 if ( uid == (*it).uid() ) { 598 if ( uid == (*it).uid() ) {
600 return *it; 599 return *it;
601 } 600 }
602 } 601 }
603 return Addressee(); 602 return Addressee();
604} 603}
605void AddressBook::preExternSync( AddressBook* aBook, const QString& csd ) 604void AddressBook::preExternSync( AddressBook* aBook, const QString& csd )
606{ 605{
607 qDebug("AddressBook::preExternSync "); 606 qDebug("AddressBook::preExternSync ");
608 AddressBook::Iterator it; 607 AddressBook::Iterator it;
609 for ( it = begin(); it != end(); ++it ) { 608 for ( it = begin(); it != end(); ++it ) {
610 (*it).setID( csd, (*it).externalUID() ); 609 (*it).setID( csd, (*it).externalUID() );
611 (*it).computeCsum( csd ); 610 (*it).computeCsum( csd );
612 } 611 }
613 mergeAB( aBook ,csd ); 612 mergeAB( aBook ,csd );
614} 613}
615void AddressBook::postExternSync( AddressBook* aBook , const QString& csd) 614void AddressBook::postExternSync( AddressBook* aBook , const QString& csd)
616{ 615{
617 qDebug("AddressBook::postExternSync "); 616 qDebug("AddressBook::postExternSync ");
618 AddressBook::Iterator it; 617 AddressBook::Iterator it;
619 for ( it = begin(); it != end(); ++it ) { 618 for ( it = begin(); it != end(); ++it ) {
619 qDebug("check uid %s ", (*it).uid().latin1() );
620 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID || 620 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ||
621 (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_CSUM ) { 621 (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_CSUM ) {
622 Addressee ad = aBook->findByUid( ( (*it).uid() )); 622 Addressee ad = aBook->findByUid( ( (*it).uid() ));
623 if ( ad.isEmpty() ) { 623 if ( ad.isEmpty() ) {
624 qDebug("ERROR ad empty "); 624 qDebug("postExternSync:ERROR addressee is empty: %s ", (*it).uid().latin1());
625 } else { 625 } else {
626 (*it).computeCsum( csd ); 626 (*it).computeCsum( csd );
627 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) 627 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID )
628 ad.setID( csd, (*it).externalUID() ); 628 ad.setID( csd, (*it).externalUID() );
629 ad.setCsum( csd, (*it).getCsum( csd ) ); 629 ad.setCsum( csd, (*it).getCsum( csd ) );
630 aBook->insertAddressee( ad ); 630 aBook->insertAddressee( ad );
631 } 631 }
632 } 632 }
633 } 633 }
634} 634}
635 635
636 636bool AddressBook::containsExternalUid( const QString& uid )
637{
638 Iterator it;
639 for ( it = begin(); it != end(); ++it ) {
640 if ( uid == (*it).externalUID( ) )
641 return true;
642 }
643 return false;
644}
637Addressee AddressBook::findByExternUid( const QString& uid , const QString& profile ) 645Addressee AddressBook::findByExternUid( const QString& uid , const QString& profile )
638{ 646{
639 Iterator it; 647 Iterator it;
640 for ( it = begin(); it != end(); ++it ) { 648 for ( it = begin(); it != end(); ++it ) {
641 if ( uid == (*it).getID( profile ) ) 649 if ( uid == (*it).getID( profile ) )
642 return (*it); 650 return (*it);
643 } 651 }
644 return Addressee(); 652 return Addressee();
645} 653}
646void AddressBook::mergeAB( AddressBook *aBook, const QString& profile ) 654void AddressBook::mergeAB( AddressBook *aBook, const QString& profile )
647{ 655{
648 Iterator it; 656 Iterator it;
649 Addressee ad; 657 Addressee ad;
650 for ( it = begin(); it != end(); ++it ) { 658 for ( it = begin(); it != end(); ++it ) {
651 ad = aBook->findByExternUid( (*it).externalUID(), profile ); 659 ad = aBook->findByExternUid( (*it).externalUID(), profile );
652 if ( !ad.isEmpty() ) { 660 if ( !ad.isEmpty() ) {
653 (*it).mergeContact( ad ); 661 (*it).mergeContact( ad );
654 } 662 }
655 } 663 }
664#if 0
665 // test only
666 for ( it = begin(); it != end(); ++it ) {
667
668 qDebug("uid %s ", (*it).uid().latin1());
669 }
670#endif
656} 671}
657 672
658#if 0 673#if 0
659Addressee::List AddressBook::getExternLastSyncAddressees() 674Addressee::List AddressBook::getExternLastSyncAddressees()
660{ 675{
661 Addressee::List results; 676 Addressee::List results;
662 677
663 Iterator it; 678 Iterator it;
664 for ( it = begin(); it != end(); ++it ) { 679 for ( it = begin(); it != end(); ++it ) {
665 if ( (*it).uid().left( 19 ) == "last-syncAddressee-" ) { 680 if ( (*it).uid().left( 19 ) == "last-syncAddressee-" ) {
666 if ( (*it).familyName().left(4) == "!E: " ) 681 if ( (*it).familyName().left(4) == "!E: " )
667 results.append( *it ); 682 results.append( *it );
668 } 683 }
669 } 684 }
670 685
671 return results; 686 return results;
672} 687}
673#endif 688#endif
674void AddressBook::resetTempSyncStat() 689void AddressBook::resetTempSyncStat()
675{ 690{
676 Iterator it; 691 Iterator it;
677 for ( it = begin(); it != end(); ++it ) { 692 for ( it = begin(); it != end(); ++it ) {
678 (*it).setTempSyncStat ( SYNC_TEMPSTATE_INITIAL ); 693 (*it).setTempSyncStat ( SYNC_TEMPSTATE_INITIAL );
679 } 694 }
680 695
681} 696}
682 697
683QStringList AddressBook:: uidList() 698QStringList AddressBook:: uidList()
684{ 699{
685 QStringList results; 700 QStringList results;
686 Iterator it; 701 Iterator it;
687 for ( it = begin(); it != end(); ++it ) { 702 for ( it = begin(); it != end(); ++it ) {
688 results.append( (*it).uid() ); 703 results.append( (*it).uid() );
689 } 704 }
690 return results; 705 return results;
691} 706}
692 707
693 708
694Addressee::List AddressBook::allAddressees() 709Addressee::List AddressBook::allAddressees()
695{ 710{
696 return d->mAddressees; 711 return d->mAddressees;
697 712
698} 713}
699 714
700Addressee::List AddressBook::findByName( const QString &name ) 715Addressee::List AddressBook::findByName( const QString &name )
701{ 716{
702 Addressee::List results; 717 Addressee::List results;
703 718
704 Iterator it; 719 Iterator it;
705 for ( it = begin(); it != end(); ++it ) { 720 for ( it = begin(); it != end(); ++it ) {
706 if ( name == (*it).realName() ) { 721 if ( name == (*it).realName() ) {
707 results.append( *it ); 722 results.append( *it );
708 } 723 }
709 } 724 }
710 725
711 return results; 726 return results;
712} 727}
713 728
714Addressee::List AddressBook::findByEmail( const QString &email ) 729Addressee::List AddressBook::findByEmail( const QString &email )
715{ 730{
716 Addressee::List results; 731 Addressee::List results;
717 QStringList mailList; 732 QStringList mailList;
718 733
719 Iterator it; 734 Iterator it;
720 for ( it = begin(); it != end(); ++it ) { 735 for ( it = begin(); it != end(); ++it ) {
721 mailList = (*it).emails(); 736 mailList = (*it).emails();
722 for ( QStringList::Iterator ite = mailList.begin(); ite != mailList.end(); ++ite ) { 737 for ( QStringList::Iterator ite = mailList.begin(); ite != mailList.end(); ++ite ) {
723 if ( email == (*ite) ) { 738 if ( email == (*ite) ) {
724 results.append( *it ); 739 results.append( *it );
725 } 740 }
726 } 741 }
727 } 742 }
728 743
729 return results; 744 return results;
730} 745}
731 746
732Addressee::List AddressBook::findByCategory( const QString &category ) 747Addressee::List AddressBook::findByCategory( const QString &category )
733{ 748{
734 Addressee::List results; 749 Addressee::List results;
735 750
736 Iterator it; 751 Iterator it;
737 for ( it = begin(); it != end(); ++it ) { 752 for ( it = begin(); it != end(); ++it ) {
738 if ( (*it).hasCategory( category) ) { 753 if ( (*it).hasCategory( category) ) {
739 results.append( *it ); 754 results.append( *it );
740 } 755 }
741 } 756 }
742 757
743 return results; 758 return results;
744} 759}
745 760
746void AddressBook::dump() const 761void AddressBook::dump() const
747{ 762{
748 kdDebug(5700) << "AddressBook::dump() --- begin ---" << endl; 763 kdDebug(5700) << "AddressBook::dump() --- begin ---" << endl;
749 764
750 ConstIterator it; 765 ConstIterator it;
751 for( it = begin(); it != end(); ++it ) { 766 for( it = begin(); it != end(); ++it ) {
752 (*it).dump(); 767 (*it).dump();
753 } 768 }
754 769
755 kdDebug(5700) << "AddressBook::dump() --- end ---" << endl; 770 kdDebug(5700) << "AddressBook::dump() --- end ---" << endl;
756} 771}
757 772
758QString AddressBook::identifier() 773QString AddressBook::identifier()
759{ 774{
760 QStringList identifier; 775 QStringList identifier;
761 776
762 777
763 KRES::Manager<Resource>::ActiveIterator it; 778 KRES::Manager<Resource>::ActiveIterator it;
764 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) { 779 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) {
765 if ( !(*it)->identifier().isEmpty() ) 780 if ( !(*it)->identifier().isEmpty() )
766 identifier.append( (*it)->identifier() ); 781 identifier.append( (*it)->identifier() );
767 } 782 }
768 783
769 return identifier.join( ":" ); 784 return identifier.join( ":" );
770} 785}
771 786
772Field::List AddressBook::fields( int category ) 787Field::List AddressBook::fields( int category )
773{ 788{
774 if ( d->mAllFields.isEmpty() ) { 789 if ( d->mAllFields.isEmpty() ) {
775 d->mAllFields = Field::allFields(); 790 d->mAllFields = Field::allFields();
776 } 791 }
777 792
778 if ( category == Field::All ) return d->mAllFields; 793 if ( category == Field::All ) return d->mAllFields;
779 794
780 Field::List result; 795 Field::List result;
781 Field::List::ConstIterator it; 796 Field::List::ConstIterator it;
782 for( it = d->mAllFields.begin(); it != d->mAllFields.end(); ++it ) { 797 for( it = d->mAllFields.begin(); it != d->mAllFields.end(); ++it ) {
783 if ( (*it)->category() & category ) result.append( *it ); 798 if ( (*it)->category() & category ) result.append( *it );
784 } 799 }
785 800
786 return result; 801 return result;
787} 802}
788 803
789bool AddressBook::addCustomField( const QString &label, int category, 804bool AddressBook::addCustomField( const QString &label, int category,
790 const QString &key, const QString &app ) 805 const QString &key, const QString &app )
791{ 806{
792 if ( d->mAllFields.isEmpty() ) { 807 if ( d->mAllFields.isEmpty() ) {
793 d->mAllFields = Field::allFields(); 808 d->mAllFields = Field::allFields();
794 } 809 }
795//US QString a = app.isNull() ? KGlobal::instance()->instanceName() : app; 810//US QString a = app.isNull() ? KGlobal::instance()->instanceName() : app;
796 QString a = app.isNull() ? KGlobal::getAppName() : app; 811 QString a = app.isNull() ? KGlobal::getAppName() : app;
797 812
798 QString k = key.isNull() ? label : key; 813 QString k = key.isNull() ? label : key;
799 814
800 Field *field = Field::createCustomField( label, category, k, a ); 815 Field *field = Field::createCustomField( label, category, k, a );
801 816
802 if ( !field ) return false; 817 if ( !field ) return false;
803 818
804 d->mAllFields.append( field ); 819 d->mAllFields.append( field );
805 820
806 return true; 821 return true;
807} 822}
808 823
809QDataStream &KABC::operator<<( QDataStream &s, const AddressBook &ab ) 824QDataStream &KABC::operator<<( QDataStream &s, const AddressBook &ab )
810{ 825{
811 if (!ab.d) return s; 826 if (!ab.d) return s;
812 827
813 return s << ab.d->mAddressees; 828 return s << ab.d->mAddressees;
814} 829}
815 830
816QDataStream &KABC::operator>>( QDataStream &s, AddressBook &ab ) 831QDataStream &KABC::operator>>( QDataStream &s, AddressBook &ab )
817{ 832{
818 if (!ab.d) return s; 833 if (!ab.d) return s;
819 834
820 s >> ab.d->mAddressees; 835 s >> ab.d->mAddressees;
821 836
822 return s; 837 return s;
823} 838}
824 839
825bool AddressBook::addResource( Resource *resource ) 840bool AddressBook::addResource( Resource *resource )
826{ 841{
827 if ( !resource->open() ) { 842 if ( !resource->open() ) {
828 kdDebug(5700) << "AddressBook::addResource(): can't add resource" << endl; 843 kdDebug(5700) << "AddressBook::addResource(): can't add resource" << endl;
829 return false; 844 return false;
830 } 845 }
831 846
832 resource->setAddressBook( this ); 847 resource->setAddressBook( this );
833 848
834 d->mManager->add( resource ); 849 d->mManager->add( resource );
835 return true; 850 return true;
836} 851}
837 852
838bool AddressBook::removeResource( Resource *resource ) 853bool AddressBook::removeResource( Resource *resource )
839{ 854{
840 resource->close(); 855 resource->close();
841 856
842 if ( resource == standardResource() ) 857 if ( resource == standardResource() )
843 d->mManager->setStandardResource( 0 ); 858 d->mManager->setStandardResource( 0 );
844 859
845 resource->setAddressBook( 0 ); 860 resource->setAddressBook( 0 );
846 861
847 d->mManager->remove( resource ); 862 d->mManager->remove( resource );
848 return true; 863 return true;
849} 864}
850 865
851QPtrList<Resource> AddressBook::resources() 866QPtrList<Resource> AddressBook::resources()
852{ 867{
853 QPtrList<Resource> list; 868 QPtrList<Resource> list;
854 869
855// qDebug("AddressBook::resources() 1"); 870// qDebug("AddressBook::resources() 1");
856 871
857 KRES::Manager<Resource>::ActiveIterator it; 872 KRES::Manager<Resource>::ActiveIterator it;
858 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) 873 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it )
859 list.append( *it ); 874 list.append( *it );
860 875
861 return list; 876 return list;
862} 877}
863 878
864/*US 879/*US
865void AddressBook::setErrorHandler( ErrorHandler *handler ) 880void AddressBook::setErrorHandler( ErrorHandler *handler )
866{ 881{
867 delete d->mErrorHandler; 882 delete d->mErrorHandler;
868 d->mErrorHandler = handler; 883 d->mErrorHandler = handler;
869} 884}
870*/ 885*/
871 886
872void AddressBook::error( const QString& msg ) 887void AddressBook::error( const QString& msg )
873{ 888{
874/*US 889/*US
875 if ( !d->mErrorHandler ) // create default error handler 890 if ( !d->mErrorHandler ) // create default error handler
876 d->mErrorHandler = new ConsoleErrorHandler; 891 d->mErrorHandler = new ConsoleErrorHandler;
877 892
878 if ( d->mErrorHandler ) 893 if ( d->mErrorHandler )
879 d->mErrorHandler->error( msg ); 894 d->mErrorHandler->error( msg );
880 else 895 else
881 kdError(5700) << "no error handler defined" << endl; 896 kdError(5700) << "no error handler defined" << endl;
882*/ 897*/
883 kdDebug(5700) << "msg" << endl; 898 kdDebug(5700) << "msg" << endl;
884 qDebug(msg); 899 qDebug(msg);
885} 900}
886 901
887void AddressBook::deleteRemovedAddressees() 902void AddressBook::deleteRemovedAddressees()
888{ 903{
889 Addressee::List::Iterator it; 904 Addressee::List::Iterator it;
890 for ( it = d->mRemovedAddressees.begin(); it != d->mRemovedAddressees.end(); ++it ) { 905 for ( it = d->mRemovedAddressees.begin(); it != d->mRemovedAddressees.end(); ++it ) {
891 Resource *resource = (*it).resource(); 906 Resource *resource = (*it).resource();
892 if ( resource && !resource->readOnly() && resource->isOpen() ) 907 if ( resource && !resource->readOnly() && resource->isOpen() )
893 resource->removeAddressee( *it ); 908 resource->removeAddressee( *it );
894 } 909 }
895 910
896 d->mRemovedAddressees.clear(); 911 d->mRemovedAddressees.clear();
897} 912}
898 913
899void AddressBook::setStandardResource( Resource *resource ) 914void AddressBook::setStandardResource( Resource *resource )
900{ 915{
901// qDebug("AddressBook::setStandardResource 1"); 916// qDebug("AddressBook::setStandardResource 1");
902 d->mManager->setStandardResource( resource ); 917 d->mManager->setStandardResource( resource );
903} 918}
904 919
905Resource *AddressBook::standardResource() 920Resource *AddressBook::standardResource()
906{ 921{
907 return d->mManager->standardResource(); 922 return d->mManager->standardResource();
908} 923}
909 924
910KRES::Manager<Resource> *AddressBook::resourceManager() 925KRES::Manager<Resource> *AddressBook::resourceManager()
911{ 926{
912 return d->mManager; 927 return d->mManager;
913} 928}
914 929
915void AddressBook::cleanUp() 930void AddressBook::cleanUp()
916{ 931{
917 KRES::Manager<Resource>::ActiveIterator it; 932 KRES::Manager<Resource>::ActiveIterator it;
918 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) { 933 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) {
919 if ( !(*it)->readOnly() && (*it)->isOpen() ) 934 if ( !(*it)->readOnly() && (*it)->isOpen() )
920 (*it)->cleanUp(); 935 (*it)->cleanUp();
921 } 936 }
922} 937}