author | zautrix <zautrix> | 2004-09-21 07:05:01 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2004-09-21 07:05:01 (UTC) |
commit | 434ddaa08e0a650422ef271332a1d11879028095 (patch) (unidiff) | |
tree | e4f229120d8bfa9febb7ab123b1311329f0e6aa4 /kabc/addressee.cpp | |
parent | ed49c55dac215ac2ed9286ebfc36e5a19417f0bb (diff) | |
download | kdepimpi-434ddaa08e0a650422ef271332a1d11879028095.zip kdepimpi-434ddaa08e0a650422ef271332a1d11879028095.tar.gz kdepimpi-434ddaa08e0a650422ef271332a1d11879028095.tar.bz2 |
DTM sync fixes
-rw-r--r-- | kabc/addressee.cpp | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp index e241281..31ce1d6 100644 --- a/kabc/addressee.cpp +++ b/kabc/addressee.cpp | |||
@@ -30,32 +30,34 @@ $Id$ | |||
30 | 30 | ||
31 | #include <ksharedptr.h> | 31 | #include <ksharedptr.h> |
32 | #include <kdebug.h> | 32 | #include <kdebug.h> |
33 | #include <kapplication.h> | 33 | #include <kapplication.h> |
34 | #include <klocale.h> | 34 | #include <klocale.h> |
35 | #include <kidmanager.h> | 35 | #include <kidmanager.h> |
36 | //US | 36 | //US |
37 | #include <kstandarddirs.h> | 37 | #include <kstandarddirs.h> |
38 | #include <libkcal/syncdefines.h> | 38 | #include <libkcal/syncdefines.h> |
39 | 39 | ||
40 | //US #include "resource.h" | 40 | //US #include "resource.h" |
41 | #include "addressee.h" | 41 | #include "addressee.h" |
42 | 42 | ||
43 | using namespace KABC; | 43 | using namespace KABC; |
44 | 44 | ||
45 | static bool matchBinaryPattern( int value, int pattern ); | 45 | static bool matchBinaryPattern( int value, int pattern ); |
46 | static bool matchBinaryPatternA( int value, int pattern ); | ||
47 | static bool matchBinaryPatternP( int value, int pattern ); | ||
46 | 48 | ||
47 | struct Addressee::AddresseeData : public KShared | 49 | struct Addressee::AddresseeData : public KShared |
48 | { | 50 | { |
49 | QString uid; | 51 | QString uid; |
50 | QString name; | 52 | QString name; |
51 | QString formattedName; | 53 | QString formattedName; |
52 | QString familyName; | 54 | QString familyName; |
53 | QString givenName; | 55 | QString givenName; |
54 | QString additionalName; | 56 | QString additionalName; |
55 | QString prefix; | 57 | QString prefix; |
56 | QString suffix; | 58 | QString suffix; |
57 | QString nickName; | 59 | QString nickName; |
58 | QDateTime birthday; | 60 | QDateTime birthday; |
59 | QString mailer; | 61 | QString mailer; |
60 | TimeZone timeZone; | 62 | TimeZone timeZone; |
61 | Geo geo; | 63 | Geo geo; |
@@ -368,46 +370,46 @@ void Addressee::setExternalUID( const QString &id ) | |||
368 | { | 370 | { |
369 | if ( id == mData->externalUID ) return; | 371 | if ( id == mData->externalUID ) return; |
370 | detach(); | 372 | detach(); |
371 | mData->empty = false; | 373 | mData->empty = false; |
372 | mData->externalUID = id; | 374 | mData->externalUID = id; |
373 | } | 375 | } |
374 | 376 | ||
375 | QString Addressee::externalUID() const | 377 | QString Addressee::externalUID() const |
376 | { | 378 | { |
377 | return mData->externalUID; | 379 | return mData->externalUID; |
378 | } | 380 | } |
379 | void Addressee::setOriginalExternalUID( const QString &id ) | 381 | void Addressee::setOriginalExternalUID( const QString &id ) |
380 | { | 382 | { |
381 | if ( id == mData->originalExternalUID ) return; | 383 | if ( id == mData->originalExternalUID ) return; |
382 | detach(); | 384 | detach(); |
383 | mData->empty = false; | 385 | mData->empty = false; |
384 | qDebug("*******Set orig uid %s ", id.latin1()); | 386 | //qDebug("*******Set orig uid %s ", id.latin1()); |
385 | mData->originalExternalUID = id; | 387 | mData->originalExternalUID = id; |
386 | } | 388 | } |
387 | 389 | ||
388 | QString Addressee::originalExternalUID() const | 390 | QString Addressee::originalExternalUID() const |
389 | { | 391 | { |
390 | return mData->originalExternalUID; | 392 | return mData->originalExternalUID; |
391 | } | 393 | } |
392 | 394 | ||
393 | void Addressee::setUid( const QString &id ) | 395 | void Addressee::setUid( const QString &id ) |
394 | { | 396 | { |
395 | if ( id == mData->uid ) return; | 397 | if ( id == mData->uid ) return; |
396 | detach(); | 398 | detach(); |
397 | qDebug("****setuid %s ", id.latin1()); | 399 | //qDebug("****setuid %s ", id.latin1()); |
398 | mData->empty = false; | 400 | mData->empty = false; |
399 | mData->uid = id; | 401 | mData->uid = id; |
400 | } | 402 | } |
401 | 403 | ||
402 | QString Addressee::uid() const | 404 | QString Addressee::uid() const |
403 | { | 405 | { |
404 | if ( mData->uid.isEmpty() ) | 406 | if ( mData->uid.isEmpty() ) |
405 | mData->uid = KApplication::randomString( 10 ); | 407 | mData->uid = KApplication::randomString( 10 ); |
406 | 408 | ||
407 | return mData->uid; | 409 | return mData->uid; |
408 | } | 410 | } |
409 | 411 | ||
410 | QString Addressee::uidLabel() | 412 | QString Addressee::uidLabel() |
411 | { | 413 | { |
412 | return i18n("Unique Identifier"); | 414 | return i18n("Unique Identifier"); |
413 | } | 415 | } |
@@ -1277,33 +1279,33 @@ void Addressee::removePhoneNumber( const PhoneNumber &phoneNumber ) | |||
1277 | detach(); | 1279 | detach(); |
1278 | 1280 | ||
1279 | PhoneNumber::List::Iterator it; | 1281 | PhoneNumber::List::Iterator it; |
1280 | for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) { | 1282 | for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) { |
1281 | if ( (*it).id() == phoneNumber.id() ) { | 1283 | if ( (*it).id() == phoneNumber.id() ) { |
1282 | mData->phoneNumbers.remove( it ); | 1284 | mData->phoneNumbers.remove( it ); |
1283 | return; | 1285 | return; |
1284 | } | 1286 | } |
1285 | } | 1287 | } |
1286 | } | 1288 | } |
1287 | 1289 | ||
1288 | PhoneNumber Addressee::phoneNumber( int type ) const | 1290 | PhoneNumber Addressee::phoneNumber( int type ) const |
1289 | { | 1291 | { |
1290 | PhoneNumber phoneNumber( "", type ); | 1292 | PhoneNumber phoneNumber( "", type ); |
1291 | PhoneNumber::List::ConstIterator it; | 1293 | PhoneNumber::List::ConstIterator it; |
1292 | for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) { | 1294 | for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) { |
1293 | if ( matchBinaryPattern( (*it).type(), type ) ) { | 1295 | if ( matchBinaryPatternP( (*it).type(), type ) ) { |
1294 | if ( (*it).type() & PhoneNumber::Pref ) | 1296 | if ( (*it).type() & PhoneNumber::Pref ) |
1295 | return (*it); | 1297 | return (*it); |
1296 | else if ( phoneNumber.number().isEmpty() ) | 1298 | else if ( phoneNumber.number().isEmpty() ) |
1297 | phoneNumber = (*it); | 1299 | phoneNumber = (*it); |
1298 | } | 1300 | } |
1299 | } | 1301 | } |
1300 | 1302 | ||
1301 | return phoneNumber; | 1303 | return phoneNumber; |
1302 | } | 1304 | } |
1303 | 1305 | ||
1304 | PhoneNumber::List Addressee::phoneNumbers() const | 1306 | PhoneNumber::List Addressee::phoneNumbers() const |
1305 | { | 1307 | { |
1306 | return mData->phoneNumbers; | 1308 | return mData->phoneNumbers; |
1307 | } | 1309 | } |
1308 | 1310 | ||
1309 | PhoneNumber::List Addressee::phoneNumbers( int type ) const | 1311 | PhoneNumber::List Addressee::phoneNumbers( int type ) const |
@@ -1514,33 +1516,33 @@ void Addressee::removeAddress( const Address &address ) | |||
1514 | detach(); | 1516 | detach(); |
1515 | 1517 | ||
1516 | Address::List::Iterator it; | 1518 | Address::List::Iterator it; |
1517 | for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) { | 1519 | for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) { |
1518 | if ( (*it).id() == address.id() ) { | 1520 | if ( (*it).id() == address.id() ) { |
1519 | mData->addresses.remove( it ); | 1521 | mData->addresses.remove( it ); |
1520 | return; | 1522 | return; |
1521 | } | 1523 | } |
1522 | } | 1524 | } |
1523 | } | 1525 | } |
1524 | 1526 | ||
1525 | Address Addressee::address( int type ) const | 1527 | Address Addressee::address( int type ) const |
1526 | { | 1528 | { |
1527 | Address address( type ); | 1529 | Address address( type ); |
1528 | Address::List::ConstIterator it; | 1530 | Address::List::ConstIterator it; |
1529 | for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) { | 1531 | for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) { |
1530 | if ( matchBinaryPattern( (*it).type(), type ) ) { | 1532 | if ( matchBinaryPatternA( (*it).type(), type ) ) { |
1531 | if ( (*it).type() & Address::Pref ) | 1533 | if ( (*it).type() & Address::Pref ) |
1532 | return (*it); | 1534 | return (*it); |
1533 | else if ( address.isEmpty() ) | 1535 | else if ( address.isEmpty() ) |
1534 | address = (*it); | 1536 | address = (*it); |
1535 | } | 1537 | } |
1536 | } | 1538 | } |
1537 | 1539 | ||
1538 | return address; | 1540 | return address; |
1539 | } | 1541 | } |
1540 | 1542 | ||
1541 | Address::List Addressee::addresses() const | 1543 | Address::List Addressee::addresses() const |
1542 | { | 1544 | { |
1543 | return mData->addresses; | 1545 | return mData->addresses; |
1544 | } | 1546 | } |
1545 | 1547 | ||
1546 | Address::List Addressee::addresses( int type ) const | 1548 | Address::List Addressee::addresses( int type ) const |
@@ -1822,30 +1824,46 @@ QDataStream &KABC::operator>>( QDataStream &s, Addressee &a ) | |||
1822 | s >> a.mData->secrecy; | 1824 | s >> a.mData->secrecy; |
1823 | s >> a.mData->logo; | 1825 | s >> a.mData->logo; |
1824 | s >> a.mData->photo; | 1826 | s >> a.mData->photo; |
1825 | s >> a.mData->sound; | 1827 | s >> a.mData->sound; |
1826 | s >> a.mData->agent; | 1828 | s >> a.mData->agent; |
1827 | s >> a.mData->phoneNumbers; | 1829 | s >> a.mData->phoneNumbers; |
1828 | s >> a.mData->addresses; | 1830 | s >> a.mData->addresses; |
1829 | s >> a.mData->emails; | 1831 | s >> a.mData->emails; |
1830 | s >> a.mData->categories; | 1832 | s >> a.mData->categories; |
1831 | s >> a.mData->custom; | 1833 | s >> a.mData->custom; |
1832 | s >> a.mData->keys; | 1834 | s >> a.mData->keys; |
1833 | 1835 | ||
1834 | a.mData->empty = false; | 1836 | a.mData->empty = false; |
1835 | 1837 | ||
1836 | return s; | 1838 | return s; |
1837 | } | 1839 | } |
1838 | |||
1839 | bool matchBinaryPattern( int value, int pattern ) | 1840 | bool matchBinaryPattern( int value, int pattern ) |
1840 | { | 1841 | { |
1841 | /** | 1842 | /** |
1842 | We want to match all telephonnumbers/addresses which have the bits in the | 1843 | We want to match all telephonnumbers/addresses which have the bits in the |
1843 | pattern set. More are allowed. | 1844 | pattern set. More are allowed. |
1844 | if pattern == 0 we have a special handling, then we want only those with | 1845 | if pattern == 0 we have a special handling, then we want only those with |
1845 | exactly no bit set. | 1846 | exactly no bit set. |
1846 | */ | 1847 | */ |
1847 | if ( pattern == 0 ) | 1848 | if ( pattern == 0 ) |
1848 | return ( value == 0 ); | 1849 | return ( value == 0 ); |
1849 | else | 1850 | else |
1850 | return ( pattern == ( pattern & value ) ); | 1851 | return ( pattern == ( pattern & value ) ); |
1851 | } | 1852 | } |
1853 | |||
1854 | bool matchBinaryPatternP( int value, int pattern ) | ||
1855 | { | ||
1856 | |||
1857 | if ( pattern == 0 ) | ||
1858 | return ( value == 0 ); | ||
1859 | else | ||
1860 | return ( (pattern |PhoneNumber::Pref ) == ( value |PhoneNumber::Pref ) ); | ||
1861 | } | ||
1862 | bool matchBinaryPatternA( int value, int pattern ) | ||
1863 | { | ||
1864 | |||
1865 | if ( pattern == 0 ) | ||
1866 | return ( value == 0 ); | ||
1867 | else | ||
1868 | return ( (pattern | Address::Pref) == ( value | Address::Pref ) ); | ||
1869 | } | ||