summaryrefslogtreecommitdiffabout
path: root/kabc
authorzautrix <zautrix>2004-09-20 19:27:24 (UTC)
committer zautrix <zautrix>2004-09-20 19:27:24 (UTC)
commited49c55dac215ac2ed9286ebfc36e5a19417f0bb (patch) (unidiff)
tree79f933ed5d4a9a9df524dbd71d41d12dde007401 /kabc
parent138be6cfa921cd8a07fa0b18046d955e7d2dbd6e (diff)
downloadkdepimpi-ed49c55dac215ac2ed9286ebfc36e5a19417f0bb.zip
kdepimpi-ed49c55dac215ac2ed9286ebfc36e5a19417f0bb.tar.gz
kdepimpi-ed49c55dac215ac2ed9286ebfc36e5a19417f0bb.tar.bz2
more DTM sync
Diffstat (limited to 'kabc') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addressbook.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp
index 17b9ba2..adb451f 100644
--- a/kabc/addressbook.cpp
+++ b/kabc/addressbook.cpp
@@ -129,258 +129,261 @@ AddressBook::Iterator &AddressBook::Iterator::operator--()
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 if ( config == "sharp" ) {
258 con->writeEntry( "ResourceType", QString("sharp") );
259 } else {
258 con->writeEntry( "ResourceType", QString("file") ); 260 con->writeEntry( "ResourceType", QString("file") );
261 }
259 //con->sync(); 262 //con->sync();
260 d->mConfig = con; 263 d->mConfig = con;
261 } 264 }
262 else 265 else
263 d->mConfig = new KConfig( locateLocal("config", config) ); 266 d->mConfig = new KConfig( locateLocal("config", config) );
264// qDebug("AddressBook::init 1 config=%s",config.latin1() ); 267// qDebug("AddressBook::init 1 config=%s",config.latin1() );
265 } 268 }
266 else { 269 else {
267 d->mConfig = 0; 270 d->mConfig = 0;
268// qDebug("AddressBook::init 1 config=0"); 271// qDebug("AddressBook::init 1 config=0");
269 } 272 }
270 273
271//US d->mErrorHandler = 0; 274//US d->mErrorHandler = 0;
272 d->mManager = new KRES::Manager<Resource>( fami, false ); 275 d->mManager = new KRES::Manager<Resource>( fami, false );
273 d->mManager->readConfig( d->mConfig ); 276 d->mManager->readConfig( d->mConfig );
274 if ( family == "syncContact" ) { 277 if ( family == "syncContact" ) {
275 KRES::Manager<Resource> *manager = d->mManager; 278 KRES::Manager<Resource> *manager = d->mManager;
276 KRES::Manager<Resource>::ActiveIterator it; 279 KRES::Manager<Resource>::ActiveIterator it;
277 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) { 280 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) {
278 (*it)->setAddressBook( this ); 281 (*it)->setAddressBook( this );
279 if ( !(*it)->open() ) 282 if ( !(*it)->open() )
280 error( QString( "Unable to open resource '%1'!" ).arg( (*it)->resourceName() ) ); 283 error( QString( "Unable to open resource '%1'!" ).arg( (*it)->resourceName() ) );
281 } 284 }
282 Resource *res = standardResource(); 285 Resource *res = standardResource();
283 if ( !res ) { 286 if ( !res ) {
284 qDebug("ERROR: no standard resource"); 287 qDebug("ERROR: no standard resource");
285 res = manager->createResource( "file" ); 288 res = manager->createResource( "file" );
286 if ( res ) 289 if ( res )
287 { 290 {
288 addResource( res ); 291 addResource( res );
289 } 292 }
290 else 293 else
291 qDebug(" No resource available!!!"); 294 qDebug(" No resource available!!!");
292 } 295 }
293 setStandardResource( res ); 296 setStandardResource( res );
294 manager->writeConfig(); 297 manager->writeConfig();
295 } 298 }
296 addCustomField( i18n( "Department" ), KABC::Field::Organization, 299 addCustomField( i18n( "Department" ), KABC::Field::Organization,
297 "X-Department", "KADDRESSBOOK" ); 300 "X-Department", "KADDRESSBOOK" );
298 addCustomField( i18n( "Profession" ), KABC::Field::Organization, 301 addCustomField( i18n( "Profession" ), KABC::Field::Organization,
299 "X-Profession", "KADDRESSBOOK" ); 302 "X-Profession", "KADDRESSBOOK" );
300 addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization, 303 addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization,
301 "X-AssistantsName", "KADDRESSBOOK" ); 304 "X-AssistantsName", "KADDRESSBOOK" );
302 addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization, 305 addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization,
303 "X-ManagersName", "KADDRESSBOOK" ); 306 "X-ManagersName", "KADDRESSBOOK" );
304 addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal, 307 addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal,
305 "X-SpousesName", "KADDRESSBOOK" ); 308 "X-SpousesName", "KADDRESSBOOK" );
306 addCustomField( i18n( "Office" ), KABC::Field::Personal, 309 addCustomField( i18n( "Office" ), KABC::Field::Personal,
307 "X-Office", "KADDRESSBOOK" ); 310 "X-Office", "KADDRESSBOOK" );
308 addCustomField( i18n( "IM Address" ), KABC::Field::Personal, 311 addCustomField( i18n( "IM Address" ), KABC::Field::Personal,
309 "X-IMAddress", "KADDRESSBOOK" ); 312 "X-IMAddress", "KADDRESSBOOK" );
310 addCustomField( i18n( "Anniversary" ), KABC::Field::Personal, 313 addCustomField( i18n( "Anniversary" ), KABC::Field::Personal,
311 "X-Anniversary", "KADDRESSBOOK" ); 314 "X-Anniversary", "KADDRESSBOOK" );
312 315
313 //US added this field to become compatible with Opie/qtopia addressbook 316 //US added this field to become compatible with Opie/qtopia addressbook
314 // values can be "female" or "male" or "". An empty field represents undefined. 317 // values can be "female" or "male" or "". An empty field represents undefined.
315 addCustomField( i18n( "Gender" ), KABC::Field::Personal, 318 addCustomField( i18n( "Gender" ), KABC::Field::Personal,
316 "X-Gender", "KADDRESSBOOK" ); 319 "X-Gender", "KADDRESSBOOK" );
317 addCustomField( i18n( "Children" ), KABC::Field::Personal, 320 addCustomField( i18n( "Children" ), KABC::Field::Personal,
318 "X-Children", "KADDRESSBOOK" ); 321 "X-Children", "KADDRESSBOOK" );
319 addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal, 322 addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal,
320 "X-FreeBusyUrl", "KADDRESSBOOK" ); 323 "X-FreeBusyUrl", "KADDRESSBOOK" );
321 addCustomField( i18n( "ExternalID" ), KABC::Field::Personal, 324 addCustomField( i18n( "ExternalID" ), KABC::Field::Personal,
322 "X-ExternalID", "KADDRESSBOOK" ); 325 "X-ExternalID", "KADDRESSBOOK" );
323} 326}
324 327
325AddressBook::~AddressBook() 328AddressBook::~AddressBook()
326{ 329{
327 delete d->mConfig; d->mConfig = 0; 330 delete d->mConfig; d->mConfig = 0;
328 delete d->mManager; d->mManager = 0; 331 delete d->mManager; d->mManager = 0;
329//US delete d->mErrorHandler; d->mErrorHandler = 0; 332//US delete d->mErrorHandler; d->mErrorHandler = 0;
330 delete d; d = 0; 333 delete d; d = 0;
331} 334}
332 335
333bool AddressBook::load() 336bool AddressBook::load()
334{ 337{
335 338
336 339
337 clear(); 340 clear();
338 341
339 KRES::Manager<Resource>::ActiveIterator it; 342 KRES::Manager<Resource>::ActiveIterator it;
340 bool ok = true; 343 bool ok = true;
341 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) 344 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it )
342 if ( !(*it)->load() ) { 345 if ( !(*it)->load() ) {
343 error( i18n("Unable to load resource '%1'").arg( (*it)->resourceName() ) ); 346 error( i18n("Unable to load resource '%1'").arg( (*it)->resourceName() ) );
344 ok = false; 347 ok = false;
345 } 348 }
346 349
347 // mark all addressees as unchanged 350 // mark all addressees as unchanged
348 Addressee::List::Iterator addrIt; 351 Addressee::List::Iterator addrIt;
349 for ( addrIt = d->mAddressees.begin(); addrIt != d->mAddressees.end(); ++addrIt ) { 352 for ( addrIt = d->mAddressees.begin(); addrIt != d->mAddressees.end(); ++addrIt ) {
350 (*addrIt).setChanged( false ); 353 (*addrIt).setChanged( false );
351 QString id = (*addrIt).custom( "KADDRESSBOOK", "X-ExternalID" ); 354 QString id = (*addrIt).custom( "KADDRESSBOOK", "X-ExternalID" );
352 if ( !id.isEmpty() ) { 355 if ( !id.isEmpty() ) {
353 //qDebug("setId aa %s ", id.latin1()); 356 //qDebug("setId aa %s ", id.latin1());
354 (*addrIt).setIDStr(id ); 357 (*addrIt).setIDStr(id );
355 } 358 }
356 } 359 }
357 blockLSEchange = true; 360 blockLSEchange = true;
358 return ok; 361 return ok;
359} 362}
360 363
361bool AddressBook::save( Ticket *ticket ) 364bool AddressBook::save( Ticket *ticket )
362{ 365{
363 kdDebug(5700) << "AddressBook::save()"<< endl; 366 kdDebug(5700) << "AddressBook::save()"<< endl;
364 367
365 if ( ticket->resource() ) { 368 if ( ticket->resource() ) {
366 deleteRemovedAddressees(); 369 deleteRemovedAddressees();
367 return ticket->resource()->save( ticket ); 370 return ticket->resource()->save( ticket );
368 } 371 }
369 372
370 return false; 373 return false;
371} 374}
372bool AddressBook::saveAB() 375bool AddressBook::saveAB()
373{ 376{
374 bool ok = true; 377 bool ok = true;
375 378
376 deleteRemovedAddressees(); 379 deleteRemovedAddressees();
377 Iterator ait; 380 Iterator ait;
378 for ( ait = begin(); ait != end(); ++ait ) { 381 for ( ait = begin(); ait != end(); ++ait ) {
379 if ( !(*ait).IDStr().isEmpty() ) { 382 if ( !(*ait).IDStr().isEmpty() ) {
380 (*ait).insertCustom( "KADDRESSBOOK", "X-ExternalID", (*ait).IDStr() ); 383 (*ait).insertCustom( "KADDRESSBOOK", "X-ExternalID", (*ait).IDStr() );
381 } 384 }
382 } 385 }
383 KRES::Manager<Resource>::ActiveIterator it; 386 KRES::Manager<Resource>::ActiveIterator it;
384 KRES::Manager<Resource> *manager = d->mManager; 387 KRES::Manager<Resource> *manager = d->mManager;
385 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) { 388 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) {
386 if ( !(*it)->readOnly() && (*it)->isOpen() ) { 389 if ( !(*it)->readOnly() && (*it)->isOpen() ) {