summaryrefslogtreecommitdiffabout
path: root/kabc
authorzautrix <zautrix>2005-01-17 12:18:59 (UTC)
committer zautrix <zautrix>2005-01-17 12:18:59 (UTC)
commit6b166ece0a576e9be9c71a61fab5424d75a9301f (patch) (unidiff)
treeb88bf3e82cafc0ac279eb46b8ebc61f112083032 /kabc
parent376ffdba71ab4d7d7988229f38678394a54e5576 (diff)
downloadkdepimpi-6b166ece0a576e9be9c71a61fab5424d75a9301f.zip
kdepimpi-6b166ece0a576e9be9c71a61fab5424d75a9301f.tar.gz
kdepimpi-6b166ece0a576e9be9c71a61fab5424d75a9301f.tar.bz2
many AB fixes
Diffstat (limited to 'kabc') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addressbook.cpp9
-rw-r--r--kabc/addressee.cpp8
-rw-r--r--kabc/secrecy.h2
-rw-r--r--kabc/vcard/VCardv.cpp2
4 files changed, 15 insertions, 6 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp
index 8487ff3..4de7da2 100644
--- a/kabc/addressbook.cpp
+++ b/kabc/addressbook.cpp
@@ -891,86 +891,93 @@ AddressBook::Iterator AddressBook::find( const Addressee &a )
891 for ( it = begin(); it != end(); ++it ) { 891 for ( it = begin(); it != end(); ++it ) {
892 if ( a.uid() == (*it).uid() ) { 892 if ( a.uid() == (*it).uid() ) {
893 return it; 893 return it;
894 } 894 }
895 } 895 }
896 return end(); 896 return end();
897} 897}
898 898
899Addressee AddressBook::findByUid( const QString &uid ) 899Addressee AddressBook::findByUid( const QString &uid )
900{ 900{
901 Iterator it; 901 Iterator it;
902 for ( it = begin(); it != end(); ++it ) { 902 for ( it = begin(); it != end(); ++it ) {
903 if ( uid == (*it).uid() ) { 903 if ( uid == (*it).uid() ) {
904 return *it; 904 return *it;
905 } 905 }
906 } 906 }
907 return Addressee(); 907 return Addressee();
908} 908}
909void AddressBook::preExternSync( AddressBook* aBook, const QString& csd , bool isSubset ) 909void AddressBook::preExternSync( AddressBook* aBook, const QString& csd , bool isSubset )
910{ 910{
911 //qDebug("AddressBook::preExternSync "); 911 //qDebug("AddressBook::preExternSync ");
912 AddressBook::Iterator it; 912 AddressBook::Iterator it;
913 for ( it = begin(); it != end(); ++it ) { 913 for ( it = begin(); it != end(); ++it ) {
914 (*it).setID( csd, (*it).externalUID() ); 914 (*it).setID( csd, (*it).externalUID() );
915 (*it).computeCsum( csd ); 915 (*it).computeCsum( csd );
916 } 916 }
917 mergeAB( aBook ,csd, isSubset ); 917 mergeAB( aBook ,csd, isSubset );
918} 918}
919void AddressBook::postExternSync( AddressBook* aBook , const QString& csd, bool setID) 919void AddressBook::postExternSync( AddressBook* aBook , const QString& csd, bool setID)
920{ 920{
921 //qDebug("AddressBook::postExternSync "); 921 //qDebug("AddressBook::postExternSync ");
922 AddressBook::Iterator it; 922 AddressBook::Iterator it;
923 int foundEmpty = 0;
923 for ( it = begin(); it != end(); ++it ) { 924 for ( it = begin(); it != end(); ++it ) {
924 //qDebug("check uid %s ", (*it).uid().latin1() ); 925 //qDebug("check uid %s ", (*it).uid().latin1() );
925 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID || 926 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ||
926 (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_CSUM || 927 (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_CSUM ||
927 (*it).tempSyncStat() == SYNC_TEMPSTATE_ADDED_EXTERNAL) { 928 (*it).tempSyncStat() == SYNC_TEMPSTATE_ADDED_EXTERNAL) {
928 Addressee ad = aBook->findByUid( ( (*it).uid() )); 929 Addressee ad = aBook->findByUid( ( (*it).uid() ));
929 if ( ad.isEmpty() ) { 930 if ( ad.isEmpty() ) {
930 qDebug("postExternSync:ERROR addressee is empty: %s ", (*it).uid().latin1()); 931 ++foundEmpty;
932 //qDebug("postExternSync:addressee is empty: %s ", (*it).uid().latin1());
933 //qDebug("-- formatted name %s ",(*it).formattedName().latin1() );
931 } else { 934 } else {
932 (*it).setIDStr(":"); 935 (*it).setIDStr(":");
933 if ( setID ) { 936 if ( setID ) {
934 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) 937 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID )
935 ad.setID( csd, (*it).externalUID() ); 938 ad.setID( csd, (*it).externalUID() );
936 } else 939 } else
937 ad.setID( csd, (*it).uid() ); 940 ad.setID( csd, (*it).uid() );
938 (*it).computeCsum( csd ); 941 (*it).computeCsum( csd );
939 ad.setCsum( csd, (*it).getCsum( csd ) ); 942 ad.setCsum( csd, (*it).getCsum( csd ) );
940 //qDebug("CSUM %s ",(*it).getCsum( csd ).latin1() ); 943 //qDebug("CSUM %s ",(*it).getCsum( csd ).latin1() );
941 aBook->insertAddressee( ad , false); 944 aBook->insertAddressee( ad , false);
942 } 945 }
943 } 946 }
944 } 947 }
948 if ( foundEmpty ) {
949 qDebug("postExternSync:%d empty addressees found:\n probably filtered out by incoming sync filter.",foundEmpty );
950 }
951
945} 952}
946 953
947bool AddressBook::containsExternalUid( const QString& uid ) 954bool AddressBook::containsExternalUid( const QString& uid )
948{ 955{
949 Iterator it; 956 Iterator it;
950 for ( it = begin(); it != end(); ++it ) { 957 for ( it = begin(); it != end(); ++it ) {
951 if ( uid == (*it).externalUID( ) ) 958 if ( uid == (*it).externalUID( ) )
952 return true; 959 return true;
953 } 960 }
954 return false; 961 return false;
955} 962}
956Addressee AddressBook::findByExternUid( const QString& uid , const QString& profile ) 963Addressee AddressBook::findByExternUid( const QString& uid , const QString& profile )
957{ 964{
958 Iterator it; 965 Iterator it;
959 for ( it = begin(); it != end(); ++it ) { 966 for ( it = begin(); it != end(); ++it ) {
960 if ( uid == (*it).getID( profile ) ) 967 if ( uid == (*it).getID( profile ) )
961 return (*it); 968 return (*it);
962 } 969 }
963 return Addressee(); 970 return Addressee();
964} 971}
965void AddressBook::mergeAB( AddressBook *aBook, const QString& profile , bool isSubset ) 972void AddressBook::mergeAB( AddressBook *aBook, const QString& profile , bool isSubset )
966{ 973{
967 Iterator it; 974 Iterator it;
968 Addressee ad; 975 Addressee ad;
969 for ( it = begin(); it != end(); ++it ) { 976 for ( it = begin(); it != end(); ++it ) {
970 ad = aBook->findByExternUid( (*it).externalUID(), profile ); 977 ad = aBook->findByExternUid( (*it).externalUID(), profile );
971 if ( !ad.isEmpty() ) { 978 if ( !ad.isEmpty() ) {
972 (*it).mergeContact( ad ,isSubset); 979 (*it).mergeContact( ad ,isSubset);
973 } 980 }
974 } 981 }
975#if 0 982#if 0
976 // test only 983 // test only
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp
index 568dfc4..d60cd6b 100644
--- a/kabc/addressee.cpp
+++ b/kabc/addressee.cpp
@@ -226,86 +226,88 @@ void Addressee::computeCsum(const QString &dev)
226 if ( !mData->organization.isEmpty() ) l.append( mData->organization ); 226 if ( !mData->organization.isEmpty() ) l.append( mData->organization );
227 if ( !mData->note.isEmpty() ) l.append( mData->note ); 227 if ( !mData->note.isEmpty() ) l.append( mData->note );
228 if ( !mData->productId.isEmpty() ) l.append(mData->productId ); 228 if ( !mData->productId.isEmpty() ) l.append(mData->productId );
229 if ( !mData->sortString.isEmpty() ) l.append( mData->sortString ); 229 if ( !mData->sortString.isEmpty() ) l.append( mData->sortString );
230 if ( mData->secrecy.isValid() ) l.append( mData->secrecy.asString()); 230 if ( mData->secrecy.isValid() ) l.append( mData->secrecy.asString());
231 // if ( !mData->logo.isEmpty() ) l.append( ); 231 // if ( !mData->logo.isEmpty() ) l.append( );
232 //if ( !mData->photo.isEmpty() ) l.append( ); 232 //if ( !mData->photo.isEmpty() ) l.append( );
233 //if ( !mData->sound.isEmpty() ) l.append( ); 233 //if ( !mData->sound.isEmpty() ) l.append( );
234 //if ( !mData->agent.isEmpty() ) l.append( ); 234 //if ( !mData->agent.isEmpty() ) l.append( );
235 if ( mData->url.isValid() ) 235 if ( mData->url.isValid() )
236 if ( ! mData->url.path().isEmpty()) l.append( mData->url.path() ); 236 if ( ! mData->url.path().isEmpty()) l.append( mData->url.path() );
237 KABC::PhoneNumber::List phoneNumbers; 237 KABC::PhoneNumber::List phoneNumbers;
238 KABC::PhoneNumber::List::Iterator phoneIter; 238 KABC::PhoneNumber::List::Iterator phoneIter;
239 239
240 QStringList t; 240 QStringList t;
241 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end(); 241 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end();
242 ++phoneIter ) 242 ++phoneIter )
243 t.append( ( *phoneIter ).number()+QString::number( ( *phoneIter ).type() ) ); 243 t.append( ( *phoneIter ).number()+QString::number( ( *phoneIter ).type() ) );
244 t.sort(); 244 t.sort();
245 uint iii; 245 uint iii;
246 for ( iii = 0; iii < t.count(); ++iii) 246 for ( iii = 0; iii < t.count(); ++iii)
247 l.append( t[iii] ); 247 l.append( t[iii] );
248 t = mData->emails; 248 t = mData->emails;
249 t.sort(); 249 t.sort();
250 for ( iii = 0; iii < t.count(); ++iii) 250 for ( iii = 0; iii < t.count(); ++iii)
251 l.append( t[iii] ); 251 l.append( t[iii] );
252 t = mData->categories; 252 t = mData->categories;
253 t.sort(); 253 t.sort();
254 for ( iii = 0; iii < t.count(); ++iii) 254 for ( iii = 0; iii < t.count(); ++iii)
255 l.append( t[iii] ); 255 l.append( t[iii] );
256 t = mData->custom; 256 t = mData->custom;
257 t.sort(); 257 t.sort();
258 for ( iii = 0; iii < t.count(); ++iii) 258 for ( iii = 0; iii < t.count(); ++iii)
259 if ( t[iii].left( 25 ) != "KADDRESSBOOK-X-ExternalID" ) { 259 if ( t[iii].left( 25 ) != "KADDRESSBOOK-X-ExternalID" ) {
260 int find = t[iii].find (':')+1; 260 int find = t[iii].find (':')+1;
261 //qDebug("lennnn %d %d ", find, t[iii].length()); 261 //qDebug("lennnn %d %d ", find, t[iii].length());
262 if ( find < t[iii].length()) 262 if ( find < t[iii].length())
263 l.append( t[iii] ); 263 l.append( t[iii] );
264 264
265 } 265 }
266 KABC::Address::List::Iterator addressIter; 266 KABC::Address::List::Iterator addressIter;
267 for ( addressIter = mData->addresses.begin(); addressIter != mData->addresses.end(); 267 for ( addressIter = mData->addresses.begin(); addressIter != mData->addresses.end();
268 ++addressIter ) { 268 ++addressIter ) {
269 t = (*addressIter).asList(); 269 t = (*addressIter).asList();
270 t.sort(); 270 t.sort();
271 for ( iii = 0; iii < t.count(); ++iii) 271 for ( iii = 0; iii < t.count(); ++iii)
272 l.append( t[iii] ); 272 l.append( t[iii] );
273 } 273 }
274 uint cs = getCsum4List(l); 274 uint cs = getCsum4List(l);
275
275#if 0 276#if 0
276 for ( iii = 0; iii < l.count(); ++iii) 277 for ( iii = 0; iii < l.count(); ++iii)
277 qDebug("%d***%s***",iii,l[iii].latin1()); 278 qDebug("%d***%s***",iii,l[iii].latin1());
278 qDebug("CSUM computed %d %s %s", cs,QString::number (cs ).latin1(), uid().latin1() ); 279 qDebug("CSUM computed %d %s %s", cs,QString::number (cs ).latin1(), uid().latin1() );
279#endif 280#endif
281
280 setCsum( dev, QString::number (cs )); 282 setCsum( dev, QString::number (cs ));
281} 283}
282 284
283void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false) 285void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false)
284{ 286{
285 287
286 detach(); 288 detach();
287 if ( mData->name.isEmpty() ) mData->name = ad.mData->name; 289 if ( mData->name.isEmpty() ) mData->name = ad.mData->name;
288 if ( mData->formattedName.isEmpty() ) mData->formattedName = ad.mData->formattedName; 290 if ( mData->formattedName.isEmpty() ) mData->formattedName = ad.mData->formattedName;
289 if ( mData->familyName.isEmpty() ) mData->familyName = ad.mData->familyName; 291 if ( mData->familyName.isEmpty() ) mData->familyName = ad.mData->familyName;
290 if ( mData->givenName.isEmpty() ) mData->givenName = ad.mData->givenName ; 292 if ( mData->givenName.isEmpty() ) mData->givenName = ad.mData->givenName ;
291 if ( mData->additionalName ) mData->additionalName = ad.mData->additionalName; 293 if ( mData->additionalName ) mData->additionalName = ad.mData->additionalName;
292 if ( mData->prefix.isEmpty() ) mData->prefix = ad.mData->prefix; 294 if ( mData->prefix.isEmpty() ) mData->prefix = ad.mData->prefix;
293 if ( mData->suffix.isEmpty() ) mData->suffix = ad.mData->suffix; 295 if ( mData->suffix.isEmpty() ) mData->suffix = ad.mData->suffix;
294 if ( mData->nickName.isEmpty() ) mData->nickName = ad.mData->nickName; 296 if ( mData->nickName.isEmpty() ) mData->nickName = ad.mData->nickName;
295 if ( !mData->birthday.isValid() ) 297 if ( !mData->birthday.isValid() )
296 if ( ad.mData->birthday.isValid()) 298 if ( ad.mData->birthday.isValid())
297 mData->birthday = ad.mData->birthday; 299 mData->birthday = ad.mData->birthday;
298 if ( mData->mailer.isEmpty() ) mData->mailer = ad.mData->mailer; 300 if ( mData->mailer.isEmpty() ) mData->mailer = ad.mData->mailer;
299 if ( !mData->timeZone.isValid() ) mData->timeZone = ad.mData->timeZone; 301 if ( !mData->timeZone.isValid() ) mData->timeZone = ad.mData->timeZone;
300 if ( !mData->geo.isValid() ) mData->geo = ad.mData->geo; 302 if ( !mData->geo.isValid() ) mData->geo = ad.mData->geo;
301 if ( mData->title .isEmpty() ) mData->title = ad.mData->title ; 303 if ( mData->title .isEmpty() ) mData->title = ad.mData->title ;
302 if ( mData->role.isEmpty() ) mData->role = ad.mData->role ; 304 if ( mData->role.isEmpty() ) mData->role = ad.mData->role ;
303 if ( mData->organization.isEmpty() ) mData->organization = ad.mData->organization ; 305 if ( mData->organization.isEmpty() ) mData->organization = ad.mData->organization ;
304 if ( mData->note.isEmpty() ) mData->note = ad.mData->note ; 306 if ( mData->note.isEmpty() ) mData->note = ad.mData->note ;
305 if ( mData->productId.isEmpty() ) mData->productId = ad.mData->productId; 307 if ( mData->productId.isEmpty() ) mData->productId = ad.mData->productId;
306 if ( mData->sortString.isEmpty() ) mData->sortString = ad.mData->sortString; 308 if ( mData->sortString.isEmpty() ) mData->sortString = ad.mData->sortString;
307 if ( !mData->secrecy.isValid() ) mData->secrecy = ad.mData->secrecy; 309 if ( !mData->secrecy.isValid() ) mData->secrecy = ad.mData->secrecy;
308 if ( ( !mData->url.isValid() && ad.mData->url.isValid() ) ) mData->url = ad.mData->url ; 310 if ( ( !mData->url.isValid() && ad.mData->url.isValid() ) ) mData->url = ad.mData->url ;
309 QStringList t; 311 QStringList t;
310 QStringList tAD; 312 QStringList tAD;
311 uint iii; 313 uint iii;
diff --git a/kabc/secrecy.h b/kabc/secrecy.h
index 8f2f736..b2ff565 100644
--- a/kabc/secrecy.h
+++ b/kabc/secrecy.h
@@ -30,65 +30,65 @@ $Id$
30 30
31#include <qvaluelist.h> 31#include <qvaluelist.h>
32 32
33namespace KABC { 33namespace KABC {
34 34
35class Secrecy 35class Secrecy
36{ 36{
37 friend QDataStream &operator<<( QDataStream &, const Secrecy & ); 37 friend QDataStream &operator<<( QDataStream &, const Secrecy & );
38 friend QDataStream &operator>>( QDataStream &, Secrecy & ); 38 friend QDataStream &operator>>( QDataStream &, Secrecy & );
39 39
40public: 40public:
41 typedef QValueList<int> TypeList; 41 typedef QValueList<int> TypeList;
42 42
43 /** 43 /**
44 * Secrecy types 44 * Secrecy types
45 * 45 *
46 * @li Public - for public access 46 * @li Public - for public access
47 * @li Private - only private access 47 * @li Private - only private access
48 * @li Confidential - access for confidential persons 48 * @li Confidential - access for confidential persons
49 */ 49 */
50 enum Types { 50 enum Types {
51 Public, 51 Public,
52 Private, 52 Private,
53 Confidential, 53 Confidential,
54 Invalid 54 Invalid
55 }; 55 };
56 56
57 /** 57 /**
58 * Constructor. 58 * Constructor.
59 * 59 *
60 * @param type The secrecy type, @see Types. 60 * @param type The secrecy type, @see Types.
61 */ 61 */
62 Secrecy( int type = Invalid ); 62 Secrecy( int type = Public );
63 63
64 bool operator==( const Secrecy & ) const; 64 bool operator==( const Secrecy & ) const;
65 bool operator!=( const Secrecy & ) const; 65 bool operator!=( const Secrecy & ) const;
66 66
67 /** 67 /**
68 Returns if the Secrecy object has a valid value. 68 Returns if the Secrecy object has a valid value.
69 */ 69 */
70 bool isValid() const; 70 bool isValid() const;
71 71
72 /** 72 /**
73 * Sets the type, @see Types. 73 * Sets the type, @see Types.
74 */ 74 */
75 void setType( int type ); 75 void setType( int type );
76 76
77 /** 77 /**
78 * Returns the type, @see Types. 78 * Returns the type, @see Types.
79 */ 79 */
80 int type() const; 80 int type() const;
81 81
82 /** 82 /**
83 * Returns a list of all available secrecy types. 83 * Returns a list of all available secrecy types.
84 */ 84 */
85 static TypeList typeList(); 85 static TypeList typeList();
86 86
87 /** 87 /**
88 * Returns a translated label for a given secrecy type. 88 * Returns a translated label for a given secrecy type.
89 */ 89 */
90 static QString typeLabel( int type ); 90 static QString typeLabel( int type );
91 91
92 /** 92 /**
93 * For debug. 93 * For debug.
94 */ 94 */
diff --git a/kabc/vcard/VCardv.cpp b/kabc/vcard/VCardv.cpp
index 1166aac..bad2ef1 100644
--- a/kabc/vcard/VCardv.cpp
+++ b/kabc/vcard/VCardv.cpp
@@ -143,65 +143,65 @@ VCard::_parse()
143 group_ = firstPart.left(split); 143 group_ = firstPart.left(split);
144 firstPart= firstPart.right(firstPart.length() - split - 1); 144 firstPart= firstPart.right(firstPart.length() - split - 1);
145 } 145 }
146 146
147 if (firstPart.left(5) != "BEGIN" ) { // No BEGIN ! 147 if (firstPart.left(5) != "BEGIN" ) { // No BEGIN !
148 qDebug("no BEGIN in vcard "); 148 qDebug("no BEGIN in vcard ");
149 return; 149 return;
150 } 150 }
151 151
152 if (valuePart.left(5) != "VCARD") { // Not a vcard ! 152 if (valuePart.left(5) != "VCARD") { // Not a vcard !
153 qDebug("not a VCARD "); 153 qDebug("not a VCARD ");
154 return; 154 return;
155 } 155 }
156 156
157 /////////////////////////////////////////////////////////////// 157 ///////////////////////////////////////////////////////////////
158 // CONTENT LINES 158 // CONTENT LINES
159 // 159 //
160 vDebug("Content lines"); 160 vDebug("Content lines");
161 161
162 // Handle folded lines. 162 // Handle folded lines.
163 163
164 QStringList refolded; 164 QStringList refolded;
165 165
166 166
167 QStringList::Iterator it = l.begin(); 167 QStringList::Iterator it = l.begin();
168 168
169 QString cur; 169 QString cur;
170 170
171 for (; it != l.end(); ++it) { 171 for (; it != l.end(); ++it) {
172 cur = (*it); 172 cur = (*it);
173 ++it; 173 ++it;
174 while ( it!= l.end() && (*it).at(0) == ' '&& (*it).length()!= 1) { 174 while ( it!= l.end() && (*it).at(0) == ' '&& (*it).length()!= 1) {
175 cur += (*it) ; 175 cur += (*it).mid(1) ;
176 ++it; 176 ++it;
177 } 177 }
178 --it; 178 --it;
179 refolded.append(cur); 179 refolded.append(cur);
180 } 180 }
181 QStringList::Iterator it2 = refolded.begin(); 181 QStringList::Iterator it2 = refolded.begin();
182 for (; it2 != refolded.end(); ++it2) { 182 for (; it2 != refolded.end(); ++it2) {
183 ContentLine * cl = new ContentLine(QCString((*it2).latin1())); 183 ContentLine * cl = new ContentLine(QCString((*it2).latin1()));
184 cl->parse(); 184 cl->parse();
185 if (cl->value() == 0) 185 if (cl->value() == 0)
186 { 186 {
187 qDebug("Content line could not be parsed. Discarded: %s", (*it2).latin1()); 187 qDebug("Content line could not be parsed. Discarded: %s", (*it2).latin1());
188 delete cl; 188 delete cl;
189 } 189 }
190 else 190 else
191 contentLineList_.append(cl); 191 contentLineList_.append(cl);
192 } 192 }
193 193
194 /////////////////////////////////////////////////////////////// 194 ///////////////////////////////////////////////////////////////
195 // LAST LINE 195 // LAST LINE
196 196
197 197
198 // LR: sorry, but the remaining code in this method makes no sense 198 // LR: sorry, but the remaining code in this method makes no sense
199 199
200#if 0 200#if 0
201 split = endLine.find(':'); 201 split = endLine.find(':');
202 202
203 if (split == -1) // invalid, no END 203 if (split == -1) // invalid, no END
204 return; 204 return;
205 205
206 firstPart = endLine.left(split); 206 firstPart = endLine.left(split);
207 valuePart = endLine.right(firstPart.length() - split - 1); 207 valuePart = endLine.right(firstPart.length() - split - 1);