summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/pim/ocontact.cpp18
-rw-r--r--libopie2/opiepim/ocontact.cpp18
2 files changed, 18 insertions, 18 deletions
diff --git a/libopie/pim/ocontact.cpp b/libopie/pim/ocontact.cpp
index 3473baa..e34feeb 100644
--- a/libopie/pim/ocontact.cpp
+++ b/libopie/pim/ocontact.cpp
@@ -1,1211 +1,1211 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** Copyright (C) 2002-2003 by Stefan Eilers (eilers.stefan@epost.de) 3** Copyright (C) 2002-2003 by Stefan Eilers (eilers.stefan@epost.de)
4** 4**
5** This file may be distributed and/or modified under the terms of the 5** This file may be distributed and/or modified under the terms of the
6** GNU General Public License version 2 as published by the Free Software 6** GNU General Public License version 2 as published by the Free Software
7** Foundation and appearing in the file LICENSE.GPL included in the 7** Foundation and appearing in the file LICENSE.GPL included in the
8** packaging of this file. 8** packaging of this file.
9** 9**
10** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 10** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
11** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 11** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
12** 12**
13** See http://www.trolltech.com/gpl/ for GPL licensing information. 13** See http://www.trolltech.com/gpl/ for GPL licensing information.
14** 14**
15** Contact info@trolltech.com if any conditions of this licensing are 15** Contact info@trolltech.com if any conditions of this licensing are
16** not clear to you. 16** not clear to you.
17** 17**
18**********************************************************************/ 18**********************************************************************/
19 19
20#define QTOPIA_INTERNAL_CONTACT_MRE 20#define QTOPIA_INTERNAL_CONTACT_MRE
21 21
22#include "ocontact.h" 22#include "ocontact.h"
23#include "opimresolver.h" 23#include "opimresolver.h"
24#include "oconversion.h" 24#include "oconversion.h"
25 25
26#include <qpe/stringutil.h> 26#include <qpe/stringutil.h>
27#include <qpe/timestring.h> 27#include <qpe/timestring.h>
28#include <qpe/config.h> 28#include <qpe/config.h>
29 29
30#include <qobject.h> 30#include <qobject.h>
31#include <qregexp.h> 31#include <qregexp.h>
32#include <qstylesheet.h> 32#include <qstylesheet.h>
33#include <qfileinfo.h> 33#include <qfileinfo.h>
34#include <qmap.h> 34#include <qmap.h>
35 35
36#include <stdio.h> 36#include <stdio.h>
37 37
38/*! 38/*!
39 \class Contact contact.h 39 \class Contact contact.h
40 \brief The Contact class holds the data of an address book entry. 40 \brief The Contact class holds the data of an address book entry.
41 41
42 This data includes information the name of the person, contact 42 This data includes information the name of the person, contact
43 information, and business information such as deparment and job title. 43 information, and business information such as deparment and job title.
44 44
45 \ingroup qtopiaemb 45 \ingroup qtopiaemb
46 \ingroup qtopiadesktop 46 \ingroup qtopiadesktop
47*/ 47*/
48 48
49 49
50/*! 50/*!
51 Creates a new, empty contact. 51 Creates a new, empty contact.
52*/ 52*/
53OContact::OContact() 53OContact::OContact()
54 : OPimRecord(), mMap(), d( 0 ) 54 : OPimRecord(), mMap(), d( 0 )
55{ 55{
56} 56}
57 57
58/*! 58/*!
59 \internal 59 \internal
60 Creates a new contact. The properties of the contact are 60 Creates a new contact. The properties of the contact are
61 set from \a fromMap. 61 set from \a fromMap.
62*/ 62*/
63OContact::OContact( const QMap<int, QString> &fromMap ) : 63OContact::OContact( const QMap<int, QString> &fromMap ) :
64 OPimRecord(), mMap( fromMap ), d( 0 ) 64 OPimRecord(), mMap( fromMap ), d( 0 )
65{ 65{
66 QString cats = mMap[ Qtopia::AddressCategory ]; 66 QString cats = mMap[ Qtopia::AddressCategory ];
67 if ( !cats.isEmpty() ) 67 if ( !cats.isEmpty() )
68 setCategories( idsFromString( cats ) ); 68 setCategories( idsFromString( cats ) );
69 69
70 QString uidStr = find( Qtopia::AddressUid ); 70 QString uidStr = find( Qtopia::AddressUid );
71 71
72 if ( uidStr.isEmpty() || (uidStr.toInt() == 0) ){ 72 if ( uidStr.isEmpty() || (uidStr.toInt() == 0) ){
73 qWarning( "Invalid UID found. Generate new one.." ); 73 qWarning( "Invalid UID found. Generate new one.." );
74 setUid( uidGen().generate() ); 74 setUid( uidGen().generate() );
75 }else 75 }else
76 setUid( uidStr.toInt() ); 76 setUid( uidStr.toInt() );
77 77
78// if ( !uidStr.isEmpty() ) 78// if ( !uidStr.isEmpty() )
79 // setUid( uidStr.toInt() ); 79 // setUid( uidStr.toInt() );
80} 80}
81 81
82/*! 82/*!
83 Destroys a contact. 83 Destroys a contact.
84*/ 84*/
85OContact::~OContact() 85OContact::~OContact()
86{ 86{
87} 87}
88 88
89/*! \fn void OContact::setTitle( const QString &str ) 89/*! \fn void OContact::setTitle( const QString &str )
90 Sets the title of the contact to \a str. 90 Sets the title of the contact to \a str.
91*/ 91*/
92 92
93/*! \fn void OContact::setFirstName( const QString &str ) 93/*! \fn void OContact::setFirstName( const QString &str )
94 Sets the first name of the contact to \a str. 94 Sets the first name of the contact to \a str.
95*/ 95*/
96 96
97/*! \fn void OContact::setMiddleName( const QString &str ) 97/*! \fn void OContact::setMiddleName( const QString &str )
98 Sets the middle name of the contact to \a str. 98 Sets the middle name of the contact to \a str.
99*/ 99*/
100 100
101/*! \fn void OContact::setLastName( const QString &str ) 101/*! \fn void OContact::setLastName( const QString &str )
102 Sets the last name of the contact to \a str. 102 Sets the last name of the contact to \a str.
103*/ 103*/
104 104
105/*! \fn void OContact::setSuffix( const QString &str ) 105/*! \fn void OContact::setSuffix( const QString &str )
106 Sets the suffix of the contact to \a str. 106 Sets the suffix of the contact to \a str.
107*/ 107*/
108 108
109/*! \fn void OContact::setFileAs( const QString &str ) 109/*! \fn void OContact::setFileAs( const QString &str )
110 Sets the contact to filed as \a str. 110 Sets the contact to filed as \a str.
111*/ 111*/
112 112
113/*! \fn void OContact::setDefaultEmail( const QString &str ) 113/*! \fn void OContact::setDefaultEmail( const QString &str )
114 Sets the default email of the contact to \a str. 114 Sets the default email of the contact to \a str.
115*/ 115*/
116 116
117/*! \fn void OContact::setHomeStreet( const QString &str ) 117/*! \fn void OContact::setHomeStreet( const QString &str )
118 Sets the home street address of the contact to \a str. 118 Sets the home street address of the contact to \a str.
119*/ 119*/
120 120
121/*! \fn void OContact::setHomeCity( const QString &str ) 121/*! \fn void OContact::setHomeCity( const QString &str )
122 Sets the home city of the contact to \a str. 122 Sets the home city of the contact to \a str.
123*/ 123*/
124 124
125/*! \fn void OContact::setHomeState( const QString &str ) 125/*! \fn void OContact::setHomeState( const QString &str )
126 Sets the home state of the contact to \a str. 126 Sets the home state of the contact to \a str.
127*/ 127*/
128 128
129/*! \fn void OContact::setHomeZip( const QString &str ) 129/*! \fn void OContact::setHomeZip( const QString &str )
130 Sets the home zip code of the contact to \a str. 130 Sets the home zip code of the contact to \a str.
131*/ 131*/
132 132
133/*! \fn void OContact::setHomeCountry( const QString &str ) 133/*! \fn void OContact::setHomeCountry( const QString &str )
134 Sets the home country of the contact to \a str. 134 Sets the home country of the contact to \a str.
135*/ 135*/
136 136
137/*! \fn void OContact::setHomePhone( const QString &str ) 137/*! \fn void OContact::setHomePhone( const QString &str )
138 Sets the home phone number of the contact to \a str. 138 Sets the home phone number of the contact to \a str.
139*/ 139*/
140 140
141/*! \fn void OContact::setHomeFax( const QString &str ) 141/*! \fn void OContact::setHomeFax( const QString &str )
142 Sets the home fax number of the contact to \a str. 142 Sets the home fax number of the contact to \a str.
143*/ 143*/
144 144
145/*! \fn void OContact::setHomeMobile( const QString &str ) 145/*! \fn void OContact::setHomeMobile( const QString &str )
146 Sets the home mobile phone number of the contact to \a str. 146 Sets the home mobile phone number of the contact to \a str.
147*/ 147*/
148 148
149/*! \fn void OContact::setHomeWebpage( const QString &str ) 149/*! \fn void OContact::setHomeWebpage( const QString &str )
150 Sets the home webpage of the contact to \a str. 150 Sets the home webpage of the contact to \a str.
151*/ 151*/
152 152
153/*! \fn void OContact::setCompany( const QString &str ) 153/*! \fn void OContact::setCompany( const QString &str )
154 Sets the company for contact to \a str. 154 Sets the company for contact to \a str.
155*/ 155*/
156 156
157/*! \fn void OContact::setJobTitle( const QString &str ) 157/*! \fn void OContact::setJobTitle( const QString &str )
158 Sets the job title of the contact to \a str. 158 Sets the job title of the contact to \a str.
159*/ 159*/
160 160
161/*! \fn void OContact::setDepartment( const QString &str ) 161/*! \fn void OContact::setDepartment( const QString &str )
162 Sets the department for contact to \a str. 162 Sets the department for contact to \a str.
163*/ 163*/
164 164
165/*! \fn void OContact::setOffice( const QString &str ) 165/*! \fn void OContact::setOffice( const QString &str )
166 Sets the office for contact to \a str. 166 Sets the office for contact to \a str.
167*/ 167*/
168 168
169/*! \fn void OContact::setBusinessStreet( const QString &str ) 169/*! \fn void OContact::setBusinessStreet( const QString &str )
170 Sets the business street address of the contact to \a str. 170 Sets the business street address of the contact to \a str.
171*/ 171*/
172 172
173/*! \fn void OContact::setBusinessCity( const QString &str ) 173/*! \fn void OContact::setBusinessCity( const QString &str )
174 Sets the business city of the contact to \a str. 174 Sets the business city of the contact to \a str.
175*/ 175*/
176 176
177/*! \fn void OContact::setBusinessState( const QString &str ) 177/*! \fn void OContact::setBusinessState( const QString &str )
178 Sets the business state of the contact to \a str. 178 Sets the business state of the contact to \a str.
179*/ 179*/
180 180
181/*! \fn void OContact::setBusinessZip( const QString &str ) 181/*! \fn void OContact::setBusinessZip( const QString &str )
182 Sets the business zip code of the contact to \a str. 182 Sets the business zip code of the contact to \a str.
183*/ 183*/
184 184
185/*! \fn void OContact::setBusinessCountry( const QString &str ) 185/*! \fn void OContact::setBusinessCountry( const QString &str )
186 Sets the business country of the contact to \a str. 186 Sets the business country of the contact to \a str.
187*/ 187*/
188 188
189/*! \fn void OContact::setBusinessPhone( const QString &str ) 189/*! \fn void OContact::setBusinessPhone( const QString &str )
190 Sets the business phone number of the contact to \a str. 190 Sets the business phone number of the contact to \a str.
191*/ 191*/
192 192
193/*! \fn void OContact::setBusinessFax( const QString &str ) 193/*! \fn void OContact::setBusinessFax( const QString &str )
194 Sets the business fax number of the contact to \a str. 194 Sets the business fax number of the contact to \a str.
195*/ 195*/
196 196
197/*! \fn void OContact::setBusinessMobile( const QString &str ) 197/*! \fn void OContact::setBusinessMobile( const QString &str )
198 Sets the business mobile phone number of the contact to \a str. 198 Sets the business mobile phone number of the contact to \a str.
199*/ 199*/
200 200
201/*! \fn void OContact::setBusinessPager( const QString &str ) 201/*! \fn void OContact::setBusinessPager( const QString &str )
202 Sets the business pager number of the contact to \a str. 202 Sets the business pager number of the contact to \a str.
203*/ 203*/
204 204
205/*! \fn void OContact::setBusinessWebpage( const QString &str ) 205/*! \fn void OContact::setBusinessWebpage( const QString &str )
206 Sets the business webpage of the contact to \a str. 206 Sets the business webpage of the contact to \a str.
207*/ 207*/
208 208
209/*! \fn void OContact::setProfession( const QString &str ) 209/*! \fn void OContact::setProfession( const QString &str )
210 Sets the profession of the contact to \a str. 210 Sets the profession of the contact to \a str.
211*/ 211*/
212 212
213/*! \fn void OContact::setAssistant( const QString &str ) 213/*! \fn void OContact::setAssistant( const QString &str )
214 Sets the assistant of the contact to \a str. 214 Sets the assistant of the contact to \a str.
215*/ 215*/
216 216
217/*! \fn void OContact::setManager( const QString &str ) 217/*! \fn void OContact::setManager( const QString &str )
218 Sets the manager of the contact to \a str. 218 Sets the manager of the contact to \a str.
219*/ 219*/
220 220
221/*! \fn void OContact::setSpouse( const QString &str ) 221/*! \fn void OContact::setSpouse( const QString &str )
222 Sets the spouse of the contact to \a str. 222 Sets the spouse of the contact to \a str.
223*/ 223*/
224 224
225/*! \fn void OContact::setGender( const QString &str ) 225/*! \fn void OContact::setGender( const QString &str )
226 Sets the gender of the contact to \a str. 226 Sets the gender of the contact to \a str.
227*/ 227*/
228 228
229/*! \fn void OContact::setNickname( const QString &str ) 229/*! \fn void OContact::setNickname( const QString &str )
230 Sets the nickname of the contact to \a str. 230 Sets the nickname of the contact to \a str.
231*/ 231*/
232 232
233/*! \fn void OContact::setNotes( const QString &str ) 233/*! \fn void OContact::setNotes( const QString &str )
234 Sets the notes about the contact to \a str. 234 Sets the notes about the contact to \a str.
235*/ 235*/
236 236
237/*! \fn QString OContact::title() const 237/*! \fn QString OContact::title() const
238 Returns the title of the contact. 238 Returns the title of the contact.
239*/ 239*/
240 240
241/*! \fn QString OContact::firstName() const 241/*! \fn QString OContact::firstName() const
242 Returns the first name of the contact. 242 Returns the first name of the contact.
243*/ 243*/
244 244
245/*! \fn QString OContact::middleName() const 245/*! \fn QString OContact::middleName() const
246 Returns the middle name of the contact. 246 Returns the middle name of the contact.
247*/ 247*/
248 248
249/*! \fn QString OContact::lastName() const 249/*! \fn QString OContact::lastName() const
250 Returns the last name of the contact. 250 Returns the last name of the contact.
251*/ 251*/
252 252
253/*! \fn QString OContact::suffix() const 253/*! \fn QString OContact::suffix() const
254 Returns the suffix of the contact. 254 Returns the suffix of the contact.
255*/ 255*/
256 256
257/*! \fn QString OContact::fileAs() const 257/*! \fn QString OContact::fileAs() const
258 Returns the string the contact is filed as. 258 Returns the string the contact is filed as.
259*/ 259*/
260 260
261/*! \fn QString OContact::defaultEmail() const 261/*! \fn QString OContact::defaultEmail() const
262 Returns the default email address of the contact. 262 Returns the default email address of the contact.
263*/ 263*/
264 264
265/*! \fn QString OContact::emails() const 265/*! \fn QString OContact::emails() const
266 Returns the list of email address for a contact separated by ';'s in a single 266 Returns the list of email address for a contact separated by ';'s in a single
267 string. 267 string.
268*/ 268*/
269 269
270/*! \fn QString OContact::homeStreet() const 270/*! \fn QString OContact::homeStreet() const
271 Returns the home street address of the contact. 271 Returns the home street address of the contact.
272*/ 272*/
273 273
274/*! \fn QString OContact::homeCity() const 274/*! \fn QString OContact::homeCity() const
275 Returns the home city of the contact. 275 Returns the home city of the contact.
276*/ 276*/
277 277
278/*! \fn QString OContact::homeState() const 278/*! \fn QString OContact::homeState() const
279 Returns the home state of the contact. 279 Returns the home state of the contact.
280*/ 280*/
281 281
282/*! \fn QString OContact::homeZip() const 282/*! \fn QString OContact::homeZip() const
283 Returns the home zip of the contact. 283 Returns the home zip of the contact.
284*/ 284*/
285 285
286/*! \fn QString OContact::homeCountry() const 286/*! \fn QString OContact::homeCountry() const
287 Returns the home country of the contact. 287 Returns the home country of the contact.
288*/ 288*/
289 289
290/*! \fn QString OContact::homePhone() const 290/*! \fn QString OContact::homePhone() const
291 Returns the home phone number of the contact. 291 Returns the home phone number of the contact.
292*/ 292*/
293 293
294/*! \fn QString OContact::homeFax() const 294/*! \fn QString OContact::homeFax() const
295 Returns the home fax number of the contact. 295 Returns the home fax number of the contact.
296*/ 296*/
297 297
298/*! \fn QString OContact::homeMobile() const 298/*! \fn QString OContact::homeMobile() const
299 Returns the home mobile number of the contact. 299 Returns the home mobile number of the contact.
300*/ 300*/
301 301
302/*! \fn QString OContact::homeWebpage() const 302/*! \fn QString OContact::homeWebpage() const
303 Returns the home webpage of the contact. 303 Returns the home webpage of the contact.
304*/ 304*/
305 305
306/*! \fn QString OContact::company() const 306/*! \fn QString OContact::company() const
307 Returns the company for the contact. 307 Returns the company for the contact.
308*/ 308*/
309 309
310/*! \fn QString OContact::department() const 310/*! \fn QString OContact::department() const
311 Returns the department for the contact. 311 Returns the department for the contact.
312*/ 312*/
313 313
314/*! \fn QString OContact::office() const 314/*! \fn QString OContact::office() const
315 Returns the office for the contact. 315 Returns the office for the contact.
316*/ 316*/
317 317
318/*! \fn QString OContact::jobTitle() const 318/*! \fn QString OContact::jobTitle() const
319 Returns the job title of the contact. 319 Returns the job title of the contact.
320*/ 320*/
321 321
322/*! \fn QString OContact::profession() const 322/*! \fn QString OContact::profession() const
323 Returns the profession of the contact. 323 Returns the profession of the contact.
324*/ 324*/
325 325
326/*! \fn QString OContact::assistant() const 326/*! \fn QString OContact::assistant() const
327 Returns the assistant of the contact. 327 Returns the assistant of the contact.
328*/ 328*/
329 329
330/*! \fn QString OContact::manager() const 330/*! \fn QString OContact::manager() const
331 Returns the manager of the contact. 331 Returns the manager of the contact.
332*/ 332*/
333 333
334/*! \fn QString OContact::businessStreet() const 334/*! \fn QString OContact::businessStreet() const
335 Returns the business street address of the contact. 335 Returns the business street address of the contact.
336*/ 336*/
337 337
338/*! \fn QString OContact::businessCity() const 338/*! \fn QString OContact::businessCity() const
339 Returns the business city of the contact. 339 Returns the business city of the contact.
340*/ 340*/
341 341
342/*! \fn QString OContact::businessState() const 342/*! \fn QString OContact::businessState() const
343 Returns the business state of the contact. 343 Returns the business state of the contact.
344*/ 344*/
345 345
346/*! \fn QString OContact::businessZip() const 346/*! \fn QString OContact::businessZip() const
347 Returns the business zip of the contact. 347 Returns the business zip of the contact.
348*/ 348*/
349 349
350/*! \fn QString OContact::businessCountry() const 350/*! \fn QString OContact::businessCountry() const
351 Returns the business country of the contact. 351 Returns the business country of the contact.
352*/ 352*/
353 353
354/*! \fn QString OContact::businessPhone() const 354/*! \fn QString OContact::businessPhone() const
355 Returns the business phone number of the contact. 355 Returns the business phone number of the contact.
356*/ 356*/
357 357
358/*! \fn QString OContact::businessFax() const 358/*! \fn QString OContact::businessFax() const
359 Returns the business fax number of the contact. 359 Returns the business fax number of the contact.
360*/ 360*/
361 361
362/*! \fn QString OContact::businessMobile() const 362/*! \fn QString OContact::businessMobile() const
363 Returns the business mobile number of the contact. 363 Returns the business mobile number of the contact.
364*/ 364*/
365 365
366/*! \fn QString OContact::businessPager() const 366/*! \fn QString OContact::businessPager() const
367 Returns the business pager number of the contact. 367 Returns the business pager number of the contact.
368*/ 368*/
369 369
370/*! \fn QString OContact::businessWebpage() const 370/*! \fn QString OContact::businessWebpage() const
371 Returns the business webpage of the contact. 371 Returns the business webpage of the contact.
372*/ 372*/
373 373
374/*! \fn QString OContact::spouse() const 374/*! \fn QString OContact::spouse() const
375 Returns the spouse of the contact. 375 Returns the spouse of the contact.
376*/ 376*/
377 377
378/*! \fn QString OContact::gender() const 378/*! \fn QString OContact::gender() const
379 Returns the gender of the contact. 379 Returns the gender of the contact.
380*/ 380*/
381 381
382/*! \fn QString OContact::nickname() const 382/*! \fn QString OContact::nickname() const
383 Returns the nickname of the contact. 383 Returns the nickname of the contact.
384*/ 384*/
385 385
386/*! \fn QString OContact::children() const 386/*! \fn QString OContact::children() const
387 Returns the children of the contact. 387 Returns the children of the contact.
388*/ 388*/
389 389
390/*! \fn QString OContact::notes() const 390/*! \fn QString OContact::notes() const
391 Returns the notes relating to the the contact. 391 Returns the notes relating to the the contact.
392*/ 392*/
393 393
394/*! \fn QString OContact::groups() const 394/*! \fn QString OContact::groups() const
395 \internal 395 \internal
396 Returns the groups for the contact. 396 Returns the groups for the contact.
397*/ 397*/
398 398
399/*! \fn QStringList OContact::groupList() const 399/*! \fn QStringList OContact::groupList() const
400 \internal 400 \internal
401*/ 401*/
402 402
403/*! \fn QString OContact::field(int) const 403/*! \fn QString OContact::field(int) const
404 \internal 404 \internal
405*/ 405*/
406 406
407/*! \fn void OContact::saveJournal( journal_action, const QString & = QString::null ) 407/*! \fn void OContact::saveJournal( journal_action, const QString & = QString::null )
408 \internal 408 \internal
409*/ 409*/
410 410
411/*! \fn void OContact::setUid( int id ) 411/*! \fn void OContact::setUid( int id )
412 \internal 412 \internal
413 Sets the uid for this record to \a id. 413 Sets the uid for this record to \a id.
414*/ 414*/
415 415
416/*! \enum OContact::journal_action 416/*! \enum OContact::journal_action
417 \internal 417 \internal
418*/ 418*/
419 419
420/*! 420/*!
421 \internal 421 \internal
422*/ 422*/
423QMap<int, QString> OContact::toMap() const 423QMap<int, QString> OContact::toMap() const
424{ 424{
425 QMap<int, QString> map = mMap; 425 QMap<int, QString> map = mMap;
426 QString cats = idsToString( categories() ); 426 QString cats = idsToString( categories() );
427 if ( !cats.isEmpty() ) 427 if ( !cats.isEmpty() )
428 map.insert( Qtopia::AddressCategory, cats ); 428 map.insert( Qtopia::AddressCategory, cats );
429 return map; 429 return map;
430} 430}
431 431
432/*! 432/*!
433 Returns a rich text formatted QString representing the contents the contact. 433 Returns a rich text formatted QString representing the contents the contact.
434*/ 434*/
435QString OContact::toRichText() const 435QString OContact::toRichText() const
436{ 436{
437 QString text; 437 QString text;
438 QString value, comp, state; 438 QString value, comp, state;
439 QString str; 439 QString str;
440 bool marker = false; 440 bool marker = false;
441 441
442 Config cfg("qpe"); 442 Config cfg("qpe");
443 cfg.setGroup("Appearance"); 443 cfg.setGroup("Appearance");
444 int addressformat = cfg.readNumEntry( "AddressFormat", Zip_City_State ); 444 int addressformat = cfg.readNumEntry( "AddressFormat", Zip_City_State );
445 445
446 // name, jobtitle and company 446 // name, jobtitle and company
447 if ( !(value = fullName()).isEmpty() ) 447 if ( !(value = fullName()).isEmpty() )
448 text += "<b><h3><img src=\"addressbook/AddressBook\"> " + Qtopia::escapeString(value) + "</h3></b>"; 448 text += "<b><h3><img src=\"addressbook/AddressBook\"> " + Qtopia::escapeString(value) + "</h3></b>";
449 449
450 if ( !(value = jobTitle()).isEmpty() ) 450 if ( !(value = jobTitle()).isEmpty() )
451 text += Qtopia::escapeString(value); 451 text += Qtopia::escapeString(value);
452 452
453 comp = company(); 453 comp = company();
454 if ( !(value = department()).isEmpty() ) { 454 if ( !(value = department()).isEmpty() ) {
455 text += Qtopia::escapeString(value); 455 text += Qtopia::escapeString(value);
456 if ( comp ) 456 if ( comp )
457 text += ", "; 457 text += ", ";
458 else 458 else
459 text += "<br>"; 459 text += "<br>";
460 } 460 }
461 if ( !comp.isEmpty() ) 461 if ( !comp.isEmpty() )
462 text += Qtopia::escapeString(comp); 462 text += Qtopia::escapeString(comp);
463 463
464 text += "<br><hr>"; 464 text += "<br><hr>";
465 465
466 // defailt email 466 // defailt email
467 QString defEmail = defaultEmail(); 467 QString defEmail = defaultEmail();
468 if ( !defEmail.isEmpty() ){ 468 if ( !defEmail.isEmpty() ){
469 text += "<b><img src=\"addressbook/email\"> " + QObject::tr("Default Email: ") + "</b>" 469 text += "<b><img src=\"addressbook/email\"> " + QObject::tr("Default Email: ") + "</b>"
470 + Qtopia::escapeString(defEmail); 470 + Qtopia::escapeString(defEmail);
471 marker = true; 471 marker = true;
472 } 472 }
473 473
474 // business address 474 // business address
475 if ( !businessStreet().isEmpty() || !businessCity().isEmpty() || 475 if ( !businessStreet().isEmpty() || !businessCity().isEmpty() ||
476 !businessZip().isEmpty() || !businessCountry().isEmpty() ) { 476 !businessZip().isEmpty() || !businessCountry().isEmpty() ) {
477 text += QObject::tr( "<br><br><b>Work Address:</b>" ); 477 text += QObject::tr( "<br><b>Work Address:</b>" );
478 marker = true; 478 marker = true;
479 } 479 }
480 480
481 if ( !(value = businessStreet()).isEmpty() ){ 481 if ( !(value = businessStreet()).isEmpty() ){
482 text += "<br>" + Qtopia::escapeString(value); 482 text += "<br>" + Qtopia::escapeString(value);
483 marker = true; 483 marker = true;
484 } 484 }
485 485
486 switch( addressformat ){ 486 switch( addressformat ){
487 case Zip_City_State:{ // Zip_Code City, State 487 case Zip_City_State:{ // Zip_Code City, State
488 state = businessState(); 488 state = businessState();
489 if ( !(value = businessZip()).isEmpty() ){ 489 if ( !(value = businessZip()).isEmpty() ){
490 text += "<br>" + Qtopia::escapeString(value) + " "; 490 text += "<br>" + Qtopia::escapeString(value) + " ";
491 marker = true; 491 marker = true;
492 492
493 } else 493 }
494 text += "<br>";
495
496 if ( !(value = businessCity()).isEmpty() ) { 494 if ( !(value = businessCity()).isEmpty() ) {
497 marker = true; 495 marker = true;
496 if ( businessZip().isEmpty() && !businessStreet().isEmpty() )
497 text += "<br>";
498 text += Qtopia::escapeString(value); 498 text += Qtopia::escapeString(value);
499 if ( state ) 499 if ( state )
500 text += ", " + Qtopia::escapeString(state); 500 text += ", " + Qtopia::escapeString(state);
501 } else if ( !state.isEmpty() ){ 501 } else if ( !state.isEmpty() ){
502 text += "<br>" + Qtopia::escapeString(state); 502 text += "<br>" + Qtopia::escapeString(state);
503 marker = true; 503 marker = true;
504 } 504 }
505 break; 505 break;
506 } 506 }
507 case City_State_Zip:{ // City, State Zip_Code 507 case City_State_Zip:{ // City, State Zip_Code
508 state = businessState(); 508 state = businessState();
509 if ( !(value = businessCity()).isEmpty() ) { 509 if ( !(value = businessCity()).isEmpty() ) {
510 marker = true; 510 marker = true;
511 text += "<br>" + Qtopia::escapeString(value); 511 text += "<br>" + Qtopia::escapeString(value);
512 if ( state ) 512 if ( state )
513 text += ", " + Qtopia::escapeString(state); 513 text += ", " + Qtopia::escapeString(state);
514 } else if ( !state.isEmpty() ){ 514 } else if ( !state.isEmpty() ){
515 text += "<br>" + Qtopia::escapeString(state); 515 text += "<br>" + Qtopia::escapeString(state);
516 marker = true; 516 marker = true;
517 } 517 }
518 if ( !(value = businessZip()).isEmpty() ){ 518 if ( !(value = businessZip()).isEmpty() ){
519 text += " " + Qtopia::escapeString(value); 519 text += " " + Qtopia::escapeString(value);
520 marker = true; 520 marker = true;
521 } 521 }
522 break; 522 break;
523 } 523 }
524 } 524 }
525 525
526 if ( !(value = businessCountry()).isEmpty() ){ 526 if ( !(value = businessCountry()).isEmpty() ){
527 text += "<br>" + Qtopia::escapeString(value); 527 text += "<br>" + Qtopia::escapeString(value);
528 marker = true; 528 marker = true;
529 } 529 }
530 530
531 // rest of Business data 531 // rest of Business data
532 str = office(); 532 str = office();
533 if ( !str.isEmpty() ){ 533 if ( !str.isEmpty() ){
534 text += "<br><b>" + QObject::tr("Office: ") + "</b>" 534 text += "<br><b>" + QObject::tr("Office: ") + "</b>"
535 + Qtopia::escapeString(str); 535 + Qtopia::escapeString(str);
536 marker = true; 536 marker = true;
537 } 537 }
538 str = businessWebpage(); 538 str = businessWebpage();
539 if ( !str.isEmpty() ){ 539 if ( !str.isEmpty() ){
540 text += "<br><b><img src=\"addressbook/webpagework\"> " + QObject::tr("Business Web Page: ") + "</b>" 540 text += "<br><b><img src=\"addressbook/webpagework\"> " + QObject::tr("Business Web Page: ") + "</b>"
541 + Qtopia::escapeString(str); 541 + Qtopia::escapeString(str);
542 marker = true; 542 marker = true;
543 } 543 }
544 str = businessPhone(); 544 str = businessPhone();
545 if ( !str.isEmpty() ){ 545 if ( !str.isEmpty() ){
546 text += "<br><b><img src=\"addressbook/phonework\"> " + QObject::tr("Business Phone: ") + "</b>" 546 text += "<br><b><img src=\"addressbook/phonework\"> " + QObject::tr("Business Phone: ") + "</b>"
547 + Qtopia::escapeString(str); 547 + Qtopia::escapeString(str);
548 marker = true; 548 marker = true;
549 } 549 }
550 str = businessFax(); 550 str = businessFax();
551 if ( !str.isEmpty() ){ 551 if ( !str.isEmpty() ){
552 text += "<br><b><img src=\"addressbook/faxwork\"> " + QObject::tr("Business Fax: ") + "</b>" 552 text += "<br><b><img src=\"addressbook/faxwork\"> " + QObject::tr("Business Fax: ") + "</b>"
553 + Qtopia::escapeString(str); 553 + Qtopia::escapeString(str);
554 marker = true; 554 marker = true;
555 } 555 }
556 str = businessMobile(); 556 str = businessMobile();
557 if ( !str.isEmpty() ){ 557 if ( !str.isEmpty() ){
558 text += "<br><b><img src=\"addressbook/mobilework\"> " + QObject::tr("Business Mobile: ") + "</b>" 558 text += "<br><b><img src=\"addressbook/mobilework\"> " + QObject::tr("Business Mobile: ") + "</b>"
559 + Qtopia::escapeString(str); 559 + Qtopia::escapeString(str);
560 marker = true; 560 marker = true;
561 } 561 }
562 str = businessPager(); 562 str = businessPager();
563 if ( !str.isEmpty() ){ 563 if ( !str.isEmpty() ){
564 text += "<br><b>" + QObject::tr("Business Pager: ") + "</b>" 564 text += "<br><b>" + QObject::tr("Business Pager: ") + "</b>"
565 + Qtopia::escapeString(str); 565 + Qtopia::escapeString(str);
566 marker = true; 566 marker = true;
567 } 567 }
568 568
569 text += "<br>"; 569 // text += "<br>";
570 570
571 // home address 571 // home address
572 if ( !homeStreet().isEmpty() || !homeCity().isEmpty() || 572 if ( !homeStreet().isEmpty() || !homeCity().isEmpty() ||
573 !homeZip().isEmpty() || !homeCountry().isEmpty() ) { 573 !homeZip().isEmpty() || !homeCountry().isEmpty() ) {
574 text += QObject::tr( "<br><br><b>Home Address:</b>" ); 574 text += QObject::tr( "<br><b>Home Address:</b>" );
575 marker = true; 575 marker = true;
576 } 576 }
577 577
578 if ( !(value = homeStreet()).isEmpty() ){ 578 if ( !(value = homeStreet()).isEmpty() ){
579 text += "<br>" + Qtopia::escapeString(value); 579 text += "<br>" + Qtopia::escapeString(value);
580 marker = true; 580 marker = true;
581 } 581 }
582 582
583 switch( addressformat ){ 583 switch( addressformat ){
584 case Zip_City_State:{ // Zip_Code City, State 584 case Zip_City_State:{ // Zip_Code City, State
585 state = homeState(); 585 state = homeState();
586 if ( !(value = homeZip()).isEmpty() ){ 586 if ( !(value = homeZip()).isEmpty() ){
587 text += "<br>" + Qtopia::escapeString(value) + " "; 587 text += "<br>" + Qtopia::escapeString(value) + " ";
588 marker = true; 588 marker = true;
589 } else 589 }
590 text += "<br>";
591
592 if ( !(value = homeCity()).isEmpty() ) { 590 if ( !(value = homeCity()).isEmpty() ) {
593 marker = true; 591 marker = true;
592 if ( homeZip().isEmpty() && !homeStreet().isEmpty() )
593 text += "<br>";
594 text += Qtopia::escapeString(value); 594 text += Qtopia::escapeString(value);
595 if ( !state.isEmpty() ) 595 if ( !state.isEmpty() )
596 text += ", " + Qtopia::escapeString(state); 596 text += ", " + Qtopia::escapeString(state);
597 } else if (!state.isEmpty()) { 597 } else if (!state.isEmpty()) {
598 text += "<br>" + Qtopia::escapeString(state); 598 text += "<br>" + Qtopia::escapeString(state);
599 marker = true; 599 marker = true;
600 } 600 }
601 break; 601 break;
602 } 602 }
603 case City_State_Zip:{ // City, State Zip_Code 603 case City_State_Zip:{ // City, State Zip_Code
604 state = homeState(); 604 state = homeState();
605 if ( !(value = homeCity()).isEmpty() ) { 605 if ( !(value = homeCity()).isEmpty() ) {
606 marker = true; 606 marker = true;
607 text += "<br>" + Qtopia::escapeString(value); 607 text += "<br>" + Qtopia::escapeString(value);
608 if ( state ) 608 if ( state )
609 text += ", " + Qtopia::escapeString(state); 609 text += ", " + Qtopia::escapeString(state);
610 } else if ( !state.isEmpty() ){ 610 } else if ( !state.isEmpty() ){
611 text += "<br>" + Qtopia::escapeString(state); 611 text += "<br>" + Qtopia::escapeString(state);
612 marker = true; 612 marker = true;
613 } 613 }
614 if ( !(value = homeZip()).isEmpty() ){ 614 if ( !(value = homeZip()).isEmpty() ){
615 text += " " + Qtopia::escapeString(value); 615 text += " " + Qtopia::escapeString(value);
616 marker = true; 616 marker = true;
617 } 617 }
618 break; 618 break;
619 } 619 }
620 } 620 }
621 621
622 if ( !(value = homeCountry()).isEmpty() ){ 622 if ( !(value = homeCountry()).isEmpty() ){
623 text += "<br>" + Qtopia::escapeString(value); 623 text += "<br>" + Qtopia::escapeString(value);
624 marker = true; 624 marker = true;
625 } 625 }
626 626
627 // rest of Home data 627 // rest of Home data
628 str = homeWebpage(); 628 str = homeWebpage();
629 if ( !str.isEmpty() ){ 629 if ( !str.isEmpty() ){
630 text += "<br><b><img src=\"addressbook/webpagehome\"> " + QObject::tr("Home Web Page: ") + "</b>" 630 text += "<br><b><img src=\"addressbook/webpagehome\"> " + QObject::tr("Home Web Page: ") + "</b>"
631 + Qtopia::escapeString(str); 631 + Qtopia::escapeString(str);
632 marker = true; 632 marker = true;
633 } 633 }
634 str = homePhone(); 634 str = homePhone();
635 if ( !str.isEmpty() ){ 635 if ( !str.isEmpty() ){
636 text += "<br><b><img src=\"addressbook/phonehome\"> " + QObject::tr("Home Phone: ") + "</b>" 636 text += "<br><b><img src=\"addressbook/phonehome\"> " + QObject::tr("Home Phone: ") + "</b>"
637 + Qtopia::escapeString(str); 637 + Qtopia::escapeString(str);
638 marker = true; 638 marker = true;
639 } 639 }
640 str = homeFax(); 640 str = homeFax();
641 if ( !str.isEmpty() ){ 641 if ( !str.isEmpty() ){
642 text += "<br><b><img src=\"addressbook/faxhome\"> " + QObject::tr("Home Fax: ") + "</b>" 642 text += "<br><b><img src=\"addressbook/faxhome\"> " + QObject::tr("Home Fax: ") + "</b>"
643 + Qtopia::escapeString(str); 643 + Qtopia::escapeString(str);
644 marker = true; 644 marker = true;
645 } 645 }
646 str = homeMobile(); 646 str = homeMobile();
647 if ( !str.isEmpty() ){ 647 if ( !str.isEmpty() ){
648 text += "<br><b><img src=\"addressbook/mobilehome\"> " + QObject::tr("Home Mobile: ") + "</b>" 648 text += "<br><b><img src=\"addressbook/mobilehome\"> " + QObject::tr("Home Mobile: ") + "</b>"
649 + Qtopia::escapeString(str); 649 + Qtopia::escapeString(str);
650 marker = true; 650 marker = true;
651 } 651 }
652 652
653 if ( marker ) 653 if ( marker )
654 text += "<br><hr>"; 654 text += "<br><hr>";
655 655
656 // the rest... 656 // the rest...
657 str = emails(); 657 str = emails();
658 if ( !str.isEmpty() && ( str != defEmail ) ) 658 if ( !str.isEmpty() && ( str != defEmail ) )
659 text += "<br><b>" + QObject::tr("All Emails: ") + "</b>" 659 text += "<br><b>" + QObject::tr("All Emails: ") + "</b>"
660 + Qtopia::escapeString(str); 660 + Qtopia::escapeString(str);
661 str = profession(); 661 str = profession();
662 if ( !str.isEmpty() ) 662 if ( !str.isEmpty() )
663 text += "<br><b>" + QObject::tr("Profession: ") + "</b>" 663 text += "<br><b>" + QObject::tr("Profession: ") + "</b>"
664 + Qtopia::escapeString(str); 664 + Qtopia::escapeString(str);
665 str = assistant(); 665 str = assistant();
666 if ( !str.isEmpty() ) 666 if ( !str.isEmpty() )
667 text += "<br><b>" + QObject::tr("Assistant: ") + "</b>" 667 text += "<br><b>" + QObject::tr("Assistant: ") + "</b>"
668 + Qtopia::escapeString(str); 668 + Qtopia::escapeString(str);
669 str = manager(); 669 str = manager();
670 if ( !str.isEmpty() ) 670 if ( !str.isEmpty() )
671 text += "<br><b>" + QObject::tr("Manager: ") + "</b>" 671 text += "<br><b>" + QObject::tr("Manager: ") + "</b>"
672 + Qtopia::escapeString(str); 672 + Qtopia::escapeString(str);
673 str = gender(); 673 str = gender();
674 if ( !str.isEmpty() && str.toInt() != 0 ) { 674 if ( !str.isEmpty() && str.toInt() != 0 ) {
675 text += "<br>"; 675 text += "<br>";
676 if ( str.toInt() == 1 ) 676 if ( str.toInt() == 1 )
677 str = QObject::tr( "Male" ); 677 str = QObject::tr( "Male" );
678 else if ( str.toInt() == 2 ) 678 else if ( str.toInt() == 2 )
679 str = QObject::tr( "Female" ); 679 str = QObject::tr( "Female" );
680 text += "<b>" + QObject::tr("Gender: ") + "</b>" + str; 680 text += "<b>" + QObject::tr("Gender: ") + "</b>" + str;
681 } 681 }
682 str = spouse(); 682 str = spouse();
683 if ( !str.isEmpty() ) 683 if ( !str.isEmpty() )
684 text += "<br><b>" + QObject::tr("Spouse: ") + "</b>" 684 text += "<br><b>" + QObject::tr("Spouse: ") + "</b>"
685 + Qtopia::escapeString(str); 685 + Qtopia::escapeString(str);
686 if ( birthday().isValid() ){ 686 if ( birthday().isValid() ){
687 str = TimeString::numberDateString( birthday() ); 687 str = TimeString::numberDateString( birthday() );
688 text += "<br><b>" + QObject::tr("Birthday: ") + "</b>" 688 text += "<br><b>" + QObject::tr("Birthday: ") + "</b>"
689 + Qtopia::escapeString(str); 689 + Qtopia::escapeString(str);
690 } 690 }
691 if ( anniversary().isValid() ){ 691 if ( anniversary().isValid() ){
692 str = TimeString::numberDateString( anniversary() ); 692 str = TimeString::numberDateString( anniversary() );
693 text += "<br><b>" + QObject::tr("Anniversary: ") + "</b>" 693 text += "<br><b>" + QObject::tr("Anniversary: ") + "</b>"
694 + Qtopia::escapeString(str); 694 + Qtopia::escapeString(str);
695 } 695 }
696 str = children(); 696 str = children();
697 if ( !str.isEmpty() ) 697 if ( !str.isEmpty() )
698 text += "<br><b>" + QObject::tr("Children: ") + "</b>" 698 text += "<br><b>" + QObject::tr("Children: ") + "</b>"
699 + Qtopia::escapeString(str); 699 + Qtopia::escapeString(str);
700 700
701 str = nickname(); 701 str = nickname();
702 if ( !str.isEmpty() ) 702 if ( !str.isEmpty() )
703 text += "<br><b>" + QObject::tr("Nickname: ") + "</b>" 703 text += "<br><b>" + QObject::tr("Nickname: ") + "</b>"
704 + Qtopia::escapeString(str); 704 + Qtopia::escapeString(str);
705 705
706 // categories 706 // categories
707 if ( categoryNames("Contacts").count() ){ 707 if ( categoryNames("Contacts").count() ){
708 text += "<br><b>" + QObject::tr( "Category:") + "</b> "; 708 text += "<br><b>" + QObject::tr( "Category:") + "</b> ";
709 text += categoryNames("Contacts").join(", "); 709 text += categoryNames("Contacts").join(", ");
710 } 710 }
711 711
712 // notes last 712 // notes last
713 if ( !(value = notes()).isEmpty() ) { 713 if ( !(value = notes()).isEmpty() ) {
714 text += "<br><hr><b>" + QObject::tr( "Notes:") + "</b> "; 714 text += "<br><hr><b>" + QObject::tr( "Notes:") + "</b> ";
715 QRegExp reg("\n"); 715 QRegExp reg("\n");
716 716
717 //QString tmp = Qtopia::escapeString(value); 717 //QString tmp = Qtopia::escapeString(value);
718 QString tmp = QStyleSheet::convertFromPlainText(value); 718 QString tmp = QStyleSheet::convertFromPlainText(value);
719 //tmp.replace( reg, "<br>" ); 719 //tmp.replace( reg, "<br>" );
720 text += "<br>" + tmp + "<br>"; 720 text += "<br>" + tmp + "<br>";
721 } 721 }
722 return text; 722 return text;
723} 723}
724 724
725/*! 725/*!
726 \internal 726 \internal
727*/ 727*/
728void OContact::insert( int key, const QString &v ) 728void OContact::insert( int key, const QString &v )
729{ 729{
730 QString value = v.stripWhiteSpace(); 730 QString value = v.stripWhiteSpace();
731 if ( value.isEmpty() ) 731 if ( value.isEmpty() )
732 mMap.remove( key ); 732 mMap.remove( key );
733 else 733 else
734 mMap.insert( key, value ); 734 mMap.insert( key, value );
735} 735}
736 736
737/*! 737/*!
738 \internal 738 \internal
739*/ 739*/
740void OContact::replace( int key, const QString & v ) 740void OContact::replace( int key, const QString & v )
741{ 741{
742 QString value = v.stripWhiteSpace(); 742 QString value = v.stripWhiteSpace();
743 if ( value.isEmpty() ) 743 if ( value.isEmpty() )
744 mMap.remove( key ); 744 mMap.remove( key );
745 else 745 else
746 mMap.replace( key, value ); 746 mMap.replace( key, value );
747} 747}
748 748
749/*! 749/*!
750 \internal 750 \internal
751*/ 751*/
752QString OContact::find( int key ) const 752QString OContact::find( int key ) const
753{ 753{
754 return mMap[key]; 754 return mMap[key];
755} 755}
756 756
757/*! 757/*!
758 \internal 758 \internal
759*/ 759*/
760QString OContact::displayAddress( const QString &street, 760QString OContact::displayAddress( const QString &street,
761 const QString &city, 761 const QString &city,
762 const QString &state, 762 const QString &state,
763 const QString &zip, 763 const QString &zip,
764 const QString &country ) const 764 const QString &country ) const
765{ 765{
766 QString s = street; 766 QString s = street;
767 if ( !street.isEmpty() ) 767 if ( !street.isEmpty() )
768 s+= "\n"; 768 s+= "\n";
769 s += city; 769 s += city;
770 if ( !city.isEmpty() && !state.isEmpty() ) 770 if ( !city.isEmpty() && !state.isEmpty() )
771 s += ", "; 771 s += ", ";
772 s += state; 772 s += state;
773 if ( !state.isEmpty() && !zip.isEmpty() ) 773 if ( !state.isEmpty() && !zip.isEmpty() )
774 s += " "; 774 s += " ";
775 s += zip; 775 s += zip;
776 if ( !country.isEmpty() && !s.isEmpty() ) 776 if ( !country.isEmpty() && !s.isEmpty() )
777 s += "\n"; 777 s += "\n";
778 s += country; 778 s += country;
779 return s; 779 return s;
780} 780}
781 781
782/*! 782/*!
783 \internal 783 \internal
784*/ 784*/
785QString OContact::displayBusinessAddress() const 785QString OContact::displayBusinessAddress() const
786{ 786{
787 return displayAddress( businessStreet(), businessCity(), 787 return displayAddress( businessStreet(), businessCity(),
788 businessState(), businessZip(), 788 businessState(), businessZip(),
789 businessCountry() ); 789 businessCountry() );
790} 790}
791 791
792/*! 792/*!
793 \internal 793 \internal
794*/ 794*/
795QString OContact::displayHomeAddress() const 795QString OContact::displayHomeAddress() const
796{ 796{
797 return displayAddress( homeStreet(), homeCity(), 797 return displayAddress( homeStreet(), homeCity(),
798 homeState(), homeZip(), 798 homeState(), homeZip(),
799 homeCountry() ); 799 homeCountry() );
800} 800}
801 801
802/*! 802/*!
803 Returns the full name of the contact 803 Returns the full name of the contact
804*/ 804*/
805QString OContact::fullName() const 805QString OContact::fullName() const
806{ 806{
807 QString title = find( Qtopia::Title ); 807 QString title = find( Qtopia::Title );
808 QString firstName = find( Qtopia::FirstName ); 808 QString firstName = find( Qtopia::FirstName );
809 QString middleName = find( Qtopia::MiddleName ); 809 QString middleName = find( Qtopia::MiddleName );
810 QString lastName = find( Qtopia::LastName ); 810 QString lastName = find( Qtopia::LastName );
811 QString suffix = find( Qtopia::Suffix ); 811 QString suffix = find( Qtopia::Suffix );
812 812
813 QString name = title; 813 QString name = title;
814 if ( !firstName.isEmpty() ) { 814 if ( !firstName.isEmpty() ) {
815 if ( !name.isEmpty() ) 815 if ( !name.isEmpty() )
816 name += " "; 816 name += " ";
817 name += firstName; 817 name += firstName;
818 } 818 }
819 if ( !middleName.isEmpty() ) { 819 if ( !middleName.isEmpty() ) {
820 if ( !name.isEmpty() ) 820 if ( !name.isEmpty() )
821 name += " "; 821 name += " ";
822 name += middleName; 822 name += middleName;
823 } 823 }
824 if ( !lastName.isEmpty() ) { 824 if ( !lastName.isEmpty() ) {
825 if ( !name.isEmpty() ) 825 if ( !name.isEmpty() )
826 name += " "; 826 name += " ";
827 name += lastName; 827 name += lastName;
828 } 828 }
829 if ( !suffix.isEmpty() ) { 829 if ( !suffix.isEmpty() ) {
830 if ( !name.isEmpty() ) 830 if ( !name.isEmpty() )
831 name += " "; 831 name += " ";
832 name += suffix; 832 name += suffix;
833 } 833 }
834 return name.simplifyWhiteSpace(); 834 return name.simplifyWhiteSpace();
835} 835}
836 836
837/*! 837/*!
838 Returns a list of the names of the children of the contact. 838 Returns a list of the names of the children of the contact.
839*/ 839*/
840QStringList OContact::childrenList() const 840QStringList OContact::childrenList() const
841{ 841{
842 return QStringList::split( " ", find( Qtopia::Children ) ); 842 return QStringList::split( " ", find( Qtopia::Children ) );
843} 843}
844 844
845/*! \fn void OContact::insertEmail( const QString &email ) 845/*! \fn void OContact::insertEmail( const QString &email )
846 846
847 Insert \a email into the email list. Ensures \a email can only be added 847 Insert \a email into the email list. Ensures \a email can only be added
848 once. If there is no default email address set, it sets it to the \a email. 848 once. If there is no default email address set, it sets it to the \a email.
849*/ 849*/
850 850
851/*! \fn void OContact::removeEmail( const QString &email ) 851/*! \fn void OContact::removeEmail( const QString &email )
852 852
853 Removes the \a email from the email list. If the default email was \a email, 853 Removes the \a email from the email list. If the default email was \a email,
854 then the default email address is assigned to the first email in the 854 then the default email address is assigned to the first email in the
855 email list 855 email list
856*/ 856*/
857 857
858/*! \fn void OContact::clearEmails() 858/*! \fn void OContact::clearEmails()
859 859
860 Clears the email list. 860 Clears the email list.
861 */ 861 */
862 862
863/*! \fn void OContact::insertEmails( const QStringList &emailList ) 863/*! \fn void OContact::insertEmails( const QStringList &emailList )
864 864
865 Appends the \a emailList to the exiting email list 865 Appends the \a emailList to the exiting email list
866 */ 866 */
867 867
868/*! 868/*!
869 Returns a list of email addresses belonging to the contact, including 869 Returns a list of email addresses belonging to the contact, including
870 the default email address. 870 the default email address.
871*/ 871*/
872QStringList OContact::emailList() const 872QStringList OContact::emailList() const
873{ 873{
874 QString emailStr = emails(); 874 QString emailStr = emails();
875 875
876 QStringList r; 876 QStringList r;
877 if ( !emailStr.isEmpty() ) { 877 if ( !emailStr.isEmpty() ) {
878 qDebug(" emailstr "); 878 qDebug(" emailstr ");
879 QStringList l = QStringList::split( emailSeparator(), emailStr ); 879 QStringList l = QStringList::split( emailSeparator(), emailStr );
880 for ( QStringList::ConstIterator it = l.begin();it != l.end();++it ) 880 for ( QStringList::ConstIterator it = l.begin();it != l.end();++it )
881 r += (*it).simplifyWhiteSpace(); 881 r += (*it).simplifyWhiteSpace();
882 } 882 }
883 883
884 return r; 884 return r;
885} 885}
886 886
887/*! 887/*!
888 \overload 888 \overload
889 889
890 Generates the string for the contact to be filed as from the first, 890 Generates the string for the contact to be filed as from the first,
891 middle and last name of the contact. 891 middle and last name of the contact.
892*/ 892*/
893void OContact::setFileAs() 893void OContact::setFileAs()
894{ 894{
895 QString lastName, firstName, middleName, fileas; 895 QString lastName, firstName, middleName, fileas;
896 896
897 lastName = find( Qtopia::LastName ); 897 lastName = find( Qtopia::LastName );
898 firstName = find( Qtopia::FirstName ); 898 firstName = find( Qtopia::FirstName );
899 middleName = find( Qtopia::MiddleName ); 899 middleName = find( Qtopia::MiddleName );
900 if ( !lastName.isEmpty() && !firstName.isEmpty() 900 if ( !lastName.isEmpty() && !firstName.isEmpty()
901 && !middleName.isEmpty() ) 901 && !middleName.isEmpty() )
902 fileas = lastName + ", " + firstName + " " + middleName; 902 fileas = lastName + ", " + firstName + " " + middleName;
903 else if ( !lastName.isEmpty() && !firstName.isEmpty() ) 903 else if ( !lastName.isEmpty() && !firstName.isEmpty() )
904 fileas = lastName + ", " + firstName; 904 fileas = lastName + ", " + firstName;
905 else if ( !lastName.isEmpty() || !firstName.isEmpty() || 905 else if ( !lastName.isEmpty() || !firstName.isEmpty() ||
906 !middleName.isEmpty() ) 906 !middleName.isEmpty() )
907 fileas = firstName + ( firstName.isEmpty() ? "" : " " ) 907 fileas = firstName + ( firstName.isEmpty() ? "" : " " )
908 + middleName + ( middleName.isEmpty() ? "" : " " ) 908 + middleName + ( middleName.isEmpty() ? "" : " " )
909 + lastName; 909 + lastName;
910 910
911 replace( Qtopia::FileAs, fileas ); 911 replace( Qtopia::FileAs, fileas );
912} 912}
913 913
914/*! 914/*!
915 \internal 915 \internal
916 Appends the contact information to \a buf. 916 Appends the contact information to \a buf.
917*/ 917*/
918void OContact::save( QString &buf ) const 918void OContact::save( QString &buf ) const
919{ 919{
920 static const QStringList SLFIELDS = fields(); 920 static const QStringList SLFIELDS = fields();
921 // I'm expecting "<Contact " in front of this... 921 // I'm expecting "<Contact " in front of this...
922 for ( QMap<int, QString>::ConstIterator it = mMap.begin(); 922 for ( QMap<int, QString>::ConstIterator it = mMap.begin();
923 it != mMap.end(); ++it ) { 923 it != mMap.end(); ++it ) {
924 const QString &value = it.data(); 924 const QString &value = it.data();
925 int key = it.key(); 925 int key = it.key();
926 if ( !value.isEmpty() ) { 926 if ( !value.isEmpty() ) {
927 if ( key == Qtopia::AddressCategory || key == Qtopia::AddressUid) 927 if ( key == Qtopia::AddressCategory || key == Qtopia::AddressUid)
928 continue; 928 continue;
929 929
930 key -= Qtopia::AddressCategory+1; 930 key -= Qtopia::AddressCategory+1;
931 buf += SLFIELDS[key]; 931 buf += SLFIELDS[key];
932 buf += "=\"" + Qtopia::escapeString(value) + "\" "; 932 buf += "=\"" + Qtopia::escapeString(value) + "\" ";
933 } 933 }
934 } 934 }
935 buf += customToXml(); 935 buf += customToXml();
936 if ( categories().count() > 0 ) 936 if ( categories().count() > 0 )
937 buf += "Categories=\"" + idsToString( categories() ) + "\" "; 937 buf += "Categories=\"" + idsToString( categories() ) + "\" ";
938 buf += "Uid=\"" + QString::number( uid() ) + "\" "; 938 buf += "Uid=\"" + QString::number( uid() ) + "\" ";
939 // You need to close this yourself 939 // You need to close this yourself
940} 940}
941 941
942 942
943/*! 943/*!
944 \internal 944 \internal
945 Returns the list of fields belonging to a contact 945 Returns the list of fields belonging to a contact
946 Never change order of this list ! It has to be regarding 946 Never change order of this list ! It has to be regarding
947 enum AddressBookFields !! 947 enum AddressBookFields !!
948*/ 948*/
949QStringList OContact::fields() 949QStringList OContact::fields()
950{ 950{
951 QStringList list; 951 QStringList list;
952 952
953 list.append( "Title" ); // Not Used! 953 list.append( "Title" ); // Not Used!
954 list.append( "FirstName" ); 954 list.append( "FirstName" );
955 list.append( "MiddleName" ); 955 list.append( "MiddleName" );
956 list.append( "LastName" ); 956 list.append( "LastName" );
957 list.append( "Suffix" ); 957 list.append( "Suffix" );
958 list.append( "FileAs" ); 958 list.append( "FileAs" );
959 959
960 list.append( "JobTitle" ); 960 list.append( "JobTitle" );
961 list.append( "Department" ); 961 list.append( "Department" );
962 list.append( "Company" ); 962 list.append( "Company" );
963 list.append( "BusinessPhone" ); 963 list.append( "BusinessPhone" );
964 list.append( "BusinessFax" ); 964 list.append( "BusinessFax" );
965 list.append( "BusinessMobile" ); 965 list.append( "BusinessMobile" );
966 966
967 list.append( "DefaultEmail" ); 967 list.append( "DefaultEmail" );
968 list.append( "Emails" ); 968 list.append( "Emails" );
969 969
970 list.append( "HomePhone" ); 970 list.append( "HomePhone" );
971 list.append( "HomeFax" ); 971 list.append( "HomeFax" );
972 list.append( "HomeMobile" ); 972 list.append( "HomeMobile" );
973 973
974 list.append( "BusinessStreet" ); 974 list.append( "BusinessStreet" );
975 list.append( "BusinessCity" ); 975 list.append( "BusinessCity" );
976 list.append( "BusinessState" ); 976 list.append( "BusinessState" );
977 list.append( "BusinessZip" ); 977 list.append( "BusinessZip" );
978 list.append( "BusinessCountry" ); 978 list.append( "BusinessCountry" );
979 list.append( "BusinessPager" ); 979 list.append( "BusinessPager" );
980 list.append( "BusinessWebPage" ); 980 list.append( "BusinessWebPage" );
981 981
982 list.append( "Office" ); 982 list.append( "Office" );
983 list.append( "Profession" ); 983 list.append( "Profession" );
984 list.append( "Assistant" ); 984 list.append( "Assistant" );
985 list.append( "Manager" ); 985 list.append( "Manager" );
986 986
987 list.append( "HomeStreet" ); 987 list.append( "HomeStreet" );
988 list.append( "HomeCity" ); 988 list.append( "HomeCity" );
989 list.append( "HomeState" ); 989 list.append( "HomeState" );
990 list.append( "HomeZip" ); 990 list.append( "HomeZip" );
991 list.append( "HomeCountry" ); 991 list.append( "HomeCountry" );
992 list.append( "HomeWebPage" ); 992 list.append( "HomeWebPage" );
993 993
994 list.append( "Spouse" ); 994 list.append( "Spouse" );
995 list.append( "Gender" ); 995 list.append( "Gender" );
996 list.append( "Birthday" ); 996 list.append( "Birthday" );
997 list.append( "Anniversary" ); 997 list.append( "Anniversary" );
998 list.append( "Nickname" ); 998 list.append( "Nickname" );
999 list.append( "Children" ); 999 list.append( "Children" );
1000 1000
1001 list.append( "Notes" ); 1001 list.append( "Notes" );
1002 list.append( "Groups" ); 1002 list.append( "Groups" );
1003 1003
1004 return list; 1004 return list;
1005} 1005}
1006 1006
1007 1007
1008/*! 1008/*!
1009 Sets the list of email address for contact to those contained in \a str. 1009 Sets the list of email address for contact to those contained in \a str.
1010 Email address should be separated by ';'s. 1010 Email address should be separated by ';'s.
1011*/ 1011*/
1012void OContact::setEmails( const QString &str ) 1012void OContact::setEmails( const QString &str )
1013{ 1013{
1014 replace( Qtopia::Emails, str ); 1014 replace( Qtopia::Emails, str );
1015 if ( str.isEmpty() ) 1015 if ( str.isEmpty() )
1016 setDefaultEmail( QString::null ); 1016 setDefaultEmail( QString::null );
1017} 1017}
1018 1018
1019/*! 1019/*!
1020 Sets the list of children for the contact to those contained in \a str. 1020 Sets the list of children for the contact to those contained in \a str.
1021*/ 1021*/
1022void OContact::setChildren( const QString &str ) 1022void OContact::setChildren( const QString &str )
1023{ 1023{
1024 replace( Qtopia::Children, str ); 1024 replace( Qtopia::Children, str );
1025} 1025}
1026 1026
1027/*! 1027/*!
1028 \overload 1028 \overload
1029 Returns TRUE if the contact matches the regular expression \a regexp. 1029 Returns TRUE if the contact matches the regular expression \a regexp.
1030 Otherwise returns FALSE. 1030 Otherwise returns FALSE.
1031*/ 1031*/
1032bool OContact::match( const QRegExp &r ) const 1032bool OContact::match( const QRegExp &r ) const
1033{ 1033{
1034 setLastHitField( -1 ); 1034 setLastHitField( -1 );
1035 bool match; 1035 bool match;
1036 match = false; 1036 match = false;
1037 QMap<int, QString>::ConstIterator it; 1037 QMap<int, QString>::ConstIterator it;
1038 for ( it = mMap.begin(); it != mMap.end(); ++it ) { 1038 for ( it = mMap.begin(); it != mMap.end(); ++it ) {
1039 if ( (*it).find( r ) > -1 ) { 1039 if ( (*it).find( r ) > -1 ) {
1040 setLastHitField( it.key() ); 1040 setLastHitField( it.key() );
1041 match = true; 1041 match = true;
1042 break; 1042 break;
1043 } 1043 }
1044 } 1044 }
1045 return match; 1045 return match;
1046} 1046}
1047 1047
1048 1048
1049QString OContact::toShortText() const 1049QString OContact::toShortText() const
1050{ 1050{
1051 return ( fullName() ); 1051 return ( fullName() );
1052} 1052}
1053QString OContact::type() const 1053QString OContact::type() const
1054{ 1054{
1055 return QString::fromLatin1( "OContact" ); 1055 return QString::fromLatin1( "OContact" );
1056} 1056}
1057 1057
1058 1058
1059 1059
1060class QString OContact::recordField( int pos ) const 1060class QString OContact::recordField( int pos ) const
1061{ 1061{
1062 QStringList SLFIELDS = fields(); // ?? why this ? (se) 1062 QStringList SLFIELDS = fields(); // ?? why this ? (se)
1063 return SLFIELDS[pos]; 1063 return SLFIELDS[pos];
1064} 1064}
1065 1065
1066// In future releases, we should store birthday and anniversary 1066// In future releases, we should store birthday and anniversary
1067// internally as QDate instead of QString ! 1067// internally as QDate instead of QString !
1068// QString is always too complicate to interprete (DD.MM.YY, DD/MM/YY, MM/DD/YY, etc..)(se) 1068// QString is always too complicate to interprete (DD.MM.YY, DD/MM/YY, MM/DD/YY, etc..)(se)
1069 1069
1070/*! \fn void OContact::setBirthday( const QDate& date ) 1070/*! \fn void OContact::setBirthday( const QDate& date )
1071 Sets the birthday for the contact to \a date. If date is null 1071 Sets the birthday for the contact to \a date. If date is null
1072 the current stored date will be removed. 1072 the current stored date will be removed.
1073*/ 1073*/
1074void OContact::setBirthday( const QDate &v ) 1074void OContact::setBirthday( const QDate &v )
1075{ 1075{
1076 if ( v.isNull() ){ 1076 if ( v.isNull() ){
1077 qWarning( "Remove Birthday"); 1077 qWarning( "Remove Birthday");
1078 replace( Qtopia::Birthday, QString::null ); 1078 replace( Qtopia::Birthday, QString::null );
1079 return; 1079 return;
1080 } 1080 }
1081 1081
1082 if ( v.isValid() ) 1082 if ( v.isValid() )
1083 replace( Qtopia::Birthday, OConversion::dateToString( v ) ); 1083 replace( Qtopia::Birthday, OConversion::dateToString( v ) );
1084 1084
1085} 1085}
1086 1086
1087 1087
1088/*! \fn void OContact::setAnniversary( const QDate &date ) 1088/*! \fn void OContact::setAnniversary( const QDate &date )
1089 Sets the anniversary of the contact to \a date. If date is 1089 Sets the anniversary of the contact to \a date. If date is
1090 null, the current stored date will be removed. 1090 null, the current stored date will be removed.
1091*/ 1091*/
1092void OContact::setAnniversary( const QDate &v ) 1092void OContact::setAnniversary( const QDate &v )
1093{ 1093{
1094 if ( v.isNull() ){ 1094 if ( v.isNull() ){
1095 qWarning( "Remove Anniversary"); 1095 qWarning( "Remove Anniversary");
1096 replace( Qtopia::Anniversary, QString::null ); 1096 replace( Qtopia::Anniversary, QString::null );
1097 return; 1097 return;
1098 } 1098 }
1099 1099
1100 if ( v.isValid() ) 1100 if ( v.isValid() )
1101 replace( Qtopia::Anniversary, OConversion::dateToString( v ) ); 1101 replace( Qtopia::Anniversary, OConversion::dateToString( v ) );
1102} 1102}
1103 1103
1104/*! \fn QDate OContact::birthday() const 1104/*! \fn QDate OContact::birthday() const
1105 Returns the birthday of the contact. 1105 Returns the birthday of the contact.
1106*/ 1106*/
1107QDate OContact::birthday() const 1107QDate OContact::birthday() const
1108{ 1108{
1109 QString str = find( Qtopia::Birthday ); 1109 QString str = find( Qtopia::Birthday );
1110 qWarning ("Birthday %s", str.latin1() ); 1110 qWarning ("Birthday %s", str.latin1() );
1111 if ( !str.isEmpty() ) 1111 if ( !str.isEmpty() )
1112 return OConversion::dateFromString ( str ); 1112 return OConversion::dateFromString ( str );
1113 else 1113 else
1114 return QDate(); 1114 return QDate();
1115} 1115}
1116 1116
1117 1117
1118/*! \fn QDate OContact::anniversary() const 1118/*! \fn QDate OContact::anniversary() const
1119 Returns the anniversary of the contact. 1119 Returns the anniversary of the contact.
1120*/ 1120*/
1121QDate OContact::anniversary() const 1121QDate OContact::anniversary() const
1122{ 1122{
1123 QDate empty; 1123 QDate empty;
1124 QString str = find( Qtopia::Anniversary ); 1124 QString str = find( Qtopia::Anniversary );
1125 qWarning ("Anniversary %s", str.latin1() ); 1125 qWarning ("Anniversary %s", str.latin1() );
1126 if ( !str.isEmpty() ) 1126 if ( !str.isEmpty() )
1127 return OConversion::dateFromString ( str ); 1127 return OConversion::dateFromString ( str );
1128 else 1128 else
1129 return empty; 1129 return empty;
1130} 1130}
1131 1131
1132 1132
1133void OContact::insertEmail( const QString &v ) 1133void OContact::insertEmail( const QString &v )
1134{ 1134{
1135 //qDebug("insertEmail %s", v.latin1()); 1135 //qDebug("insertEmail %s", v.latin1());
1136 QString e = v.simplifyWhiteSpace(); 1136 QString e = v.simplifyWhiteSpace();
1137 QString def = defaultEmail(); 1137 QString def = defaultEmail();
1138 1138
1139 // if no default, set it as the default email and don't insert 1139 // if no default, set it as the default email and don't insert
1140 if ( def.isEmpty() ) { 1140 if ( def.isEmpty() ) {
1141 setDefaultEmail( e ); // will insert into the list for us 1141 setDefaultEmail( e ); // will insert into the list for us
1142 return; 1142 return;
1143 } 1143 }
1144 1144
1145 // otherwise, insert assuming doesn't already exist 1145 // otherwise, insert assuming doesn't already exist
1146 QString emailsStr = find( Qtopia::Emails ); 1146 QString emailsStr = find( Qtopia::Emails );
1147 if ( emailsStr.contains( e )) 1147 if ( emailsStr.contains( e ))
1148 return; 1148 return;
1149 if ( !emailsStr.isEmpty() ) 1149 if ( !emailsStr.isEmpty() )
1150 emailsStr += emailSeparator(); 1150 emailsStr += emailSeparator();
1151 emailsStr += e; 1151 emailsStr += e;
1152 replace( Qtopia::Emails, emailsStr ); 1152 replace( Qtopia::Emails, emailsStr );
1153} 1153}
1154 1154
1155void OContact::removeEmail( const QString &v ) 1155void OContact::removeEmail( const QString &v )
1156{ 1156{
1157 QString e = v.simplifyWhiteSpace(); 1157 QString e = v.simplifyWhiteSpace();
1158 QString def = defaultEmail(); 1158 QString def = defaultEmail();
1159 QString emailsStr = find( Qtopia::Emails ); 1159 QString emailsStr = find( Qtopia::Emails );
1160 QStringList emails = emailList(); 1160 QStringList emails = emailList();
1161 1161
1162 // otherwise, must first contain it 1162 // otherwise, must first contain it
1163 if ( !emailsStr.contains( e ) ) 1163 if ( !emailsStr.contains( e ) )
1164 return; 1164 return;
1165 1165
1166 // remove it 1166 // remove it
1167 //qDebug(" removing email from list %s", e.latin1()); 1167 //qDebug(" removing email from list %s", e.latin1());
1168 emails.remove( e ); 1168 emails.remove( e );
1169 // reset the string 1169 // reset the string
1170 emailsStr = emails.join(emailSeparator()); // Sharp's brain dead separator 1170 emailsStr = emails.join(emailSeparator()); // Sharp's brain dead separator
1171 replace( Qtopia::Emails, emailsStr ); 1171 replace( Qtopia::Emails, emailsStr );
1172 1172
1173 // if default, then replace the default email with the first one 1173 // if default, then replace the default email with the first one
1174 if ( def == e ) { 1174 if ( def == e ) {
1175 //qDebug("removeEmail is default; setting new default"); 1175 //qDebug("removeEmail is default; setting new default");
1176 if ( !emails.count() ) 1176 if ( !emails.count() )
1177 clearEmails(); 1177 clearEmails();
1178 else // setDefaultEmail will remove e from the list 1178 else // setDefaultEmail will remove e from the list
1179 setDefaultEmail( emails.first() ); 1179 setDefaultEmail( emails.first() );
1180 } 1180 }
1181} 1181}
1182void OContact::clearEmails() 1182void OContact::clearEmails()
1183{ 1183{
1184 mMap.remove( Qtopia::DefaultEmail ); 1184 mMap.remove( Qtopia::DefaultEmail );
1185 mMap.remove( Qtopia::Emails ); 1185 mMap.remove( Qtopia::Emails );
1186} 1186}
1187void OContact::setDefaultEmail( const QString &v ) 1187void OContact::setDefaultEmail( const QString &v )
1188{ 1188{
1189 QString e = v.simplifyWhiteSpace(); 1189 QString e = v.simplifyWhiteSpace();
1190 1190
1191 //qDebug("OContact::setDefaultEmail %s", e.latin1()); 1191 //qDebug("OContact::setDefaultEmail %s", e.latin1());
1192 replace( Qtopia::DefaultEmail, e ); 1192 replace( Qtopia::DefaultEmail, e );
1193 1193
1194 if ( !e.isEmpty() ) 1194 if ( !e.isEmpty() )
1195 insertEmail( e ); 1195 insertEmail( e );
1196 1196
1197} 1197}
1198 1198
1199void OContact::insertEmails( const QStringList &v ) 1199void OContact::insertEmails( const QStringList &v )
1200{ 1200{
1201 for ( QStringList::ConstIterator it = v.begin(); it != v.end(); ++it ) 1201 for ( QStringList::ConstIterator it = v.begin(); it != v.end(); ++it )
1202 insertEmail( *it ); 1202 insertEmail( *it );
1203} 1203}
1204int OContact::rtti() { 1204int OContact::rtti() {
1205 return OPimResolver::AddressBook; 1205 return OPimResolver::AddressBook;
1206} 1206}
1207void OContact::setUid( int i ) 1207void OContact::setUid( int i )
1208{ 1208{
1209 OPimRecord::setUid(i); 1209 OPimRecord::setUid(i);
1210 replace( Qtopia::AddressUid , QString::number(i)); 1210 replace( Qtopia::AddressUid , QString::number(i));
1211} 1211}
diff --git a/libopie2/opiepim/ocontact.cpp b/libopie2/opiepim/ocontact.cpp
index 3473baa..e34feeb 100644
--- a/libopie2/opiepim/ocontact.cpp
+++ b/libopie2/opiepim/ocontact.cpp
@@ -1,1211 +1,1211 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** Copyright (C) 2002-2003 by Stefan Eilers (eilers.stefan@epost.de) 3** Copyright (C) 2002-2003 by Stefan Eilers (eilers.stefan@epost.de)
4** 4**
5** This file may be distributed and/or modified under the terms of the 5** This file may be distributed and/or modified under the terms of the
6** GNU General Public License version 2 as published by the Free Software 6** GNU General Public License version 2 as published by the Free Software
7** Foundation and appearing in the file LICENSE.GPL included in the 7** Foundation and appearing in the file LICENSE.GPL included in the
8** packaging of this file. 8** packaging of this file.
9** 9**
10** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 10** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
11** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 11** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
12** 12**
13** See http://www.trolltech.com/gpl/ for GPL licensing information. 13** See http://www.trolltech.com/gpl/ for GPL licensing information.
14** 14**
15** Contact info@trolltech.com if any conditions of this licensing are 15** Contact info@trolltech.com if any conditions of this licensing are
16** not clear to you. 16** not clear to you.
17** 17**
18**********************************************************************/ 18**********************************************************************/
19 19
20#define QTOPIA_INTERNAL_CONTACT_MRE 20#define QTOPIA_INTERNAL_CONTACT_MRE
21 21
22#include "ocontact.h" 22#include "ocontact.h"
23#include "opimresolver.h" 23#include "opimresolver.h"
24#include "oconversion.h" 24#include "oconversion.h"
25 25
26#include <qpe/stringutil.h> 26#include <qpe/stringutil.h>
27#include <qpe/timestring.h> 27#include <qpe/timestring.h>
28#include <qpe/config.h> 28#include <qpe/config.h>
29 29
30#include <qobject.h> 30#include <qobject.h>
31#include <qregexp.h> 31#include <qregexp.h>
32#include <qstylesheet.h> 32#include <qstylesheet.h>
33#include <qfileinfo.h> 33#include <qfileinfo.h>
34#include <qmap.h> 34#include <qmap.h>
35 35
36#include <stdio.h> 36#include <stdio.h>
37 37
38/*! 38/*!
39 \class Contact contact.h 39 \class Contact contact.h
40 \brief The Contact class holds the data of an address book entry. 40 \brief The Contact class holds the data of an address book entry.
41 41
42 This data includes information the name of the person, contact 42 This data includes information the name of the person, contact
43 information, and business information such as deparment and job title. 43 information, and business information such as deparment and job title.
44 44
45 \ingroup qtopiaemb 45 \ingroup qtopiaemb
46 \ingroup qtopiadesktop 46 \ingroup qtopiadesktop
47*/ 47*/
48 48
49 49
50/*! 50/*!
51 Creates a new, empty contact. 51 Creates a new, empty contact.
52*/ 52*/
53OContact::OContact() 53OContact::OContact()
54 : OPimRecord(), mMap(), d( 0 ) 54 : OPimRecord(), mMap(), d( 0 )
55{ 55{
56} 56}
57 57
58/*! 58/*!
59 \internal 59 \internal
60 Creates a new contact. The properties of the contact are 60 Creates a new contact. The properties of the contact are
61 set from \a fromMap. 61 set from \a fromMap.
62*/ 62*/
63OContact::OContact( const QMap<int, QString> &fromMap ) : 63OContact::OContact( const QMap<int, QString> &fromMap ) :
64 OPimRecord(), mMap( fromMap ), d( 0 ) 64 OPimRecord(), mMap( fromMap ), d( 0 )
65{ 65{
66 QString cats = mMap[ Qtopia::AddressCategory ]; 66 QString cats = mMap[ Qtopia::AddressCategory ];
67 if ( !cats.isEmpty() ) 67 if ( !cats.isEmpty() )
68 setCategories( idsFromString( cats ) ); 68 setCategories( idsFromString( cats ) );
69 69
70 QString uidStr = find( Qtopia::AddressUid ); 70 QString uidStr = find( Qtopia::AddressUid );
71 71
72 if ( uidStr.isEmpty() || (uidStr.toInt() == 0) ){ 72 if ( uidStr.isEmpty() || (uidStr.toInt() == 0) ){
73 qWarning( "Invalid UID found. Generate new one.." ); 73 qWarning( "Invalid UID found. Generate new one.." );
74 setUid( uidGen().generate() ); 74 setUid( uidGen().generate() );
75 }else 75 }else
76 setUid( uidStr.toInt() ); 76 setUid( uidStr.toInt() );
77 77
78// if ( !uidStr.isEmpty() ) 78// if ( !uidStr.isEmpty() )
79 // setUid( uidStr.toInt() ); 79 // setUid( uidStr.toInt() );
80} 80}
81 81
82/*! 82/*!
83 Destroys a contact. 83 Destroys a contact.
84*/ 84*/
85OContact::~OContact() 85OContact::~OContact()
86{ 86{
87} 87}
88 88
89/*! \fn void OContact::setTitle( const QString &str ) 89/*! \fn void OContact::setTitle( const QString &str )
90 Sets the title of the contact to \a str. 90 Sets the title of the contact to \a str.
91*/ 91*/
92 92
93/*! \fn void OContact::setFirstName( const QString &str ) 93/*! \fn void OContact::setFirstName( const QString &str )
94 Sets the first name of the contact to \a str. 94 Sets the first name of the contact to \a str.
95*/ 95*/
96 96
97/*! \fn void OContact::setMiddleName( const QString &str ) 97/*! \fn void OContact::setMiddleName( const QString &str )
98 Sets the middle name of the contact to \a str. 98 Sets the middle name of the contact to \a str.
99*/ 99*/
100 100
101/*! \fn void OContact::setLastName( const QString &str ) 101/*! \fn void OContact::setLastName( const QString &str )
102 Sets the last name of the contact to \a str. 102 Sets the last name of the contact to \a str.
103*/ 103*/
104 104
105/*! \fn void OContact::setSuffix( const QString &str ) 105/*! \fn void OContact::setSuffix( const QString &str )
106 Sets the suffix of the contact to \a str. 106 Sets the suffix of the contact to \a str.
107*/ 107*/
108 108
109/*! \fn void OContact::setFileAs( const QString &str ) 109/*! \fn void OContact::setFileAs( const QString &str )
110 Sets the contact to filed as \a str. 110 Sets the contact to filed as \a str.
111*/ 111*/
112 112
113/*! \fn void OContact::setDefaultEmail( const QString &str ) 113/*! \fn void OContact::setDefaultEmail( const QString &str )
114 Sets the default email of the contact to \a str. 114 Sets the default email of the contact to \a str.
115*/ 115*/
116 116
117/*! \fn void OContact::setHomeStreet( const QString &str ) 117/*! \fn void OContact::setHomeStreet( const QString &str )
118 Sets the home street address of the contact to \a str. 118 Sets the home street address of the contact to \a str.
119*/ 119*/
120 120
121/*! \fn void OContact::setHomeCity( const QString &str ) 121/*! \fn void OContact::setHomeCity( const QString &str )
122 Sets the home city of the contact to \a str. 122 Sets the home city of the contact to \a str.
123*/ 123*/
124 124
125/*! \fn void OContact::setHomeState( const QString &str ) 125/*! \fn void OContact::setHomeState( const QString &str )
126 Sets the home state of the contact to \a str. 126 Sets the home state of the contact to \a str.
127*/ 127*/
128 128
129/*! \fn void OContact::setHomeZip( const QString &str ) 129/*! \fn void OContact::setHomeZip( const QString &str )
130 Sets the home zip code of the contact to \a str. 130 Sets the home zip code of the contact to \a str.
131*/ 131*/
132 132
133/*! \fn void OContact::setHomeCountry( const QString &str ) 133/*! \fn void OContact::setHomeCountry( const QString &str )
134 Sets the home country of the contact to \a str. 134 Sets the home country of the contact to \a str.
135*/ 135*/
136 136
137/*! \fn void OContact::setHomePhone( const QString &str ) 137/*! \fn void OContact::setHomePhone( const QString &str )
138 Sets the home phone number of the contact to \a str. 138 Sets the home phone number of the contact to \a str.
139*/ 139*/
140 140
141/*! \fn void OContact::setHomeFax( const QString &str ) 141/*! \fn void OContact::setHomeFax( const QString &str )
142 Sets the home fax number of the contact to \a str. 142 Sets the home fax number of the contact to \a str.
143*/ 143*/
144 144
145/*! \fn void OContact::setHomeMobile( const QString &str ) 145/*! \fn void OContact::setHomeMobile( const QString &str )
146 Sets the home mobile phone number of the contact to \a str. 146 Sets the home mobile phone number of the contact to \a str.
147*/ 147*/
148 148
149/*! \fn void OContact::setHomeWebpage( const QString &str ) 149/*! \fn void OContact::setHomeWebpage( const QString &str )
150 Sets the home webpage of the contact to \a str. 150 Sets the home webpage of the contact to \a str.
151*/ 151*/
152 152
153/*! \fn void OContact::setCompany( const QString &str ) 153/*! \fn void OContact::setCompany( const QString &str )
154 Sets the company for contact to \a str. 154 Sets the company for contact to \a str.
155*/ 155*/
156 156
157/*! \fn void OContact::setJobTitle( const QString &str ) 157/*! \fn void OContact::setJobTitle( const QString &str )
158 Sets the job title of the contact to \a str. 158 Sets the job title of the contact to \a str.
159*/ 159*/
160 160
161/*! \fn void OContact::setDepartment( const QString &str ) 161/*! \fn void OContact::setDepartment( const QString &str )
162 Sets the department for contact to \a str. 162 Sets the department for contact to \a str.
163*/ 163*/
164 164
165/*! \fn void OContact::setOffice( const QString &str ) 165/*! \fn void OContact::setOffice( const QString &str )
166 Sets the office for contact to \a str. 166 Sets the office for contact to \a str.
167*/ 167*/
168 168
169/*! \fn void OContact::setBusinessStreet( const QString &str ) 169/*! \fn void OContact::setBusinessStreet( const QString &str )
170 Sets the business street address of the contact to \a str. 170 Sets the business street address of the contact to \a str.
171*/ 171*/
172 172
173/*! \fn void OContact::setBusinessCity( const QString &str ) 173/*! \fn void OContact::setBusinessCity( const QString &str )
174 Sets the business city of the contact to \a str. 174 Sets the business city of the contact to \a str.
175*/ 175*/
176 176
177/*! \fn void OContact::setBusinessState( const QString &str ) 177/*! \fn void OContact::setBusinessState( const QString &str )
178 Sets the business state of the contact to \a str. 178 Sets the business state of the contact to \a str.
179*/ 179*/
180 180
181/*! \fn void OContact::setBusinessZip( const QString &str ) 181/*! \fn void OContact::setBusinessZip( const QString &str )
182 Sets the business zip code of the contact to \a str. 182 Sets the business zip code of the contact to \a str.
183*/ 183*/
184 184
185/*! \fn void OContact::setBusinessCountry( const QString &str ) 185/*! \fn void OContact::setBusinessCountry( const QString &str )
186 Sets the business country of the contact to \a str. 186 Sets the business country of the contact to \a str.
187*/ 187*/
188 188
189/*! \fn void OContact::setBusinessPhone( const QString &str ) 189/*! \fn void OContact::setBusinessPhone( const QString &str )
190 Sets the business phone number of the contact to \a str. 190 Sets the business phone number of the contact to \a str.
191*/ 191*/
192 192
193/*! \fn void OContact::setBusinessFax( const QString &str ) 193/*! \fn void OContact::setBusinessFax( const QString &str )
194 Sets the business fax number of the contact to \a str. 194 Sets the business fax number of the contact to \a str.
195*/ 195*/
196 196
197/*! \fn void OContact::setBusinessMobile( const QString &str ) 197/*! \fn void OContact::setBusinessMobile( const QString &str )
198 Sets the business mobile phone number of the contact to \a str. 198 Sets the business mobile phone number of the contact to \a str.
199*/ 199*/
200 200
201/*! \fn void OContact::setBusinessPager( const QString &str ) 201/*! \fn void OContact::setBusinessPager( const QString &str )
202 Sets the business pager number of the contact to \a str. 202 Sets the business pager number of the contact to \a str.
203*/ 203*/
204 204
205/*! \fn void OContact::setBusinessWebpage( const QString &str ) 205/*! \fn void OContact::setBusinessWebpage( const QString &str )
206 Sets the business webpage of the contact to \a str. 206 Sets the business webpage of the contact to \a str.
207*/ 207*/
208 208
209/*! \fn void OContact::setProfession( const QString &str ) 209/*! \fn void OContact::setProfession( const QString &str )
210 Sets the profession of the contact to \a str. 210 Sets the profession of the contact to \a str.
211*/ 211*/
212 212
213/*! \fn void OContact::setAssistant( const QString &str ) 213/*! \fn void OContact::setAssistant( const QString &str )
214 Sets the assistant of the contact to \a str. 214 Sets the assistant of the contact to \a str.
215*/ 215*/
216 216
217/*! \fn void OContact::setManager( const QString &str ) 217/*! \fn void OContact::setManager( const QString &str )
218 Sets the manager of the contact to \a str. 218 Sets the manager of the contact to \a str.
219*/ 219*/
220 220
221/*! \fn void OContact::setSpouse( const QString &str ) 221/*! \fn void OContact::setSpouse( const QString &str )
222 Sets the spouse of the contact to \a str. 222 Sets the spouse of the contact to \a str.
223*/ 223*/
224 224
225/*! \fn void OContact::setGender( const QString &str ) 225/*! \fn void OContact::setGender( const QString &str )
226 Sets the gender of the contact to \a str. 226 Sets the gender of the contact to \a str.
227*/ 227*/
228 228
229/*! \fn void OContact::setNickname( const QString &str ) 229/*! \fn void OContact::setNickname( const QString &str )
230 Sets the nickname of the contact to \a str. 230 Sets the nickname of the contact to \a str.
231*/ 231*/
232 232
233/*! \fn void OContact::setNotes( const QString &str ) 233/*! \fn void OContact::setNotes( const QString &str )
234 Sets the notes about the contact to \a str. 234 Sets the notes about the contact to \a str.
235*/ 235*/
236 236
237/*! \fn QString OContact::title() const 237/*! \fn QString OContact::title() const
238 Returns the title of the contact. 238 Returns the title of the contact.
239*/ 239*/
240 240
241/*! \fn QString OContact::firstName() const 241/*! \fn QString OContact::firstName() const
242 Returns the first name of the contact. 242 Returns the first name of the contact.
243*/ 243*/
244 244
245/*! \fn QString OContact::middleName() const 245/*! \fn QString OContact::middleName() const
246 Returns the middle name of the contact. 246 Returns the middle name of the contact.
247*/ 247*/
248 248
249/*! \fn QString OContact::lastName() const 249/*! \fn QString OContact::lastName() const
250 Returns the last name of the contact. 250 Returns the last name of the contact.
251*/ 251*/
252 252
253/*! \fn QString OContact::suffix() const 253/*! \fn QString OContact::suffix() const
254 Returns the suffix of the contact. 254 Returns the suffix of the contact.
255*/ 255*/
256 256
257/*! \fn QString OContact::fileAs() const 257/*! \fn QString OContact::fileAs() const
258 Returns the string the contact is filed as. 258 Returns the string the contact is filed as.
259*/ 259*/
260 260
261/*! \fn QString OContact::defaultEmail() const 261/*! \fn QString OContact::defaultEmail() const
262 Returns the default email address of the contact. 262 Returns the default email address of the contact.
263*/ 263*/
264 264
265/*! \fn QString OContact::emails() const 265/*! \fn QString OContact::emails() const
266 Returns the list of email address for a contact separated by ';'s in a single 266 Returns the list of email address for a contact separated by ';'s in a single
267 string. 267 string.
268*/ 268*/
269 269
270/*! \fn QString OContact::homeStreet() const 270/*! \fn QString OContact::homeStreet() const
271 Returns the home street address of the contact. 271 Returns the home street address of the contact.
272*/ 272*/
273 273
274/*! \fn QString OContact::homeCity() const 274/*! \fn QString OContact::homeCity() const
275 Returns the home city of the contact. 275 Returns the home city of the contact.
276*/ 276*/
277 277
278/*! \fn QString OContact::homeState() const 278/*! \fn QString OContact::homeState() const
279 Returns the home state of the contact. 279 Returns the home state of the contact.
280*/ 280*/
281 281
282/*! \fn QString OContact::homeZip() const 282/*! \fn QString OContact::homeZip() const
283 Returns the home zip of the contact. 283 Returns the home zip of the contact.
284*/ 284*/
285 285
286/*! \fn QString OContact::homeCountry() const 286/*! \fn QString OContact::homeCountry() const
287 Returns the home country of the contact. 287 Returns the home country of the contact.
288*/ 288*/
289 289
290/*! \fn QString OContact::homePhone() const 290/*! \fn QString OContact::homePhone() const
291 Returns the home phone number of the contact. 291 Returns the home phone number of the contact.
292*/ 292*/
293 293
294/*! \fn QString OContact::homeFax() const 294/*! \fn QString OContact::homeFax() const
295 Returns the home fax number of the contact. 295 Returns the home fax number of the contact.
296*/ 296*/
297 297
298/*! \fn QString OContact::homeMobile() const 298/*! \fn QString OContact::homeMobile() const
299 Returns the home mobile number of the contact. 299 Returns the home mobile number of the contact.
300*/ 300*/
301 301
302/*! \fn QString OContact::homeWebpage() const 302/*! \fn QString OContact::homeWebpage() const
303 Returns the home webpage of the contact. 303 Returns the home webpage of the contact.
304*/ 304*/
305 305
306/*! \fn QString OContact::company() const 306/*! \fn QString OContact::company() const
307 Returns the company for the contact. 307 Returns the company for the contact.
308*/ 308*/
309 309
310/*! \fn QString OContact::department() const 310/*! \fn QString OContact::department() const
311 Returns the department for the contact. 311 Returns the department for the contact.
312*/ 312*/
313 313
314/*! \fn QString OContact::office() const 314/*! \fn QString OContact::office() const
315 Returns the office for the contact. 315 Returns the office for the contact.
316*/ 316*/
317 317
318/*! \fn QString OContact::jobTitle() const 318/*! \fn QString OContact::jobTitle() const
319 Returns the job title of the contact. 319 Returns the job title of the contact.
320*/ 320*/
321 321
322/*! \fn QString OContact::profession() const 322/*! \fn QString OContact::profession() const
323 Returns the profession of the contact. 323 Returns the profession of the contact.
324*/ 324*/
325 325
326/*! \fn QString OContact::assistant() const 326/*! \fn QString OContact::assistant() const
327 Returns the assistant of the contact. 327 Returns the assistant of the contact.
328*/ 328*/
329 329
330/*! \fn QString OContact::manager() const 330/*! \fn QString OContact::manager() const
331 Returns the manager of the contact. 331 Returns the manager of the contact.
332*/ 332*/
333 333
334/*! \fn QString OContact::businessStreet() const 334/*! \fn QString OContact::businessStreet() const
335 Returns the business street address of the contact. 335 Returns the business street address of the contact.
336*/ 336*/
337 337
338/*! \fn QString OContact::businessCity() const 338/*! \fn QString OContact::businessCity() const
339 Returns the business city of the contact. 339 Returns the business city of the contact.
340*/ 340*/
341 341
342/*! \fn QString OContact::businessState() const 342/*! \fn QString OContact::businessState() const
343 Returns the business state of the contact. 343 Returns the business state of the contact.
344*/ 344*/
345 345
346/*! \fn QString OContact::businessZip() const 346/*! \fn QString OContact::businessZip() const
347 Returns the business zip of the contact. 347 Returns the business zip of the contact.
348*/ 348*/
349 349
350/*! \fn QString OContact::businessCountry() const 350/*! \fn QString OContact::businessCountry() const
351 Returns the business country of the contact. 351 Returns the business country of the contact.
352*/ 352*/
353 353
354/*! \fn QString OContact::businessPhone() const 354/*! \fn QString OContact::businessPhone() const
355 Returns the business phone number of the contact. 355 Returns the business phone number of the contact.
356*/ 356*/
357 357
358/*! \fn QString OContact::businessFax() const 358/*! \fn QString OContact::businessFax() const
359 Returns the business fax number of the contact. 359 Returns the business fax number of the contact.
360*/ 360*/
361 361
362/*! \fn QString OContact::businessMobile() const 362/*! \fn QString OContact::businessMobile() const
363 Returns the business mobile number of the contact. 363 Returns the business mobile number of the contact.
364*/ 364*/
365 365
366/*! \fn QString OContact::businessPager() const 366/*! \fn QString OContact::businessPager() const
367 Returns the business pager number of the contact. 367 Returns the business pager number of the contact.
368*/ 368*/
369 369
370/*! \fn QString OContact::businessWebpage() const 370/*! \fn QString OContact::businessWebpage() const
371 Returns the business webpage of the contact. 371 Returns the business webpage of the contact.
372*/ 372*/
373 373
374/*! \fn QString OContact::spouse() const 374/*! \fn QString OContact::spouse() const
375 Returns the spouse of the contact. 375 Returns the spouse of the contact.
376*/ 376*/
377 377
378/*! \fn QString OContact::gender() const 378/*! \fn QString OContact::gender() const
379 Returns the gender of the contact. 379 Returns the gender of the contact.
380*/ 380*/
381 381
382/*! \fn QString OContact::nickname() const 382/*! \fn QString OContact::nickname() const
383 Returns the nickname of the contact. 383 Returns the nickname of the contact.
384*/ 384*/
385 385
386/*! \fn QString OContact::children() const 386/*! \fn QString OContact::children() const
387 Returns the children of the contact. 387 Returns the children of the contact.
388*/ 388*/
389 389
390/*! \fn QString OContact::notes() const 390/*! \fn QString OContact::notes() const
391 Returns the notes relating to the the contact. 391 Returns the notes relating to the the contact.
392*/ 392*/
393 393
394/*! \fn QString OContact::groups() const 394/*! \fn QString OContact::groups() const
395 \internal 395 \internal
396 Returns the groups for the contact. 396 Returns the groups for the contact.
397*/ 397*/
398 398
399/*! \fn QStringList OContact::groupList() const 399/*! \fn QStringList OContact::groupList() const
400 \internal 400 \internal
401*/ 401*/
402 402
403/*! \fn QString OContact::field(int) const 403/*! \fn QString OContact::field(int) const
404 \internal 404 \internal
405*/ 405*/
406 406
407/*! \fn void OContact::saveJournal( journal_action, const QString & = QString::null ) 407/*! \fn void OContact::saveJournal( journal_action, const QString & = QString::null )
408 \internal 408 \internal
409*/ 409*/
410 410
411/*! \fn void OContact::setUid( int id ) 411/*! \fn void OContact::setUid( int id )
412 \internal 412 \internal
413 Sets the uid for this record to \a id. 413 Sets the uid for this record to \a id.
414*/ 414*/
415 415
416/*! \enum OContact::journal_action 416/*! \enum OContact::journal_action
417 \internal 417 \internal
418*/ 418*/
419 419
420/*! 420/*!
421 \internal 421 \internal
422*/ 422*/
423QMap<int, QString> OContact::toMap() const 423QMap<int, QString> OContact::toMap() const
424{ 424{
425 QMap<int, QString> map = mMap; 425 QMap<int, QString> map = mMap;
426 QString cats = idsToString( categories() ); 426 QString cats = idsToString( categories() );
427 if ( !cats.isEmpty() ) 427 if ( !cats.isEmpty() )
428 map.insert( Qtopia::AddressCategory, cats ); 428 map.insert( Qtopia::AddressCategory, cats );
429 return map; 429 return map;
430} 430}
431 431
432/*! 432/*!
433 Returns a rich text formatted QString representing the contents the contact. 433 Returns a rich text formatted QString representing the contents the contact.
434*/ 434*/
435QString OContact::toRichText() const 435QString OContact::toRichText() const
436{ 436{
437 QString text; 437 QString text;
438 QString value, comp, state; 438 QString value, comp, state;
439 QString str; 439 QString str;
440 bool marker = false; 440 bool marker = false;
441 441
442 Config cfg("qpe"); 442 Config cfg("qpe");
443 cfg.setGroup("Appearance"); 443 cfg.setGroup("Appearance");
444 int addressformat = cfg.readNumEntry( "AddressFormat", Zip_City_State ); 444 int addressformat = cfg.readNumEntry( "AddressFormat", Zip_City_State );
445 445
446 // name, jobtitle and company 446 // name, jobtitle and company
447 if ( !(value = fullName()).isEmpty() ) 447 if ( !(value = fullName()).isEmpty() )
448 text += "<b><h3><img src=\"addressbook/AddressBook\"> " + Qtopia::escapeString(value) + "</h3></b>"; 448 text += "<b><h3><img src=\"addressbook/AddressBook\"> " + Qtopia::escapeString(value) + "</h3></b>";
449 449
450 if ( !(value = jobTitle()).isEmpty() ) 450 if ( !(value = jobTitle()).isEmpty() )
451 text += Qtopia::escapeString(value); 451 text += Qtopia::escapeString(value);
452 452
453 comp = company(); 453 comp = company();
454 if ( !(value = department()).isEmpty() ) { 454 if ( !(value = department()).isEmpty() ) {
455 text += Qtopia::escapeString(value); 455 text += Qtopia::escapeString(value);
456 if ( comp ) 456 if ( comp )
457 text += ", "; 457 text += ", ";
458 else 458 else
459 text += "<br>"; 459 text += "<br>";
460 } 460 }
461 if ( !comp.isEmpty() ) 461 if ( !comp.isEmpty() )
462 text += Qtopia::escapeString(comp); 462 text += Qtopia::escapeString(comp);
463 463
464 text += "<br><hr>"; 464 text += "<br><hr>";
465 465
466 // defailt email 466 // defailt email
467 QString defEmail = defaultEmail(); 467 QString defEmail = defaultEmail();
468 if ( !defEmail.isEmpty() ){ 468 if ( !defEmail.isEmpty() ){
469 text += "<b><img src=\"addressbook/email\"> " + QObject::tr("Default Email: ") + "</b>" 469 text += "<b><img src=\"addressbook/email\"> " + QObject::tr("Default Email: ") + "</b>"
470 + Qtopia::escapeString(defEmail); 470 + Qtopia::escapeString(defEmail);
471 marker = true; 471 marker = true;
472 } 472 }
473 473
474 // business address 474 // business address
475 if ( !businessStreet().isEmpty() || !businessCity().isEmpty() || 475 if ( !businessStreet().isEmpty() || !businessCity().isEmpty() ||
476 !businessZip().isEmpty() || !businessCountry().isEmpty() ) { 476 !businessZip().isEmpty() || !businessCountry().isEmpty() ) {
477 text += QObject::tr( "<br><br><b>Work Address:</b>" ); 477 text += QObject::tr( "<br><b>Work Address:</b>" );
478 marker = true; 478 marker = true;
479 } 479 }
480 480
481 if ( !(value = businessStreet()).isEmpty() ){ 481 if ( !(value = businessStreet()).isEmpty() ){
482 text += "<br>" + Qtopia::escapeString(value); 482 text += "<br>" + Qtopia::escapeString(value);
483 marker = true; 483 marker = true;
484 } 484 }
485 485
486 switch( addressformat ){ 486 switch( addressformat ){
487 case Zip_City_State:{ // Zip_Code City, State 487 case Zip_City_State:{ // Zip_Code City, State
488 state = businessState(); 488 state = businessState();
489 if ( !(value = businessZip()).isEmpty() ){ 489 if ( !(value = businessZip()).isEmpty() ){
490 text += "<br>" + Qtopia::escapeString(value) + " "; 490 text += "<br>" + Qtopia::escapeString(value) + " ";
491 marker = true; 491 marker = true;
492 492
493 } else 493 }
494 text += "<br>";
495
496 if ( !(value = businessCity()).isEmpty() ) { 494 if ( !(value = businessCity()).isEmpty() ) {
497 marker = true; 495 marker = true;
496 if ( businessZip().isEmpty() && !businessStreet().isEmpty() )
497 text += "<br>";
498 text += Qtopia::escapeString(value); 498 text += Qtopia::escapeString(value);
499 if ( state ) 499 if ( state )
500 text += ", " + Qtopia::escapeString(state); 500 text += ", " + Qtopia::escapeString(state);
501 } else if ( !state.isEmpty() ){ 501 } else if ( !state.isEmpty() ){
502 text += "<br>" + Qtopia::escapeString(state); 502 text += "<br>" + Qtopia::escapeString(state);
503 marker = true; 503 marker = true;
504 } 504 }
505 break; 505 break;
506 } 506 }
507 case City_State_Zip:{ // City, State Zip_Code 507 case City_State_Zip:{ // City, State Zip_Code
508 state = businessState(); 508 state = businessState();
509 if ( !(value = businessCity()).isEmpty() ) { 509 if ( !(value = businessCity()).isEmpty() ) {
510 marker = true; 510 marker = true;
511 text += "<br>" + Qtopia::escapeString(value); 511 text += "<br>" + Qtopia::escapeString(value);
512 if ( state ) 512 if ( state )
513 text += ", " + Qtopia::escapeString(state); 513 text += ", " + Qtopia::escapeString(state);
514 } else if ( !state.isEmpty() ){ 514 } else if ( !state.isEmpty() ){
515 text += "<br>" + Qtopia::escapeString(state); 515 text += "<br>" + Qtopia::escapeString(state);
516 marker = true; 516 marker = true;
517 } 517 }
518 if ( !(value = businessZip()).isEmpty() ){ 518 if ( !(value = businessZip()).isEmpty() ){
519 text += " " + Qtopia::escapeString(value); 519 text += " " + Qtopia::escapeString(value);
520 marker = true; 520 marker = true;
521 } 521 }
522 break; 522 break;
523 } 523 }
524 } 524 }
525 525
526 if ( !(value = businessCountry()).isEmpty() ){ 526 if ( !(value = businessCountry()).isEmpty() ){
527 text += "<br>" + Qtopia::escapeString(value); 527 text += "<br>" + Qtopia::escapeString(value);
528 marker = true; 528 marker = true;
529 } 529 }
530 530
531 // rest of Business data 531 // rest of Business data
532 str = office(); 532 str = office();
533 if ( !str.isEmpty() ){ 533 if ( !str.isEmpty() ){
534 text += "<br><b>" + QObject::tr("Office: ") + "</b>" 534 text += "<br><b>" + QObject::tr("Office: ") + "</b>"
535 + Qtopia::escapeString(str); 535 + Qtopia::escapeString(str);
536 marker = true; 536 marker = true;
537 } 537 }
538 str = businessWebpage(); 538 str = businessWebpage();
539 if ( !str.isEmpty() ){ 539 if ( !str.isEmpty() ){
540 text += "<br><b><img src=\"addressbook/webpagework\"> " + QObject::tr("Business Web Page: ") + "</b>" 540 text += "<br><b><img src=\"addressbook/webpagework\"> " + QObject::tr("Business Web Page: ") + "</b>"
541 + Qtopia::escapeString(str); 541 + Qtopia::escapeString(str);
542 marker = true; 542 marker = true;
543 } 543 }
544 str = businessPhone(); 544 str = businessPhone();
545 if ( !str.isEmpty() ){ 545 if ( !str.isEmpty() ){
546 text += "<br><b><img src=\"addressbook/phonework\"> " + QObject::tr("Business Phone: ") + "</b>" 546 text += "<br><b><img src=\"addressbook/phonework\"> " + QObject::tr("Business Phone: ") + "</b>"
547 + Qtopia::escapeString(str); 547 + Qtopia::escapeString(str);
548 marker = true; 548 marker = true;
549 } 549 }
550 str = businessFax(); 550 str = businessFax();
551 if ( !str.isEmpty() ){ 551 if ( !str.isEmpty() ){
552 text += "<br><b><img src=\"addressbook/faxwork\"> " + QObject::tr("Business Fax: ") + "</b>" 552 text += "<br><b><img src=\"addressbook/faxwork\"> " + QObject::tr("Business Fax: ") + "</b>"
553 + Qtopia::escapeString(str); 553 + Qtopia::escapeString(str);
554 marker = true; 554 marker = true;
555 } 555 }
556 str = businessMobile(); 556 str = businessMobile();
557 if ( !str.isEmpty() ){ 557 if ( !str.isEmpty() ){
558 text += "<br><b><img src=\"addressbook/mobilework\"> " + QObject::tr("Business Mobile: ") + "</b>" 558 text += "<br><b><img src=\"addressbook/mobilework\"> " + QObject::tr("Business Mobile: ") + "</b>"
559 + Qtopia::escapeString(str); 559 + Qtopia::escapeString(str);
560 marker = true; 560 marker = true;
561 } 561 }
562 str = businessPager(); 562 str = businessPager();
563 if ( !str.isEmpty() ){ 563 if ( !str.isEmpty() ){
564 text += "<br><b>" + QObject::tr("Business Pager: ") + "</b>" 564 text += "<br><b>" + QObject::tr("Business Pager: ") + "</b>"
565 + Qtopia::escapeString(str); 565 + Qtopia::escapeString(str);
566 marker = true; 566 marker = true;
567 } 567 }
568 568
569 text += "<br>"; 569 // text += "<br>";
570 570
571 // home address 571 // home address
572 if ( !homeStreet().isEmpty() || !homeCity().isEmpty() || 572 if ( !homeStreet().isEmpty() || !homeCity().isEmpty() ||
573 !homeZip().isEmpty() || !homeCountry().isEmpty() ) { 573 !homeZip().isEmpty() || !homeCountry().isEmpty() ) {
574 text += QObject::tr( "<br><br><b>Home Address:</b>" ); 574 text += QObject::tr( "<br><b>Home Address:</b>" );
575 marker = true; 575 marker = true;
576 } 576 }
577 577
578 if ( !(value = homeStreet()).isEmpty() ){ 578 if ( !(value = homeStreet()).isEmpty() ){
579 text += "<br>" + Qtopia::escapeString(value); 579 text += "<br>" + Qtopia::escapeString(value);
580 marker = true; 580 marker = true;
581 } 581 }
582 582
583 switch( addressformat ){ 583 switch( addressformat ){
584 case Zip_City_State:{ // Zip_Code City, State 584 case Zip_City_State:{ // Zip_Code City, State
585 state = homeState(); 585 state = homeState();
586 if ( !(value = homeZip()).isEmpty() ){ 586 if ( !(value = homeZip()).isEmpty() ){
587 text += "<br>" + Qtopia::escapeString(value) + " "; 587 text += "<br>" + Qtopia::escapeString(value) + " ";
588 marker = true; 588 marker = true;
589 } else 589 }
590 text += "<br>";
591
592 if ( !(value = homeCity()).isEmpty() ) { 590 if ( !(value = homeCity()).isEmpty() ) {
593 marker = true; 591 marker = true;
592 if ( homeZip().isEmpty() && !homeStreet().isEmpty() )
593 text += "<br>";
594 text += Qtopia::escapeString(value); 594 text += Qtopia::escapeString(value);
595 if ( !state.isEmpty() ) 595 if ( !state.isEmpty() )
596 text += ", " + Qtopia::escapeString(state); 596 text += ", " + Qtopia::escapeString(state);
597 } else if (!state.isEmpty()) { 597 } else if (!state.isEmpty()) {
598 text += "<br>" + Qtopia::escapeString(state); 598 text += "<br>" + Qtopia::escapeString(state);
599 marker = true; 599 marker = true;
600 } 600 }
601 break; 601 break;
602 } 602 }
603 case City_State_Zip:{ // City, State Zip_Code 603 case City_State_Zip:{ // City, State Zip_Code
604 state = homeState(); 604 state = homeState();
605 if ( !(value = homeCity()).isEmpty() ) { 605 if ( !(value = homeCity()).isEmpty() ) {
606 marker = true; 606 marker = true;
607 text += "<br>" + Qtopia::escapeString(value); 607 text += "<br>" + Qtopia::escapeString(value);
608 if ( state ) 608 if ( state )
609 text += ", " + Qtopia::escapeString(state); 609 text += ", " + Qtopia::escapeString(state);
610 } else if ( !state.isEmpty() ){ 610 } else if ( !state.isEmpty() ){
611 text += "<br>" + Qtopia::escapeString(state); 611 text += "<br>" + Qtopia::escapeString(state);
612 marker = true; 612 marker = true;
613 } 613 }
614 if ( !(value = homeZip()).isEmpty() ){ 614 if ( !(value = homeZip()).isEmpty() ){
615 text += " " + Qtopia::escapeString(value); 615 text += " " + Qtopia::escapeString(value);
616 marker = true; 616 marker = true;
617 } 617 }
618 break; 618 break;
619 } 619 }
620 } 620 }
621 621
622 if ( !(value = homeCountry()).isEmpty() ){ 622 if ( !(value = homeCountry()).isEmpty() ){
623 text += "<br>" + Qtopia::escapeString(value); 623 text += "<br>" + Qtopia::escapeString(value);
624 marker = true; 624 marker = true;
625 } 625 }
626 626
627 // rest of Home data 627 // rest of Home data
628 str = homeWebpage(); 628 str = homeWebpage();
629 if ( !str.isEmpty() ){ 629 if ( !str.isEmpty() ){
630 text += "<br><b><img src=\"addressbook/webpagehome\"> " + QObject::tr("Home Web Page: ") + "</b>" 630 text += "<br><b><img src=\"addressbook/webpagehome\"> " + QObject::tr("Home Web Page: ") + "</b>"
631 + Qtopia::escapeString(str); 631 + Qtopia::escapeString(str);
632 marker = true; 632 marker = true;
633 } 633 }
634 str = homePhone(); 634 str = homePhone();
635 if ( !str.isEmpty() ){ 635 if ( !str.isEmpty() ){
636 text += "<br><b><img src=\"addressbook/phonehome\"> " + QObject::tr("Home Phone: ") + "</b>" 636 text += "<br><b><img src=\"addressbook/phonehome\"> " + QObject::tr("Home Phone: ") + "</b>"
637 + Qtopia::escapeString(str); 637 + Qtopia::escapeString(str);
638 marker = true; 638 marker = true;
639 } 639 }
640 str = homeFax(); 640 str = homeFax();
641 if ( !str.isEmpty() ){ 641 if ( !str.isEmpty() ){
642 text += "<br><b><img src=\"addressbook/faxhome\"> " + QObject::tr("Home Fax: ") + "</b>" 642 text += "<br><b><img src=\"addressbook/faxhome\"> " + QObject::tr("Home Fax: ") + "</b>"
643 + Qtopia::escapeString(str); 643 + Qtopia::escapeString(str);
644 marker = true; 644 marker = true;
645 } 645 }
646 str = homeMobile(); 646 str = homeMobile();
647 if ( !str.isEmpty() ){ 647 if ( !str.isEmpty() ){
648 text += "<br><b><img src=\"addressbook/mobilehome\"> " + QObject::tr("Home Mobile: ") + "</b>" 648 text += "<br><b><img src=\"addressbook/mobilehome\"> " + QObject::tr("Home Mobile: ") + "</b>"
649 + Qtopia::escapeString(str); 649 + Qtopia::escapeString(str);
650 marker = true; 650 marker = true;
651 } 651 }
652 652
653 if ( marker ) 653 if ( marker )
654 text += "<br><hr>"; 654 text += "<br><hr>";
655 655
656 // the rest... 656 // the rest...
657 str = emails(); 657 str = emails();
658 if ( !str.isEmpty() && ( str != defEmail ) ) 658 if ( !str.isEmpty() && ( str != defEmail ) )
659 text += "<br><b>" + QObject::tr("All Emails: ") + "</b>" 659 text += "<br><b>" + QObject::tr("All Emails: ") + "</b>"
660 + Qtopia::escapeString(str); 660 + Qtopia::escapeString(str);
661 str = profession(); 661 str = profession();
662 if ( !str.isEmpty() ) 662 if ( !str.isEmpty() )
663 text += "<br><b>" + QObject::tr("Profession: ") + "</b>" 663 text += "<br><b>" + QObject::tr("Profession: ") + "</b>"
664 + Qtopia::escapeString(str); 664 + Qtopia::escapeString(str);
665 str = assistant(); 665 str = assistant();
666 if ( !str.isEmpty() ) 666 if ( !str.isEmpty() )
667 text += "<br><b>" + QObject::tr("Assistant: ") + "</b>" 667 text += "<br><b>" + QObject::tr("Assistant: ") + "</b>"
668 + Qtopia::escapeString(str); 668 + Qtopia::escapeString(str);
669 str = manager(); 669 str = manager();
670 if ( !str.isEmpty() ) 670 if ( !str.isEmpty() )
671 text += "<br><b>" + QObject::tr("Manager: ") + "</b>" 671 text += "<br><b>" + QObject::tr("Manager: ") + "</b>"
672 + Qtopia::escapeString(str); 672 + Qtopia::escapeString(str);
673 str = gender(); 673 str = gender();
674 if ( !str.isEmpty() && str.toInt() != 0 ) { 674 if ( !str.isEmpty() && str.toInt() != 0 ) {
675 text += "<br>"; 675 text += "<br>";
676 if ( str.toInt() == 1 ) 676 if ( str.toInt() == 1 )
677 str = QObject::tr( "Male" ); 677 str = QObject::tr( "Male" );
678 else if ( str.toInt() == 2 ) 678 else if ( str.toInt() == 2 )
679 str = QObject::tr( "Female" ); 679 str = QObject::tr( "Female" );
680 text += "<b>" + QObject::tr("Gender: ") + "</b>" + str; 680 text += "<b>" + QObject::tr("Gender: ") + "</b>" + str;
681 } 681 }
682 str = spouse(); 682 str = spouse();
683 if ( !str.isEmpty() ) 683 if ( !str.isEmpty() )
684 text += "<br><b>" + QObject::tr("Spouse: ") + "</b>" 684 text += "<br><b>" + QObject::tr("Spouse: ") + "</b>"
685 + Qtopia::escapeString(str); 685 + Qtopia::escapeString(str);
686 if ( birthday().isValid() ){ 686 if ( birthday().isValid() ){
687 str = TimeString::numberDateString( birthday() ); 687 str = TimeString::numberDateString( birthday() );
688 text += "<br><b>" + QObject::tr("Birthday: ") + "</b>" 688 text += "<br><b>" + QObject::tr("Birthday: ") + "</b>"
689 + Qtopia::escapeString(str); 689 + Qtopia::escapeString(str);
690 } 690 }
691 if ( anniversary().isValid() ){ 691 if ( anniversary().isValid() ){
692 str = TimeString::numberDateString( anniversary() ); 692 str = TimeString::numberDateString( anniversary() );
693 text += "<br><b>" + QObject::tr("Anniversary: ") + "</b>" 693 text += "<br><b>" + QObject::tr("Anniversary: ") + "</b>"
694 + Qtopia::escapeString(str); 694 + Qtopia::escapeString(str);
695 } 695 }
696 str = children(); 696 str = children();
697 if ( !str.isEmpty() ) 697 if ( !str.isEmpty() )
698 text += "<br><b>" + QObject::tr("Children: ") + "</b>" 698 text += "<br><b>" + QObject::tr("Children: ") + "</b>"
699 + Qtopia::escapeString(str); 699 + Qtopia::escapeString(str);
700 700
701 str = nickname(); 701 str = nickname();
702 if ( !str.isEmpty() ) 702 if ( !str.isEmpty() )
703 text += "<br><b>" + QObject::tr("Nickname: ") + "</b>" 703 text += "<br><b>" + QObject::tr("Nickname: ") + "</b>"
704 + Qtopia::escapeString(str); 704 + Qtopia::escapeString(str);
705 705
706 // categories 706 // categories
707 if ( categoryNames("Contacts").count() ){ 707 if ( categoryNames("Contacts").count() ){
708 text += "<br><b>" + QObject::tr( "Category:") + "</b> "; 708 text += "<br><b>" + QObject::tr( "Category:") + "</b> ";
709 text += categoryNames("Contacts").join(", "); 709 text += categoryNames("Contacts").join(", ");
710 } 710 }
711 711
712 // notes last 712 // notes last
713 if ( !(value = notes()).isEmpty() ) { 713 if ( !(value = notes()).isEmpty() ) {
714 text += "<br><hr><b>" + QObject::tr( "Notes:") + "</b> "; 714 text += "<br><hr><b>" + QObject::tr( "Notes:") + "</b> ";
715 QRegExp reg("\n"); 715 QRegExp reg("\n");
716 716
717 //QString tmp = Qtopia::escapeString(value); 717 //QString tmp = Qtopia::escapeString(value);
718 QString tmp = QStyleSheet::convertFromPlainText(value); 718 QString tmp = QStyleSheet::convertFromPlainText(value);
719 //tmp.replace( reg, "<br>" ); 719 //tmp.replace( reg, "<br>" );
720 text += "<br>" + tmp + "<br>"; 720 text += "<br>" + tmp + "<br>";
721 } 721 }
722 return text; 722 return text;
723} 723}
724 724
725/*! 725/*!
726 \internal 726 \internal
727*/ 727*/
728void OContact::insert( int key, const QString &v ) 728void OContact::insert( int key, const QString &v )
729{ 729{
730 QString value = v.stripWhiteSpace(); 730 QString value = v.stripWhiteSpace();
731 if ( value.isEmpty() ) 731 if ( value.isEmpty() )
732 mMap.remove( key ); 732 mMap.remove( key );
733 else 733 else
734 mMap.insert( key, value ); 734 mMap.insert( key, value );
735} 735}
736 736
737/*! 737/*!
738 \internal 738 \internal
739*/ 739*/
740void OContact::replace( int key, const QString & v ) 740void OContact::replace( int key, const QString & v )
741{ 741{
742 QString value = v.stripWhiteSpace(); 742 QString value = v.stripWhiteSpace();
743 if ( value.isEmpty() ) 743 if ( value.isEmpty() )
744 mMap.remove( key ); 744 mMap.remove( key );
745 else 745 else
746 mMap.replace( key, value ); 746 mMap.replace( key, value );
747} 747}
748 748
749/*! 749/*!
750 \internal 750 \internal
751*/ 751*/
752QString OContact::find( int key ) const 752QString OContact::find( int key ) const
753{ 753{
754 return mMap[key]; 754 return mMap[key];
755} 755}
756 756
757/*! 757/*!
758 \internal 758 \internal
759*/ 759*/
760QString OContact::displayAddress( const QString &street, 760QString OContact::displayAddress( const QString &street,
761 const QString &city, 761 const QString &city,
762 const QString &state, 762 const QString &state,
763 const QString &zip, 763 const QString &zip,
764 const QString &country ) const 764 const QString &country ) const
765{ 765{
766 QString s = street; 766 QString s = street;
767 if ( !street.isEmpty() ) 767 if ( !street.isEmpty() )
768 s+= "\n"; 768 s+= "\n";
769 s += city; 769 s += city;
770 if ( !city.isEmpty() && !state.isEmpty() ) 770 if ( !city.isEmpty() && !state.isEmpty() )
771 s += ", "; 771 s += ", ";
772 s += state; 772 s += state;
773 if ( !state.isEmpty() && !zip.isEmpty() ) 773 if ( !state.isEmpty() && !zip.isEmpty() )
774 s += " "; 774 s += " ";
775 s += zip; 775 s += zip;
776 if ( !country.isEmpty() && !s.isEmpty() ) 776 if ( !country.isEmpty() && !s.isEmpty() )
777 s += "\n"; 777 s += "\n";
778 s += country; 778 s += country;
779 return s; 779 return s;
780} 780}
781 781
782/*! 782/*!
783 \internal 783 \internal
784*/ 784*/
785QString OContact::displayBusinessAddress() const 785QString OContact::displayBusinessAddress() const
786{ 786{
787 return displayAddress( businessStreet(), businessCity(), 787 return displayAddress( businessStreet(), businessCity(),
788 businessState(), businessZip(), 788 businessState(), businessZip(),
789 businessCountry() ); 789 businessCountry() );
790} 790}
791 791
792/*! 792/*!
793 \internal 793 \internal
794*/ 794*/
795QString OContact::displayHomeAddress() const 795QString OContact::displayHomeAddress() const
796{ 796{
797 return displayAddress( homeStreet(), homeCity(), 797 return displayAddress( homeStreet(), homeCity(),
798 homeState(), homeZip(), 798 homeState(), homeZip(),
799 homeCountry() ); 799 homeCountry() );
800} 800}
801 801
802/*! 802/*!
803 Returns the full name of the contact 803 Returns the full name of the contact
804*/ 804*/
805QString OContact::fullName() const 805QString OContact::fullName() const
806{ 806{
807 QString title = find( Qtopia::Title ); 807 QString title = find( Qtopia::Title );
808 QString firstName = find( Qtopia::FirstName ); 808 QString firstName = find( Qtopia::FirstName );
809 QString middleName = find( Qtopia::MiddleName ); 809 QString middleName = find( Qtopia::MiddleName );
810 QString lastName = find( Qtopia::LastName ); 810 QString lastName = find( Qtopia::LastName );
811 QString suffix = find( Qtopia::Suffix ); 811 QString suffix = find( Qtopia::Suffix );
812 812
813 QString name = title; 813 QString name = title;
814 if ( !firstName.isEmpty() ) { 814 if ( !firstName.isEmpty() ) {
815 if ( !name.isEmpty() ) 815 if ( !name.isEmpty() )
816 name += " "; 816 name += " ";
817 name += firstName; 817 name += firstName;
818 } 818 }
819 if ( !middleName.isEmpty() ) { 819 if ( !middleName.isEmpty() ) {
820 if ( !name.isEmpty() ) 820 if ( !name.isEmpty() )
821 name += " "; 821 name += " ";
822 name += middleName; 822 name += middleName;
823 } 823 }
824 if ( !lastName.isEmpty() ) { 824 if ( !lastName.isEmpty() ) {
825 if ( !name.isEmpty() ) 825 if ( !name.isEmpty() )
826 name += " "; 826 name += " ";
827 name += lastName; 827 name += lastName;
828 } 828 }
829 if ( !suffix.isEmpty() ) { 829 if ( !suffix.isEmpty() ) {
830 if ( !name.isEmpty() ) 830 if ( !name.isEmpty() )
831 name += " "; 831 name += " ";
832 name += suffix; 832 name += suffix;
833 } 833 }
834 return name.simplifyWhiteSpace(); 834 return name.simplifyWhiteSpace();
835} 835}
836 836
837/*! 837/*!
838 Returns a list of the names of the children of the contact. 838 Returns a list of the names of the children of the contact.
839*/ 839*/
840QStringList OContact::childrenList() const 840QStringList OContact::childrenList() const
841{ 841{
842 return QStringList::split( " ", find( Qtopia::Children ) ); 842 return QStringList::split( " ", find( Qtopia::Children ) );
843} 843}
844 844
845/*! \fn void OContact::insertEmail( const QString &email ) 845/*! \fn void OContact::insertEmail( const QString &email )
846 846
847 Insert \a email into the email list. Ensures \a email can only be added 847 Insert \a email into the email list. Ensures \a email can only be added
848 once. If there is no default email address set, it sets it to the \a email. 848 once. If there is no default email address set, it sets it to the \a email.
849*/ 849*/
850 850
851/*! \fn void OContact::removeEmail( const QString &email ) 851/*! \fn void OContact::removeEmail( const QString &email )
852 852
853 Removes the \a email from the email list. If the default email was \a email, 853 Removes the \a email from the email list. If the default email was \a email,
854 then the default email address is assigned to the first email in the 854 then the default email address is assigned to the first email in the
855 email list 855 email list
856*/ 856*/
857 857
858/*! \fn void OContact::clearEmails() 858/*! \fn void OContact::clearEmails()
859 859
860 Clears the email list. 860 Clears the email list.
861 */ 861 */
862 862
863/*! \fn void OContact::insertEmails( const QStringList &emailList ) 863/*! \fn void OContact::insertEmails( const QStringList &emailList )
864 864
865 Appends the \a emailList to the exiting email list 865 Appends the \a emailList to the exiting email list
866 */ 866 */
867 867
868/*! 868/*!
869 Returns a list of email addresses belonging to the contact, including 869 Returns a list of email addresses belonging to the contact, including
870 the default email address. 870 the default email address.
871*/ 871*/
872QStringList OContact::emailList() const 872QStringList OContact::emailList() const
873{ 873{
874 QString emailStr = emails(); 874 QString emailStr = emails();
875 875
876 QStringList r; 876 QStringList r;
877 if ( !emailStr.isEmpty() ) { 877 if ( !emailStr.isEmpty() ) {
878 qDebug(" emailstr "); 878 qDebug(" emailstr ");
879 QStringList l = QStringList::split( emailSeparator(), emailStr ); 879 QStringList l = QStringList::split( emailSeparator(), emailStr );
880 for ( QStringList::ConstIterator it = l.begin();it != l.end();++it ) 880 for ( QStringList::ConstIterator it = l.begin();it != l.end();++it )
881 r += (*it).simplifyWhiteSpace(); 881 r += (*it).simplifyWhiteSpace();
882 } 882 }
883 883
884 return r; 884 return r;
885} 885}
886 886
887/*! 887/*!
888 \overload 888 \overload
889 889
890 Generates the string for the contact to be filed as from the first, 890 Generates the string for the contact to be filed as from the first,
891 middle and last name of the contact. 891 middle and last name of the contact.
892*/ 892*/
893void OContact::setFileAs() 893void OContact::setFileAs()
894{ 894{
895 QString lastName, firstName, middleName, fileas; 895 QString lastName, firstName, middleName, fileas;
896 896
897 lastName = find( Qtopia::LastName ); 897 lastName = find( Qtopia::LastName );
898 firstName = find( Qtopia::FirstName ); 898 firstName = find( Qtopia::FirstName );
899 middleName = find( Qtopia::MiddleName ); 899 middleName = find( Qtopia::MiddleName );
900 if ( !lastName.isEmpty() && !firstName.isEmpty() 900 if ( !lastName.isEmpty() && !firstName.isEmpty()
901 && !middleName.isEmpty() ) 901 && !middleName.isEmpty() )
902 fileas = lastName + ", " + firstName + " " + middleName; 902 fileas = lastName + ", " + firstName + " " + middleName;
903 else if ( !lastName.isEmpty() && !firstName.isEmpty() ) 903 else if ( !lastName.isEmpty() && !firstName.isEmpty() )
904 fileas = lastName + ", " + firstName; 904 fileas = lastName + ", " + firstName;
905 else if ( !lastName.isEmpty() || !firstName.isEmpty() || 905 else if ( !lastName.isEmpty() || !firstName.isEmpty() ||
906 !middleName.isEmpty() ) 906 !middleName.isEmpty() )
907 fileas = firstName + ( firstName.isEmpty() ? "" : " " ) 907 fileas = firstName + ( firstName.isEmpty() ? "" : " " )
908 + middleName + ( middleName.isEmpty() ? "" : " " ) 908 + middleName + ( middleName.isEmpty() ? "" : " " )
909 + lastName; 909 + lastName;
910 910
911 replace( Qtopia::FileAs, fileas ); 911 replace( Qtopia::FileAs, fileas );
912} 912}
913 913
914/*! 914/*!
915 \internal 915 \internal
916 Appends the contact information to \a buf. 916 Appends the contact information to \a buf.
917*/ 917*/
918void OContact::save( QString &buf ) const 918void OContact::save( QString &buf ) const
919{ 919{
920 static const QStringList SLFIELDS = fields(); 920 static const QStringList SLFIELDS = fields();
921 // I'm expecting "<Contact " in front of this... 921 // I'm expecting "<Contact " in front of this...
922 for ( QMap<int, QString>::ConstIterator it = mMap.begin(); 922 for ( QMap<int, QString>::ConstIterator it = mMap.begin();
923 it != mMap.end(); ++it ) { 923 it != mMap.end(); ++it ) {
924 const QString &value = it.data(); 924 const QString &value = it.data();
925 int key = it.key(); 925 int key = it.key();
926 if ( !value.isEmpty() ) { 926 if ( !value.isEmpty() ) {
927 if ( key == Qtopia::AddressCategory || key == Qtopia::AddressUid) 927 if ( key == Qtopia::AddressCategory || key == Qtopia::AddressUid)
928 continue; 928 continue;
929 929
930 key -= Qtopia::AddressCategory+1; 930 key -= Qtopia::AddressCategory+1;
931 buf += SLFIELDS[key]; 931 buf += SLFIELDS[key];
932 buf += "=\"" + Qtopia::escapeString(value) + "\" "; 932 buf += "=\"" + Qtopia::escapeString(value) + "\" ";
933 } 933 }
934 } 934 }
935 buf += customToXml(); 935 buf += customToXml();
936 if ( categories().count() > 0 ) 936 if ( categories().count() > 0 )
937 buf += "Categories=\"" + idsToString( categories() ) + "\" "; 937 buf += "Categories=\"" + idsToString( categories() ) + "\" ";
938 buf += "Uid=\"" + QString::number( uid() ) + "\" "; 938 buf += "Uid=\"" + QString::number( uid() ) + "\" ";
939 // You need to close this yourself 939 // You need to close this yourself
940} 940}
941 941
942 942
943/*! 943/*!
944 \internal 944 \internal
945 Returns the list of fields belonging to a contact 945 Returns the list of fields belonging to a contact
946 Never change order of this list ! It has to be regarding 946 Never change order of this list ! It has to be regarding
947 enum AddressBookFields !! 947 enum AddressBookFields !!
948*/ 948*/
949QStringList OContact::fields() 949QStringList OContact::fields()
950{ 950{
951 QStringList list; 951 QStringList list;
952 952
953 list.append( "Title" ); // Not Used! 953 list.append( "Title" ); // Not Used!
954 list.append( "FirstName" ); 954 list.append( "FirstName" );
955 list.append( "MiddleName" ); 955 list.append( "MiddleName" );
956 list.append( "LastName" ); 956 list.append( "LastName" );
957 list.append( "Suffix" ); 957 list.append( "Suffix" );
958 list.append( "FileAs" ); 958 list.append( "FileAs" );
959 959
960 list.append( "JobTitle" ); 960 list.append( "JobTitle" );
961 list.append( "Department" ); 961 list.append( "Department" );
962 list.append( "Company" ); 962 list.append( "Company" );
963 list.append( "BusinessPhone" ); 963 list.append( "BusinessPhone" );
964 list.append( "BusinessFax" ); 964 list.append( "BusinessFax" );
965 list.append( "BusinessMobile" ); 965 list.append( "BusinessMobile" );
966 966
967 list.append( "DefaultEmail" ); 967 list.append( "DefaultEmail" );
968 list.append( "Emails" ); 968 list.append( "Emails" );
969 969
970 list.append( "HomePhone" ); 970 list.append( "HomePhone" );
971 list.append( "HomeFax" ); 971 list.append( "HomeFax" );
972 list.append( "HomeMobile" ); 972 list.append( "HomeMobile" );
973 973
974 list.append( "BusinessStreet" ); 974 list.append( "BusinessStreet" );
975 list.append( "BusinessCity" ); 975 list.append( "BusinessCity" );
976 list.append( "BusinessState" ); 976 list.append( "BusinessState" );
977 list.append( "BusinessZip" ); 977 list.append( "BusinessZip" );
978 list.append( "BusinessCountry" ); 978 list.append( "BusinessCountry" );
979 list.append( "BusinessPager" ); 979 list.append( "BusinessPager" );
980 list.append( "BusinessWebPage" ); 980 list.append( "BusinessWebPage" );
981 981
982 list.append( "Office" ); 982 list.append( "Office" );
983 list.append( "Profession" ); 983 list.append( "Profession" );
984 list.append( "Assistant" ); 984 list.append( "Assistant" );
985 list.append( "Manager" ); 985 list.append( "Manager" );
986 986
987 list.append( "HomeStreet" ); 987 list.append( "HomeStreet" );
988 list.append( "HomeCity" ); 988 list.append( "HomeCity" );
989 list.append( "HomeState" ); 989 list.append( "HomeState" );
990 list.append( "HomeZip" ); 990 list.append( "HomeZip" );
991 list.append( "HomeCountry" ); 991 list.append( "HomeCountry" );
992 list.append( "HomeWebPage" ); 992 list.append( "HomeWebPage" );
993 993
994 list.append( "Spouse" ); 994 list.append( "Spouse" );
995 list.append( "Gender" ); 995 list.append( "Gender" );
996 list.append( "Birthday" ); 996 list.append( "Birthday" );
997 list.append( "Anniversary" ); 997 list.append( "Anniversary" );
998 list.append( "Nickname" ); 998 list.append( "Nickname" );
999 list.append( "Children" ); 999 list.append( "Children" );
1000 1000
1001 list.append( "Notes" ); 1001 list.append( "Notes" );
1002 list.append( "Groups" ); 1002 list.append( "Groups" );
1003 1003
1004 return list; 1004 return list;
1005} 1005}
1006 1006
1007 1007
1008/*! 1008/*!
1009 Sets the list of email address for contact to those contained in \a str. 1009 Sets the list of email address for contact to those contained in \a str.
1010 Email address should be separated by ';'s. 1010 Email address should be separated by ';'s.
1011*/ 1011*/
1012void OContact::setEmails( const QString &str ) 1012void OContact::setEmails( const QString &str )
1013{ 1013{
1014 replace( Qtopia::Emails, str ); 1014 replace( Qtopia::Emails, str );
1015 if ( str.isEmpty() ) 1015 if ( str.isEmpty() )
1016 setDefaultEmail( QString::null ); 1016 setDefaultEmail( QString::null );
1017} 1017}
1018 1018
1019/*! 1019/*!
1020 Sets the list of children for the contact to those contained in \a str. 1020 Sets the list of children for the contact to those contained in \a str.
1021*/ 1021*/
1022void OContact::setChildren( const QString &str ) 1022void OContact::setChildren( const QString &str )
1023{ 1023{
1024 replace( Qtopia::Children, str ); 1024 replace( Qtopia::Children, str );
1025} 1025}
1026 1026
1027/*! 1027/*!
1028 \overload 1028 \overload
1029 Returns TRUE if the contact matches the regular expression \a regexp. 1029 Returns TRUE if the contact matches the regular expression \a regexp.
1030 Otherwise returns FALSE. 1030 Otherwise returns FALSE.
1031*/ 1031*/
1032bool OContact::match( const QRegExp &r ) const 1032bool OContact::match( const QRegExp &r ) const
1033{ 1033{
1034 setLastHitField( -1 ); 1034 setLastHitField( -1 );
1035 bool match; 1035 bool match;
1036 match = false; 1036 match = false;
1037 QMap<int, QString>::ConstIterator it; 1037 QMap<int, QString>::ConstIterator it;
1038 for ( it = mMap.begin(); it != mMap.end(); ++it ) { 1038 for ( it = mMap.begin(); it != mMap.end(); ++it ) {
1039 if ( (*it).find( r ) > -1 ) { 1039 if ( (*it).find( r ) > -1 ) {
1040 setLastHitField( it.key() ); 1040 setLastHitField( it.key() );
1041 match = true; 1041 match = true;
1042 break; 1042 break;
1043 } 1043 }
1044 } 1044 }
1045 return match; 1045 return match;
1046} 1046}
1047 1047
1048 1048
1049QString OContact::toShortText() const 1049QString OContact::toShortText() const
1050{ 1050{
1051 return ( fullName() ); 1051 return ( fullName() );
1052} 1052}
1053QString OContact::type() const 1053QString OContact::type() const
1054{ 1054{
1055 return QString::fromLatin1( "OContact" ); 1055 return QString::fromLatin1( "OContact" );
1056} 1056}
1057 1057
1058 1058
1059 1059
1060class QString OContact::recordField( int pos ) const 1060class QString OContact::recordField( int pos ) const
1061{ 1061{
1062 QStringList SLFIELDS = fields(); // ?? why this ? (se) 1062 QStringList SLFIELDS = fields(); // ?? why this ? (se)
1063 return SLFIELDS[pos]; 1063 return SLFIELDS[pos];
1064} 1064}
1065 1065
1066// In future releases, we should store birthday and anniversary 1066// In future releases, we should store birthday and anniversary
1067// internally as QDate instead of QString ! 1067// internally as QDate instead of QString !
1068// QString is always too complicate to interprete (DD.MM.YY, DD/MM/YY, MM/DD/YY, etc..)(se) 1068// QString is always too complicate to interprete (DD.MM.YY, DD/MM/YY, MM/DD/YY, etc..)(se)
1069 1069
1070/*! \fn void OContact::setBirthday( const QDate& date ) 1070/*! \fn void OContact::setBirthday( const QDate& date )
1071 Sets the birthday for the contact to \a date. If date is null 1071 Sets the birthday for the contact to \a date. If date is null
1072 the current stored date will be removed. 1072 the current stored date will be removed.
1073*/ 1073*/
1074void OContact::setBirthday( const QDate &v ) 1074void OContact::setBirthday( const QDate &v )
1075{ 1075{
1076 if ( v.isNull() ){ 1076 if ( v.isNull() ){
1077 qWarning( "Remove Birthday"); 1077 qWarning( "Remove Birthday");
1078 replace( Qtopia::Birthday, QString::null ); 1078 replace( Qtopia::Birthday, QString::null );
1079 return; 1079 return;
1080 } 1080 }
1081 1081
1082 if ( v.isValid() ) 1082 if ( v.isValid() )
1083 replace( Qtopia::Birthday, OConversion::dateToString( v ) ); 1083 replace( Qtopia::Birthday, OConversion::dateToString( v ) );
1084 1084
1085} 1085}
1086 1086
1087 1087
1088/*! \fn void OContact::setAnniversary( const QDate &date ) 1088/*! \fn void OContact::setAnniversary( const QDate &date )
1089 Sets the anniversary of the contact to \a date. If date is 1089 Sets the anniversary of the contact to \a date. If date is
1090 null, the current stored date will be removed. 1090 null, the current stored date will be removed.
1091*/ 1091*/
1092void OContact::setAnniversary( const QDate &v ) 1092void OContact::setAnniversary( const QDate &v )
1093{ 1093{
1094 if ( v.isNull() ){ 1094 if ( v.isNull() ){
1095 qWarning( "Remove Anniversary"); 1095 qWarning( "Remove Anniversary");
1096 replace( Qtopia::Anniversary, QString::null ); 1096 replace( Qtopia::Anniversary, QString::null );
1097 return; 1097 return;
1098 } 1098 }
1099 1099
1100 if ( v.isValid() ) 1100 if ( v.isValid() )
1101 replace( Qtopia::Anniversary, OConversion::dateToString( v ) ); 1101 replace( Qtopia::Anniversary, OConversion::dateToString( v ) );
1102} 1102}
1103 1103
1104/*! \fn QDate OContact::birthday() const 1104/*! \fn QDate OContact::birthday() const
1105 Returns the birthday of the contact. 1105 Returns the birthday of the contact.
1106*/ 1106*/
1107QDate OContact::birthday() const 1107QDate OContact::birthday() const
1108{ 1108{
1109 QString str = find( Qtopia::Birthday ); 1109 QString str = find( Qtopia::Birthday );
1110 qWarning ("Birthday %s", str.latin1() ); 1110 qWarning ("Birthday %s", str.latin1() );
1111 if ( !str.isEmpty() ) 1111 if ( !str.isEmpty() )
1112 return OConversion::dateFromString ( str ); 1112 return OConversion::dateFromString ( str );
1113 else 1113 else
1114 return QDate(); 1114 return QDate();
1115} 1115}
1116 1116
1117 1117
1118/*! \fn QDate OContact::anniversary() const 1118/*! \fn QDate OContact::anniversary() const
1119 Returns the anniversary of the contact. 1119 Returns the anniversary of the contact.
1120*/ 1120*/
1121QDate OContact::anniversary() const 1121QDate OContact::anniversary() const
1122{ 1122{
1123 QDate empty; 1123 QDate empty;
1124 QString str = find( Qtopia::Anniversary ); 1124 QString str = find( Qtopia::Anniversary );
1125 qWarning ("Anniversary %s", str.latin1() ); 1125 qWarning ("Anniversary %s", str.latin1() );
1126 if ( !str.isEmpty() ) 1126 if ( !str.isEmpty() )
1127 return OConversion::dateFromString ( str ); 1127 return OConversion::dateFromString ( str );
1128 else 1128 else
1129 return empty; 1129 return empty;
1130} 1130}
1131 1131
1132 1132
1133void OContact::insertEmail( const QString &v ) 1133void OContact::insertEmail( const QString &v )
1134{ 1134{
1135 //qDebug("insertEmail %s", v.latin1()); 1135 //qDebug("insertEmail %s", v.latin1());
1136 QString e = v.simplifyWhiteSpace(); 1136 QString e = v.simplifyWhiteSpace();
1137 QString def = defaultEmail(); 1137 QString def = defaultEmail();
1138 1138
1139 // if no default, set it as the default email and don't insert 1139 // if no default, set it as the default email and don't insert
1140 if ( def.isEmpty() ) { 1140 if ( def.isEmpty() ) {
1141 setDefaultEmail( e ); // will insert into the list for us 1141 setDefaultEmail( e ); // will insert into the list for us
1142 return; 1142 return;
1143 } 1143 }
1144 1144
1145 // otherwise, insert assuming doesn't already exist 1145 // otherwise, insert assuming doesn't already exist
1146 QString emailsStr = find( Qtopia::Emails ); 1146 QString emailsStr = find( Qtopia::Emails );
1147 if ( emailsStr.contains( e )) 1147 if ( emailsStr.contains( e ))
1148 return; 1148 return;
1149 if ( !emailsStr.isEmpty() ) 1149 if ( !emailsStr.isEmpty() )
1150 emailsStr += emailSeparator(); 1150 emailsStr += emailSeparator();
1151 emailsStr += e; 1151 emailsStr += e;
1152 replace( Qtopia::Emails, emailsStr ); 1152 replace( Qtopia::Emails, emailsStr );
1153} 1153}
1154 1154
1155void OContact::removeEmail( const QString &v ) 1155void OContact::removeEmail( const QString &v )
1156{ 1156{
1157 QString e = v.simplifyWhiteSpace(); 1157 QString e = v.simplifyWhiteSpace();
1158 QString def = defaultEmail(); 1158 QString def = defaultEmail();
1159 QString emailsStr = find( Qtopia::Emails ); 1159 QString emailsStr = find( Qtopia::Emails );
1160 QStringList emails = emailList(); 1160 QStringList emails = emailList();
1161 1161
1162 // otherwise, must first contain it 1162 // otherwise, must first contain it
1163 if ( !emailsStr.contains( e ) ) 1163 if ( !emailsStr.contains( e ) )
1164 return; 1164 return;
1165 1165
1166 // remove it 1166 // remove it
1167 //qDebug(" removing email from list %s", e.latin1()); 1167 //qDebug(" removing email from list %s", e.latin1());
1168 emails.remove( e ); 1168 emails.remove( e );
1169 // reset the string 1169 // reset the string
1170 emailsStr = emails.join(emailSeparator()); // Sharp's brain dead separator 1170 emailsStr = emails.join(emailSeparator()); // Sharp's brain dead separator
1171 replace( Qtopia::Emails, emailsStr ); 1171 replace( Qtopia::Emails, emailsStr );
1172 1172
1173 // if default, then replace the default email with the first one 1173 // if default, then replace the default email with the first one
1174 if ( def == e ) { 1174 if ( def == e ) {
1175 //qDebug("removeEmail is default; setting new default"); 1175 //qDebug("removeEmail is default; setting new default");
1176 if ( !emails.count() ) 1176 if ( !emails.count() )
1177 clearEmails(); 1177 clearEmails();
1178 else // setDefaultEmail will remove e from the list 1178 else // setDefaultEmail will remove e from the list
1179 setDefaultEmail( emails.first() ); 1179 setDefaultEmail( emails.first() );
1180 } 1180 }
1181} 1181}
1182void OContact::clearEmails() 1182void OContact::clearEmails()
1183{ 1183{
1184 mMap.remove( Qtopia::DefaultEmail ); 1184 mMap.remove( Qtopia::DefaultEmail );
1185 mMap.remove( Qtopia::Emails ); 1185 mMap.remove( Qtopia::Emails );
1186} 1186}
1187void OContact::setDefaultEmail( const QString &v ) 1187void OContact::setDefaultEmail( const QString &v )
1188{ 1188{
1189 QString e = v.simplifyWhiteSpace(); 1189 QString e = v.simplifyWhiteSpace();
1190 1190
1191 //qDebug("OContact::setDefaultEmail %s", e.latin1()); 1191 //qDebug("OContact::setDefaultEmail %s", e.latin1());
1192 replace( Qtopia::DefaultEmail, e ); 1192 replace( Qtopia::DefaultEmail, e );
1193 1193
1194 if ( !e.isEmpty() ) 1194 if ( !e.isEmpty() )
1195 insertEmail( e ); 1195 insertEmail( e );
1196 1196
1197} 1197}
1198 1198
1199void OContact::insertEmails( const QStringList &v ) 1199void OContact::insertEmails( const QStringList &v )
1200{ 1200{
1201 for ( QStringList::ConstIterator it = v.begin(); it != v.end(); ++it ) 1201 for ( QStringList::ConstIterator it = v.begin(); it != v.end(); ++it )
1202 insertEmail( *it ); 1202 insertEmail( *it );
1203} 1203}
1204int OContact::rtti() { 1204int OContact::rtti() {
1205 return OPimResolver::AddressBook; 1205 return OPimResolver::AddressBook;
1206} 1206}
1207void OContact::setUid( int i ) 1207void OContact::setUid( int i )
1208{ 1208{
1209 OPimRecord::setUid(i); 1209 OPimRecord::setUid(i);
1210 replace( Qtopia::AddressUid , QString::number(i)); 1210 replace( Qtopia::AddressUid , QString::number(i));
1211} 1211}