22 #include <tdeabc/vcardconverter.h>
24 #include "addresseediffalgo.h"
26 using namespace KSync;
28 static bool compareString(
const TQString &left,
const TQString &right )
30 if ( left.isEmpty() && right.isEmpty() )
36 AddresseeDiffAlgo::AddresseeDiffAlgo(
const TDEABC::Addressee &leftAddressee,
37 const TDEABC::Addressee &rightAddressee )
38 : mLeftAddressee( leftAddressee ), mRightAddressee( rightAddressee )
42 AddresseeDiffAlgo::AddresseeDiffAlgo(
const TQString &leftAddressee,
43 const TQString &rightAddressee )
45 TDEABC::VCardConverter converter;
47 mLeftAddressee = converter.parseVCard( leftAddressee );
48 mRightAddressee = converter.parseVCard( rightAddressee );
51 void AddresseeDiffAlgo::run()
55 if ( !compareString( mLeftAddressee.uid(), mRightAddressee.uid() ) )
56 conflictField( TDEABC::Addressee::uidLabel(), mLeftAddressee.uid(), mRightAddressee.uid() );
58 if ( !compareString( mLeftAddressee.name(), mRightAddressee.name() ) )
59 conflictField( TDEABC::Addressee::nameLabel(), mLeftAddressee.name(), mRightAddressee.name() );
61 if ( !compareString( mLeftAddressee.formattedName(), mRightAddressee.formattedName() ) )
62 conflictField( TDEABC::Addressee::formattedNameLabel(), mLeftAddressee.formattedName(), mRightAddressee.formattedName() );
64 if ( !compareString( mLeftAddressee.familyName(), mRightAddressee.familyName() ) )
65 conflictField( TDEABC::Addressee::familyNameLabel(), mLeftAddressee.familyName(), mRightAddressee.familyName() );
67 if ( !compareString( mLeftAddressee.givenName(), mRightAddressee.givenName() ) )
68 conflictField( TDEABC::Addressee::givenNameLabel(), mLeftAddressee.givenName(), mRightAddressee.givenName() );
70 if ( !compareString( mLeftAddressee.additionalName(), mRightAddressee.additionalName() ) )
71 conflictField( TDEABC::Addressee::additionalNameLabel(), mLeftAddressee.additionalName(), mRightAddressee.additionalName() );
73 if ( !compareString( mLeftAddressee.prefix(), mRightAddressee.prefix() ) )
74 conflictField( TDEABC::Addressee::prefixLabel(), mLeftAddressee.prefix(), mRightAddressee.prefix() );
76 if ( !compareString( mLeftAddressee.suffix(), mRightAddressee.suffix() ) )
77 conflictField( TDEABC::Addressee::suffixLabel(), mLeftAddressee.suffix(), mRightAddressee.suffix() );
79 if ( !compareString( mLeftAddressee.nickName(), mRightAddressee.nickName() ) )
80 conflictField( TDEABC::Addressee::nickNameLabel(), mLeftAddressee.nickName(), mRightAddressee.nickName() );
82 if ( mLeftAddressee.birthday() != mRightAddressee.birthday() )
83 conflictField( TDEABC::Addressee::birthdayLabel(), mLeftAddressee.birthday().toString(),
84 mRightAddressee.birthday().toString() );
86 if ( !compareString( mLeftAddressee.mailer(), mRightAddressee.mailer() ) )
87 conflictField( TDEABC::Addressee::mailerLabel(), mLeftAddressee.mailer(), mRightAddressee.mailer() );
89 if ( mLeftAddressee.timeZone() != mRightAddressee.timeZone() )
90 conflictField( TDEABC::Addressee::timeZoneLabel(), mLeftAddressee.timeZone().asString(), mRightAddressee.timeZone().asString() );
92 if ( mLeftAddressee.geo() != mRightAddressee.geo() )
93 conflictField( TDEABC::Addressee::geoLabel(), mLeftAddressee.geo().asString(), mRightAddressee.geo().asString() );
95 if ( !compareString( mLeftAddressee.title(), mRightAddressee.title() ) )
96 conflictField( TDEABC::Addressee::titleLabel(), mLeftAddressee.title(), mRightAddressee.title() );
98 if ( !compareString( mLeftAddressee.role(), mRightAddressee.role() ) )
99 conflictField( TDEABC::Addressee::roleLabel(), mLeftAddressee.role(), mRightAddressee.role() );
101 if ( !compareString( mLeftAddressee.organization(), mRightAddressee.organization() ) )
102 conflictField( TDEABC::Addressee::organizationLabel(), mLeftAddressee.organization(), mRightAddressee.organization() );
104 if ( !compareString( mLeftAddressee.note(), mRightAddressee.note() ) )
105 conflictField( TDEABC::Addressee::noteLabel(), mLeftAddressee.note(), mRightAddressee.note() );
107 if ( !compareString( mLeftAddressee.productId(), mRightAddressee.productId() ) )
108 conflictField( TDEABC::Addressee::productIdLabel(), mLeftAddressee.productId(), mRightAddressee.productId() );
110 if ( !compareString( mLeftAddressee.sortString(), mRightAddressee.sortString() ) )
111 conflictField( TDEABC::Addressee::sortStringLabel(), mLeftAddressee.sortString(), mRightAddressee.sortString() );
113 if ( mLeftAddressee.secrecy() != mRightAddressee.secrecy() ) {
114 conflictField( TDEABC::Addressee::secrecyLabel(), mLeftAddressee.secrecy().asString(), mRightAddressee.secrecy().asString() );
116 if ( mLeftAddressee.url()!= mRightAddressee.url() )
117 conflictField( TDEABC::Addressee::urlLabel(), mLeftAddressee.url().prettyURL(),
118 mRightAddressee.url().prettyURL() );
120 if ( mLeftAddressee.logo() != mRightAddressee.logo() ) {
123 if ( mLeftAddressee.photo() != mRightAddressee.photo() ) {
126 diffList(
"emails", mLeftAddressee.emails(), mRightAddressee.emails() );
128 diffList(
"Phone Numbers", mLeftAddressee.phoneNumbers(), mRightAddressee.phoneNumbers() );
129 diffList(
"Addresses", mLeftAddressee.addresses(), mRightAddressee.addresses() );
134 TQString AddresseeDiffAlgo::toString(
const TDEABC::PhoneNumber &number )
136 return number.number();
139 TQString AddresseeDiffAlgo::toString(
const TDEABC::Address &addr )
141 return addr.formattedAddress();
145 void AddresseeDiffAlgo::diffList(
const TQString &
id,
146 const TQValueList<L> &left,
const TQValueList<L> &right )
148 for ( uint i = 0; i < left.count(); ++i ) {
149 if ( right.find( left[ i ] ) == right.end() )
150 additionalLeftField(
id, toString( left[ i ] ) );
153 for ( uint i = 0; i < right.count(); ++i ) {
154 if ( left.find( right[ i ] ) == left.end() )
155 additionalRightField(
id, toString( right[ i ] ) );