summaryrefslogtreecommitdiff
path: root/libopie2/opiepim/backend/ocontactaccessbackend_xml.h
Unidiff
Diffstat (limited to 'libopie2/opiepim/backend/ocontactaccessbackend_xml.h') (more/less context) (show whitespace changes)
-rw-r--r--libopie2/opiepim/backend/ocontactaccessbackend_xml.h24
1 files changed, 15 insertions, 9 deletions
diff --git a/libopie2/opiepim/backend/ocontactaccessbackend_xml.h b/libopie2/opiepim/backend/ocontactaccessbackend_xml.h
index ae6ec9e..c765ff5 100644
--- a/libopie2/opiepim/backend/ocontactaccessbackend_xml.h
+++ b/libopie2/opiepim/backend/ocontactaccessbackend_xml.h
@@ -14,12 +14,15 @@
14 * 14 *
15 * ===================================================================== 15 * =====================================================================
16 * Version: $Id$ 16 * Version: $Id$
17 * ===================================================================== 17 * =====================================================================
18 * History: 18 * History:
19 * $Log$ 19 * $Log$
20 * Revision 1.9 2002/12/08 12:48:57 eilers
21 * Moved journal-enum from ocontact into i the xml-backend..
22 *
20 * Revision 1.8 2002/11/14 17:04:24 eilers 23 * Revision 1.8 2002/11/14 17:04:24 eilers
21 * Sorting will now work if fullname is identical on some entries 24 * Sorting will now work if fullname is identical on some entries
22 * 25 *
23 * Revision 1.7 2002/11/13 15:02:46 eilers 26 * Revision 1.7 2002/11/13 15:02:46 eilers
24 * Small Bug in sorted fixed 27 * Small Bug in sorted fixed
25 * 28 *
@@ -339,13 +342,13 @@ class OContactAccessBackend_XML : public OContactAccessBackend {
339 return m_currentQuery; 342 return m_currentQuery;
340 343
341 } 344 }
342 bool add ( const OContact &newcontact ) 345 bool add ( const OContact &newcontact )
343 { 346 {
344 //qWarning("odefaultbackend: ACTION::ADD"); 347 //qWarning("odefaultbackend: ACTION::ADD");
345 updateJournal (newcontact, OContact::ACTION_ADD); 348 updateJournal (newcontact, ACTION_ADD);
346 addContact_p( newcontact ); 349 addContact_p( newcontact );
347 350
348 m_changed = true; 351 m_changed = true;
349 352
350 return true; 353 return true;
351 } 354 }
@@ -361,13 +364,13 @@ class OContactAccessBackend_XML : public OContactAccessBackend {
361 if ( (*it).uid() == contact.uid() ){ 364 if ( (*it).uid() == contact.uid() ){
362 found = true; 365 found = true;
363 break; 366 break;
364 } 367 }
365 } 368 }
366 if (found) { 369 if (found) {
367 updateJournal (contact, OContact::ACTION_REPLACE); 370 updateJournal (contact, ACTION_REPLACE);
368 m_contactList.remove (it); 371 m_contactList.remove (it);
369 m_contactList.append (contact); 372 m_contactList.append (contact);
370 return true; 373 return true;
371 } else 374 } else
372 return false; 375 return false;
373 } 376 }
@@ -382,25 +385,28 @@ class OContactAccessBackend_XML : public OContactAccessBackend {
382 if ((*it).uid() == uid){ 385 if ((*it).uid() == uid){
383 found = true; 386 found = true;
384 break; 387 break;
385 } 388 }
386 } 389 }
387 if (found) { 390 if (found) {
388 updateJournal ( *it, OContact::ACTION_REMOVE); 391 updateJournal ( *it, ACTION_REMOVE);
389 m_contactList.remove (it); 392 m_contactList.remove (it);
390 return true; 393 return true;
391 } else 394 } else
392 return false; 395 return false;
393 } 396 }
394 397
395 bool reload(){ 398 bool reload(){
396 /* Reload is the same as load in this implementation */ 399 /* Reload is the same as load in this implementation */
397 return ( load() ); 400 return ( load() );
398 } 401 }
399 402
400 private: 403 private:
404
405 enum journal_action { ACTION_ADD, ACTION_REMOVE, ACTION_REPLACE };
406
401 void addContact_p( const OContact &newcontact ){ 407 void addContact_p( const OContact &newcontact ){
402 m_contactList.append (newcontact); 408 m_contactList.append (newcontact);
403 } 409 }
404 410
405 /* This function loads the xml-database and the journalfile */ 411 /* This function loads the xml-database and the journalfile */
406 bool load( const QString filename, bool isJournal ) { 412 bool load( const QString filename, bool isJournal ) {
@@ -414,13 +420,13 @@ class OContactAccessBackend_XML : public OContactAccessBackend {
414 } 420 }
415 421
416 const int JOURNALACTION = Qtopia::Notes + 1; 422 const int JOURNALACTION = Qtopia::Notes + 1;
417 const int JOURNALROW = JOURNALACTION + 1; 423 const int JOURNALROW = JOURNALACTION + 1;
418 424
419 bool foundAction = false; 425 bool foundAction = false;
420 OContact::journal_action action = OContact::ACTION_ADD; 426 journal_action action = ACTION_ADD;
421 int journalKey = 0; 427 int journalKey = 0;
422 QMap<int, QString> contactMap; 428 QMap<int, QString> contactMap;
423 QMap<QString, QString> customMap; 429 QMap<QString, QString> customMap;
424 QMap<QString, QString>::Iterator customIt; 430 QMap<QString, QString>::Iterator customIt;
425 QAsciiDict<int> dict( 47 ); 431 QAsciiDict<int> dict( 47 );
426 432
@@ -535,13 +541,13 @@ class OContactAccessBackend_XML : public OContactAccessBackend {
535 break; 541 break;
536 case Qtopia::AddressCategory: 542 case Qtopia::AddressCategory:
537 contact.setCategories( Qtopia::Record::idsFromString( it.data( ))); 543 contact.setCategories( Qtopia::Record::idsFromString( it.data( )));
538 break; 544 break;
539 */ 545 */
540 case JOURNALACTION: 546 case JOURNALACTION:
541 action = OContact::journal_action(it.data().toInt()); 547 action = journal_action(it.data().toInt());
542 foundAction = true; 548 foundAction = true;
543 qWarning ("ODefBack(journal)::ACTION found: %d", action); 549 qWarning ("ODefBack(journal)::ACTION found: %d", action);
544 break; 550 break;
545 case JOURNALROW: 551 case JOURNALROW:
546 journalKey = it.data().toInt(); 552 journalKey = it.data().toInt();
547 break; 553 break;
@@ -557,21 +563,21 @@ class OContactAccessBackend_XML : public OContactAccessBackend {
557 contact.setCustomField( customIt.key(), customIt.data() ); 563 contact.setCustomField( customIt.key(), customIt.data() );
558 } 564 }
559 565
560 if (foundAction){ 566 if (foundAction){
561 foundAction = false; 567 foundAction = false;
562 switch ( action ) { 568 switch ( action ) {
563 case OContact::ACTION_ADD: 569 case ACTION_ADD:
564 addContact_p (contact); 570 addContact_p (contact);
565 break; 571 break;
566 case OContact::ACTION_REMOVE: 572 case ACTION_REMOVE:
567 if ( !remove (contact.uid()) ) 573 if ( !remove (contact.uid()) )
568 qWarning ("ODefBack(journal)::Unable to remove uid: %d", 574 qWarning ("ODefBack(journal)::Unable to remove uid: %d",
569 contact.uid() ); 575 contact.uid() );
570 break; 576 break;
571 case OContact::ACTION_REPLACE: 577 case ACTION_REPLACE:
572 if ( !replace ( contact ) ) 578 if ( !replace ( contact ) )
573 qWarning ("ODefBack(journal)::Unable to replace uid: %d", 579 qWarning ("ODefBack(journal)::Unable to replace uid: %d",
574 contact.uid() ); 580 contact.uid() );
575 break; 581 break;
576 default: 582 default:
577 qWarning ("Unknown action: ignored !"); 583 qWarning ("Unknown action: ignored !");
@@ -592,13 +598,13 @@ class OContactAccessBackend_XML : public OContactAccessBackend {
592 qWarning("returning from loading" ); 598 qWarning("returning from loading" );
593 return true; 599 return true;
594 } 600 }
595 601
596 602
597 void updateJournal( const OContact& cnt, 603 void updateJournal( const OContact& cnt,
598 OContact::journal_action action ) { 604 journal_action action ) {
599 QFile f( m_journalName ); 605 QFile f( m_journalName );
600 bool created = !f.exists(); 606 bool created = !f.exists();
601 if ( !f.open(IO_WriteOnly|IO_Append) ) 607 if ( !f.open(IO_WriteOnly|IO_Append) )
602 return; 608 return;
603 609
604 QString buf; 610 QString buf;