summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addressee.cpp28
-rw-r--r--kabc/addressee.h2
2 files changed, 17 insertions, 13 deletions
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp
index 711c261..0157721 100644
--- a/kabc/addressee.cpp
+++ b/kabc/addressee.cpp
@@ -180,206 +180,210 @@ ulong Addressee::getCsum4List( const QStringList & attList)
180 ulong cSum = 0; 180 ulong cSum = 0;
181 int j,k,i; 181 int j,k,i;
182 int add; 182 int add;
183 for ( i = 0; i < max ; ++i ) { 183 for ( i = 0; i < max ; ++i ) {
184 QString s = attList[i]; 184 QString s = attList[i];
185 if ( ! s.isEmpty() ){ 185 if ( ! s.isEmpty() ){
186 j = s.length(); 186 j = s.length();
187 for ( k = 0; k < j; ++k ) { 187 for ( k = 0; k < j; ++k ) {
188 int mul = k +1; 188 int mul = k +1;
189 add = s[k].unicode (); 189 add = s[k].unicode ();
190 if ( k < 16 ) 190 if ( k < 16 )
191 mul = mul * mul; 191 mul = mul * mul;
192 int ii = i+1; 192 int ii = i+1;
193 add = add * mul *ii*ii*ii; 193 add = add * mul *ii*ii*ii;
194 cSum += add; 194 cSum += add;
195 } 195 }
196 } 196 }
197 197
198 } 198 }
199 //QString dump = attList.join(","); 199 //QString dump = attList.join(",");
200 //qDebug("csum: %d %s", cSum,dump.latin1()); 200 //qDebug("csum: %d %s", cSum,dump.latin1());
201 201
202 return cSum; 202 return cSum;
203 203
204} 204}
205void Addressee::computeCsum(const QString &dev) 205void Addressee::computeCsum(const QString &dev)
206{ 206{
207 QStringList l; 207 QStringList l;
208 if ( !mData->name.isEmpty() ) l.append(mData->name); 208 if ( !mData->name.isEmpty() ) l.append(mData->name);
209 if ( !mData->formattedName.isEmpty() ) l.append(mData->formattedName ); 209 if ( !mData->formattedName.isEmpty() ) l.append(mData->formattedName );
210 if ( !mData->familyName.isEmpty() ) l.append( mData->familyName ); 210 if ( !mData->familyName.isEmpty() ) l.append( mData->familyName );
211 if ( !mData->givenName.isEmpty() ) l.append(mData->givenName ); 211 if ( !mData->givenName.isEmpty() ) l.append(mData->givenName );
212 if ( !mData->additionalName ) l.append( mData->additionalName ); 212 if ( !mData->additionalName ) l.append( mData->additionalName );
213 if ( !mData->prefix.isEmpty() ) l.append( mData->prefix ); 213 if ( !mData->prefix.isEmpty() ) l.append( mData->prefix );
214 if ( !mData->suffix.isEmpty() ) l.append( mData->suffix ); 214 if ( !mData->suffix.isEmpty() ) l.append( mData->suffix );
215 if ( !mData->nickName.isEmpty() ) l.append( mData->nickName ); 215 if ( !mData->nickName.isEmpty() ) l.append( mData->nickName );
216 if ( mData->birthday.isValid() ) l.append( mData->birthday.toString() ); 216 if ( mData->birthday.isValid() ) l.append( mData->birthday.toString() );
217 if ( !mData->mailer.isEmpty() ) l.append( mData->mailer ); 217 if ( !mData->mailer.isEmpty() ) l.append( mData->mailer );
218 if ( mData->timeZone.isValid() ) l.append( mData->timeZone.asString() ); 218 if ( mData->timeZone.isValid() ) l.append( mData->timeZone.asString() );
219 if ( mData->geo.isValid() ) l.append( mData->geo.asString() ); 219 if ( mData->geo.isValid() ) l.append( mData->geo.asString() );
220 if ( !mData->title .isEmpty() ) l.append( mData->title ); 220 if ( !mData->title .isEmpty() ) l.append( mData->title );
221 if ( !mData->role.isEmpty() ) l.append( mData->role ); 221 if ( !mData->role.isEmpty() ) l.append( mData->role );
222 if ( !mData->organization.isEmpty() ) l.append( mData->organization ); 222 if ( !mData->organization.isEmpty() ) l.append( mData->organization );
223 if ( !mData->note.isEmpty() ) l.append( mData->note ); 223 if ( !mData->note.isEmpty() ) l.append( mData->note );
224 if ( !mData->productId.isEmpty() ) l.append(mData->productId ); 224 if ( !mData->productId.isEmpty() ) l.append(mData->productId );
225 if ( !mData->sortString.isEmpty() ) l.append( mData->sortString ); 225 if ( !mData->sortString.isEmpty() ) l.append( mData->sortString );
226 if ( mData->secrecy.isValid() ) l.append( mData->secrecy.asString()); 226 if ( mData->secrecy.isValid() ) l.append( mData->secrecy.asString());
227 // if ( !mData->logo.isEmpty() ) l.append( ); 227 // if ( !mData->logo.isEmpty() ) l.append( );
228 //if ( !mData->photo.isEmpty() ) l.append( ); 228 //if ( !mData->photo.isEmpty() ) l.append( );
229 //if ( !mData->sound.isEmpty() ) l.append( ); 229 //if ( !mData->sound.isEmpty() ) l.append( );
230 //if ( !mData->agent.isEmpty() ) l.append( ); 230 //if ( !mData->agent.isEmpty() ) l.append( );
231 //if ( mData->url.isValid() ) l.append( ); 231 //if ( mData->url.isValid() ) l.append( );
232#if 0 232#if 0
233 if ( !mData->phoneNumbers.isEmpty() ) l.append( ); 233 if ( !mData->phoneNumbers.isEmpty() ) l.append( );
234 if ( !mData->addresses.isEmpty() ) l.append( ); 234 if ( !mData->addresses.isEmpty() ) l.append( );
235 //if ( !mData->keys.isEmpty() ) l.append( ); 235 //if ( !mData->keys.isEmpty() ) l.append( );
236 if ( !mData->emails.isEmpty() ) l.append( ); 236 if ( !mData->emails.isEmpty() ) l.append( );
237 if ( !mData->categories .isEmpty() ) l.append( ); 237 if ( !mData->categories .isEmpty() ) l.append( );
238 if ( !mData->custom.isEmpty() ) l.append( ); 238 if ( !mData->custom.isEmpty() ) l.append( );
239#endif 239#endif
240 KABC::PhoneNumber::List phoneNumbers; 240 KABC::PhoneNumber::List phoneNumbers;
241 KABC::PhoneNumber::List::Iterator phoneIter; 241 KABC::PhoneNumber::List::Iterator phoneIter;
242 242
243 QStringList t; 243 QStringList t;
244 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end(); 244 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end();
245 ++phoneIter ) 245 ++phoneIter )
246 t.append( ( *phoneIter ).number()+QString::number( ( *phoneIter ).type() ) ); 246 t.append( ( *phoneIter ).number()+QString::number( ( *phoneIter ).type() ) );
247 t.sort(); 247 t.sort();
248 uint iii; 248 uint iii;
249 for ( iii = 0; iii < t.count(); ++iii) 249 for ( iii = 0; iii < t.count(); ++iii)
250 l.append( t[iii] ); 250 l.append( t[iii] );
251 t = mData->emails; 251 t = mData->emails;
252 t.sort(); 252 t.sort();
253 for ( iii = 0; iii < t.count(); ++iii) 253 for ( iii = 0; iii < t.count(); ++iii)
254 l.append( t[iii] ); 254 l.append( t[iii] );
255 t = mData->categories; 255 t = mData->categories;
256 t.sort(); 256 t.sort();
257 for ( iii = 0; iii < t.count(); ++iii) 257 for ( iii = 0; iii < t.count(); ++iii)
258 l.append( t[iii] ); 258 l.append( t[iii] );
259 t = mData->custom; 259 t = mData->custom;
260 t.sort(); 260 t.sort();
261 for ( iii = 0; iii < t.count(); ++iii) 261 for ( iii = 0; iii < t.count(); ++iii)
262 l.append( t[iii] ); 262 l.append( t[iii] );
263 KABC::Address::List::Iterator addressIter; 263 KABC::Address::List::Iterator addressIter;
264 for ( addressIter = mData->addresses.begin(); addressIter != mData->addresses.end(); 264 for ( addressIter = mData->addresses.begin(); addressIter != mData->addresses.end();
265 ++addressIter ) { 265 ++addressIter ) {
266 t = (*addressIter).asList(); 266 t = (*addressIter).asList();
267 t.sort(); 267 t.sort();
268 for ( iii = 0; iii < t.count(); ++iii) 268 for ( iii = 0; iii < t.count(); ++iii)
269 l.append( t[iii] ); 269 l.append( t[iii] );
270 } 270 }
271 uint cs = getCsum4List(l); 271 uint cs = getCsum4List(l);
272 // qDebug("CSUM computed %d %s %s", cs,QString::number (cs ).latin1(), uid().latin1() ); 272 // qDebug("CSUM computed %d %s %s", cs,QString::number (cs ).latin1(), uid().latin1() );
273 setCsum( dev, QString::number (cs )); 273 setCsum( dev, QString::number (cs ));
274} 274}
275 275
276void Addressee::mergeContact( Addressee ad ) 276void Addressee::mergeContact( const Addressee& ad )
277{ 277{
278
279 detach();
280 if ( mData->name.isEmpty() ) mData->name = ad.mData->name;
281 if ( mData->formattedName.isEmpty() ) mData->formattedName = ad.mData->formattedName;
282 if ( mData->familyName.isEmpty() ) mData->familyName = ad.mData->familyName;
283 if ( mData->givenName.isEmpty() ) mData->givenName = ad.mData->givenName ;
284 if ( mData->additionalName ) mData->additionalName = ad.mData->additionalName;
285 if ( mData->prefix.isEmpty() ) mData->prefix = ad.mData->prefix;
286 if ( mData->suffix.isEmpty() ) mData->suffix = ad.mData->suffix;
287 if ( mData->nickName.isEmpty() ) mData->nickName = ad.mData->nickName;
288 if ( !mData->birthday.isValid() )
289 if ( ad.mData->birthday.isValid())
290 mData->birthday = ad.mData->birthday;
291 if ( mData->mailer.isEmpty() ) mData->mailer = ad.mData->mailer;
278#if 0 292#if 0
279 if ( !mData->name.isEmpty() ) l.append(mData->name); 293 if ( !mData->timeZone.isValid() ) l.append( mData->timeZone.asString() );
280 if ( !mData->formattedName.isEmpty() ) l.append(mData->formattedName );
281 if ( !mData->familyName.isEmpty() ) l.append( mData->familyName );
282 if ( !mData->givenName.isEmpty() ) l.append(mData->givenName );
283 if ( !mData->additionalName ) l.append( mData->additionalName );
284 if ( !mData->prefix.isEmpty() ) l.append( mData->prefix );
285 if ( !mData->suffix.isEmpty() ) l.append( mData->suffix );
286 if ( !mData->nickName.isEmpty() ) l.append( mData->nickName );
287 if ( mData->birthday.isValid() ) l.append( mData->birthday.toString() );
288 if ( !mData->mailer.isEmpty() ) l.append( mData->mailer );
289 if ( mData->timeZone.isValid() ) l.append( mData->timeZone.asString() );
290 if ( mData->geo.isValid() ) l.append( mData->geo.asString() ); 294 if ( mData->geo.isValid() ) l.append( mData->geo.asString() );
291 if ( !mData->title .isEmpty() ) l.append( mData->title ); 295 if ( !mData->title .isEmpty() ) l.append( mData->title );
292 if ( !mData->role.isEmpty() ) l.append( mData->role ); 296 if ( !mData->role.isEmpty() ) l.append( mData->role );
293 if ( !mData->organization.isEmpty() ) l.append( mData->organization ); 297 if ( !mData->organization.isEmpty() ) l.append( mData->organization );
294 if ( !mData->note.isEmpty() ) l.append( mData->note ); 298 if ( !mData->note.isEmpty() ) l.append( mData->note );
295 if ( !mData->productId.isEmpty() ) l.append(mData->productId ); 299 if ( !mData->productId.isEmpty() ) l.append(mData->productId );
296 if ( !mData->sortString.isEmpty() ) l.append( mData->sortString ); 300 if ( !mData->sortString.isEmpty() ) l.append( mData->sortString );
297 if ( mData->secrecy.isValid() ) l.append( mData->secrecy.asString()); 301 if ( mData->secrecy.isValid() ) l.append( mData->secrecy.asString());
298#endif 302#endif
299} 303}
300 304
301void Addressee::removeID(const QString &prof) 305void Addressee::removeID(const QString &prof)
302{ 306{
303 detach(); 307 detach();
304 mData->mExternalId = KIdManager::removeId ( mData->mExternalId, prof); 308 mData->mExternalId = KIdManager::removeId ( mData->mExternalId, prof);
305 309
306} 310}
307void Addressee::setID( const QString & prof , const QString & id ) 311void Addressee::setID( const QString & prof , const QString & id )
308{ 312{
309 detach(); 313 detach();
310 mData->mExternalId = KIdManager::setId ( mData->mExternalId, prof, id ); 314 mData->mExternalId = KIdManager::setId ( mData->mExternalId, prof, id );
311 //qDebug("setID2 %s %s %s",mData->mExternalId.latin1(), prof.latin1(), id.latin1() ); 315 //qDebug("setID2 %s %s %s",mData->mExternalId.latin1(), prof.latin1(), id.latin1() );
312} 316}
313void Addressee::setTempSyncStat( int id ) 317void Addressee::setTempSyncStat( int id )
314{ 318{
315 if ( mData->mTempSyncStat == id ) return; 319 if ( mData->mTempSyncStat == id ) return;
316 detach(); 320 detach();
317 mData->mTempSyncStat = id; 321 mData->mTempSyncStat = id;
318} 322}
319int Addressee::tempSyncStat() const 323int Addressee::tempSyncStat() const
320{ 324{
321 return mData->mTempSyncStat; 325 return mData->mTempSyncStat;
322} 326}
323 327
324QString Addressee::getID( const QString & prof) 328QString Addressee::getID( const QString & prof)
325{ 329{
326 return KIdManager::getId ( mData->mExternalId, prof ); 330 return KIdManager::getId ( mData->mExternalId, prof );
327} 331}
328 332
329void Addressee::setCsum( const QString & prof , const QString & id ) 333void Addressee::setCsum( const QString & prof , const QString & id )
330{ 334{
331 detach(); 335 detach();
332 //qDebug("setcsum1 %s %s %s",mData->mExternalId.latin1(), prof.latin1(), id.latin1() ); 336 //qDebug("setcsum1 %s %s %s",mData->mExternalId.latin1(), prof.latin1(), id.latin1() );
333 mData->mExternalId = KIdManager::setCsum ( mData->mExternalId, prof, id ); 337 mData->mExternalId = KIdManager::setCsum ( mData->mExternalId, prof, id );
334 //qDebug("setcsum2 %s ",mData->mExternalId.latin1() ); 338 //qDebug("setcsum2 %s ",mData->mExternalId.latin1() );
335} 339}
336 340
337QString Addressee::getCsum( const QString & prof) 341QString Addressee::getCsum( const QString & prof)
338{ 342{
339 return KIdManager::getCsum ( mData->mExternalId, prof ); 343 return KIdManager::getCsum ( mData->mExternalId, prof );
340} 344}
341 345
342void Addressee::setIDStr( const QString & s ) 346void Addressee::setIDStr( const QString & s )
343{ 347{
344 detach(); 348 detach();
345 mData->mExternalId = s; 349 mData->mExternalId = s;
346} 350}
347 351
348QString Addressee::IDStr() const 352QString Addressee::IDStr() const
349{ 353{
350 return mData->mExternalId; 354 return mData->mExternalId;
351} 355}
352 356
353void Addressee::setExternalUID( const QString &id ) 357void Addressee::setExternalUID( const QString &id )
354{ 358{
355 if ( id == mData->externalUID ) return; 359 if ( id == mData->externalUID ) return;
356 detach(); 360 detach();
357 mData->empty = false; 361 mData->empty = false;
358 mData->externalUID = id; 362 mData->externalUID = id;
359} 363}
360 364
361QString Addressee::externalUID() const 365QString Addressee::externalUID() const
362{ 366{
363 return mData->externalUID; 367 return mData->externalUID;
364} 368}
365 369
366void Addressee::setUid( const QString &id ) 370void Addressee::setUid( const QString &id )
367{ 371{
368 if ( id == mData->uid ) return; 372 if ( id == mData->uid ) return;
369 detach(); 373 detach();
370 mData->empty = false; 374 mData->empty = false;
371 mData->uid = id; 375 mData->uid = id;
372} 376}
373 377
374QString Addressee::uid() const 378QString Addressee::uid() const
375{ 379{
376 if ( mData->uid.isEmpty() ) 380 if ( mData->uid.isEmpty() )
377 mData->uid = KApplication::randomString( 10 ); 381 mData->uid = KApplication::randomString( 10 );
378 382
379 return mData->uid; 383 return mData->uid;
380} 384}
381 385
382QString Addressee::uidLabel() 386QString Addressee::uidLabel()
383{ 387{
384 return i18n("Unique Identifier"); 388 return i18n("Unique Identifier");
385} 389}
diff --git a/kabc/addressee.h b/kabc/addressee.h
index 59fcbd8..3ba7777 100644
--- a/kabc/addressee.h
+++ b/kabc/addressee.h
@@ -21,193 +21,193 @@
21 21
22/* 22/*
23Enhanced Version of the file for platform independent KDE tools. 23Enhanced Version of the file for platform independent KDE tools.
24Copyright (c) 2004 Ulf Schenk 24Copyright (c) 2004 Ulf Schenk
25 25
26$Id$ 26$Id$
27*/ 27*/
28 28
29#ifndef KABC_ADDRESSEE_H 29#ifndef KABC_ADDRESSEE_H
30#define KABC_ADDRESSEE_H 30#define KABC_ADDRESSEE_H
31 31
32#include <qdatetime.h> 32#include <qdatetime.h>
33#include <qstring.h> 33#include <qstring.h>
34#include <qstringlist.h> 34#include <qstringlist.h>
35#include <qvaluelist.h> 35#include <qvaluelist.h>
36 36
37#include <ksharedptr.h> 37#include <ksharedptr.h>
38#include <kurl.h> 38#include <kurl.h>
39 39
40#include "address.h" 40#include "address.h"
41#include "agent.h" 41#include "agent.h"
42#include "geo.h" 42#include "geo.h"
43#include "key.h" 43#include "key.h"
44#include "phonenumber.h" 44#include "phonenumber.h"
45#include "picture.h" 45#include "picture.h"
46#include "secrecy.h" 46#include "secrecy.h"
47#include "sound.h" 47#include "sound.h"
48#include "timezone.h" 48#include "timezone.h"
49 49
50namespace KABC { 50namespace KABC {
51 51
52class Resource; 52class Resource;
53 53
54/** 54/**
55 @short address book entry 55 @short address book entry
56 56
57 This class represents an entry in the address book. 57 This class represents an entry in the address book.
58 58
59 The data of this class is implicitly shared. You can pass this class by value. 59 The data of this class is implicitly shared. You can pass this class by value.
60 60
61 If you need the name of a field for presenting it to the user you should use 61 If you need the name of a field for presenting it to the user you should use
62 the functions ending in Label(). They return a translated string which can be 62 the functions ending in Label(). They return a translated string which can be
63 used as label for the corresponding field. 63 used as label for the corresponding field.
64 64
65 About the name fields: 65 About the name fields:
66 66
67 givenName() is the first name and familyName() the last name. In some 67 givenName() is the first name and familyName() the last name. In some
68 countries the family name comes first, that's the reason for the 68 countries the family name comes first, that's the reason for the
69 naming. formattedName() is the full name with the correct formatting. 69 naming. formattedName() is the full name with the correct formatting.
70 It is used as an override, when the correct formatting can't be generated 70 It is used as an override, when the correct formatting can't be generated
71 from the other name fields automatically. 71 from the other name fields automatically.
72 72
73 realName() returns a fully formatted name(). It uses formattedName, if set, 73 realName() returns a fully formatted name(). It uses formattedName, if set,
74 otherwise it constucts the name from the name fields. As fallback, if 74 otherwise it constucts the name from the name fields. As fallback, if
75 nothing else is set it uses name(). 75 nothing else is set it uses name().
76 76
77 name() is the NAME type of RFC2426. It can be used as internal name for the 77 name() is the NAME type of RFC2426. It can be used as internal name for the
78 data enty, but shouldn't be used for displaying the data to the user. 78 data enty, but shouldn't be used for displaying the data to the user.
79 */ 79 */
80class Addressee 80class Addressee
81{ 81{
82 friend QDataStream &operator<<( QDataStream &, const Addressee & ); 82 friend QDataStream &operator<<( QDataStream &, const Addressee & );
83 friend QDataStream &operator>>( QDataStream &, Addressee & ); 83 friend QDataStream &operator>>( QDataStream &, Addressee & );
84 84
85 public: 85 public:
86 typedef QValueList<Addressee> List; 86 typedef QValueList<Addressee> List;
87 87
88 /** 88 /**
89 Construct an empty address book entry. 89 Construct an empty address book entry.
90 */ 90 */
91 Addressee(); 91 Addressee();
92 ~Addressee(); 92 ~Addressee();
93 93
94 Addressee( const Addressee & ); 94 Addressee( const Addressee & );
95 Addressee &operator=( const Addressee & ); 95 Addressee &operator=( const Addressee & );
96 96
97 bool operator==( const Addressee & ) const; 97 bool operator==( const Addressee & ) const;
98 bool operator!=( const Addressee & ) const; 98 bool operator!=( const Addressee & ) const;
99 // sync stuff 99 // sync stuff
100 void setTempSyncStat(int id); 100 void setTempSyncStat(int id);
101 int tempSyncStat() const; 101 int tempSyncStat() const;
102 void setIDStr( const QString & ); 102 void setIDStr( const QString & );
103 QString IDStr() const; 103 QString IDStr() const;
104 void setID( const QString &, const QString & ); 104 void setID( const QString &, const QString & );
105 QString getID( const QString & ); 105 QString getID( const QString & );
106 void setCsum( const QString &, const QString & ); 106 void setCsum( const QString &, const QString & );
107 QString getCsum( const QString & ); 107 QString getCsum( const QString & );
108 void removeID(const QString &); 108 void removeID(const QString &);
109 void computeCsum(const QString &dev); 109 void computeCsum(const QString &dev);
110 ulong getCsum4List( const QStringList & attList); 110 ulong getCsum4List( const QStringList & attList);
111 /** 111 /**
112 Return, if the address book entry is empty. 112 Return, if the address book entry is empty.
113 */ 113 */
114 bool isEmpty() const; 114 bool isEmpty() const;
115 void setExternalUID( const QString &id ); 115 void setExternalUID( const QString &id );
116 QString externalUID() const; 116 QString externalUID() const;
117 void mergeContact( Addressee ad ); 117 void mergeContact( const Addressee& ad );
118 /** 118 /**
119 Set unique identifier. 119 Set unique identifier.
120 */ 120 */
121 void setUid( const QString &uid ); 121 void setUid( const QString &uid );
122 /** 122 /**
123 Return unique identifier. 123 Return unique identifier.
124 */ 124 */
125 QString uid() const; 125 QString uid() const;
126 /** 126 /**
127 Return translated label for uid field. 127 Return translated label for uid field.
128 */ 128 */
129 static QString uidLabel(); 129 static QString uidLabel();
130 130
131 /** 131 /**
132 Set name. 132 Set name.
133 */ 133 */
134 void setName( const QString &name ); 134 void setName( const QString &name );
135 /** 135 /**
136 Return name. 136 Return name.
137 */ 137 */
138 QString name() const; 138 QString name() const;
139 /** 139 /**
140 Return translated label for name field. 140 Return translated label for name field.
141 */ 141 */
142 static QString nameLabel(); 142 static QString nameLabel();
143 143
144 /** 144 /**
145 Set formatted name. 145 Set formatted name.
146 */ 146 */
147 void setFormattedName( const QString &formattedName ); 147 void setFormattedName( const QString &formattedName );
148 /** 148 /**
149 Return formatted name. 149 Return formatted name.
150 */ 150 */
151 QString formattedName() const; 151 QString formattedName() const;
152 /** 152 /**
153 Return translated label for formattedName field. 153 Return translated label for formattedName field.
154 */ 154 */
155 static QString formattedNameLabel(); 155 static QString formattedNameLabel();
156 156
157 /** 157 /**
158 Set family name. 158 Set family name.
159 */ 159 */
160 void setFamilyName( const QString &familyName ); 160 void setFamilyName( const QString &familyName );
161 /** 161 /**
162 Return family name. 162 Return family name.
163 */ 163 */
164 QString familyName() const; 164 QString familyName() const;
165 /** 165 /**
166 Return translated label for familyName field. 166 Return translated label for familyName field.
167 */ 167 */
168 static QString familyNameLabel(); 168 static QString familyNameLabel();
169 169
170 /** 170 /**
171 Set given name. 171 Set given name.
172 */ 172 */
173 void setGivenName( const QString &givenName ); 173 void setGivenName( const QString &givenName );
174 /** 174 /**
175 Return given name. 175 Return given name.
176 */ 176 */
177 QString givenName() const; 177 QString givenName() const;
178 /** 178 /**
179 Return translated label for givenName field. 179 Return translated label for givenName field.
180 */ 180 */
181 static QString givenNameLabel(); 181 static QString givenNameLabel();
182 182
183 /** 183 /**
184 Set additional names. 184 Set additional names.
185 */ 185 */
186 void setAdditionalName( const QString &additionalName ); 186 void setAdditionalName( const QString &additionalName );
187 /** 187 /**
188 Return additional names. 188 Return additional names.
189 */ 189 */
190 QString additionalName() const; 190 QString additionalName() const;
191 /** 191 /**
192 Return translated label for additionalName field. 192 Return translated label for additionalName field.
193 */ 193 */
194 static QString additionalNameLabel(); 194 static QString additionalNameLabel();
195 195
196 /** 196 /**
197 Set honorific prefixes. 197 Set honorific prefixes.
198 */ 198 */
199 void setPrefix( const QString &prefix ); 199 void setPrefix( const QString &prefix );
200 /** 200 /**
201 Return honorific prefixes. 201 Return honorific prefixes.
202 */ 202 */
203 QString prefix() const; 203 QString prefix() const;
204 /** 204 /**
205 Return translated label for prefix field. 205 Return translated label for prefix field.
206 */ 206 */
207 static QString prefixLabel(); 207 static QString prefixLabel();
208 208
209 /** 209 /**
210 Set honorific suffixes. 210 Set honorific suffixes.
211 */ 211 */
212 void setSuffix( const QString &suffix ); 212 void setSuffix( const QString &suffix );
213 /** 213 /**