-rw-r--r-- | libopie/pim/ocontact.h | 2 | ||||
-rw-r--r-- | libopie/pim/ocontactaccessbackend_xml.h | 24 |
2 files changed, 15 insertions, 11 deletions
diff --git a/libopie/pim/ocontact.h b/libopie/pim/ocontact.h index 65ba43e..1fd1c75 100644 --- a/libopie/pim/ocontact.h +++ b/libopie/pim/ocontact.h | |||
@@ -41,14 +41,12 @@ class QPC_EXPORT OContact : public OPimRecord | |||
41 | friend class DataSet; | 41 | friend class DataSet; |
42 | public: | 42 | public: |
43 | OContact(); | 43 | OContact(); |
44 | OContact( const QMap<int, QString> &fromMap ); | 44 | OContact( const QMap<int, QString> &fromMap ); |
45 | virtual ~OContact(); | 45 | virtual ~OContact(); |
46 | 46 | ||
47 | enum journal_action { ACTION_ADD, ACTION_REMOVE, ACTION_REPLACE }; | ||
48 | |||
49 | /* | 47 | /* |
50 | * do we need to inline them | 48 | * do we need to inline them |
51 | * if yes do we need to inline them this way? | 49 | * if yes do we need to inline them this way? |
52 | * -zecke | 50 | * -zecke |
53 | */ | 51 | */ |
54 | void setTitle( const QString &v ) { replace( Qtopia::Title, v ); } | 52 | void setTitle( const QString &v ) { replace( Qtopia::Title, v ); } |
diff --git a/libopie/pim/ocontactaccessbackend_xml.h b/libopie/pim/ocontactaccessbackend_xml.h index ae6ec9e..c765ff5 100644 --- a/libopie/pim/ocontactaccessbackend_xml.h +++ b/libopie/pim/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; |