summaryrefslogtreecommitdiffabout
path: root/kabc/addressbook.cpp
Unidiff
Diffstat (limited to 'kabc/addressbook.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addressbook.cpp28
1 files changed, 26 insertions, 2 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp
index 46a9cf4..64832f1 100644
--- a/kabc/addressbook.cpp
+++ b/kabc/addressbook.cpp
@@ -1,857 +1,881 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28/*US 28/*US
29 29
30#include <qfile.h> 30#include <qfile.h>
31#include <qregexp.h> 31#include <qregexp.h>
32#include <qtimer.h> 32#include <qtimer.h>
33 33
34#include <kapplication.h> 34#include <kapplication.h>
35#include <kinstance.h> 35#include <kinstance.h>
36#include <kstandarddirs.h> 36#include <kstandarddirs.h>
37 37
38#include "errorhandler.h" 38#include "errorhandler.h"
39*/ 39*/
40#include <qptrlist.h> 40#include <qptrlist.h>
41 41
42#include <kglobal.h> 42#include <kglobal.h>
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( "FileFormat", QString("vcard") );
252 con->writeEntry( "FileName", config ); 251 con->writeEntry( "FileName", config );
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 con->writeEntry( "ResourceType", QString("file") ); 255 if ( config.right(4) == ".xml" )
256 con->writeEntry( "ResourceType", QString("qtopia") );
257 else
258 con->writeEntry( "ResourceType", QString("file") );
256 //con->sync(); 259 //con->sync();
257 d->mConfig = con; 260 d->mConfig = con;
258 } 261 }
259 else 262 else
260 d->mConfig = new KConfig( locateLocal("config", config) ); 263 d->mConfig = new KConfig( locateLocal("config", config) );
261// qDebug("AddressBook::init 1 config=%s",config.latin1() ); 264// qDebug("AddressBook::init 1 config=%s",config.latin1() );
262 } 265 }
263 else { 266 else {
264 d->mConfig = 0; 267 d->mConfig = 0;
265// qDebug("AddressBook::init 1 config=0"); 268// qDebug("AddressBook::init 1 config=0");
266 } 269 }
267 270
268//US d->mErrorHandler = 0; 271//US d->mErrorHandler = 0;
269 d->mManager = new KRES::Manager<Resource>( fami, false ); 272 d->mManager = new KRES::Manager<Resource>( fami, false );
270 d->mManager->readConfig( d->mConfig ); 273 d->mManager->readConfig( d->mConfig );
271 if ( family == "syncContact" ) { 274 if ( family == "syncContact" ) {
272 KRES::Manager<Resource> *manager = d->mManager; 275 KRES::Manager<Resource> *manager = d->mManager;
273 KRES::Manager<Resource>::ActiveIterator it; 276 KRES::Manager<Resource>::ActiveIterator it;
274 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) { 277 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) {
275 (*it)->setAddressBook( this ); 278 (*it)->setAddressBook( this );
276 if ( !(*it)->open() ) 279 if ( !(*it)->open() )
277 error( QString( "Unable to open resource '%1'!" ).arg( (*it)->resourceName() ) ); 280 error( QString( "Unable to open resource '%1'!" ).arg( (*it)->resourceName() ) );
278 } 281 }
279 Resource *res = standardResource(); 282 Resource *res = standardResource();
280 if ( !res ) { 283 if ( !res ) {
281 qDebug("ERROR: no standard resource"); 284 qDebug("ERROR: no standard resource");
282 res = manager->createResource( "file" ); 285 res = manager->createResource( "file" );
283 if ( res ) 286 if ( res )
284 { 287 {
285 addResource( res ); 288 addResource( res );
286 } 289 }
287 else 290 else
288 qDebug(" No resource available!!!"); 291 qDebug(" No resource available!!!");
289 } 292 }
290 setStandardResource( res ); 293 setStandardResource( res );
291 manager->writeConfig(); 294 manager->writeConfig();
292 } 295 }
293 addCustomField( i18n( "Department" ), KABC::Field::Organization, 296 addCustomField( i18n( "Department" ), KABC::Field::Organization,
294 "X-Department", "KADDRESSBOOK" ); 297 "X-Department", "KADDRESSBOOK" );
295 addCustomField( i18n( "Profession" ), KABC::Field::Organization, 298 addCustomField( i18n( "Profession" ), KABC::Field::Organization,
296 "X-Profession", "KADDRESSBOOK" ); 299 "X-Profession", "KADDRESSBOOK" );
297 addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization, 300 addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization,
298 "X-AssistantsName", "KADDRESSBOOK" ); 301 "X-AssistantsName", "KADDRESSBOOK" );
299 addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization, 302 addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization,
300 "X-ManagersName", "KADDRESSBOOK" ); 303 "X-ManagersName", "KADDRESSBOOK" );
301 addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal, 304 addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal,
302 "X-SpousesName", "KADDRESSBOOK" ); 305 "X-SpousesName", "KADDRESSBOOK" );
303 addCustomField( i18n( "Office" ), KABC::Field::Personal, 306 addCustomField( i18n( "Office" ), KABC::Field::Personal,
304 "X-Office", "KADDRESSBOOK" ); 307 "X-Office", "KADDRESSBOOK" );
305 addCustomField( i18n( "IM Address" ), KABC::Field::Personal, 308 addCustomField( i18n( "IM Address" ), KABC::Field::Personal,
306 "X-IMAddress", "KADDRESSBOOK" ); 309 "X-IMAddress", "KADDRESSBOOK" );
307 addCustomField( i18n( "Anniversary" ), KABC::Field::Personal, 310 addCustomField( i18n( "Anniversary" ), KABC::Field::Personal,
308 "X-Anniversary", "KADDRESSBOOK" ); 311 "X-Anniversary", "KADDRESSBOOK" );
309 312
310 //US added this field to become compatible with Opie/qtopia addressbook 313 //US added this field to become compatible with Opie/qtopia addressbook
311 // 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.
312 addCustomField( i18n( "Gender" ), KABC::Field::Personal, 315 addCustomField( i18n( "Gender" ), KABC::Field::Personal,
313 "X-Gender", "KADDRESSBOOK" ); 316 "X-Gender", "KADDRESSBOOK" );
314 addCustomField( i18n( "Children" ), KABC::Field::Personal, 317 addCustomField( i18n( "Children" ), KABC::Field::Personal,
315 "X-Children", "KADDRESSBOOK" ); 318 "X-Children", "KADDRESSBOOK" );
316 addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal, 319 addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal,
317 "X-FreeBusyUrl", "KADDRESSBOOK" ); 320 "X-FreeBusyUrl", "KADDRESSBOOK" );
318 addCustomField( i18n( "ExternalID" ), KABC::Field::Personal, 321 addCustomField( i18n( "ExternalID" ), KABC::Field::Personal,
319 "X-ExternalID", "KADDRESSBOOK" ); 322 "X-ExternalID", "KADDRESSBOOK" );
320} 323}
321 324
322AddressBook::~AddressBook() 325AddressBook::~AddressBook()
323{ 326{
324 delete d->mConfig; d->mConfig = 0; 327 delete d->mConfig; d->mConfig = 0;
325 delete d->mManager; d->mManager = 0; 328 delete d->mManager; d->mManager = 0;
326//US delete d->mErrorHandler; d->mErrorHandler = 0; 329//US delete d->mErrorHandler; d->mErrorHandler = 0;
327 delete d; d = 0; 330 delete d; d = 0;
328} 331}
329 332
330bool AddressBook::load() 333bool AddressBook::load()
331{ 334{
332 335
333 336
334 clear(); 337 clear();
335 338
336 KRES::Manager<Resource>::ActiveIterator it; 339 KRES::Manager<Resource>::ActiveIterator it;
337 bool ok = true; 340 bool ok = true;
338 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) 341 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it )
339 if ( !(*it)->load() ) { 342 if ( !(*it)->load() ) {
340 error( i18n("Unable to load resource '%1'").arg( (*it)->resourceName() ) ); 343 error( i18n("Unable to load resource '%1'").arg( (*it)->resourceName() ) );
341 ok = false; 344 ok = false;
342 } 345 }
343 346
344 // mark all addressees as unchanged 347 // mark all addressees as unchanged
345 Addressee::List::Iterator addrIt; 348 Addressee::List::Iterator addrIt;
346 for ( addrIt = d->mAddressees.begin(); addrIt != d->mAddressees.end(); ++addrIt ) { 349 for ( addrIt = d->mAddressees.begin(); addrIt != d->mAddressees.end(); ++addrIt ) {
347 (*addrIt).setChanged( false ); 350 (*addrIt).setChanged( false );
348 QString id = (*addrIt).custom( "KADDRESSBOOK", "X-ExternalID" ); 351 QString id = (*addrIt).custom( "KADDRESSBOOK", "X-ExternalID" );
349 if ( !id.isEmpty() ) { 352 if ( !id.isEmpty() ) {
350 //qDebug("setId aa %s ", id.latin1()); 353 //qDebug("setId aa %s ", id.latin1());
351 (*addrIt).setIDStr(id ); 354 (*addrIt).setIDStr(id );
352 } 355 }
353 } 356 }
354 blockLSEchange = true; 357 blockLSEchange = true;
355 return ok; 358 return ok;
356} 359}
357 360
358bool AddressBook::save( Ticket *ticket ) 361bool AddressBook::save( Ticket *ticket )
359{ 362{
360 kdDebug(5700) << "AddressBook::save()"<< endl; 363 kdDebug(5700) << "AddressBook::save()"<< endl;
361 364
362 if ( ticket->resource() ) { 365 if ( ticket->resource() ) {
363 deleteRemovedAddressees(); 366 deleteRemovedAddressees();
364 return ticket->resource()->save( ticket ); 367 return ticket->resource()->save( ticket );
365 } 368 }
366 369
367 return false; 370 return false;
368} 371}
369bool AddressBook::saveAB() 372bool AddressBook::saveAB()
370{ 373{
371 bool ok = true; 374 bool ok = true;
372 375
373 deleteRemovedAddressees(); 376 deleteRemovedAddressees();
374 Iterator ait; 377 Iterator ait;
375 for ( ait = begin(); ait != end(); ++ait ) { 378 for ( ait = begin(); ait != end(); ++ait ) {
376 if ( !(*ait).IDStr().isEmpty() ) { 379 if ( !(*ait).IDStr().isEmpty() ) {
377 (*ait).insertCustom( "KADDRESSBOOK", "X-ExternalID", (*ait).IDStr() ); 380 (*ait).insertCustom( "KADDRESSBOOK", "X-ExternalID", (*ait).IDStr() );
378 } 381 }
379 } 382 }
380 KRES::Manager<Resource>::ActiveIterator it; 383 KRES::Manager<Resource>::ActiveIterator it;
381 KRES::Manager<Resource> *manager = d->mManager; 384 KRES::Manager<Resource> *manager = d->mManager;
382 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) { 385 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) {
383 if ( !(*it)->readOnly() && (*it)->isOpen() ) { 386 if ( !(*it)->readOnly() && (*it)->isOpen() ) {
384 Ticket *ticket = requestSaveTicket( *it ); 387 Ticket *ticket = requestSaveTicket( *it );
385// qDebug("StdAddressBook::save '%s'", (*it)->resourceName().latin1() ); 388// qDebug("StdAddressBook::save '%s'", (*it)->resourceName().latin1() );
386 if ( !ticket ) { 389 if ( !ticket ) {
387 error( i18n( "Unable to save to resource '%1'. It is locked." ) 390 error( i18n( "Unable to save to resource '%1'. It is locked." )
388 .arg( (*it)->resourceName() ) ); 391 .arg( (*it)->resourceName() ) );
389 return false; 392 return false;
390 } 393 }
391 394
392 //if ( !save( ticket ) ) 395 //if ( !save( ticket ) )
393 if ( ticket->resource() ) { 396 if ( ticket->resource() ) {
394 if ( ! ticket->resource()->save( ticket ) ) 397 if ( ! ticket->resource()->save( ticket ) )
395 ok = false; 398 ok = false;
396 } else 399 } else
397 ok = false; 400 ok = false;
398 401
399 } 402 }
400 } 403 }
401 return ok; 404 return ok;
402} 405}
403 406
404AddressBook::Iterator AddressBook::begin() 407AddressBook::Iterator AddressBook::begin()
405{ 408{
406 Iterator it = Iterator(); 409 Iterator it = Iterator();
407 it.d->mIt = d->mAddressees.begin(); 410 it.d->mIt = d->mAddressees.begin();
408 return it; 411 return it;
409} 412}
410 413
411AddressBook::ConstIterator AddressBook::begin() const 414AddressBook::ConstIterator AddressBook::begin() const
412{ 415{
413 ConstIterator it = ConstIterator(); 416 ConstIterator it = ConstIterator();
414 it.d->mIt = d->mAddressees.begin(); 417 it.d->mIt = d->mAddressees.begin();
415 return it; 418 return it;
416} 419}
417 420
418AddressBook::Iterator AddressBook::end() 421AddressBook::Iterator AddressBook::end()
419{ 422{
420 Iterator it = Iterator(); 423 Iterator it = Iterator();
421 it.d->mIt = d->mAddressees.end(); 424 it.d->mIt = d->mAddressees.end();
422 return it; 425 return it;
423} 426}
424 427
425AddressBook::ConstIterator AddressBook::end() const 428AddressBook::ConstIterator AddressBook::end() const
426{ 429{
427 ConstIterator it = ConstIterator(); 430 ConstIterator it = ConstIterator();
428 it.d->mIt = d->mAddressees.end(); 431 it.d->mIt = d->mAddressees.end();
429 return it; 432 return it;
430} 433}
431 434
432void AddressBook::clear() 435void AddressBook::clear()
433{ 436{
434 d->mAddressees.clear(); 437 d->mAddressees.clear();
435} 438}
436 439
437Ticket *AddressBook::requestSaveTicket( Resource *resource ) 440Ticket *AddressBook::requestSaveTicket( Resource *resource )
438{ 441{
439 kdDebug(5700) << "AddressBook::requestSaveTicket()" << endl; 442 kdDebug(5700) << "AddressBook::requestSaveTicket()" << endl;
440 443
441 if ( !resource ) 444 if ( !resource )
442 { 445 {
443 qDebug("AddressBook::requestSaveTicket no resource" ); 446 qDebug("AddressBook::requestSaveTicket no resource" );
444 resource = standardResource(); 447 resource = standardResource();
445 } 448 }
446 449
447 KRES::Manager<Resource>::ActiveIterator it; 450 KRES::Manager<Resource>::ActiveIterator it;
448 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) { 451 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) {
449 if ( (*it) == resource ) { 452 if ( (*it) == resource ) {
450 if ( (*it)->readOnly() || !(*it)->isOpen() ) 453 if ( (*it)->readOnly() || !(*it)->isOpen() )
451 return 0; 454 return 0;
452 else 455 else
453 return (*it)->requestSaveTicket(); 456 return (*it)->requestSaveTicket();
454 } 457 }
455 } 458 }
456 459
457 return 0; 460 return 0;
458} 461}
459 462
460void AddressBook::insertAddressee( const Addressee &a, bool setRev ) 463void AddressBook::insertAddressee( const Addressee &a, bool setRev )
461{ 464{
462 if ( blockLSEchange && setRev && a.uid().left( 19 ) == QString("last-syncAddressee-") ) { 465 if ( blockLSEchange && setRev && a.uid().left( 19 ) == QString("last-syncAddressee-") ) {
463 //qDebug("block insert "); 466 //qDebug("block insert ");
464 return; 467 return;
465 } 468 }
466 //qDebug("inserting.... %s ",a.uid().latin1() ); 469 //qDebug("inserting.... %s ",a.uid().latin1() );
467 bool found = false; 470 bool found = false;
468 Addressee::List::Iterator it; 471 Addressee::List::Iterator it;
469 for ( it = d->mAddressees.begin(); it != d->mAddressees.end(); ++it ) { 472 for ( it = d->mAddressees.begin(); it != d->mAddressees.end(); ++it ) {
470 if ( a.uid() == (*it).uid() ) { 473 if ( a.uid() == (*it).uid() ) {
471 474
472 bool changed = false; 475 bool changed = false;
473 Addressee addr = a; 476 Addressee addr = a;
474 if ( addr != (*it) ) 477 if ( addr != (*it) )
475 changed = true; 478 changed = true;
476 479
477 (*it) = a; 480 (*it) = a;
478 if ( (*it).resource() == 0 ) 481 if ( (*it).resource() == 0 )
479 (*it).setResource( standardResource() ); 482 (*it).setResource( standardResource() );
480 483
481 if ( changed ) { 484 if ( changed ) {
482 if ( setRev ) { 485 if ( setRev ) {
483 486
484 // get rid of micro seconds 487 // get rid of micro seconds
485 QDateTime dt = QDateTime::currentDateTime(); 488 QDateTime dt = QDateTime::currentDateTime();
486 QTime t = dt.time(); 489 QTime t = dt.time();
487 dt.setTime( QTime (t.hour (), t.minute (), t.second () ) ); 490 dt.setTime( QTime (t.hour (), t.minute (), t.second () ) );
488 (*it).setRevision( dt ); 491 (*it).setRevision( dt );
489 } 492 }
490 (*it).setChanged( true ); 493 (*it).setChanged( true );
491 } 494 }
492 495
493 found = true; 496 found = true;
494 } else { 497 } else {
495 if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) { 498 if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) {
496 QString name = (*it).uid().mid( 19 ); 499 QString name = (*it).uid().mid( 19 );
497 Addressee b = a; 500 Addressee b = a;
498 QString id = b.getID( name ); 501 QString id = b.getID( name );
499 if ( ! id.isEmpty() ) { 502 if ( ! id.isEmpty() ) {
500 QString des = (*it).note(); 503 QString des = (*it).note();
501 int startN; 504 int startN;
502 if( (startN = des.find( id ) ) >= 0 ) { 505 if( (startN = des.find( id ) ) >= 0 ) {
503 int endN = des.find( ",", startN+1 ); 506 int endN = des.find( ",", startN+1 );
504 des = des.left( startN ) + des.mid( endN+1 ); 507 des = des.left( startN ) + des.mid( endN+1 );
505 (*it).setNote( des ); 508 (*it).setNote( des );
506 } 509 }
507 } 510 }
508 } 511 }
509 } 512 }
510 } 513 }
511 if ( found ) 514 if ( found )
512 return; 515 return;
513 d->mAddressees.append( a ); 516 d->mAddressees.append( a );
514 Addressee& addr = d->mAddressees.last(); 517 Addressee& addr = d->mAddressees.last();
515 if ( addr.resource() == 0 ) 518 if ( addr.resource() == 0 )
516 addr.setResource( standardResource() ); 519 addr.setResource( standardResource() );
517 520
518 addr.setChanged( true ); 521 addr.setChanged( true );
519} 522}
520 523
521void AddressBook::removeAddressee( const Addressee &a ) 524void AddressBook::removeAddressee( const Addressee &a )
522{ 525{
523 Iterator it; 526 Iterator it;
524 Iterator it2; 527 Iterator it2;
525 bool found = false; 528 bool found = false;
526 for ( it = begin(); it != end(); ++it ) { 529 for ( it = begin(); it != end(); ++it ) {
527 if ( a.uid() == (*it).uid() ) { 530 if ( a.uid() == (*it).uid() ) {
528 found = true; 531 found = true;
529 it2 = it; 532 it2 = it;
530 } else { 533 } else {
531 if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) { 534 if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) {
532 QString name = (*it).uid().mid( 19 ); 535 QString name = (*it).uid().mid( 19 );
533 Addressee b = a; 536 Addressee b = a;
534 QString id = b.getID( name ); 537 QString id = b.getID( name );
535 if ( ! id.isEmpty() ) { 538 if ( ! id.isEmpty() ) {
536 QString des = (*it).note(); 539 QString des = (*it).note();
537 if( des.find( id ) < 0 ) { 540 if( des.find( id ) < 0 ) {
538 des += id + ","; 541 des += id + ",";
539 (*it).setNote( des ); 542 (*it).setNote( des );
540 } 543 }
541 } 544 }
542 } 545 }
543 546
544 } 547 }
545 } 548 }
546 549
547 if ( found ) 550 if ( found )
548 removeAddressee( it2 ); 551 removeAddressee( it2 );
549 552
550} 553}
551 554
552void AddressBook::removeDeletedAddressees() 555void AddressBook::removeDeletedAddressees()
553{ 556{
554 deleteRemovedAddressees(); 557 deleteRemovedAddressees();
555 Iterator it = begin(); 558 Iterator it = begin();
556 Iterator it2 ; 559 Iterator it2 ;
557 QDateTime dt ( QDate( 2004,1,1) ); 560 QDateTime dt ( QDate( 2004,1,1) );
558 while ( it != end() ) { 561 while ( it != end() ) {
559 (*it).setRevision( dt ); 562 (*it).setRevision( dt );
560 (*it).removeCustom( "KADDRESSBOOK", "X-ExternalID" ); 563 (*it).removeCustom( "KADDRESSBOOK", "X-ExternalID" );
561 (*it).setIDStr(""); 564 (*it).setIDStr("");
562 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_DELETE || (*it).uid().left( 19 ) == QString("last-syncAddressee-")) { 565 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_DELETE || (*it).uid().left( 19 ) == QString("last-syncAddressee-")) {
563 it2 = it; 566 it2 = it;
564 //qDebug("removing %s ",(*it).uid().latin1() ); 567 //qDebug("removing %s ",(*it).uid().latin1() );
565 ++it; 568 ++it;
566 removeAddressee( it2 ); 569 removeAddressee( it2 );
567 } else { 570 } else {
568 //qDebug("skipping %s ",(*it).uid().latin1() ); 571 //qDebug("skipping %s ",(*it).uid().latin1() );
569 ++it; 572 ++it;
570 } 573 }
571 } 574 }
572 deleteRemovedAddressees(); 575 deleteRemovedAddressees();
573} 576}
574 577
575void AddressBook::removeAddressee( const Iterator &it ) 578void AddressBook::removeAddressee( const Iterator &it )
576{ 579{
577 d->mRemovedAddressees.append( (*it) ); 580 d->mRemovedAddressees.append( (*it) );
578 d->mAddressees.remove( it.d->mIt ); 581 d->mAddressees.remove( it.d->mIt );
579} 582}
580 583
581AddressBook::Iterator AddressBook::find( const Addressee &a ) 584AddressBook::Iterator AddressBook::find( const Addressee &a )
582{ 585{
583 Iterator it; 586 Iterator it;
584 for ( it = begin(); it != end(); ++it ) { 587 for ( it = begin(); it != end(); ++it ) {
585 if ( a.uid() == (*it).uid() ) { 588 if ( a.uid() == (*it).uid() ) {
586 return it; 589 return it;
587 } 590 }
588 } 591 }
589 return end(); 592 return end();
590} 593}
591 594
592Addressee AddressBook::findByUid( const QString &uid ) 595Addressee AddressBook::findByUid( const QString &uid )
593{ 596{
594 Iterator it; 597 Iterator it;
595 for ( it = begin(); it != end(); ++it ) { 598 for ( it = begin(); it != end(); ++it ) {
596 if ( uid == (*it).uid() ) { 599 if ( uid == (*it).uid() ) {
597 return *it; 600 return *it;
598 } 601 }
599 } 602 }
600 return Addressee(); 603 return Addressee();
601} 604}
605Addressee AddressBook::findByExternUid( const QString& uid , const QString& profile )
606{
607 Iterator it;
608 for ( it = begin(); it != end(); ++it ) {
609 if ( uid == (*it).getID( profile ) )
610 return (*it);
611 }
612 return Addressee();
613}
614void AddressBook::mergeAB( AddressBook *aBook, const QString& profile )
615{
616 Iterator it;
617 Addressee ad;
618 for ( it = begin(); it != end(); ++it ) {
619 ad = aBook->findByExternUid( (*it).externalUID(), profile );
620 if ( !ad.isEmpty() ) {
621 (*it).mergeContact( ad );
622 }
623 }
624}
625
602#if 0 626#if 0
603Addressee::List AddressBook::getExternLastSyncAddressees() 627Addressee::List AddressBook::getExternLastSyncAddressees()
604{ 628{
605 Addressee::List results; 629 Addressee::List results;
606 630
607 Iterator it; 631 Iterator it;
608 for ( it = begin(); it != end(); ++it ) { 632 for ( it = begin(); it != end(); ++it ) {
609 if ( (*it).uid().left( 19 ) == "last-syncAddressee-" ) { 633 if ( (*it).uid().left( 19 ) == "last-syncAddressee-" ) {
610 if ( (*it).familyName().left(4) == "!E: " ) 634 if ( (*it).familyName().left(4) == "!E: " )
611 results.append( *it ); 635 results.append( *it );
612 } 636 }
613 } 637 }
614 638
615 return results; 639 return results;
616} 640}
617#endif 641#endif
618void AddressBook::resetTempSyncStat() 642void AddressBook::resetTempSyncStat()
619{ 643{
620 Iterator it; 644 Iterator it;
621 for ( it = begin(); it != end(); ++it ) { 645 for ( it = begin(); it != end(); ++it ) {
622 (*it).setTempSyncStat ( SYNC_TEMPSTATE_INITIAL ); 646 (*it).setTempSyncStat ( SYNC_TEMPSTATE_INITIAL );
623 } 647 }
624 648
625} 649}
626 650
627QStringList AddressBook:: uidList() 651QStringList AddressBook:: uidList()
628{ 652{
629 QStringList results; 653 QStringList results;
630 Iterator it; 654 Iterator it;
631 for ( it = begin(); it != end(); ++it ) { 655 for ( it = begin(); it != end(); ++it ) {
632 results.append( (*it).uid() ); 656 results.append( (*it).uid() );
633 } 657 }
634 return results; 658 return results;
635} 659}
636 660
637 661
638Addressee::List AddressBook::allAddressees() 662Addressee::List AddressBook::allAddressees()
639{ 663{
640 return d->mAddressees; 664 return d->mAddressees;
641 665
642} 666}
643 667
644Addressee::List AddressBook::findByName( const QString &name ) 668Addressee::List AddressBook::findByName( const QString &name )
645{ 669{
646 Addressee::List results; 670 Addressee::List results;
647 671
648 Iterator it; 672 Iterator it;
649 for ( it = begin(); it != end(); ++it ) { 673 for ( it = begin(); it != end(); ++it ) {
650 if ( name == (*it).realName() ) { 674 if ( name == (*it).realName() ) {
651 results.append( *it ); 675 results.append( *it );
652 } 676 }
653 } 677 }
654 678
655 return results; 679 return results;
656} 680}
657 681
658Addressee::List AddressBook::findByEmail( const QString &email ) 682Addressee::List AddressBook::findByEmail( const QString &email )
659{ 683{
660 Addressee::List results; 684 Addressee::List results;
661 QStringList mailList; 685 QStringList mailList;
662 686
663 Iterator it; 687 Iterator it;
664 for ( it = begin(); it != end(); ++it ) { 688 for ( it = begin(); it != end(); ++it ) {
665 mailList = (*it).emails(); 689 mailList = (*it).emails();
666 for ( QStringList::Iterator ite = mailList.begin(); ite != mailList.end(); ++ite ) { 690 for ( QStringList::Iterator ite = mailList.begin(); ite != mailList.end(); ++ite ) {
667 if ( email == (*ite) ) { 691 if ( email == (*ite) ) {
668 results.append( *it ); 692 results.append( *it );
669 } 693 }
670 } 694 }
671 } 695 }
672 696
673 return results; 697 return results;
674} 698}
675 699
676Addressee::List AddressBook::findByCategory( const QString &category ) 700Addressee::List AddressBook::findByCategory( const QString &category )
677{ 701{
678 Addressee::List results; 702 Addressee::List results;
679 703
680 Iterator it; 704 Iterator it;
681 for ( it = begin(); it != end(); ++it ) { 705 for ( it = begin(); it != end(); ++it ) {
682 if ( (*it).hasCategory( category) ) { 706 if ( (*it).hasCategory( category) ) {
683 results.append( *it ); 707 results.append( *it );
684 } 708 }
685 } 709 }
686 710
687 return results; 711 return results;
688} 712}
689 713
690void AddressBook::dump() const 714void AddressBook::dump() const
691{ 715{
692 kdDebug(5700) << "AddressBook::dump() --- begin ---" << endl; 716 kdDebug(5700) << "AddressBook::dump() --- begin ---" << endl;
693 717
694 ConstIterator it; 718 ConstIterator it;
695 for( it = begin(); it != end(); ++it ) { 719 for( it = begin(); it != end(); ++it ) {
696 (*it).dump(); 720 (*it).dump();
697 } 721 }
698 722
699 kdDebug(5700) << "AddressBook::dump() --- end ---" << endl; 723 kdDebug(5700) << "AddressBook::dump() --- end ---" << endl;
700} 724}
701 725
702QString AddressBook::identifier() 726QString AddressBook::identifier()
703{ 727{
704 QStringList identifier; 728 QStringList identifier;
705 729
706 730
707 KRES::Manager<Resource>::ActiveIterator it; 731 KRES::Manager<Resource>::ActiveIterator it;
708 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) { 732 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) {
709 if ( !(*it)->identifier().isEmpty() ) 733 if ( !(*it)->identifier().isEmpty() )
710 identifier.append( (*it)->identifier() ); 734 identifier.append( (*it)->identifier() );
711 } 735 }
712 736
713 return identifier.join( ":" ); 737 return identifier.join( ":" );
714} 738}
715 739
716Field::List AddressBook::fields( int category ) 740Field::List AddressBook::fields( int category )
717{ 741{
718 if ( d->mAllFields.isEmpty() ) { 742 if ( d->mAllFields.isEmpty() ) {
719 d->mAllFields = Field::allFields(); 743 d->mAllFields = Field::allFields();
720 } 744 }
721 745
722 if ( category == Field::All ) return d->mAllFields; 746 if ( category == Field::All ) return d->mAllFields;
723 747
724 Field::List result; 748 Field::List result;
725 Field::List::ConstIterator it; 749 Field::List::ConstIterator it;
726 for( it = d->mAllFields.begin(); it != d->mAllFields.end(); ++it ) { 750 for( it = d->mAllFields.begin(); it != d->mAllFields.end(); ++it ) {
727 if ( (*it)->category() & category ) result.append( *it ); 751 if ( (*it)->category() & category ) result.append( *it );
728 } 752 }
729 753
730 return result; 754 return result;
731} 755}
732 756
733bool AddressBook::addCustomField( const QString &label, int category, 757bool AddressBook::addCustomField( const QString &label, int category,
734 const QString &key, const QString &app ) 758 const QString &key, const QString &app )
735{ 759{
736 if ( d->mAllFields.isEmpty() ) { 760 if ( d->mAllFields.isEmpty() ) {
737 d->mAllFields = Field::allFields(); 761 d->mAllFields = Field::allFields();
738 } 762 }
739//US QString a = app.isNull() ? KGlobal::instance()->instanceName() : app; 763//US QString a = app.isNull() ? KGlobal::instance()->instanceName() : app;
740 QString a = app.isNull() ? KGlobal::getAppName() : app; 764 QString a = app.isNull() ? KGlobal::getAppName() : app;
741 765
742 QString k = key.isNull() ? label : key; 766 QString k = key.isNull() ? label : key;
743 767
744 Field *field = Field::createCustomField( label, category, k, a ); 768 Field *field = Field::createCustomField( label, category, k, a );
745 769
746 if ( !field ) return false; 770 if ( !field ) return false;
747 771
748 d->mAllFields.append( field ); 772 d->mAllFields.append( field );
749 773
750 return true; 774 return true;
751} 775}
752 776
753QDataStream &KABC::operator<<( QDataStream &s, const AddressBook &ab ) 777QDataStream &KABC::operator<<( QDataStream &s, const AddressBook &ab )
754{ 778{
755 if (!ab.d) return s; 779 if (!ab.d) return s;
756 780
757 return s << ab.d->mAddressees; 781 return s << ab.d->mAddressees;
758} 782}
759 783
760QDataStream &KABC::operator>>( QDataStream &s, AddressBook &ab ) 784QDataStream &KABC::operator>>( QDataStream &s, AddressBook &ab )
761{ 785{
762 if (!ab.d) return s; 786 if (!ab.d) return s;
763 787
764 s >> ab.d->mAddressees; 788 s >> ab.d->mAddressees;
765 789
766 return s; 790 return s;
767} 791}
768 792
769bool AddressBook::addResource( Resource *resource ) 793bool AddressBook::addResource( Resource *resource )
770{ 794{
771 if ( !resource->open() ) { 795 if ( !resource->open() ) {
772 kdDebug(5700) << "AddressBook::addResource(): can't add resource" << endl; 796 kdDebug(5700) << "AddressBook::addResource(): can't add resource" << endl;
773 return false; 797 return false;
774 } 798 }
775 799
776 resource->setAddressBook( this ); 800 resource->setAddressBook( this );
777 801
778 d->mManager->add( resource ); 802 d->mManager->add( resource );
779 return true; 803 return true;
780} 804}
781 805
782bool AddressBook::removeResource( Resource *resource ) 806bool AddressBook::removeResource( Resource *resource )
783{ 807{
784 resource->close(); 808 resource->close();
785 809
786 if ( resource == standardResource() ) 810 if ( resource == standardResource() )
787 d->mManager->setStandardResource( 0 ); 811 d->mManager->setStandardResource( 0 );
788 812
789 resource->setAddressBook( 0 ); 813 resource->setAddressBook( 0 );
790 814
791 d->mManager->remove( resource ); 815 d->mManager->remove( resource );
792 return true; 816 return true;
793} 817}
794 818
795QPtrList<Resource> AddressBook::resources() 819QPtrList<Resource> AddressBook::resources()
796{ 820{
797 QPtrList<Resource> list; 821 QPtrList<Resource> list;
798 822
799// qDebug("AddressBook::resources() 1"); 823// qDebug("AddressBook::resources() 1");
800 824
801 KRES::Manager<Resource>::ActiveIterator it; 825 KRES::Manager<Resource>::ActiveIterator it;
802 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) 826 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it )
803 list.append( *it ); 827 list.append( *it );
804 828
805 return list; 829 return list;
806} 830}
807 831
808/*US 832/*US
809void AddressBook::setErrorHandler( ErrorHandler *handler ) 833void AddressBook::setErrorHandler( ErrorHandler *handler )
810{ 834{
811 delete d->mErrorHandler; 835 delete d->mErrorHandler;
812 d->mErrorHandler = handler; 836 d->mErrorHandler = handler;
813} 837}
814*/ 838*/
815 839
816void AddressBook::error( const QString& msg ) 840void AddressBook::error( const QString& msg )
817{ 841{
818/*US 842/*US
819 if ( !d->mErrorHandler ) // create default error handler 843 if ( !d->mErrorHandler ) // create default error handler
820 d->mErrorHandler = new ConsoleErrorHandler; 844 d->mErrorHandler = new ConsoleErrorHandler;
821 845
822 if ( d->mErrorHandler ) 846 if ( d->mErrorHandler )
823 d->mErrorHandler->error( msg ); 847 d->mErrorHandler->error( msg );
824 else 848 else
825 kdError(5700) << "no error handler defined" << endl; 849 kdError(5700) << "no error handler defined" << endl;
826*/ 850*/
827 kdDebug(5700) << "msg" << endl; 851 kdDebug(5700) << "msg" << endl;
828 qDebug(msg); 852 qDebug(msg);
829} 853}
830 854
831void AddressBook::deleteRemovedAddressees() 855void AddressBook::deleteRemovedAddressees()
832{ 856{
833 Addressee::List::Iterator it; 857 Addressee::List::Iterator it;
834 for ( it = d->mRemovedAddressees.begin(); it != d->mRemovedAddressees.end(); ++it ) { 858 for ( it = d->mRemovedAddressees.begin(); it != d->mRemovedAddressees.end(); ++it ) {
835 Resource *resource = (*it).resource(); 859 Resource *resource = (*it).resource();
836 if ( resource && !resource->readOnly() && resource->isOpen() ) 860 if ( resource && !resource->readOnly() && resource->isOpen() )
837 resource->removeAddressee( *it ); 861 resource->removeAddressee( *it );
838 } 862 }
839 863
840 d->mRemovedAddressees.clear(); 864 d->mRemovedAddressees.clear();
841} 865}
842 866
843void AddressBook::setStandardResource( Resource *resource ) 867void AddressBook::setStandardResource( Resource *resource )
844{ 868{
845// qDebug("AddressBook::setStandardResource 1"); 869// qDebug("AddressBook::setStandardResource 1");
846 d->mManager->setStandardResource( resource ); 870 d->mManager->setStandardResource( resource );
847} 871}
848 872
849Resource *AddressBook::standardResource() 873Resource *AddressBook::standardResource()
850{ 874{
851 return d->mManager->standardResource(); 875 return d->mManager->standardResource();
852} 876}
853 877
854KRES::Manager<Resource> *AddressBook::resourceManager() 878KRES::Manager<Resource> *AddressBook::resourceManager()
855{ 879{
856 return d->mManager; 880 return d->mManager;
857} 881}