summaryrefslogtreecommitdiff
authoreilers <eilers>2003-04-22 14:09:11 (UTC)
committer eilers <eilers>2003-04-22 14:09:11 (UTC)
commit84be228e70b7d36627a8610386f44b6928d35d6a (patch) (unidiff)
tree033bed687c526700661df02f412582a5fc8ac8ab
parent93aa0affde672012c65dcde0df2f5a11078aa376 (diff)
downloadopie-84be228e70b7d36627a8610386f44b6928d35d6a.zip
opie-84be228e70b7d36627a8610386f44b6928d35d6a.tar.gz
opie-84be228e70b7d36627a8610386f44b6928d35d6a.tar.bz2
Fixing incompatibility to Qtopia 1.6 (especially syncing with QTDesktop 1.6):
They using a special format for storing birthdays/anniversaries. This patch does not convert all entries, just new/modificated contacts will be stored in this new format ! Addressbook is able to work with both formats (new and old) Complete conversion will be done by the new kitchensync release, provided soon...
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/libopie.pro2
-rw-r--r--libopie/pim/ocontact.cpp14
-rw-r--r--libopie/pim/ocontact.h4
-rw-r--r--libopie/pim/oconversion.cpp76
-rw-r--r--libopie/pim/oconversion.h36
-rw-r--r--libopie2/opiepim/core/oconversion.cpp76
-rw-r--r--libopie2/opiepim/core/oconversion.h36
-rw-r--r--libopie2/opiepim/ocontact.cpp14
-rw-r--r--libopie2/opiepim/ocontact.h4
9 files changed, 240 insertions, 22 deletions
diff --git a/libopie/libopie.pro b/libopie/libopie.pro
index 5550c20..c0ccdf2 100644
--- a/libopie/libopie.pro
+++ b/libopie/libopie.pro
@@ -1,121 +1,123 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += qte warn_on release 2CONFIG += qte warn_on release
3HEADERS = ofontmenu.h \ 3HEADERS = ofontmenu.h \
4 ocolorbutton.h \ 4 ocolorbutton.h \
5 ofiledialog.h ofileselector.h \ 5 ofiledialog.h ofileselector.h \
6 ocheckitem.h \ 6 ocheckitem.h \
7 xmltree.h \ 7 xmltree.h \
8 colordialog.h colorpopupmenu.h \ 8 colordialog.h colorpopupmenu.h \
9 oclickablelabel.h oprocctrl.h \ 9 oclickablelabel.h oprocctrl.h \
10 oprocess.h odevice.h odevicebutton.h \ 10 oprocess.h odevice.h odevicebutton.h \
11 otimepicker.h otabwidget.h \ 11 otimepicker.h otabwidget.h \
12 otabbar.h otabinfo.h \ 12 otabbar.h otabinfo.h \
13 ofontselector.h \ 13 ofontselector.h \
14 pim/opimrecord.h \ 14 pim/opimrecord.h \
15 pim/otodo.h \ 15 pim/otodo.h \
16 pim/orecordlist.h \ 16 pim/orecordlist.h \
17 pim/opimaccesstemplate.h \ 17 pim/opimaccesstemplate.h \
18 pim/opimaccessbackend.h \ 18 pim/opimaccessbackend.h \
19 pim/otodoaccess.h \ 19 pim/otodoaccess.h \
20 pim/otodoaccessbackend.h \ 20 pim/otodoaccessbackend.h \
21 pim/oconversion.h \
21 pim/ocontact.h \ 22 pim/ocontact.h \
22 pim/ocontactaccess.h \ 23 pim/ocontactaccess.h \
23 pim/ocontactaccessbackend.h \ 24 pim/ocontactaccessbackend.h \
24 pim/ocontactaccessbackend_xml.h \ 25 pim/ocontactaccessbackend_xml.h \
25 pim/ocontactaccessbackend_vcard.h \ 26 pim/ocontactaccessbackend_vcard.h \
26 pim/obackendfactory.h \ 27 pim/obackendfactory.h \
27 pim/opimcache.h \ 28 pim/opimcache.h \
28 pim/otodoaccessvcal.h \ 29 pim/otodoaccessvcal.h \
29 pim/orecur.h \ 30 pim/orecur.h \
30 pim/opimstate.h \ 31 pim/opimstate.h \
31 pim/opimxrefpartner.h \ 32 pim/opimxrefpartner.h \
32 pim/opimxref.h \ 33 pim/opimxref.h \
33 pim/opimxrefmanager.h \ 34 pim/opimxrefmanager.h \
34 pim/opimmaintainer.h \ 35 pim/opimmaintainer.h \
35 pim/opimnotify.h \ 36 pim/opimnotify.h \
36 pim/opimnotifymanager.h \ 37 pim/opimnotifymanager.h \
37 pim/opimmainwindow.h \ 38 pim/opimmainwindow.h \
38 pim/opimresolver.h \ 39 pim/opimresolver.h \
39 pim/oevent.h \ 40 pim/oevent.h \
40 pim/otimezone.h \ 41 pim/otimezone.h \
41 pim/odatebookaccess.h \ 42 pim/odatebookaccess.h \
42 pim/odatebookaccessbackend.h \ 43 pim/odatebookaccessbackend.h \
43 pim/odatebookaccessbackend_xml.h \ 44 pim/odatebookaccessbackend_xml.h \
44 orecurrancewidget.h \ 45 orecurrancewidget.h \
45 oticker.h owait.h 46 oticker.h owait.h
46# pim/otodoaccesssql.h \ 47# pim/otodoaccesssql.h \
47 48
48SOURCES = ofontmenu.cc \ 49SOURCES = ofontmenu.cc \
49 ocolorbutton.cpp \ 50 ocolorbutton.cpp \
50 sharp_compat.cpp \ 51 sharp_compat.cpp \
51 xmltree.cc \ 52 xmltree.cc \
52 ofiledialog.cc ofileselector.cc \ 53 ofiledialog.cc ofileselector.cc \
53 ocheckitem.cpp \ 54 ocheckitem.cpp \
54 colordialog.cpp \ 55 colordialog.cpp \
55 colorpopupmenu.cpp oclickablelabel.cpp \ 56 colorpopupmenu.cpp oclickablelabel.cpp \
56 oprocctrl.cpp oprocess.cpp \ 57 oprocctrl.cpp oprocess.cpp \
57 odevice.cpp odevicebutton.cpp otimepicker.cpp \ 58 odevice.cpp odevicebutton.cpp otimepicker.cpp \
58 otabwidget.cpp otabbar.cpp \ 59 otabwidget.cpp otabbar.cpp \
59 ofontselector.cpp \ 60 ofontselector.cpp \
60 pim/otodo.cpp \ 61 pim/otodo.cpp \
61 pim/opimrecord.cpp \ 62 pim/opimrecord.cpp \
62 pim/otodoaccess.cpp \ 63 pim/otodoaccess.cpp \
63 pim/otodoaccessbackend.cpp \ 64 pim/otodoaccessbackend.cpp \
64 pim/otodoaccessxml.cpp \ 65 pim/otodoaccessxml.cpp \
66 pim/oconversion.cpp \
65 pim/ocontact.cpp \ 67 pim/ocontact.cpp \
66 pim/ocontactaccess.cpp \ 68 pim/ocontactaccess.cpp \
67 pim/ocontactaccessbackend_vcard.cpp \ 69 pim/ocontactaccessbackend_vcard.cpp \
68 pim/ocontactaccessbackend_xml.cpp \ 70 pim/ocontactaccessbackend_xml.cpp \
69 pim/otodoaccessvcal.cpp \ 71 pim/otodoaccessvcal.cpp \
70 pim/orecur.cpp \ 72 pim/orecur.cpp \
71 pim/opimstate.cpp \ 73 pim/opimstate.cpp \
72 pim/opimxrefpartner.cpp \ 74 pim/opimxrefpartner.cpp \
73 pim/opimxref.cpp \ 75 pim/opimxref.cpp \
74 pim/opimxrefmanager.cpp \ 76 pim/opimxrefmanager.cpp \
75 pim/opimmaintainer.cpp \ 77 pim/opimmaintainer.cpp \
76 pim/opimnotify.cpp \ 78 pim/opimnotify.cpp \
77 pim/opimnotifymanager.cpp \ 79 pim/opimnotifymanager.cpp \
78 pim/opimmainwindow.cpp \ 80 pim/opimmainwindow.cpp \
79 pim/opimresolver.cpp \ 81 pim/opimresolver.cpp \
80 pim/oevent.cpp \ 82 pim/oevent.cpp \
81 pim/otimezone.cpp \ 83 pim/otimezone.cpp \
82 pim/odatebookaccess.cpp \ 84 pim/odatebookaccess.cpp \
83 pim/odatebookaccessbackend.cpp \ 85 pim/odatebookaccessbackend.cpp \
84 pim/odatebookaccessbackend_xml.cpp \ 86 pim/odatebookaccessbackend_xml.cpp \
85 orecurrancewidget.cpp \ 87 orecurrancewidget.cpp \
86 oticker.cpp owait.cpp \ 88 oticker.cpp owait.cpp \
87# pim/otodoaccesssql.cpp \ 89# pim/otodoaccesssql.cpp \
88 90
89TARGET = opie 91TARGET = opie
90INCLUDEPATH += $(OPIEDIR)/include 92INCLUDEPATH += $(OPIEDIR)/include
91DESTDIR = $(OPIEDIR)/lib$(PROJMAK) 93DESTDIR = $(OPIEDIR)/lib$(PROJMAK)
92#VERSION = 1.0.0 94#VERSION = 1.0.0
93 95
94LIBS += -lqpe 96LIBS += -lqpe
95 97
96# LIBS += -lopiesql 98# LIBS += -lopiesql
97 99
98INTERFACES = otimepickerbase.ui orecurrancebase.ui 100INTERFACES = otimepickerbase.ui orecurrancebase.ui
99TARGET = opie 101TARGET = opie
100 102
101TRANSLATIONS = ../i18n/de/libopie.ts \ 103TRANSLATIONS = ../i18n/de/libopie.ts \
102 ../i18n/nl/libopie.ts \ 104 ../i18n/nl/libopie.ts \
103 ../i18n/xx/libopie.ts \ 105 ../i18n/xx/libopie.ts \
104 ../i18n/en/libopie.ts \ 106 ../i18n/en/libopie.ts \
105 ../i18n/es/libopie.ts \ 107 ../i18n/es/libopie.ts \
106 ../i18n/fr/libopie.ts \ 108 ../i18n/fr/libopie.ts \
107 ../i18n/hu/libopie.ts \ 109 ../i18n/hu/libopie.ts \
108 ../i18n/ja/libopie.ts \ 110 ../i18n/ja/libopie.ts \
109 ../i18n/ko/libopie.ts \ 111 ../i18n/ko/libopie.ts \
110 ../i18n/no/libopie.ts \ 112 ../i18n/no/libopie.ts \
111 ../i18n/pl/libopie.ts \ 113 ../i18n/pl/libopie.ts \
112 ../i18n/pt/libopie.ts \ 114 ../i18n/pt/libopie.ts \
113 ../i18n/pt_BR/libopie.ts \ 115 ../i18n/pt_BR/libopie.ts \
114 ../i18n/sl/libopie.ts \ 116 ../i18n/sl/libopie.ts \
115 ../i18n/zh_CN/libopie.ts \ 117 ../i18n/zh_CN/libopie.ts \
116 ../i18n/zh_TW/libopie.ts \ 118 ../i18n/zh_TW/libopie.ts \
117 ../i18n/da/libopie.ts 119 ../i18n/da/libopie.ts
118 120
119 121
120 122
121include ( $(OPIEDIR)/include.pro ) 123include ( $(OPIEDIR)/include.pro )
diff --git a/libopie/pim/ocontact.cpp b/libopie/pim/ocontact.cpp
index 9cccfc8..96a5f65 100644
--- a/libopie/pim/ocontact.cpp
+++ b/libopie/pim/ocontact.cpp
@@ -1,284 +1,282 @@
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 by Stefan Eilers (eilers.stefan@epost.de) 3** Copyright (C) 2002-2003 by Stefan Eilers (eilers.stefan@epost.de)
4**
5** This file is part of the Qtopia Environment.
6** 4**
7** 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
8** 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
9** Foundation and appearing in the file LICENSE.GPL included in the 7** Foundation and appearing in the file LICENSE.GPL included in the
10** packaging of this file. 8** packaging of this file.
11** 9**
12** 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
13** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 11** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
14** 12**
15** See http://www.trolltech.com/gpl/ for GPL licensing information. 13** See http://www.trolltech.com/gpl/ for GPL licensing information.
16** 14**
17** Contact info@trolltech.com if any conditions of this licensing are 15** Contact info@trolltech.com if any conditions of this licensing are
18** not clear to you. 16** not clear to you.
19** 17**
20**********************************************************************/ 18**********************************************************************/
21 19
22#define QTOPIA_INTERNAL_CONTACT_MRE 20#define QTOPIA_INTERNAL_CONTACT_MRE
23 21
24#include "ocontact.h" 22#include "ocontact.h"
25#include "opimresolver.h" 23#include "opimresolver.h"
26 24
27#include <qpe/stringutil.h> 25#include <qpe/stringutil.h>
28#include <qpe/timeconversion.h> 26#include "oconversion.h"
29#include <qpe/timestring.h> 27#include <qpe/timestring.h>
30 28
31#include <qobject.h> 29#include <qobject.h>
32#include <qregexp.h> 30#include <qregexp.h>
33#include <qstylesheet.h> 31#include <qstylesheet.h>
34#include <qfileinfo.h> 32#include <qfileinfo.h>
35#include <qmap.h> 33#include <qmap.h>
36 34
37#include <stdio.h> 35#include <stdio.h>
38 36
39/*! 37/*!
40 \class Contact contact.h 38 \class Contact contact.h
41 \brief The Contact class holds the data of an address book entry. 39 \brief The Contact class holds the data of an address book entry.
42 40
43 This data includes information the name of the person, contact 41 This data includes information the name of the person, contact
44 information, and business information such as deparment and job title. 42 information, and business information such as deparment and job title.
45 43
46 \ingroup qtopiaemb 44 \ingroup qtopiaemb
47 \ingroup qtopiadesktop 45 \ingroup qtopiadesktop
48*/ 46*/
49 47
50 48
51/*! 49/*!
52 Creates a new, empty contact. 50 Creates a new, empty contact.
53*/ 51*/
54OContact::OContact() 52OContact::OContact()
55 : OPimRecord(), mMap(), d( 0 ) 53 : OPimRecord(), mMap(), d( 0 )
56{ 54{
57} 55}
58 56
59/*! 57/*!
60 \internal 58 \internal
61 Creates a new contact. The properties of the contact are 59 Creates a new contact. The properties of the contact are
62 set from \a fromMap. 60 set from \a fromMap.
63*/ 61*/
64OContact::OContact( const QMap<int, QString> &fromMap ) : 62OContact::OContact( const QMap<int, QString> &fromMap ) :
65 OPimRecord(), mMap( fromMap ), d( 0 ) 63 OPimRecord(), mMap( fromMap ), d( 0 )
66{ 64{
67 QString cats = mMap[ Qtopia::AddressCategory ]; 65 QString cats = mMap[ Qtopia::AddressCategory ];
68 if ( !cats.isEmpty() ) 66 if ( !cats.isEmpty() )
69 setCategories( idsFromString( cats ) ); 67 setCategories( idsFromString( cats ) );
70 68
71 QString uidStr = find( Qtopia::AddressUid ); 69 QString uidStr = find( Qtopia::AddressUid );
72 70
73 if ( uidStr.isEmpty() || (uidStr.toInt() == 0) ){ 71 if ( uidStr.isEmpty() || (uidStr.toInt() == 0) ){
74 qWarning( "Invalid UID found. Generate new one.." ); 72 qWarning( "Invalid UID found. Generate new one.." );
75 setUid( uidGen().generate() ); 73 setUid( uidGen().generate() );
76 }else 74 }else
77 setUid( uidStr.toInt() ); 75 setUid( uidStr.toInt() );
78 76
79// if ( !uidStr.isEmpty() ) 77// if ( !uidStr.isEmpty() )
80 // setUid( uidStr.toInt() ); 78 // setUid( uidStr.toInt() );
81} 79}
82 80
83/*! 81/*!
84 Destroys a contact. 82 Destroys a contact.
85*/ 83*/
86OContact::~OContact() 84OContact::~OContact()
87{ 85{
88} 86}
89 87
90/*! \fn void OContact::setTitle( const QString &str ) 88/*! \fn void OContact::setTitle( const QString &str )
91 Sets the title of the contact to \a str. 89 Sets the title of the contact to \a str.
92*/ 90*/
93 91
94/*! \fn void OContact::setFirstName( const QString &str ) 92/*! \fn void OContact::setFirstName( const QString &str )
95 Sets the first name of the contact to \a str. 93 Sets the first name of the contact to \a str.
96*/ 94*/
97 95
98/*! \fn void OContact::setMiddleName( const QString &str ) 96/*! \fn void OContact::setMiddleName( const QString &str )
99 Sets the middle name of the contact to \a str. 97 Sets the middle name of the contact to \a str.
100*/ 98*/
101 99
102/*! \fn void OContact::setLastName( const QString &str ) 100/*! \fn void OContact::setLastName( const QString &str )
103 Sets the last name of the contact to \a str. 101 Sets the last name of the contact to \a str.
104*/ 102*/
105 103
106/*! \fn void OContact::setSuffix( const QString &str ) 104/*! \fn void OContact::setSuffix( const QString &str )
107 Sets the suffix of the contact to \a str. 105 Sets the suffix of the contact to \a str.
108*/ 106*/
109 107
110/*! \fn void OContact::setFileAs( const QString &str ) 108/*! \fn void OContact::setFileAs( const QString &str )
111 Sets the contact to filed as \a str. 109 Sets the contact to filed as \a str.
112*/ 110*/
113 111
114/*! \fn void OContact::setDefaultEmail( const QString &str ) 112/*! \fn void OContact::setDefaultEmail( const QString &str )
115 Sets the default email of the contact to \a str. 113 Sets the default email of the contact to \a str.
116*/ 114*/
117 115
118/*! \fn void OContact::setHomeStreet( const QString &str ) 116/*! \fn void OContact::setHomeStreet( const QString &str )
119 Sets the home street address of the contact to \a str. 117 Sets the home street address of the contact to \a str.
120*/ 118*/
121 119
122/*! \fn void OContact::setHomeCity( const QString &str ) 120/*! \fn void OContact::setHomeCity( const QString &str )
123 Sets the home city of the contact to \a str. 121 Sets the home city of the contact to \a str.
124*/ 122*/
125 123
126/*! \fn void OContact::setHomeState( const QString &str ) 124/*! \fn void OContact::setHomeState( const QString &str )
127 Sets the home state of the contact to \a str. 125 Sets the home state of the contact to \a str.
128*/ 126*/
129 127
130/*! \fn void OContact::setHomeZip( const QString &str ) 128/*! \fn void OContact::setHomeZip( const QString &str )
131 Sets the home zip code of the contact to \a str. 129 Sets the home zip code of the contact to \a str.
132*/ 130*/
133 131
134/*! \fn void OContact::setHomeCountry( const QString &str ) 132/*! \fn void OContact::setHomeCountry( const QString &str )
135 Sets the home country of the contact to \a str. 133 Sets the home country of the contact to \a str.
136*/ 134*/
137 135
138/*! \fn void OContact::setHomePhone( const QString &str ) 136/*! \fn void OContact::setHomePhone( const QString &str )
139 Sets the home phone number of the contact to \a str. 137 Sets the home phone number of the contact to \a str.
140*/ 138*/
141 139
142/*! \fn void OContact::setHomeFax( const QString &str ) 140/*! \fn void OContact::setHomeFax( const QString &str )
143 Sets the home fax number of the contact to \a str. 141 Sets the home fax number of the contact to \a str.
144*/ 142*/
145 143
146/*! \fn void OContact::setHomeMobile( const QString &str ) 144/*! \fn void OContact::setHomeMobile( const QString &str )
147 Sets the home mobile phone number of the contact to \a str. 145 Sets the home mobile phone number of the contact to \a str.
148*/ 146*/
149 147
150/*! \fn void OContact::setHomeWebpage( const QString &str ) 148/*! \fn void OContact::setHomeWebpage( const QString &str )
151 Sets the home webpage of the contact to \a str. 149 Sets the home webpage of the contact to \a str.
152*/ 150*/
153 151
154/*! \fn void OContact::setCompany( const QString &str ) 152/*! \fn void OContact::setCompany( const QString &str )
155 Sets the company for contact to \a str. 153 Sets the company for contact to \a str.
156*/ 154*/
157 155
158/*! \fn void OContact::setJobTitle( const QString &str ) 156/*! \fn void OContact::setJobTitle( const QString &str )
159 Sets the job title of the contact to \a str. 157 Sets the job title of the contact to \a str.
160*/ 158*/
161 159
162/*! \fn void OContact::setDepartment( const QString &str ) 160/*! \fn void OContact::setDepartment( const QString &str )
163 Sets the department for contact to \a str. 161 Sets the department for contact to \a str.
164*/ 162*/
165 163
166/*! \fn void OContact::setOffice( const QString &str ) 164/*! \fn void OContact::setOffice( const QString &str )
167 Sets the office for contact to \a str. 165 Sets the office for contact to \a str.
168*/ 166*/
169 167
170/*! \fn void OContact::setBusinessStreet( const QString &str ) 168/*! \fn void OContact::setBusinessStreet( const QString &str )
171 Sets the business street address of the contact to \a str. 169 Sets the business street address of the contact to \a str.
172*/ 170*/
173 171
174/*! \fn void OContact::setBusinessCity( const QString &str ) 172/*! \fn void OContact::setBusinessCity( const QString &str )
175 Sets the business city of the contact to \a str. 173 Sets the business city of the contact to \a str.
176*/ 174*/
177 175
178/*! \fn void OContact::setBusinessState( const QString &str ) 176/*! \fn void OContact::setBusinessState( const QString &str )
179 Sets the business state of the contact to \a str. 177 Sets the business state of the contact to \a str.
180*/ 178*/
181 179
182/*! \fn void OContact::setBusinessZip( const QString &str ) 180/*! \fn void OContact::setBusinessZip( const QString &str )
183 Sets the business zip code of the contact to \a str. 181 Sets the business zip code of the contact to \a str.
184*/ 182*/
185 183
186/*! \fn void OContact::setBusinessCountry( const QString &str ) 184/*! \fn void OContact::setBusinessCountry( const QString &str )
187 Sets the business country of the contact to \a str. 185 Sets the business country of the contact to \a str.
188*/ 186*/
189 187
190/*! \fn void OContact::setBusinessPhone( const QString &str ) 188/*! \fn void OContact::setBusinessPhone( const QString &str )
191 Sets the business phone number of the contact to \a str. 189 Sets the business phone number of the contact to \a str.
192*/ 190*/
193 191
194/*! \fn void OContact::setBusinessFax( const QString &str ) 192/*! \fn void OContact::setBusinessFax( const QString &str )
195 Sets the business fax number of the contact to \a str. 193 Sets the business fax number of the contact to \a str.
196*/ 194*/
197 195
198/*! \fn void OContact::setBusinessMobile( const QString &str ) 196/*! \fn void OContact::setBusinessMobile( const QString &str )
199 Sets the business mobile phone number of the contact to \a str. 197 Sets the business mobile phone number of the contact to \a str.
200*/ 198*/
201 199
202/*! \fn void OContact::setBusinessPager( const QString &str ) 200/*! \fn void OContact::setBusinessPager( const QString &str )
203 Sets the business pager number of the contact to \a str. 201 Sets the business pager number of the contact to \a str.
204*/ 202*/
205 203
206/*! \fn void OContact::setBusinessWebpage( const QString &str ) 204/*! \fn void OContact::setBusinessWebpage( const QString &str )
207 Sets the business webpage of the contact to \a str. 205 Sets the business webpage of the contact to \a str.
208*/ 206*/
209 207
210/*! \fn void OContact::setProfession( const QString &str ) 208/*! \fn void OContact::setProfession( const QString &str )
211 Sets the profession of the contact to \a str. 209 Sets the profession of the contact to \a str.
212*/ 210*/
213 211
214/*! \fn void OContact::setAssistant( const QString &str ) 212/*! \fn void OContact::setAssistant( const QString &str )
215 Sets the assistant of the contact to \a str. 213 Sets the assistant of the contact to \a str.
216*/ 214*/
217 215
218/*! \fn void OContact::setManager( const QString &str ) 216/*! \fn void OContact::setManager( const QString &str )
219 Sets the manager of the contact to \a str. 217 Sets the manager of the contact to \a str.
220*/ 218*/
221 219
222/*! \fn void OContact::setSpouse( const QString &str ) 220/*! \fn void OContact::setSpouse( const QString &str )
223 Sets the spouse of the contact to \a str. 221 Sets the spouse of the contact to \a str.
224*/ 222*/
225 223
226/*! \fn void OContact::setGender( const QString &str ) 224/*! \fn void OContact::setGender( const QString &str )
227 Sets the gender of the contact to \a str. 225 Sets the gender of the contact to \a str.
228*/ 226*/
229 227
230/*! \fn void OContact::setNickname( const QString &str ) 228/*! \fn void OContact::setNickname( const QString &str )
231 Sets the nickname of the contact to \a str. 229 Sets the nickname of the contact to \a str.
232*/ 230*/
233 231
234/*! \fn void OContact::setNotes( const QString &str ) 232/*! \fn void OContact::setNotes( const QString &str )
235 Sets the notes about the contact to \a str. 233 Sets the notes about the contact to \a str.
236*/ 234*/
237 235
238/*! \fn QString OContact::title() const 236/*! \fn QString OContact::title() const
239 Returns the title of the contact. 237 Returns the title of the contact.
240*/ 238*/
241 239
242/*! \fn QString OContact::firstName() const 240/*! \fn QString OContact::firstName() const
243 Returns the first name of the contact. 241 Returns the first name of the contact.
244*/ 242*/
245 243
246/*! \fn QString OContact::middleName() const 244/*! \fn QString OContact::middleName() const
247 Returns the middle name of the contact. 245 Returns the middle name of the contact.
248*/ 246*/
249 247
250/*! \fn QString OContact::lastName() const 248/*! \fn QString OContact::lastName() const
251 Returns the last name of the contact. 249 Returns the last name of the contact.
252*/ 250*/
253 251
254/*! \fn QString OContact::suffix() const 252/*! \fn QString OContact::suffix() const
255 Returns the suffix of the contact. 253 Returns the suffix of the contact.
256*/ 254*/
257 255
258/*! \fn QString OContact::fileAs() const 256/*! \fn QString OContact::fileAs() const
259 Returns the string the contact is filed as. 257 Returns the string the contact is filed as.
260*/ 258*/
261 259
262/*! \fn QString OContact::defaultEmail() const 260/*! \fn QString OContact::defaultEmail() const
263 Returns the default email address of the contact. 261 Returns the default email address of the contact.
264*/ 262*/
265 263
266/*! \fn QString OContact::emails() const 264/*! \fn QString OContact::emails() const
267 Returns the list of email address for a contact separated by ';'s in a single 265 Returns the list of email address for a contact separated by ';'s in a single
268 string. 266 string.
269*/ 267*/
270 268
271/*! \fn QString OContact::homeStreet() const 269/*! \fn QString OContact::homeStreet() const
272 Returns the home street address of the contact. 270 Returns the home street address of the contact.
273*/ 271*/
274 272
275/*! \fn QString OContact::homeCity() const 273/*! \fn QString OContact::homeCity() const
276 Returns the home city of the contact. 274 Returns the home city of the contact.
277*/ 275*/
278 276
279/*! \fn QString OContact::homeState() const 277/*! \fn QString OContact::homeState() const
280 Returns the home state of the contact. 278 Returns the home state of the contact.
281*/ 279*/
282 280
283/*! \fn QString OContact::homeZip() const 281/*! \fn QString OContact::homeZip() const
284 Returns the home zip of the contact. 282 Returns the home zip of the contact.
@@ -764,385 +762,385 @@ QString OContact::fullName() const
764QStringList OContact::childrenList() const 762QStringList OContact::childrenList() const
765{ 763{
766 return QStringList::split( " ", find( Qtopia::Children ) ); 764 return QStringList::split( " ", find( Qtopia::Children ) );
767} 765}
768 766
769/*! \fn void OContact::insertEmail( const QString &email ) 767/*! \fn void OContact::insertEmail( const QString &email )
770 768
771 Insert \a email into the email list. Ensures \a email can only be added 769 Insert \a email into the email list. Ensures \a email can only be added
772 once. If there is no default email address set, it sets it to the \a email. 770 once. If there is no default email address set, it sets it to the \a email.
773*/ 771*/
774 772
775/*! \fn void OContact::removeEmail( const QString &email ) 773/*! \fn void OContact::removeEmail( const QString &email )
776 774
777 Removes the \a email from the email list. If the default email was \a email, 775 Removes the \a email from the email list. If the default email was \a email,
778 then the default email address is assigned to the first email in the 776 then the default email address is assigned to the first email in the
779 email list 777 email list
780*/ 778*/
781 779
782/*! \fn void OContact::clearEmails() 780/*! \fn void OContact::clearEmails()
783 781
784 Clears the email list. 782 Clears the email list.
785 */ 783 */
786 784
787/*! \fn void OContact::insertEmails( const QStringList &emailList ) 785/*! \fn void OContact::insertEmails( const QStringList &emailList )
788 786
789 Appends the \a emailList to the exiting email list 787 Appends the \a emailList to the exiting email list
790 */ 788 */
791 789
792/*! 790/*!
793 Returns a list of email addresses belonging to the contact, including 791 Returns a list of email addresses belonging to the contact, including
794 the default email address. 792 the default email address.
795*/ 793*/
796QStringList OContact::emailList() const 794QStringList OContact::emailList() const
797{ 795{
798 QString emailStr = emails(); 796 QString emailStr = emails();
799 797
800 QStringList r; 798 QStringList r;
801 if ( !emailStr.isEmpty() ) { 799 if ( !emailStr.isEmpty() ) {
802 qDebug(" emailstr "); 800 qDebug(" emailstr ");
803 QStringList l = QStringList::split( emailSeparator(), emailStr ); 801 QStringList l = QStringList::split( emailSeparator(), emailStr );
804 for ( QStringList::ConstIterator it = l.begin();it != l.end();++it ) 802 for ( QStringList::ConstIterator it = l.begin();it != l.end();++it )
805 r += (*it).simplifyWhiteSpace(); 803 r += (*it).simplifyWhiteSpace();
806 } 804 }
807 805
808 return r; 806 return r;
809} 807}
810 808
811/*! 809/*!
812 \overload 810 \overload
813 811
814 Generates the string for the contact to be filed as from the first, 812 Generates the string for the contact to be filed as from the first,
815 middle and last name of the contact. 813 middle and last name of the contact.
816*/ 814*/
817void OContact::setFileAs() 815void OContact::setFileAs()
818{ 816{
819 QString lastName, firstName, middleName, fileas; 817 QString lastName, firstName, middleName, fileas;
820 818
821 lastName = find( Qtopia::LastName ); 819 lastName = find( Qtopia::LastName );
822 firstName = find( Qtopia::FirstName ); 820 firstName = find( Qtopia::FirstName );
823 middleName = find( Qtopia::MiddleName ); 821 middleName = find( Qtopia::MiddleName );
824 if ( !lastName.isEmpty() && !firstName.isEmpty() 822 if ( !lastName.isEmpty() && !firstName.isEmpty()
825 && !middleName.isEmpty() ) 823 && !middleName.isEmpty() )
826 fileas = lastName + ", " + firstName + " " + middleName; 824 fileas = lastName + ", " + firstName + " " + middleName;
827 else if ( !lastName.isEmpty() && !firstName.isEmpty() ) 825 else if ( !lastName.isEmpty() && !firstName.isEmpty() )
828 fileas = lastName + ", " + firstName; 826 fileas = lastName + ", " + firstName;
829 else if ( !lastName.isEmpty() || !firstName.isEmpty() || 827 else if ( !lastName.isEmpty() || !firstName.isEmpty() ||
830 !middleName.isEmpty() ) 828 !middleName.isEmpty() )
831 fileas = firstName + ( firstName.isEmpty() ? "" : " " ) 829 fileas = firstName + ( firstName.isEmpty() ? "" : " " )
832 + middleName + ( middleName.isEmpty() ? "" : " " ) 830 + middleName + ( middleName.isEmpty() ? "" : " " )
833 + lastName; 831 + lastName;
834 832
835 replace( Qtopia::FileAs, fileas ); 833 replace( Qtopia::FileAs, fileas );
836} 834}
837 835
838/*! 836/*!
839 \internal 837 \internal
840 Appends the contact information to \a buf. 838 Appends the contact information to \a buf.
841*/ 839*/
842void OContact::save( QString &buf ) const 840void OContact::save( QString &buf ) const
843{ 841{
844 static const QStringList SLFIELDS = fields(); 842 static const QStringList SLFIELDS = fields();
845 // I'm expecting "<Contact " in front of this... 843 // I'm expecting "<Contact " in front of this...
846 for ( QMap<int, QString>::ConstIterator it = mMap.begin(); 844 for ( QMap<int, QString>::ConstIterator it = mMap.begin();
847 it != mMap.end(); ++it ) { 845 it != mMap.end(); ++it ) {
848 const QString &value = it.data(); 846 const QString &value = it.data();
849 int key = it.key(); 847 int key = it.key();
850 if ( !value.isEmpty() ) { 848 if ( !value.isEmpty() ) {
851 if ( key == Qtopia::AddressCategory || key == Qtopia::AddressUid) 849 if ( key == Qtopia::AddressCategory || key == Qtopia::AddressUid)
852 continue; 850 continue;
853 851
854 key -= Qtopia::AddressCategory+1; 852 key -= Qtopia::AddressCategory+1;
855 buf += SLFIELDS[key]; 853 buf += SLFIELDS[key];
856 buf += "=\"" + Qtopia::escapeString(value) + "\" "; 854 buf += "=\"" + Qtopia::escapeString(value) + "\" ";
857 } 855 }
858 } 856 }
859 buf += customToXml(); 857 buf += customToXml();
860 if ( categories().count() > 0 ) 858 if ( categories().count() > 0 )
861 buf += "Categories=\"" + idsToString( categories() ) + "\" "; 859 buf += "Categories=\"" + idsToString( categories() ) + "\" ";
862 buf += "Uid=\"" + QString::number( uid() ) + "\" "; 860 buf += "Uid=\"" + QString::number( uid() ) + "\" ";
863 // You need to close this yourself 861 // You need to close this yourself
864} 862}
865 863
866 864
867/*! 865/*!
868 \internal 866 \internal
869 Returns the list of fields belonging to a contact 867 Returns the list of fields belonging to a contact
870 Never change order of this list ! It has to be regarding 868 Never change order of this list ! It has to be regarding
871 enum AddressBookFields !! 869 enum AddressBookFields !!
872*/ 870*/
873QStringList OContact::fields() 871QStringList OContact::fields()
874{ 872{
875 QStringList list; 873 QStringList list;
876 874
877 list.append( "Title" ); // Not Used! 875 list.append( "Title" ); // Not Used!
878 list.append( "FirstName" ); 876 list.append( "FirstName" );
879 list.append( "MiddleName" ); 877 list.append( "MiddleName" );
880 list.append( "LastName" ); 878 list.append( "LastName" );
881 list.append( "Suffix" ); 879 list.append( "Suffix" );
882 list.append( "FileAs" ); 880 list.append( "FileAs" );
883 881
884 list.append( "JobTitle" ); 882 list.append( "JobTitle" );
885 list.append( "Department" ); 883 list.append( "Department" );
886 list.append( "Company" ); 884 list.append( "Company" );
887 list.append( "BusinessPhone" ); 885 list.append( "BusinessPhone" );
888 list.append( "BusinessFax" ); 886 list.append( "BusinessFax" );
889 list.append( "BusinessMobile" ); 887 list.append( "BusinessMobile" );
890 888
891 list.append( "DefaultEmail" ); 889 list.append( "DefaultEmail" );
892 list.append( "Emails" ); 890 list.append( "Emails" );
893 891
894 list.append( "HomePhone" ); 892 list.append( "HomePhone" );
895 list.append( "HomeFax" ); 893 list.append( "HomeFax" );
896 list.append( "HomeMobile" ); 894 list.append( "HomeMobile" );
897 895
898 list.append( "BusinessStreet" ); 896 list.append( "BusinessStreet" );
899 list.append( "BusinessCity" ); 897 list.append( "BusinessCity" );
900 list.append( "BusinessState" ); 898 list.append( "BusinessState" );
901 list.append( "BusinessZip" ); 899 list.append( "BusinessZip" );
902 list.append( "BusinessCountry" ); 900 list.append( "BusinessCountry" );
903 list.append( "BusinessPager" ); 901 list.append( "BusinessPager" );
904 list.append( "BusinessWebPage" ); 902 list.append( "BusinessWebPage" );
905 903
906 list.append( "Office" ); 904 list.append( "Office" );
907 list.append( "Profession" ); 905 list.append( "Profession" );
908 list.append( "Assistant" ); 906 list.append( "Assistant" );
909 list.append( "Manager" ); 907 list.append( "Manager" );
910 908
911 list.append( "HomeStreet" ); 909 list.append( "HomeStreet" );
912 list.append( "HomeCity" ); 910 list.append( "HomeCity" );
913 list.append( "HomeState" ); 911 list.append( "HomeState" );
914 list.append( "HomeZip" ); 912 list.append( "HomeZip" );
915 list.append( "HomeCountry" ); 913 list.append( "HomeCountry" );
916 list.append( "HomeWebPage" ); 914 list.append( "HomeWebPage" );
917 915
918 list.append( "Spouse" ); 916 list.append( "Spouse" );
919 list.append( "Gender" ); 917 list.append( "Gender" );
920 list.append( "Birthday" ); 918 list.append( "Birthday" );
921 list.append( "Anniversary" ); 919 list.append( "Anniversary" );
922 list.append( "Nickname" ); 920 list.append( "Nickname" );
923 list.append( "Children" ); 921 list.append( "Children" );
924 922
925 list.append( "Notes" ); 923 list.append( "Notes" );
926 list.append( "Groups" ); 924 list.append( "Groups" );
927 925
928 return list; 926 return list;
929} 927}
930 928
931 929
932/*! 930/*!
933 Sets the list of email address for contact to those contained in \a str. 931 Sets the list of email address for contact to those contained in \a str.
934 Email address should be separated by ';'s. 932 Email address should be separated by ';'s.
935*/ 933*/
936void OContact::setEmails( const QString &str ) 934void OContact::setEmails( const QString &str )
937{ 935{
938 replace( Qtopia::Emails, str ); 936 replace( Qtopia::Emails, str );
939 if ( str.isEmpty() ) 937 if ( str.isEmpty() )
940 setDefaultEmail( QString::null ); 938 setDefaultEmail( QString::null );
941} 939}
942 940
943/*! 941/*!
944 Sets the list of children for the contact to those contained in \a str. 942 Sets the list of children for the contact to those contained in \a str.
945*/ 943*/
946void OContact::setChildren( const QString &str ) 944void OContact::setChildren( const QString &str )
947{ 945{
948 replace( Qtopia::Children, str ); 946 replace( Qtopia::Children, str );
949} 947}
950 948
951/*! 949/*!
952 Returns TRUE if the contact matches the regular expression \a regexp. 950 Returns TRUE if the contact matches the regular expression \a regexp.
953 Otherwise returns FALSE. 951 Otherwise returns FALSE.
954*/ 952*/
955bool OContact::match( const QString &regexp ) const 953bool OContact::match( const QString &regexp ) const
956{ 954{
957 return match(QRegExp(regexp)); 955 return match(QRegExp(regexp));
958} 956}
959 957
960/*! 958/*!
961 \overload 959 \overload
962 Returns TRUE if the contact matches the regular expression \a regexp. 960 Returns TRUE if the contact matches the regular expression \a regexp.
963 Otherwise returns FALSE. 961 Otherwise returns FALSE.
964*/ 962*/
965bool OContact::match( const QRegExp &r ) const 963bool OContact::match( const QRegExp &r ) const
966{ 964{
967 bool match; 965 bool match;
968 match = false; 966 match = false;
969 QMap<int, QString>::ConstIterator it; 967 QMap<int, QString>::ConstIterator it;
970 for ( it = mMap.begin(); it != mMap.end(); ++it ) { 968 for ( it = mMap.begin(); it != mMap.end(); ++it ) {
971 if ( (*it).find( r ) > -1 ) { 969 if ( (*it).find( r ) > -1 ) {
972 match = true; 970 match = true;
973 break; 971 break;
974 } 972 }
975 } 973 }
976 return match; 974 return match;
977} 975}
978 976
979 977
980QString OContact::toShortText() const 978QString OContact::toShortText() const
981{ 979{
982 return ( fullName() ); 980 return ( fullName() );
983} 981}
984QString OContact::type() const 982QString OContact::type() const
985{ 983{
986 return QString::fromLatin1( "OContact" ); 984 return QString::fromLatin1( "OContact" );
987} 985}
988 986
989// Definition is missing ! (se) 987// Definition is missing ! (se)
990QMap<QString,QString> OContact::toExtraMap() const 988QMap<QString,QString> OContact::toExtraMap() const
991{ 989{
992 qWarning ("Function not implemented: OContact::toExtraMap()"); 990 qWarning ("Function not implemented: OContact::toExtraMap()");
993 QMap <QString,QString> useless; 991 QMap <QString,QString> useless;
994 return useless; 992 return useless;
995} 993}
996 994
997class QString OContact::recordField( int pos ) const 995class QString OContact::recordField( int pos ) const
998{ 996{
999 QStringList SLFIELDS = fields(); // ?? why this ? (se) 997 QStringList SLFIELDS = fields(); // ?? why this ? (se)
1000 return SLFIELDS[pos]; 998 return SLFIELDS[pos];
1001} 999}
1002 1000
1003// In future releases, we should store birthday and anniversary 1001// In future releases, we should store birthday and anniversary
1004// internally as QDate instead of QString ! 1002// internally as QDate instead of QString !
1005// QString is always too complicate to interprete (DD.MM.YY, DD/MM/YY, MM/DD/YY, etc..)(se) 1003// QString is always too complicate to interprete (DD.MM.YY, DD/MM/YY, MM/DD/YY, etc..)(se)
1006 1004
1007/*! \fn void OContact::setBirthday( const QDate& date ) 1005/*! \fn void OContact::setBirthday( const QDate& date )
1008 Sets the birthday for the contact to \a date. If date is null 1006 Sets the birthday for the contact to \a date. If date is null
1009 the current stored date will be removed. 1007 the current stored date will be removed.
1010*/ 1008*/
1011void OContact::setBirthday( const QDate &v ) 1009void OContact::setBirthday( const QDate &v )
1012{ 1010{
1013 if ( v.isNull() ){ 1011 if ( v.isNull() ){
1014 qWarning( "Remove Birthday"); 1012 qWarning( "Remove Birthday");
1015 replace( Qtopia::Birthday, QString::null ); 1013 replace( Qtopia::Birthday, QString::null );
1016 return; 1014 return;
1017 } 1015 }
1018 1016
1019 if ( v.isValid() ) 1017 if ( v.isValid() )
1020 replace( Qtopia::Birthday, TimeConversion::toString( v ) ); 1018 replace( Qtopia::Birthday, OConversion::dateToString( v ) );
1021 1019
1022} 1020}
1023 1021
1024 1022
1025/*! \fn void OContact::setAnniversary( const QDate &date ) 1023/*! \fn void OContact::setAnniversary( const QDate &date )
1026 Sets the anniversary of the contact to \a date. If date is 1024 Sets the anniversary of the contact to \a date. If date is
1027 null, the current stored date will be removed. 1025 null, the current stored date will be removed.
1028*/ 1026*/
1029void OContact::setAnniversary( const QDate &v ) 1027void OContact::setAnniversary( const QDate &v )
1030{ 1028{
1031 if ( v.isNull() ){ 1029 if ( v.isNull() ){
1032 qWarning( "Remove Anniversary"); 1030 qWarning( "Remove Anniversary");
1033 replace( Qtopia::Anniversary, QString::null ); 1031 replace( Qtopia::Anniversary, QString::null );
1034 return; 1032 return;
1035 } 1033 }
1036 1034
1037 if ( v.isValid() ) 1035 if ( v.isValid() )
1038 replace( Qtopia::Anniversary, TimeConversion::toString( v ) ); 1036 replace( Qtopia::Anniversary, OConversion::dateToString( v ) );
1039} 1037}
1040 1038
1041/*! \fn QDate OContact::birthday() const 1039/*! \fn QDate OContact::birthday() const
1042 Returns the birthday of the contact. 1040 Returns the birthday of the contact.
1043*/ 1041*/
1044QDate OContact::birthday() const 1042QDate OContact::birthday() const
1045{ 1043{
1046 QString str = find( Qtopia::Birthday ); 1044 QString str = find( Qtopia::Birthday );
1047 qWarning ("Birthday %s", str.latin1() ); 1045 qWarning ("Birthday %s", str.latin1() );
1048 if ( !str.isEmpty() ) 1046 if ( !str.isEmpty() )
1049 return TimeConversion::fromString ( str ); 1047 return OConversion::dateFromString ( str );
1050 else 1048 else
1051 return QDate(); 1049 return QDate();
1052} 1050}
1053 1051
1054 1052
1055/*! \fn QDate OContact::anniversary() const 1053/*! \fn QDate OContact::anniversary() const
1056 Returns the anniversary of the contact. 1054 Returns the anniversary of the contact.
1057*/ 1055*/
1058QDate OContact::anniversary() const 1056QDate OContact::anniversary() const
1059{ 1057{
1060 QDate empty; 1058 QDate empty;
1061 QString str = find( Qtopia::Anniversary ); 1059 QString str = find( Qtopia::Anniversary );
1062 qWarning ("Anniversary %s", str.latin1() ); 1060 qWarning ("Anniversary %s", str.latin1() );
1063 if ( !str.isEmpty() ) 1061 if ( !str.isEmpty() )
1064 return TimeConversion::fromString ( str ); 1062 return OConversion::dateFromString ( str );
1065 else 1063 else
1066 return empty; 1064 return empty;
1067} 1065}
1068 1066
1069 1067
1070void OContact::insertEmail( const QString &v ) 1068void OContact::insertEmail( const QString &v )
1071{ 1069{
1072 //qDebug("insertEmail %s", v.latin1()); 1070 //qDebug("insertEmail %s", v.latin1());
1073 QString e = v.simplifyWhiteSpace(); 1071 QString e = v.simplifyWhiteSpace();
1074 QString def = defaultEmail(); 1072 QString def = defaultEmail();
1075 1073
1076 // if no default, set it as the default email and don't insert 1074 // if no default, set it as the default email and don't insert
1077 if ( def.isEmpty() ) { 1075 if ( def.isEmpty() ) {
1078 setDefaultEmail( e ); // will insert into the list for us 1076 setDefaultEmail( e ); // will insert into the list for us
1079 return; 1077 return;
1080 } 1078 }
1081 1079
1082 // otherwise, insert assuming doesn't already exist 1080 // otherwise, insert assuming doesn't already exist
1083 QString emailsStr = find( Qtopia::Emails ); 1081 QString emailsStr = find( Qtopia::Emails );
1084 if ( emailsStr.contains( e )) 1082 if ( emailsStr.contains( e ))
1085 return; 1083 return;
1086 if ( !emailsStr.isEmpty() ) 1084 if ( !emailsStr.isEmpty() )
1087 emailsStr += emailSeparator(); 1085 emailsStr += emailSeparator();
1088 emailsStr += e; 1086 emailsStr += e;
1089 replace( Qtopia::Emails, emailsStr ); 1087 replace( Qtopia::Emails, emailsStr );
1090} 1088}
1091 1089
1092void OContact::removeEmail( const QString &v ) 1090void OContact::removeEmail( const QString &v )
1093{ 1091{
1094 QString e = v.simplifyWhiteSpace(); 1092 QString e = v.simplifyWhiteSpace();
1095 QString def = defaultEmail(); 1093 QString def = defaultEmail();
1096 QString emailsStr = find( Qtopia::Emails ); 1094 QString emailsStr = find( Qtopia::Emails );
1097 QStringList emails = emailList(); 1095 QStringList emails = emailList();
1098 1096
1099 // otherwise, must first contain it 1097 // otherwise, must first contain it
1100 if ( !emailsStr.contains( e ) ) 1098 if ( !emailsStr.contains( e ) )
1101 return; 1099 return;
1102 1100
1103 // remove it 1101 // remove it
1104 //qDebug(" removing email from list %s", e.latin1()); 1102 //qDebug(" removing email from list %s", e.latin1());
1105 emails.remove( e ); 1103 emails.remove( e );
1106 // reset the string 1104 // reset the string
1107 emailsStr = emails.join(emailSeparator()); // Sharp's brain dead separator 1105 emailsStr = emails.join(emailSeparator()); // Sharp's brain dead separator
1108 replace( Qtopia::Emails, emailsStr ); 1106 replace( Qtopia::Emails, emailsStr );
1109 1107
1110 // if default, then replace the default email with the first one 1108 // if default, then replace the default email with the first one
1111 if ( def == e ) { 1109 if ( def == e ) {
1112 //qDebug("removeEmail is default; setting new default"); 1110 //qDebug("removeEmail is default; setting new default");
1113 if ( !emails.count() ) 1111 if ( !emails.count() )
1114 clearEmails(); 1112 clearEmails();
1115 else // setDefaultEmail will remove e from the list 1113 else // setDefaultEmail will remove e from the list
1116 setDefaultEmail( emails.first() ); 1114 setDefaultEmail( emails.first() );
1117 } 1115 }
1118} 1116}
1119void OContact::clearEmails() 1117void OContact::clearEmails()
1120{ 1118{
1121 mMap.remove( Qtopia::DefaultEmail ); 1119 mMap.remove( Qtopia::DefaultEmail );
1122 mMap.remove( Qtopia::Emails ); 1120 mMap.remove( Qtopia::Emails );
1123} 1121}
1124void OContact::setDefaultEmail( const QString &v ) 1122void OContact::setDefaultEmail( const QString &v )
1125{ 1123{
1126 QString e = v.simplifyWhiteSpace(); 1124 QString e = v.simplifyWhiteSpace();
1127 1125
1128 //qDebug("OContact::setDefaultEmail %s", e.latin1()); 1126 //qDebug("OContact::setDefaultEmail %s", e.latin1());
1129 replace( Qtopia::DefaultEmail, e ); 1127 replace( Qtopia::DefaultEmail, e );
1130 1128
1131 if ( !e.isEmpty() ) 1129 if ( !e.isEmpty() )
1132 insertEmail( e ); 1130 insertEmail( e );
1133 1131
1134} 1132}
1135 1133
1136void OContact::insertEmails( const QStringList &v ) 1134void OContact::insertEmails( const QStringList &v )
1137{ 1135{
1138 for ( QStringList::ConstIterator it = v.begin(); it != v.end(); ++it ) 1136 for ( QStringList::ConstIterator it = v.begin(); it != v.end(); ++it )
1139 insertEmail( *it ); 1137 insertEmail( *it );
1140} 1138}
1141int OContact::rtti() { 1139int OContact::rtti() {
1142 return OPimResolver::AddressBook; 1140 return OPimResolver::AddressBook;
1143} 1141}
1144void OContact::setUid( int i ) 1142void OContact::setUid( int i )
1145{ 1143{
1146 OPimRecord::setUid(i); 1144 OPimRecord::setUid(i);
1147 replace( Qtopia::AddressUid , QString::number(i)); 1145 replace( Qtopia::AddressUid , QString::number(i));
1148} 1146}
diff --git a/libopie/pim/ocontact.h b/libopie/pim/ocontact.h
index 25fa0e7..50f6176 100644
--- a/libopie/pim/ocontact.h
+++ b/libopie/pim/ocontact.h
@@ -1,244 +1,242 @@
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 by Stefan Eilers (eilers.stefan@epost.de) 3** Copyright (C) 2002-2003 by Stefan Eilers (eilers.stefan@epost.de)
4**
5** This file is part of the Qtopia Environment.
6** 4**
7** 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
8** 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
9** Foundation and appearing in the file LICENSE.GPL included in the 7** Foundation and appearing in the file LICENSE.GPL included in the
10** packaging of this file. 8** packaging of this file.
11** 9**
12** 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
13** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 11** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
14** 12**
15** See http://www.trolltech.com/gpl/ for GPL licensing information. 13** See http://www.trolltech.com/gpl/ for GPL licensing information.
16** 14**
17** Contact info@trolltech.com if any conditions of this licensing are 15** Contact info@trolltech.com if any conditions of this licensing are
18** not clear to you. 16** not clear to you.
19** 17**
20**********************************************************************/ 18**********************************************************************/
21 19
22#ifndef __OCONTACT_H__ 20#ifndef __OCONTACT_H__
23#define __OCONTACT_H__ 21#define __OCONTACT_H__
24 22
25#include <opie/opimrecord.h> 23#include <opie/opimrecord.h>
26#include <qpe/recordfields.h> 24#include <qpe/recordfields.h>
27 25
28#include <qdatetime.h> 26#include <qdatetime.h>
29#include <qstringlist.h> 27#include <qstringlist.h>
30 28
31#if defined(QPC_TEMPLATEDLL) 29#if defined(QPC_TEMPLATEDLL)
32// MOC_SKIP_BEGIN 30// MOC_SKIP_BEGIN
33QPC_TEMPLATEEXTERN template class QPC_EXPORT QMap<int, QString>; 31QPC_TEMPLATEEXTERN template class QPC_EXPORT QMap<int, QString>;
34// MOC_SKIP_END 32// MOC_SKIP_END
35#endif 33#endif
36 34
37class ContactPrivate; 35class ContactPrivate;
38 36
39/** 37/**
40 * OContact class represents a specialised PIM Record for contacts. 38 * OContact class represents a specialised PIM Record for contacts.
41 * It does store all kind of persopn related information. 39 * It does store all kind of persopn related information.
42 * 40 *
43 * @short Contact Container 41 * @short Contact Container
44 * @author TT, Stefan Eiler, Holger Freyther 42 * @author TT, Stefan Eiler, Holger Freyther
45 */ 43 */
46class QPC_EXPORT OContact : public OPimRecord 44class QPC_EXPORT OContact : public OPimRecord
47{ 45{
48 friend class DataSet; 46 friend class DataSet;
49public: 47public:
50 OContact(); 48 OContact();
51 OContact( const QMap<int, QString> &fromMap ); 49 OContact( const QMap<int, QString> &fromMap );
52 virtual ~OContact(); 50 virtual ~OContact();
53 51
54 /* 52 /*
55 * do we need to inline them 53 * do we need to inline them
56 * if yes do we need to inline them this way? 54 * if yes do we need to inline them this way?
57 * -zecke 55 * -zecke
58 */ 56 */
59 void setTitle( const QString &v ) { replace( Qtopia::Title, v ); } 57 void setTitle( const QString &v ) { replace( Qtopia::Title, v ); }
60 void setFirstName( const QString &v ) { replace( Qtopia::FirstName, v ); } 58 void setFirstName( const QString &v ) { replace( Qtopia::FirstName, v ); }
61 void setMiddleName( const QString &v ) { replace( Qtopia::MiddleName, v ); } 59 void setMiddleName( const QString &v ) { replace( Qtopia::MiddleName, v ); }
62 void setLastName( const QString &v ) { replace( Qtopia::LastName, v ); } 60 void setLastName( const QString &v ) { replace( Qtopia::LastName, v ); }
63 void setSuffix( const QString &v ) { replace( Qtopia::Suffix, v ); } 61 void setSuffix( const QString &v ) { replace( Qtopia::Suffix, v ); }
64 void setFileAs( const QString &v ) { replace( Qtopia::FileAs, v ); } 62 void setFileAs( const QString &v ) { replace( Qtopia::FileAs, v ); }
65 void setFileAs(); 63 void setFileAs();
66 64
67 // default email address 65 // default email address
68 void setDefaultEmail( const QString &v ); 66 void setDefaultEmail( const QString &v );
69 // inserts email to list and ensure's doesn't already exist 67 // inserts email to list and ensure's doesn't already exist
70 void insertEmail( const QString &v ); 68 void insertEmail( const QString &v );
71 void removeEmail( const QString &v ); 69 void removeEmail( const QString &v );
72 void clearEmails(); 70 void clearEmails();
73 void insertEmails( const QStringList &v ); 71 void insertEmails( const QStringList &v );
74 72
75 // home 73 // home
76 void setHomeStreet( const QString &v ) { replace( Qtopia::HomeStreet, v ); } 74 void setHomeStreet( const QString &v ) { replace( Qtopia::HomeStreet, v ); }
77 void setHomeCity( const QString &v ) { replace( Qtopia::HomeCity, v ); } 75 void setHomeCity( const QString &v ) { replace( Qtopia::HomeCity, v ); }
78 void setHomeState( const QString &v ) { replace( Qtopia::HomeState, v ); } 76 void setHomeState( const QString &v ) { replace( Qtopia::HomeState, v ); }
79 void setHomeZip( const QString &v ) { replace( Qtopia::HomeZip, v ); } 77 void setHomeZip( const QString &v ) { replace( Qtopia::HomeZip, v ); }
80 void setHomeCountry( const QString &v ) { replace( Qtopia::HomeCountry, v ); } 78 void setHomeCountry( const QString &v ) { replace( Qtopia::HomeCountry, v ); }
81 void setHomePhone( const QString &v ) { replace( Qtopia::HomePhone, v ); } 79 void setHomePhone( const QString &v ) { replace( Qtopia::HomePhone, v ); }
82 void setHomeFax( const QString &v ) { replace( Qtopia::HomeFax, v ); } 80 void setHomeFax( const QString &v ) { replace( Qtopia::HomeFax, v ); }
83 void setHomeMobile( const QString &v ) { replace( Qtopia::HomeMobile, v ); } 81 void setHomeMobile( const QString &v ) { replace( Qtopia::HomeMobile, v ); }
84 void setHomeWebpage( const QString &v ) { replace( Qtopia::HomeWebPage, v ); } 82 void setHomeWebpage( const QString &v ) { replace( Qtopia::HomeWebPage, v ); }
85 83
86 // business 84 // business
87 void setCompany( const QString &v ) { replace( Qtopia::Company, v ); } 85 void setCompany( const QString &v ) { replace( Qtopia::Company, v ); }
88 void setBusinessStreet( const QString &v ) { replace( Qtopia::BusinessStreet, v ); } 86 void setBusinessStreet( const QString &v ) { replace( Qtopia::BusinessStreet, v ); }
89 void setBusinessCity( const QString &v ) { replace( Qtopia::BusinessCity, v ); } 87 void setBusinessCity( const QString &v ) { replace( Qtopia::BusinessCity, v ); }
90 void setBusinessState( const QString &v ) { replace( Qtopia::BusinessState, v ); } 88 void setBusinessState( const QString &v ) { replace( Qtopia::BusinessState, v ); }
91 void setBusinessZip( const QString &v ) { replace( Qtopia::BusinessZip, v ); } 89 void setBusinessZip( const QString &v ) { replace( Qtopia::BusinessZip, v ); }
92 void setBusinessCountry( const QString &v ) { replace( Qtopia::BusinessCountry, v ); } 90 void setBusinessCountry( const QString &v ) { replace( Qtopia::BusinessCountry, v ); }
93 void setBusinessWebpage( const QString &v ) { replace( Qtopia::BusinessWebPage, v ); } 91 void setBusinessWebpage( const QString &v ) { replace( Qtopia::BusinessWebPage, v ); }
94 void setJobTitle( const QString &v ) { replace( Qtopia::JobTitle, v ); } 92 void setJobTitle( const QString &v ) { replace( Qtopia::JobTitle, v ); }
95 void setDepartment( const QString &v ) { replace( Qtopia::Department, v ); } 93 void setDepartment( const QString &v ) { replace( Qtopia::Department, v ); }
96 void setOffice( const QString &v ) { replace( Qtopia::Office, v ); } 94 void setOffice( const QString &v ) { replace( Qtopia::Office, v ); }
97 void setBusinessPhone( const QString &v ) { replace( Qtopia::BusinessPhone, v ); } 95 void setBusinessPhone( const QString &v ) { replace( Qtopia::BusinessPhone, v ); }
98 void setBusinessFax( const QString &v ) { replace( Qtopia::BusinessFax, v ); } 96 void setBusinessFax( const QString &v ) { replace( Qtopia::BusinessFax, v ); }
99 void setBusinessMobile( const QString &v ) { replace( Qtopia::BusinessMobile, v ); } 97 void setBusinessMobile( const QString &v ) { replace( Qtopia::BusinessMobile, v ); }
100 void setBusinessPager( const QString &v ) { replace( Qtopia::BusinessPager, v ); } 98 void setBusinessPager( const QString &v ) { replace( Qtopia::BusinessPager, v ); }
101 void setProfession( const QString &v ) { replace( Qtopia::Profession, v ); } 99 void setProfession( const QString &v ) { replace( Qtopia::Profession, v ); }
102 void setAssistant( const QString &v ) { replace( Qtopia::Assistant, v ); } 100 void setAssistant( const QString &v ) { replace( Qtopia::Assistant, v ); }
103 void setManager( const QString &v ) { replace( Qtopia::Manager, v ); } 101 void setManager( const QString &v ) { replace( Qtopia::Manager, v ); }
104 102
105 // personal 103 // personal
106 void setSpouse( const QString &v ) { replace( Qtopia::Spouse, v ); } 104 void setSpouse( const QString &v ) { replace( Qtopia::Spouse, v ); }
107 void setGender( const QString &v ) { replace( Qtopia::Gender, v ); } 105 void setGender( const QString &v ) { replace( Qtopia::Gender, v ); }
108 void setBirthday( const QDate &v ); 106 void setBirthday( const QDate &v );
109 void setAnniversary( const QDate &v ); 107 void setAnniversary( const QDate &v );
110 void setNickname( const QString &v ) { replace( Qtopia::Nickname, v ); } 108 void setNickname( const QString &v ) { replace( Qtopia::Nickname, v ); }
111 void setChildren( const QString &v ); 109 void setChildren( const QString &v );
112 110
113 // other 111 // other
114 void setNotes( const QString &v ) { replace( Qtopia::Notes, v); } 112 void setNotes( const QString &v ) { replace( Qtopia::Notes, v); }
115 113
116 bool match( const QString &regexp ) const; 114 bool match( const QString &regexp ) const;
117 bool match( const QRegExp &regexp ) const; 115 bool match( const QRegExp &regexp ) const;
118 116
119// // custom 117// // custom
120// void setCustomField( const QString &key, const QString &v ) 118// void setCustomField( const QString &key, const QString &v )
121// { replace(Custom- + key, v ); } 119// { replace(Custom- + key, v ); }
122 120
123 // name 121 // name
124 QString fullName() const; 122 QString fullName() const;
125 QString title() const { return find( Qtopia::Title ); } 123 QString title() const { return find( Qtopia::Title ); }
126 QString firstName() const { return find( Qtopia::FirstName ); } 124 QString firstName() const { return find( Qtopia::FirstName ); }
127 QString middleName() const { return find( Qtopia::MiddleName ); } 125 QString middleName() const { return find( Qtopia::MiddleName ); }
128 QString lastName() const { return find( Qtopia::LastName ); } 126 QString lastName() const { return find( Qtopia::LastName ); }
129 QString suffix() const { return find( Qtopia::Suffix ); } 127 QString suffix() const { return find( Qtopia::Suffix ); }
130 QString fileAs() const { return find( Qtopia::FileAs ); } 128 QString fileAs() const { return find( Qtopia::FileAs ); }
131 129
132 // email 130 // email
133 QString defaultEmail() const { return find( Qtopia::DefaultEmail ); } 131 QString defaultEmail() const { return find( Qtopia::DefaultEmail ); }
134 QStringList emailList() const; 132 QStringList emailList() const;
135 133
136 // home 134 // home
137 /* 135 /*
138 * OPimAddress address(enum Location)const; 136 * OPimAddress address(enum Location)const;
139 * would be some how nicer... 137 * would be some how nicer...
140 * -zecke 138 * -zecke
141 */ 139 */
142 QString homeStreet() const { return find( Qtopia::HomeStreet ); } 140 QString homeStreet() const { return find( Qtopia::HomeStreet ); }
143 QString homeCity() const { return find( Qtopia::HomeCity ); } 141 QString homeCity() const { return find( Qtopia::HomeCity ); }
144 QString homeState() const { return find( Qtopia::HomeState ); } 142 QString homeState() const { return find( Qtopia::HomeState ); }
145 QString homeZip() const { return find( Qtopia::HomeZip ); } 143 QString homeZip() const { return find( Qtopia::HomeZip ); }
146 QString homeCountry() const { return find( Qtopia::HomeCountry ); } 144 QString homeCountry() const { return find( Qtopia::HomeCountry ); }
147 QString homePhone() const { return find( Qtopia::HomePhone ); } 145 QString homePhone() const { return find( Qtopia::HomePhone ); }
148 QString homeFax() const { return find( Qtopia::HomeFax ); } 146 QString homeFax() const { return find( Qtopia::HomeFax ); }
149 QString homeMobile() const { return find( Qtopia::HomeMobile ); } 147 QString homeMobile() const { return find( Qtopia::HomeMobile ); }
150 QString homeWebpage() const { return find( Qtopia::HomeWebPage ); } 148 QString homeWebpage() const { return find( Qtopia::HomeWebPage ); }
151 /** Multi line string containing all non-empty address info in the form 149 /** Multi line string containing all non-empty address info in the form
152 * Street 150 * Street
153 * City, State Zip 151 * City, State Zip
154 * Country 152 * Country
155 */ 153 */
156 QString displayHomeAddress() const; 154 QString displayHomeAddress() const;
157 155
158 // business 156 // business
159 QString company() const { return find( Qtopia::Company ); } 157 QString company() const { return find( Qtopia::Company ); }
160 QString businessStreet() const { return find( Qtopia::BusinessStreet ); } 158 QString businessStreet() const { return find( Qtopia::BusinessStreet ); }
161 QString businessCity() const { return find( Qtopia::BusinessCity ); } 159 QString businessCity() const { return find( Qtopia::BusinessCity ); }
162 QString businessState() const { return find( Qtopia::BusinessState ); } 160 QString businessState() const { return find( Qtopia::BusinessState ); }
163 QString businessZip() const { return find( Qtopia::BusinessZip ); } 161 QString businessZip() const { return find( Qtopia::BusinessZip ); }
164 QString businessCountry() const { return find( Qtopia::BusinessCountry ); } 162 QString businessCountry() const { return find( Qtopia::BusinessCountry ); }
165 QString businessWebpage() const { return find( Qtopia::BusinessWebPage ); } 163 QString businessWebpage() const { return find( Qtopia::BusinessWebPage ); }
166 QString jobTitle() const { return find( Qtopia::JobTitle ); } 164 QString jobTitle() const { return find( Qtopia::JobTitle ); }
167 QString department() const { return find( Qtopia::Department ); } 165 QString department() const { return find( Qtopia::Department ); }
168 QString office() const { return find( Qtopia::Office ); } 166 QString office() const { return find( Qtopia::Office ); }
169 QString businessPhone() const { return find( Qtopia::BusinessPhone ); } 167 QString businessPhone() const { return find( Qtopia::BusinessPhone ); }
170 QString businessFax() const { return find( Qtopia::BusinessFax ); } 168 QString businessFax() const { return find( Qtopia::BusinessFax ); }
171 QString businessMobile() const { return find( Qtopia::BusinessMobile ); } 169 QString businessMobile() const { return find( Qtopia::BusinessMobile ); }
172 QString businessPager() const { return find( Qtopia::BusinessPager ); } 170 QString businessPager() const { return find( Qtopia::BusinessPager ); }
173 QString profession() const { return find( Qtopia::Profession ); } 171 QString profession() const { return find( Qtopia::Profession ); }
174 QString assistant() const { return find( Qtopia::Assistant ); } 172 QString assistant() const { return find( Qtopia::Assistant ); }
175 QString manager() const { return find( Qtopia::Manager ); } 173 QString manager() const { return find( Qtopia::Manager ); }
176 /** Multi line string containing all non-empty address info in the form 174 /** Multi line string containing all non-empty address info in the form
177 * Street 175 * Street
178 * City, State Zip 176 * City, State Zip
179 * Country 177 * Country
180 */ 178 */
181 QString displayBusinessAddress() const; 179 QString displayBusinessAddress() const;
182 180
183 //personal 181 //personal
184 QString spouse() const { return find( Qtopia::Spouse ); } 182 QString spouse() const { return find( Qtopia::Spouse ); }
185 QString gender() const { return find( Qtopia::Gender ); } 183 QString gender() const { return find( Qtopia::Gender ); }
186 QDate birthday() const; 184 QDate birthday() const;
187 QDate anniversary() const; 185 QDate anniversary() const;
188 QString nickname() const { return find( Qtopia::Nickname ); } 186 QString nickname() const { return find( Qtopia::Nickname ); }
189 QString children() const { return find( Qtopia::Children ); } 187 QString children() const { return find( Qtopia::Children ); }
190 QStringList childrenList() const; 188 QStringList childrenList() const;
191 189
192 // other 190 // other
193 QString notes() const { return find( Qtopia::Notes ); } 191 QString notes() const { return find( Qtopia::Notes ); }
194 QString groups() const { return find( Qtopia::Groups ); } 192 QString groups() const { return find( Qtopia::Groups ); }
195 QStringList groupList() const; 193 QStringList groupList() const;
196 194
197// // custom 195// // custom
198// const QString &customField( const QString &key ) 196// const QString &customField( const QString &key )
199// { return find( Custom- + key ); } 197// { return find( Custom- + key ); }
200 198
201 199
202 QString toRichText() const; 200 QString toRichText() const;
203 QMap<int, QString> toMap() const; 201 QMap<int, QString> toMap() const;
204 QString field( int key ) const { return find( key ); } 202 QString field( int key ) const { return find( key ); }
205 203
206 204
207 void setUid( int i ); 205 void setUid( int i );
208 206
209 QString toShortText()const; 207 QString toShortText()const;
210 QString OContact::type()const; 208 QString OContact::type()const;
211 QMap<QString,QString> OContact::toExtraMap() const; 209 QMap<QString,QString> OContact::toExtraMap() const;
212 class QString OContact::recordField(int) const; 210 class QString OContact::recordField(int) const;
213 211
214 // Why private ? (eilers,se) 212 // Why private ? (eilers,se)
215 QString emailSeparator() const { return " "; } 213 QString emailSeparator() const { return " "; }
216 // the emails should be seperated by a comma 214 // the emails should be seperated by a comma
217 void setEmails( const QString &v ); 215 void setEmails( const QString &v );
218 QString emails() const { return find( Qtopia::Emails ); } 216 QString emails() const { return find( Qtopia::Emails ); }
219 static int rtti(); 217 static int rtti();
220 218
221 219
222private: 220private:
223 // The XML-Backend needs some access to the private functions 221 // The XML-Backend needs some access to the private functions
224 friend class OContactAccessBackend_XML; 222 friend class OContactAccessBackend_XML;
225 223
226 void insert( int key, const QString &value ); 224 void insert( int key, const QString &value );
227 void replace( int key, const QString &value ); 225 void replace( int key, const QString &value );
228 QString find( int key ) const; 226 QString find( int key ) const;
229 static QStringList fields(); 227 static QStringList fields();
230 228
231 void save( QString &buf ) const; 229 void save( QString &buf ) const;
232 230
233 QString displayAddress( const QString &street, 231 QString displayAddress( const QString &street,
234 const QString &city, 232 const QString &city,
235 const QString &state, 233 const QString &state,
236 const QString &zip, 234 const QString &zip,
237 const QString &country ) const; 235 const QString &country ) const;
238 236
239 QMap<int, QString> mMap; 237 QMap<int, QString> mMap;
240 ContactPrivate *d; 238 ContactPrivate *d;
241}; 239};
242 240
243 241
244#endif 242#endif
diff --git a/libopie/pim/oconversion.cpp b/libopie/pim/oconversion.cpp
new file mode 100644
index 0000000..c3aa89b
--- a/dev/null
+++ b/libopie/pim/oconversion.cpp
@@ -0,0 +1,76 @@
1/**********************************************************************
2** Copyright (C) 2003 by Stefan Eilers (eilers.stefan@epost.de)
3**
4** This file may be distributed and/or modified under the terms of the
5** GNU Lesser General Public License version 2 as published by the Free Software
6** Foundation and appearing in the file LICENSE.GPL included in the
7** packaging of this file.
8**
9** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
10** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
11**
12**********************************************************************/
13
14#include "oconversion.h"
15#include <qpe/timeconversion.h>
16
17
18QString OConversion::dateToString( const QDate &d )
19{
20 if ( d.isNull() || !d.isValid() )
21 return QString::null;
22
23 // ISO format in year, month, day (YYYYMMDD); e.g. 20021231
24 QString year = QString::number( d.year() );
25 QString month = QString::number( d.month() );
26 month = month.rightJustify( 2, '0' );
27 QString day = QString::number( d.day() );
28 day = day.rightJustify( 2, '0' );
29
30 QString str = year + month + day;
31 //qDebug( "\tPimContact dateToStr = %s", str.latin1() );
32
33 return str;
34}
35
36QDate OConversion::dateFromString( const QString& s )
37{
38 QDate date;
39
40 if ( s.isEmpty() )
41 return date;
42
43 // Be backward compatible to old Opie format:
44 // Try to load old format. If it fails, try new ISO-Format!
45 date = TimeConversion::fromString ( s );
46 if ( date.isValid() )
47 return date;
48
49 // Read ISO-Format (YYYYMMDD)
50 int year = s.mid(0, 4).toInt();
51 int month = s.mid(4,2).toInt();
52 int day = s.mid(6,2).toInt();
53
54 // do some quick sanity checking
55 if ( year < 1900 || year > 3000 ) {
56 qWarning( "PimContact year is not in range");
57 return date;
58 }
59 if ( month < 0 || month > 12 ) {
60 qWarning( "PimContact month is not in range");
61 return date;
62 }
63 if ( day < 0 || day > 31 ) {
64 qWarning( "PimContact day is not in range");
65 return date;
66 }
67
68 date.setYMD( year, month, day );
69 if ( !date.isValid() ) {
70 qWarning( "PimContact date is not valid");
71 return QDate();
72 }
73
74 return date;
75}
76
diff --git a/libopie/pim/oconversion.h b/libopie/pim/oconversion.h
new file mode 100644
index 0000000..6540889
--- a/dev/null
+++ b/libopie/pim/oconversion.h
@@ -0,0 +1,36 @@
1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** Copyright (C) 2002-2003 by Stefan Eilers (eilers.stefan@epost.de)
4**
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
7** Foundation and appearing in the file LICENSE.GPL included in the
8** packaging of this file.
9**
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.
12**
13** See http://www.trolltech.com/gpl/ for GPL licensing information.
14**
15** Contact info@trolltech.com if any conditions of this licensing are
16** not clear to you.
17**********************************************************************/
18
19#ifndef __oconversion_h__
20#define __oconversion_h__
21
22/* #include <time.h> */
23/* #include <sys/types.h> */
24#include <qdatetime.h>
25
26
27class OConversion
28{
29public:
30 static QString dateToString( const QDate &d );
31 static QDate dateFromString( const QString &datestr );
32
33};
34
35#endif // __oconversion_h__
36
diff --git a/libopie2/opiepim/core/oconversion.cpp b/libopie2/opiepim/core/oconversion.cpp
new file mode 100644
index 0000000..c3aa89b
--- a/dev/null
+++ b/libopie2/opiepim/core/oconversion.cpp
@@ -0,0 +1,76 @@
1/**********************************************************************
2** Copyright (C) 2003 by Stefan Eilers (eilers.stefan@epost.de)
3**
4** This file may be distributed and/or modified under the terms of the
5** GNU Lesser General Public License version 2 as published by the Free Software
6** Foundation and appearing in the file LICENSE.GPL included in the
7** packaging of this file.
8**
9** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
10** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
11**
12**********************************************************************/
13
14#include "oconversion.h"
15#include <qpe/timeconversion.h>
16
17
18QString OConversion::dateToString( const QDate &d )
19{
20 if ( d.isNull() || !d.isValid() )
21 return QString::null;
22
23 // ISO format in year, month, day (YYYYMMDD); e.g. 20021231
24 QString year = QString::number( d.year() );
25 QString month = QString::number( d.month() );
26 month = month.rightJustify( 2, '0' );
27 QString day = QString::number( d.day() );
28 day = day.rightJustify( 2, '0' );
29
30 QString str = year + month + day;
31 //qDebug( "\tPimContact dateToStr = %s", str.latin1() );
32
33 return str;
34}
35
36QDate OConversion::dateFromString( const QString& s )
37{
38 QDate date;
39
40 if ( s.isEmpty() )
41 return date;
42
43 // Be backward compatible to old Opie format:
44 // Try to load old format. If it fails, try new ISO-Format!
45 date = TimeConversion::fromString ( s );
46 if ( date.isValid() )
47 return date;
48
49 // Read ISO-Format (YYYYMMDD)
50 int year = s.mid(0, 4).toInt();
51 int month = s.mid(4,2).toInt();
52 int day = s.mid(6,2).toInt();
53
54 // do some quick sanity checking
55 if ( year < 1900 || year > 3000 ) {
56 qWarning( "PimContact year is not in range");
57 return date;
58 }
59 if ( month < 0 || month > 12 ) {
60 qWarning( "PimContact month is not in range");
61 return date;
62 }
63 if ( day < 0 || day > 31 ) {
64 qWarning( "PimContact day is not in range");
65 return date;
66 }
67
68 date.setYMD( year, month, day );
69 if ( !date.isValid() ) {
70 qWarning( "PimContact date is not valid");
71 return QDate();
72 }
73
74 return date;
75}
76
diff --git a/libopie2/opiepim/core/oconversion.h b/libopie2/opiepim/core/oconversion.h
new file mode 100644
index 0000000..6540889
--- a/dev/null
+++ b/libopie2/opiepim/core/oconversion.h
@@ -0,0 +1,36 @@
1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** Copyright (C) 2002-2003 by Stefan Eilers (eilers.stefan@epost.de)
4**
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
7** Foundation and appearing in the file LICENSE.GPL included in the
8** packaging of this file.
9**
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.
12**
13** See http://www.trolltech.com/gpl/ for GPL licensing information.
14**
15** Contact info@trolltech.com if any conditions of this licensing are
16** not clear to you.
17**********************************************************************/
18
19#ifndef __oconversion_h__
20#define __oconversion_h__
21
22/* #include <time.h> */
23/* #include <sys/types.h> */
24#include <qdatetime.h>
25
26
27class OConversion
28{
29public:
30 static QString dateToString( const QDate &d );
31 static QDate dateFromString( const QString &datestr );
32
33};
34
35#endif // __oconversion_h__
36
diff --git a/libopie2/opiepim/ocontact.cpp b/libopie2/opiepim/ocontact.cpp
index 9cccfc8..96a5f65 100644
--- a/libopie2/opiepim/ocontact.cpp
+++ b/libopie2/opiepim/ocontact.cpp
@@ -1,284 +1,282 @@
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 by Stefan Eilers (eilers.stefan@epost.de) 3** Copyright (C) 2002-2003 by Stefan Eilers (eilers.stefan@epost.de)
4**
5** This file is part of the Qtopia Environment.
6** 4**
7** 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
8** 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
9** Foundation and appearing in the file LICENSE.GPL included in the 7** Foundation and appearing in the file LICENSE.GPL included in the
10** packaging of this file. 8** packaging of this file.
11** 9**
12** 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
13** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 11** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
14** 12**
15** See http://www.trolltech.com/gpl/ for GPL licensing information. 13** See http://www.trolltech.com/gpl/ for GPL licensing information.
16** 14**
17** Contact info@trolltech.com if any conditions of this licensing are 15** Contact info@trolltech.com if any conditions of this licensing are
18** not clear to you. 16** not clear to you.
19** 17**
20**********************************************************************/ 18**********************************************************************/
21 19
22#define QTOPIA_INTERNAL_CONTACT_MRE 20#define QTOPIA_INTERNAL_CONTACT_MRE
23 21
24#include "ocontact.h" 22#include "ocontact.h"
25#include "opimresolver.h" 23#include "opimresolver.h"
26 24
27#include <qpe/stringutil.h> 25#include <qpe/stringutil.h>
28#include <qpe/timeconversion.h> 26#include "oconversion.h"
29#include <qpe/timestring.h> 27#include <qpe/timestring.h>
30 28
31#include <qobject.h> 29#include <qobject.h>
32#include <qregexp.h> 30#include <qregexp.h>
33#include <qstylesheet.h> 31#include <qstylesheet.h>
34#include <qfileinfo.h> 32#include <qfileinfo.h>
35#include <qmap.h> 33#include <qmap.h>
36 34
37#include <stdio.h> 35#include <stdio.h>
38 36
39/*! 37/*!
40 \class Contact contact.h 38 \class Contact contact.h
41 \brief The Contact class holds the data of an address book entry. 39 \brief The Contact class holds the data of an address book entry.
42 40
43 This data includes information the name of the person, contact 41 This data includes information the name of the person, contact
44 information, and business information such as deparment and job title. 42 information, and business information such as deparment and job title.
45 43
46 \ingroup qtopiaemb 44 \ingroup qtopiaemb
47 \ingroup qtopiadesktop 45 \ingroup qtopiadesktop
48*/ 46*/
49 47
50 48
51/*! 49/*!
52 Creates a new, empty contact. 50 Creates a new, empty contact.
53*/ 51*/
54OContact::OContact() 52OContact::OContact()
55 : OPimRecord(), mMap(), d( 0 ) 53 : OPimRecord(), mMap(), d( 0 )
56{ 54{
57} 55}
58 56
59/*! 57/*!
60 \internal 58 \internal
61 Creates a new contact. The properties of the contact are 59 Creates a new contact. The properties of the contact are
62 set from \a fromMap. 60 set from \a fromMap.
63*/ 61*/
64OContact::OContact( const QMap<int, QString> &fromMap ) : 62OContact::OContact( const QMap<int, QString> &fromMap ) :
65 OPimRecord(), mMap( fromMap ), d( 0 ) 63 OPimRecord(), mMap( fromMap ), d( 0 )
66{ 64{
67 QString cats = mMap[ Qtopia::AddressCategory ]; 65 QString cats = mMap[ Qtopia::AddressCategory ];
68 if ( !cats.isEmpty() ) 66 if ( !cats.isEmpty() )
69 setCategories( idsFromString( cats ) ); 67 setCategories( idsFromString( cats ) );
70 68
71 QString uidStr = find( Qtopia::AddressUid ); 69 QString uidStr = find( Qtopia::AddressUid );
72 70
73 if ( uidStr.isEmpty() || (uidStr.toInt() == 0) ){ 71 if ( uidStr.isEmpty() || (uidStr.toInt() == 0) ){
74 qWarning( "Invalid UID found. Generate new one.." ); 72 qWarning( "Invalid UID found. Generate new one.." );
75 setUid( uidGen().generate() ); 73 setUid( uidGen().generate() );
76 }else 74 }else
77 setUid( uidStr.toInt() ); 75 setUid( uidStr.toInt() );
78 76
79// if ( !uidStr.isEmpty() ) 77// if ( !uidStr.isEmpty() )
80 // setUid( uidStr.toInt() ); 78 // setUid( uidStr.toInt() );
81} 79}
82 80
83/*! 81/*!
84 Destroys a contact. 82 Destroys a contact.
85*/ 83*/
86OContact::~OContact() 84OContact::~OContact()
87{ 85{
88} 86}
89 87
90/*! \fn void OContact::setTitle( const QString &str ) 88/*! \fn void OContact::setTitle( const QString &str )
91 Sets the title of the contact to \a str. 89 Sets the title of the contact to \a str.
92*/ 90*/
93 91
94/*! \fn void OContact::setFirstName( const QString &str ) 92/*! \fn void OContact::setFirstName( const QString &str )
95 Sets the first name of the contact to \a str. 93 Sets the first name of the contact to \a str.
96*/ 94*/
97 95
98/*! \fn void OContact::setMiddleName( const QString &str ) 96/*! \fn void OContact::setMiddleName( const QString &str )
99 Sets the middle name of the contact to \a str. 97 Sets the middle name of the contact to \a str.
100*/ 98*/
101 99
102/*! \fn void OContact::setLastName( const QString &str ) 100/*! \fn void OContact::setLastName( const QString &str )
103 Sets the last name of the contact to \a str. 101 Sets the last name of the contact to \a str.
104*/ 102*/
105 103
106/*! \fn void OContact::setSuffix( const QString &str ) 104/*! \fn void OContact::setSuffix( const QString &str )
107 Sets the suffix of the contact to \a str. 105 Sets the suffix of the contact to \a str.
108*/ 106*/
109 107
110/*! \fn void OContact::setFileAs( const QString &str ) 108/*! \fn void OContact::setFileAs( const QString &str )
111 Sets the contact to filed as \a str. 109 Sets the contact to filed as \a str.
112*/ 110*/
113 111
114/*! \fn void OContact::setDefaultEmail( const QString &str ) 112/*! \fn void OContact::setDefaultEmail( const QString &str )
115 Sets the default email of the contact to \a str. 113 Sets the default email of the contact to \a str.
116*/ 114*/
117 115
118/*! \fn void OContact::setHomeStreet( const QString &str ) 116/*! \fn void OContact::setHomeStreet( const QString &str )
119 Sets the home street address of the contact to \a str. 117 Sets the home street address of the contact to \a str.
120*/ 118*/
121 119
122/*! \fn void OContact::setHomeCity( const QString &str ) 120/*! \fn void OContact::setHomeCity( const QString &str )
123 Sets the home city of the contact to \a str. 121 Sets the home city of the contact to \a str.
124*/ 122*/
125 123
126/*! \fn void OContact::setHomeState( const QString &str ) 124/*! \fn void OContact::setHomeState( const QString &str )
127 Sets the home state of the contact to \a str. 125 Sets the home state of the contact to \a str.
128*/ 126*/
129 127
130/*! \fn void OContact::setHomeZip( const QString &str ) 128/*! \fn void OContact::setHomeZip( const QString &str )
131 Sets the home zip code of the contact to \a str. 129 Sets the home zip code of the contact to \a str.
132*/ 130*/
133 131
134/*! \fn void OContact::setHomeCountry( const QString &str ) 132/*! \fn void OContact::setHomeCountry( const QString &str )
135 Sets the home country of the contact to \a str. 133 Sets the home country of the contact to \a str.
136*/ 134*/
137 135
138/*! \fn void OContact::setHomePhone( const QString &str ) 136/*! \fn void OContact::setHomePhone( const QString &str )
139 Sets the home phone number of the contact to \a str. 137 Sets the home phone number of the contact to \a str.
140*/ 138*/
141 139
142/*! \fn void OContact::setHomeFax( const QString &str ) 140/*! \fn void OContact::setHomeFax( const QString &str )
143 Sets the home fax number of the contact to \a str. 141 Sets the home fax number of the contact to \a str.
144*/ 142*/
145 143
146/*! \fn void OContact::setHomeMobile( const QString &str ) 144/*! \fn void OContact::setHomeMobile( const QString &str )
147 Sets the home mobile phone number of the contact to \a str. 145 Sets the home mobile phone number of the contact to \a str.
148*/ 146*/
149 147
150/*! \fn void OContact::setHomeWebpage( const QString &str ) 148/*! \fn void OContact::setHomeWebpage( const QString &str )
151 Sets the home webpage of the contact to \a str. 149 Sets the home webpage of the contact to \a str.
152*/ 150*/
153 151
154/*! \fn void OContact::setCompany( const QString &str ) 152/*! \fn void OContact::setCompany( const QString &str )
155 Sets the company for contact to \a str. 153 Sets the company for contact to \a str.
156*/ 154*/
157 155
158/*! \fn void OContact::setJobTitle( const QString &str ) 156/*! \fn void OContact::setJobTitle( const QString &str )
159 Sets the job title of the contact to \a str. 157 Sets the job title of the contact to \a str.
160*/ 158*/
161 159
162/*! \fn void OContact::setDepartment( const QString &str ) 160/*! \fn void OContact::setDepartment( const QString &str )
163 Sets the department for contact to \a str. 161 Sets the department for contact to \a str.
164*/ 162*/
165 163
166/*! \fn void OContact::setOffice( const QString &str ) 164/*! \fn void OContact::setOffice( const QString &str )
167 Sets the office for contact to \a str. 165 Sets the office for contact to \a str.
168*/ 166*/
169 167
170/*! \fn void OContact::setBusinessStreet( const QString &str ) 168/*! \fn void OContact::setBusinessStreet( const QString &str )
171 Sets the business street address of the contact to \a str. 169 Sets the business street address of the contact to \a str.
172*/ 170*/
173 171
174/*! \fn void OContact::setBusinessCity( const QString &str ) 172/*! \fn void OContact::setBusinessCity( const QString &str )
175 Sets the business city of the contact to \a str. 173 Sets the business city of the contact to \a str.
176*/ 174*/
177 175
178/*! \fn void OContact::setBusinessState( const QString &str ) 176/*! \fn void OContact::setBusinessState( const QString &str )
179 Sets the business state of the contact to \a str. 177 Sets the business state of the contact to \a str.
180*/ 178*/
181 179
182/*! \fn void OContact::setBusinessZip( const QString &str ) 180/*! \fn void OContact::setBusinessZip( const QString &str )
183 Sets the business zip code of the contact to \a str. 181 Sets the business zip code of the contact to \a str.
184*/ 182*/
185 183
186/*! \fn void OContact::setBusinessCountry( const QString &str ) 184/*! \fn void OContact::setBusinessCountry( const QString &str )
187 Sets the business country of the contact to \a str. 185 Sets the business country of the contact to \a str.
188*/ 186*/
189 187
190/*! \fn void OContact::setBusinessPhone( const QString &str ) 188/*! \fn void OContact::setBusinessPhone( const QString &str )
191 Sets the business phone number of the contact to \a str. 189 Sets the business phone number of the contact to \a str.
192*/ 190*/
193 191
194/*! \fn void OContact::setBusinessFax( const QString &str ) 192/*! \fn void OContact::setBusinessFax( const QString &str )
195 Sets the business fax number of the contact to \a str. 193 Sets the business fax number of the contact to \a str.
196*/ 194*/
197 195
198/*! \fn void OContact::setBusinessMobile( const QString &str ) 196/*! \fn void OContact::setBusinessMobile( const QString &str )
199 Sets the business mobile phone number of the contact to \a str. 197 Sets the business mobile phone number of the contact to \a str.
200*/ 198*/
201 199
202/*! \fn void OContact::setBusinessPager( const QString &str ) 200/*! \fn void OContact::setBusinessPager( const QString &str )
203 Sets the business pager number of the contact to \a str. 201 Sets the business pager number of the contact to \a str.
204*/ 202*/
205 203
206/*! \fn void OContact::setBusinessWebpage( const QString &str ) 204/*! \fn void OContact::setBusinessWebpage( const QString &str )
207 Sets the business webpage of the contact to \a str. 205 Sets the business webpage of the contact to \a str.
208*/ 206*/
209 207
210/*! \fn void OContact::setProfession( const QString &str ) 208/*! \fn void OContact::setProfession( const QString &str )
211 Sets the profession of the contact to \a str. 209 Sets the profession of the contact to \a str.
212*/ 210*/
213 211
214/*! \fn void OContact::setAssistant( const QString &str ) 212/*! \fn void OContact::setAssistant( const QString &str )
215 Sets the assistant of the contact to \a str. 213 Sets the assistant of the contact to \a str.
216*/ 214*/
217 215
218/*! \fn void OContact::setManager( const QString &str ) 216/*! \fn void OContact::setManager( const QString &str )
219 Sets the manager of the contact to \a str. 217 Sets the manager of the contact to \a str.
220*/ 218*/
221 219
222/*! \fn void OContact::setSpouse( const QString &str ) 220/*! \fn void OContact::setSpouse( const QString &str )
223 Sets the spouse of the contact to \a str. 221 Sets the spouse of the contact to \a str.
224*/ 222*/
225 223
226/*! \fn void OContact::setGender( const QString &str ) 224/*! \fn void OContact::setGender( const QString &str )
227 Sets the gender of the contact to \a str. 225 Sets the gender of the contact to \a str.
228*/ 226*/
229 227
230/*! \fn void OContact::setNickname( const QString &str ) 228/*! \fn void OContact::setNickname( const QString &str )
231 Sets the nickname of the contact to \a str. 229 Sets the nickname of the contact to \a str.
232*/ 230*/
233 231
234/*! \fn void OContact::setNotes( const QString &str ) 232/*! \fn void OContact::setNotes( const QString &str )
235 Sets the notes about the contact to \a str. 233 Sets the notes about the contact to \a str.
236*/ 234*/
237 235
238/*! \fn QString OContact::title() const 236/*! \fn QString OContact::title() const
239 Returns the title of the contact. 237 Returns the title of the contact.
240*/ 238*/
241 239
242/*! \fn QString OContact::firstName() const 240/*! \fn QString OContact::firstName() const
243 Returns the first name of the contact. 241 Returns the first name of the contact.
244*/ 242*/
245 243
246/*! \fn QString OContact::middleName() const 244/*! \fn QString OContact::middleName() const
247 Returns the middle name of the contact. 245 Returns the middle name of the contact.
248*/ 246*/
249 247
250/*! \fn QString OContact::lastName() const 248/*! \fn QString OContact::lastName() const
251 Returns the last name of the contact. 249 Returns the last name of the contact.
252*/ 250*/
253 251
254/*! \fn QString OContact::suffix() const 252/*! \fn QString OContact::suffix() const
255 Returns the suffix of the contact. 253 Returns the suffix of the contact.
256*/ 254*/
257 255
258/*! \fn QString OContact::fileAs() const 256/*! \fn QString OContact::fileAs() const
259 Returns the string the contact is filed as. 257 Returns the string the contact is filed as.
260*/ 258*/
261 259
262/*! \fn QString OContact::defaultEmail() const 260/*! \fn QString OContact::defaultEmail() const
263 Returns the default email address of the contact. 261 Returns the default email address of the contact.
264*/ 262*/
265 263
266/*! \fn QString OContact::emails() const 264/*! \fn QString OContact::emails() const
267 Returns the list of email address for a contact separated by ';'s in a single 265 Returns the list of email address for a contact separated by ';'s in a single
268 string. 266 string.
269*/ 267*/
270 268
271/*! \fn QString OContact::homeStreet() const 269/*! \fn QString OContact::homeStreet() const
272 Returns the home street address of the contact. 270 Returns the home street address of the contact.
273*/ 271*/
274 272
275/*! \fn QString OContact::homeCity() const 273/*! \fn QString OContact::homeCity() const
276 Returns the home city of the contact. 274 Returns the home city of the contact.
277*/ 275*/
278 276
279/*! \fn QString OContact::homeState() const 277/*! \fn QString OContact::homeState() const
280 Returns the home state of the contact. 278 Returns the home state of the contact.
281*/ 279*/
282 280
283/*! \fn QString OContact::homeZip() const 281/*! \fn QString OContact::homeZip() const
284 Returns the home zip of the contact. 282 Returns the home zip of the contact.
@@ -764,385 +762,385 @@ QString OContact::fullName() const
764QStringList OContact::childrenList() const 762QStringList OContact::childrenList() const
765{ 763{
766 return QStringList::split( " ", find( Qtopia::Children ) ); 764 return QStringList::split( " ", find( Qtopia::Children ) );
767} 765}
768 766
769/*! \fn void OContact::insertEmail( const QString &email ) 767/*! \fn void OContact::insertEmail( const QString &email )
770 768
771 Insert \a email into the email list. Ensures \a email can only be added 769 Insert \a email into the email list. Ensures \a email can only be added
772 once. If there is no default email address set, it sets it to the \a email. 770 once. If there is no default email address set, it sets it to the \a email.
773*/ 771*/
774 772
775/*! \fn void OContact::removeEmail( const QString &email ) 773/*! \fn void OContact::removeEmail( const QString &email )
776 774
777 Removes the \a email from the email list. If the default email was \a email, 775 Removes the \a email from the email list. If the default email was \a email,
778 then the default email address is assigned to the first email in the 776 then the default email address is assigned to the first email in the
779 email list 777 email list
780*/ 778*/
781 779
782/*! \fn void OContact::clearEmails() 780/*! \fn void OContact::clearEmails()
783 781
784 Clears the email list. 782 Clears the email list.
785 */ 783 */
786 784
787/*! \fn void OContact::insertEmails( const QStringList &emailList ) 785/*! \fn void OContact::insertEmails( const QStringList &emailList )
788 786
789 Appends the \a emailList to the exiting email list 787 Appends the \a emailList to the exiting email list
790 */ 788 */
791 789
792/*! 790/*!
793 Returns a list of email addresses belonging to the contact, including 791 Returns a list of email addresses belonging to the contact, including
794 the default email address. 792 the default email address.
795*/ 793*/
796QStringList OContact::emailList() const 794QStringList OContact::emailList() const
797{ 795{
798 QString emailStr = emails(); 796 QString emailStr = emails();
799 797
800 QStringList r; 798 QStringList r;
801 if ( !emailStr.isEmpty() ) { 799 if ( !emailStr.isEmpty() ) {
802 qDebug(" emailstr "); 800 qDebug(" emailstr ");
803 QStringList l = QStringList::split( emailSeparator(), emailStr ); 801 QStringList l = QStringList::split( emailSeparator(), emailStr );
804 for ( QStringList::ConstIterator it = l.begin();it != l.end();++it ) 802 for ( QStringList::ConstIterator it = l.begin();it != l.end();++it )
805 r += (*it).simplifyWhiteSpace(); 803 r += (*it).simplifyWhiteSpace();
806 } 804 }
807 805
808 return r; 806 return r;
809} 807}
810 808
811/*! 809/*!
812 \overload 810 \overload
813 811
814 Generates the string for the contact to be filed as from the first, 812 Generates the string for the contact to be filed as from the first,
815 middle and last name of the contact. 813 middle and last name of the contact.
816*/ 814*/
817void OContact::setFileAs() 815void OContact::setFileAs()
818{ 816{
819 QString lastName, firstName, middleName, fileas; 817 QString lastName, firstName, middleName, fileas;
820 818
821 lastName = find( Qtopia::LastName ); 819 lastName = find( Qtopia::LastName );
822 firstName = find( Qtopia::FirstName ); 820 firstName = find( Qtopia::FirstName );
823 middleName = find( Qtopia::MiddleName ); 821 middleName = find( Qtopia::MiddleName );
824 if ( !lastName.isEmpty() && !firstName.isEmpty() 822 if ( !lastName.isEmpty() && !firstName.isEmpty()
825 && !middleName.isEmpty() ) 823 && !middleName.isEmpty() )
826 fileas = lastName + ", " + firstName + " " + middleName; 824 fileas = lastName + ", " + firstName + " " + middleName;
827 else if ( !lastName.isEmpty() && !firstName.isEmpty() ) 825 else if ( !lastName.isEmpty() && !firstName.isEmpty() )
828 fileas = lastName + ", " + firstName; 826 fileas = lastName + ", " + firstName;
829 else if ( !lastName.isEmpty() || !firstName.isEmpty() || 827 else if ( !lastName.isEmpty() || !firstName.isEmpty() ||
830 !middleName.isEmpty() ) 828 !middleName.isEmpty() )
831 fileas = firstName + ( firstName.isEmpty() ? "" : " " ) 829 fileas = firstName + ( firstName.isEmpty() ? "" : " " )
832 + middleName + ( middleName.isEmpty() ? "" : " " ) 830 + middleName + ( middleName.isEmpty() ? "" : " " )
833 + lastName; 831 + lastName;
834 832
835 replace( Qtopia::FileAs, fileas ); 833 replace( Qtopia::FileAs, fileas );
836} 834}
837 835
838/*! 836/*!
839 \internal 837 \internal
840 Appends the contact information to \a buf. 838 Appends the contact information to \a buf.
841*/ 839*/
842void OContact::save( QString &buf ) const 840void OContact::save( QString &buf ) const
843{ 841{
844 static const QStringList SLFIELDS = fields(); 842 static const QStringList SLFIELDS = fields();
845 // I'm expecting "<Contact " in front of this... 843 // I'm expecting "<Contact " in front of this...
846 for ( QMap<int, QString>::ConstIterator it = mMap.begin(); 844 for ( QMap<int, QString>::ConstIterator it = mMap.begin();
847 it != mMap.end(); ++it ) { 845 it != mMap.end(); ++it ) {
848 const QString &value = it.data(); 846 const QString &value = it.data();
849 int key = it.key(); 847 int key = it.key();
850 if ( !value.isEmpty() ) { 848 if ( !value.isEmpty() ) {
851 if ( key == Qtopia::AddressCategory || key == Qtopia::AddressUid) 849 if ( key == Qtopia::AddressCategory || key == Qtopia::AddressUid)
852 continue; 850 continue;
853 851
854 key -= Qtopia::AddressCategory+1; 852 key -= Qtopia::AddressCategory+1;
855 buf += SLFIELDS[key]; 853 buf += SLFIELDS[key];
856 buf += "=\"" + Qtopia::escapeString(value) + "\" "; 854 buf += "=\"" + Qtopia::escapeString(value) + "\" ";
857 } 855 }
858 } 856 }
859 buf += customToXml(); 857 buf += customToXml();
860 if ( categories().count() > 0 ) 858 if ( categories().count() > 0 )
861 buf += "Categories=\"" + idsToString( categories() ) + "\" "; 859 buf += "Categories=\"" + idsToString( categories() ) + "\" ";
862 buf += "Uid=\"" + QString::number( uid() ) + "\" "; 860 buf += "Uid=\"" + QString::number( uid() ) + "\" ";
863 // You need to close this yourself 861 // You need to close this yourself
864} 862}
865 863
866 864
867/*! 865/*!
868 \internal 866 \internal
869 Returns the list of fields belonging to a contact 867 Returns the list of fields belonging to a contact
870 Never change order of this list ! It has to be regarding 868 Never change order of this list ! It has to be regarding
871 enum AddressBookFields !! 869 enum AddressBookFields !!
872*/ 870*/
873QStringList OContact::fields() 871QStringList OContact::fields()
874{ 872{
875 QStringList list; 873 QStringList list;
876 874
877 list.append( "Title" ); // Not Used! 875 list.append( "Title" ); // Not Used!
878 list.append( "FirstName" ); 876 list.append( "FirstName" );
879 list.append( "MiddleName" ); 877 list.append( "MiddleName" );
880 list.append( "LastName" ); 878 list.append( "LastName" );
881 list.append( "Suffix" ); 879 list.append( "Suffix" );
882 list.append( "FileAs" ); 880 list.append( "FileAs" );
883 881
884 list.append( "JobTitle" ); 882 list.append( "JobTitle" );
885 list.append( "Department" ); 883 list.append( "Department" );
886 list.append( "Company" ); 884 list.append( "Company" );
887 list.append( "BusinessPhone" ); 885 list.append( "BusinessPhone" );
888 list.append( "BusinessFax" ); 886 list.append( "BusinessFax" );
889 list.append( "BusinessMobile" ); 887 list.append( "BusinessMobile" );
890 888
891 list.append( "DefaultEmail" ); 889 list.append( "DefaultEmail" );
892 list.append( "Emails" ); 890 list.append( "Emails" );
893 891
894 list.append( "HomePhone" ); 892 list.append( "HomePhone" );
895 list.append( "HomeFax" ); 893 list.append( "HomeFax" );
896 list.append( "HomeMobile" ); 894 list.append( "HomeMobile" );
897 895
898 list.append( "BusinessStreet" ); 896 list.append( "BusinessStreet" );
899 list.append( "BusinessCity" ); 897 list.append( "BusinessCity" );
900 list.append( "BusinessState" ); 898 list.append( "BusinessState" );
901 list.append( "BusinessZip" ); 899 list.append( "BusinessZip" );
902 list.append( "BusinessCountry" ); 900 list.append( "BusinessCountry" );
903 list.append( "BusinessPager" ); 901 list.append( "BusinessPager" );
904 list.append( "BusinessWebPage" ); 902 list.append( "BusinessWebPage" );
905 903
906 list.append( "Office" ); 904 list.append( "Office" );
907 list.append( "Profession" ); 905 list.append( "Profession" );
908 list.append( "Assistant" ); 906 list.append( "Assistant" );
909 list.append( "Manager" ); 907 list.append( "Manager" );
910 908
911 list.append( "HomeStreet" ); 909 list.append( "HomeStreet" );
912 list.append( "HomeCity" ); 910 list.append( "HomeCity" );
913 list.append( "HomeState" ); 911 list.append( "HomeState" );
914 list.append( "HomeZip" ); 912 list.append( "HomeZip" );
915 list.append( "HomeCountry" ); 913 list.append( "HomeCountry" );
916 list.append( "HomeWebPage" ); 914 list.append( "HomeWebPage" );
917 915
918 list.append( "Spouse" ); 916 list.append( "Spouse" );
919 list.append( "Gender" ); 917 list.append( "Gender" );
920 list.append( "Birthday" ); 918 list.append( "Birthday" );
921 list.append( "Anniversary" ); 919 list.append( "Anniversary" );
922 list.append( "Nickname" ); 920 list.append( "Nickname" );
923 list.append( "Children" ); 921 list.append( "Children" );
924 922
925 list.append( "Notes" ); 923 list.append( "Notes" );
926 list.append( "Groups" ); 924 list.append( "Groups" );
927 925
928 return list; 926 return list;
929} 927}
930 928
931 929
932/*! 930/*!
933 Sets the list of email address for contact to those contained in \a str. 931 Sets the list of email address for contact to those contained in \a str.
934 Email address should be separated by ';'s. 932 Email address should be separated by ';'s.
935*/ 933*/
936void OContact::setEmails( const QString &str ) 934void OContact::setEmails( const QString &str )
937{ 935{
938 replace( Qtopia::Emails, str ); 936 replace( Qtopia::Emails, str );
939 if ( str.isEmpty() ) 937 if ( str.isEmpty() )
940 setDefaultEmail( QString::null ); 938 setDefaultEmail( QString::null );
941} 939}
942 940
943/*! 941/*!
944 Sets the list of children for the contact to those contained in \a str. 942 Sets the list of children for the contact to those contained in \a str.
945*/ 943*/
946void OContact::setChildren( const QString &str ) 944void OContact::setChildren( const QString &str )
947{ 945{
948 replace( Qtopia::Children, str ); 946 replace( Qtopia::Children, str );
949} 947}
950 948
951/*! 949/*!
952 Returns TRUE if the contact matches the regular expression \a regexp. 950 Returns TRUE if the contact matches the regular expression \a regexp.
953 Otherwise returns FALSE. 951 Otherwise returns FALSE.
954*/ 952*/
955bool OContact::match( const QString &regexp ) const 953bool OContact::match( const QString &regexp ) const
956{ 954{
957 return match(QRegExp(regexp)); 955 return match(QRegExp(regexp));
958} 956}
959 957
960/*! 958/*!
961 \overload 959 \overload
962 Returns TRUE if the contact matches the regular expression \a regexp. 960 Returns TRUE if the contact matches the regular expression \a regexp.
963 Otherwise returns FALSE. 961 Otherwise returns FALSE.
964*/ 962*/
965bool OContact::match( const QRegExp &r ) const 963bool OContact::match( const QRegExp &r ) const
966{ 964{
967 bool match; 965 bool match;
968 match = false; 966 match = false;
969 QMap<int, QString>::ConstIterator it; 967 QMap<int, QString>::ConstIterator it;
970 for ( it = mMap.begin(); it != mMap.end(); ++it ) { 968 for ( it = mMap.begin(); it != mMap.end(); ++it ) {
971 if ( (*it).find( r ) > -1 ) { 969 if ( (*it).find( r ) > -1 ) {
972 match = true; 970 match = true;
973 break; 971 break;
974 } 972 }
975 } 973 }
976 return match; 974 return match;
977} 975}
978 976
979 977
980QString OContact::toShortText() const 978QString OContact::toShortText() const
981{ 979{
982 return ( fullName() ); 980 return ( fullName() );
983} 981}
984QString OContact::type() const 982QString OContact::type() const
985{ 983{
986 return QString::fromLatin1( "OContact" ); 984 return QString::fromLatin1( "OContact" );
987} 985}
988 986
989// Definition is missing ! (se) 987// Definition is missing ! (se)
990QMap<QString,QString> OContact::toExtraMap() const 988QMap<QString,QString> OContact::toExtraMap() const
991{ 989{
992 qWarning ("Function not implemented: OContact::toExtraMap()"); 990 qWarning ("Function not implemented: OContact::toExtraMap()");
993 QMap <QString,QString> useless; 991 QMap <QString,QString> useless;
994 return useless; 992 return useless;
995} 993}
996 994
997class QString OContact::recordField( int pos ) const 995class QString OContact::recordField( int pos ) const
998{ 996{
999 QStringList SLFIELDS = fields(); // ?? why this ? (se) 997 QStringList SLFIELDS = fields(); // ?? why this ? (se)
1000 return SLFIELDS[pos]; 998 return SLFIELDS[pos];
1001} 999}
1002 1000
1003// In future releases, we should store birthday and anniversary 1001// In future releases, we should store birthday and anniversary
1004// internally as QDate instead of QString ! 1002// internally as QDate instead of QString !
1005// QString is always too complicate to interprete (DD.MM.YY, DD/MM/YY, MM/DD/YY, etc..)(se) 1003// QString is always too complicate to interprete (DD.MM.YY, DD/MM/YY, MM/DD/YY, etc..)(se)
1006 1004
1007/*! \fn void OContact::setBirthday( const QDate& date ) 1005/*! \fn void OContact::setBirthday( const QDate& date )
1008 Sets the birthday for the contact to \a date. If date is null 1006 Sets the birthday for the contact to \a date. If date is null
1009 the current stored date will be removed. 1007 the current stored date will be removed.
1010*/ 1008*/
1011void OContact::setBirthday( const QDate &v ) 1009void OContact::setBirthday( const QDate &v )
1012{ 1010{
1013 if ( v.isNull() ){ 1011 if ( v.isNull() ){
1014 qWarning( "Remove Birthday"); 1012 qWarning( "Remove Birthday");
1015 replace( Qtopia::Birthday, QString::null ); 1013 replace( Qtopia::Birthday, QString::null );
1016 return; 1014 return;
1017 } 1015 }
1018 1016
1019 if ( v.isValid() ) 1017 if ( v.isValid() )
1020 replace( Qtopia::Birthday, TimeConversion::toString( v ) ); 1018 replace( Qtopia::Birthday, OConversion::dateToString( v ) );
1021 1019
1022} 1020}
1023 1021
1024 1022
1025/*! \fn void OContact::setAnniversary( const QDate &date ) 1023/*! \fn void OContact::setAnniversary( const QDate &date )
1026 Sets the anniversary of the contact to \a date. If date is 1024 Sets the anniversary of the contact to \a date. If date is
1027 null, the current stored date will be removed. 1025 null, the current stored date will be removed.
1028*/ 1026*/
1029void OContact::setAnniversary( const QDate &v ) 1027void OContact::setAnniversary( const QDate &v )
1030{ 1028{
1031 if ( v.isNull() ){ 1029 if ( v.isNull() ){
1032 qWarning( "Remove Anniversary"); 1030 qWarning( "Remove Anniversary");
1033 replace( Qtopia::Anniversary, QString::null ); 1031 replace( Qtopia::Anniversary, QString::null );
1034 return; 1032 return;
1035 } 1033 }
1036 1034
1037 if ( v.isValid() ) 1035 if ( v.isValid() )
1038 replace( Qtopia::Anniversary, TimeConversion::toString( v ) ); 1036 replace( Qtopia::Anniversary, OConversion::dateToString( v ) );
1039} 1037}
1040 1038
1041/*! \fn QDate OContact::birthday() const 1039/*! \fn QDate OContact::birthday() const
1042 Returns the birthday of the contact. 1040 Returns the birthday of the contact.
1043*/ 1041*/
1044QDate OContact::birthday() const 1042QDate OContact::birthday() const
1045{ 1043{
1046 QString str = find( Qtopia::Birthday ); 1044 QString str = find( Qtopia::Birthday );
1047 qWarning ("Birthday %s", str.latin1() ); 1045 qWarning ("Birthday %s", str.latin1() );
1048 if ( !str.isEmpty() ) 1046 if ( !str.isEmpty() )
1049 return TimeConversion::fromString ( str ); 1047 return OConversion::dateFromString ( str );
1050 else 1048 else
1051 return QDate(); 1049 return QDate();
1052} 1050}
1053 1051
1054 1052
1055/*! \fn QDate OContact::anniversary() const 1053/*! \fn QDate OContact::anniversary() const
1056 Returns the anniversary of the contact. 1054 Returns the anniversary of the contact.
1057*/ 1055*/
1058QDate OContact::anniversary() const 1056QDate OContact::anniversary() const
1059{ 1057{
1060 QDate empty; 1058 QDate empty;
1061 QString str = find( Qtopia::Anniversary ); 1059 QString str = find( Qtopia::Anniversary );
1062 qWarning ("Anniversary %s", str.latin1() ); 1060 qWarning ("Anniversary %s", str.latin1() );
1063 if ( !str.isEmpty() ) 1061 if ( !str.isEmpty() )
1064 return TimeConversion::fromString ( str ); 1062 return OConversion::dateFromString ( str );
1065 else 1063 else
1066 return empty; 1064 return empty;
1067} 1065}
1068 1066
1069 1067
1070void OContact::insertEmail( const QString &v ) 1068void OContact::insertEmail( const QString &v )
1071{ 1069{
1072 //qDebug("insertEmail %s", v.latin1()); 1070 //qDebug("insertEmail %s", v.latin1());
1073 QString e = v.simplifyWhiteSpace(); 1071 QString e = v.simplifyWhiteSpace();
1074 QString def = defaultEmail(); 1072 QString def = defaultEmail();
1075 1073
1076 // if no default, set it as the default email and don't insert 1074 // if no default, set it as the default email and don't insert
1077 if ( def.isEmpty() ) { 1075 if ( def.isEmpty() ) {
1078 setDefaultEmail( e ); // will insert into the list for us 1076 setDefaultEmail( e ); // will insert into the list for us
1079 return; 1077 return;
1080 } 1078 }
1081 1079
1082 // otherwise, insert assuming doesn't already exist 1080 // otherwise, insert assuming doesn't already exist
1083 QString emailsStr = find( Qtopia::Emails ); 1081 QString emailsStr = find( Qtopia::Emails );
1084 if ( emailsStr.contains( e )) 1082 if ( emailsStr.contains( e ))
1085 return; 1083 return;
1086 if ( !emailsStr.isEmpty() ) 1084 if ( !emailsStr.isEmpty() )
1087 emailsStr += emailSeparator(); 1085 emailsStr += emailSeparator();
1088 emailsStr += e; 1086 emailsStr += e;
1089 replace( Qtopia::Emails, emailsStr ); 1087 replace( Qtopia::Emails, emailsStr );
1090} 1088}
1091 1089
1092void OContact::removeEmail( const QString &v ) 1090void OContact::removeEmail( const QString &v )
1093{ 1091{
1094 QString e = v.simplifyWhiteSpace(); 1092 QString e = v.simplifyWhiteSpace();
1095 QString def = defaultEmail(); 1093 QString def = defaultEmail();
1096 QString emailsStr = find( Qtopia::Emails ); 1094 QString emailsStr = find( Qtopia::Emails );
1097 QStringList emails = emailList(); 1095 QStringList emails = emailList();
1098 1096
1099 // otherwise, must first contain it 1097 // otherwise, must first contain it
1100 if ( !emailsStr.contains( e ) ) 1098 if ( !emailsStr.contains( e ) )
1101 return; 1099 return;
1102 1100
1103 // remove it 1101 // remove it
1104 //qDebug(" removing email from list %s", e.latin1()); 1102 //qDebug(" removing email from list %s", e.latin1());
1105 emails.remove( e ); 1103 emails.remove( e );
1106 // reset the string 1104 // reset the string
1107 emailsStr = emails.join(emailSeparator()); // Sharp's brain dead separator 1105 emailsStr = emails.join(emailSeparator()); // Sharp's brain dead separator
1108 replace( Qtopia::Emails, emailsStr ); 1106 replace( Qtopia::Emails, emailsStr );
1109 1107
1110 // if default, then replace the default email with the first one 1108 // if default, then replace the default email with the first one
1111 if ( def == e ) { 1109 if ( def == e ) {
1112 //qDebug("removeEmail is default; setting new default"); 1110 //qDebug("removeEmail is default; setting new default");
1113 if ( !emails.count() ) 1111 if ( !emails.count() )
1114 clearEmails(); 1112 clearEmails();
1115 else // setDefaultEmail will remove e from the list 1113 else // setDefaultEmail will remove e from the list
1116 setDefaultEmail( emails.first() ); 1114 setDefaultEmail( emails.first() );
1117 } 1115 }
1118} 1116}
1119void OContact::clearEmails() 1117void OContact::clearEmails()
1120{ 1118{
1121 mMap.remove( Qtopia::DefaultEmail ); 1119 mMap.remove( Qtopia::DefaultEmail );
1122 mMap.remove( Qtopia::Emails ); 1120 mMap.remove( Qtopia::Emails );
1123} 1121}
1124void OContact::setDefaultEmail( const QString &v ) 1122void OContact::setDefaultEmail( const QString &v )
1125{ 1123{
1126 QString e = v.simplifyWhiteSpace(); 1124 QString e = v.simplifyWhiteSpace();
1127 1125
1128 //qDebug("OContact::setDefaultEmail %s", e.latin1()); 1126 //qDebug("OContact::setDefaultEmail %s", e.latin1());
1129 replace( Qtopia::DefaultEmail, e ); 1127 replace( Qtopia::DefaultEmail, e );
1130 1128
1131 if ( !e.isEmpty() ) 1129 if ( !e.isEmpty() )
1132 insertEmail( e ); 1130 insertEmail( e );
1133 1131
1134} 1132}
1135 1133
1136void OContact::insertEmails( const QStringList &v ) 1134void OContact::insertEmails( const QStringList &v )
1137{ 1135{
1138 for ( QStringList::ConstIterator it = v.begin(); it != v.end(); ++it ) 1136 for ( QStringList::ConstIterator it = v.begin(); it != v.end(); ++it )
1139 insertEmail( *it ); 1137 insertEmail( *it );
1140} 1138}
1141int OContact::rtti() { 1139int OContact::rtti() {
1142 return OPimResolver::AddressBook; 1140 return OPimResolver::AddressBook;
1143} 1141}
1144void OContact::setUid( int i ) 1142void OContact::setUid( int i )
1145{ 1143{
1146 OPimRecord::setUid(i); 1144 OPimRecord::setUid(i);
1147 replace( Qtopia::AddressUid , QString::number(i)); 1145 replace( Qtopia::AddressUid , QString::number(i));
1148} 1146}
diff --git a/libopie2/opiepim/ocontact.h b/libopie2/opiepim/ocontact.h
index 25fa0e7..50f6176 100644
--- a/libopie2/opiepim/ocontact.h
+++ b/libopie2/opiepim/ocontact.h
@@ -1,244 +1,242 @@
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 by Stefan Eilers (eilers.stefan@epost.de) 3** Copyright (C) 2002-2003 by Stefan Eilers (eilers.stefan@epost.de)
4**
5** This file is part of the Qtopia Environment.
6** 4**
7** 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
8** 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
9** Foundation and appearing in the file LICENSE.GPL included in the 7** Foundation and appearing in the file LICENSE.GPL included in the
10** packaging of this file. 8** packaging of this file.
11** 9**
12** 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
13** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 11** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
14** 12**
15** See http://www.trolltech.com/gpl/ for GPL licensing information. 13** See http://www.trolltech.com/gpl/ for GPL licensing information.
16** 14**
17** Contact info@trolltech.com if any conditions of this licensing are 15** Contact info@trolltech.com if any conditions of this licensing are
18** not clear to you. 16** not clear to you.
19** 17**
20**********************************************************************/ 18**********************************************************************/
21 19
22#ifndef __OCONTACT_H__ 20#ifndef __OCONTACT_H__
23#define __OCONTACT_H__ 21#define __OCONTACT_H__
24 22
25#include <opie/opimrecord.h> 23#include <opie/opimrecord.h>
26#include <qpe/recordfields.h> 24#include <qpe/recordfields.h>
27 25
28#include <qdatetime.h> 26#include <qdatetime.h>
29#include <qstringlist.h> 27#include <qstringlist.h>
30 28
31#if defined(QPC_TEMPLATEDLL) 29#if defined(QPC_TEMPLATEDLL)
32// MOC_SKIP_BEGIN 30// MOC_SKIP_BEGIN
33QPC_TEMPLATEEXTERN template class QPC_EXPORT QMap<int, QString>; 31QPC_TEMPLATEEXTERN template class QPC_EXPORT QMap<int, QString>;
34// MOC_SKIP_END 32// MOC_SKIP_END
35#endif 33#endif
36 34
37class ContactPrivate; 35class ContactPrivate;
38 36
39/** 37/**
40 * OContact class represents a specialised PIM Record for contacts. 38 * OContact class represents a specialised PIM Record for contacts.
41 * It does store all kind of persopn related information. 39 * It does store all kind of persopn related information.
42 * 40 *
43 * @short Contact Container 41 * @short Contact Container
44 * @author TT, Stefan Eiler, Holger Freyther 42 * @author TT, Stefan Eiler, Holger Freyther
45 */ 43 */
46class QPC_EXPORT OContact : public OPimRecord 44class QPC_EXPORT OContact : public OPimRecord
47{ 45{
48 friend class DataSet; 46 friend class DataSet;
49public: 47public:
50 OContact(); 48 OContact();
51 OContact( const QMap<int, QString> &fromMap ); 49 OContact( const QMap<int, QString> &fromMap );
52 virtual ~OContact(); 50 virtual ~OContact();
53 51
54 /* 52 /*
55 * do we need to inline them 53 * do we need to inline them
56 * if yes do we need to inline them this way? 54 * if yes do we need to inline them this way?
57 * -zecke 55 * -zecke
58 */ 56 */
59 void setTitle( const QString &v ) { replace( Qtopia::Title, v ); } 57 void setTitle( const QString &v ) { replace( Qtopia::Title, v ); }
60 void setFirstName( const QString &v ) { replace( Qtopia::FirstName, v ); } 58 void setFirstName( const QString &v ) { replace( Qtopia::FirstName, v ); }
61 void setMiddleName( const QString &v ) { replace( Qtopia::MiddleName, v ); } 59 void setMiddleName( const QString &v ) { replace( Qtopia::MiddleName, v ); }
62 void setLastName( const QString &v ) { replace( Qtopia::LastName, v ); } 60 void setLastName( const QString &v ) { replace( Qtopia::LastName, v ); }
63 void setSuffix( const QString &v ) { replace( Qtopia::Suffix, v ); } 61 void setSuffix( const QString &v ) { replace( Qtopia::Suffix, v ); }
64 void setFileAs( const QString &v ) { replace( Qtopia::FileAs, v ); } 62 void setFileAs( const QString &v ) { replace( Qtopia::FileAs, v ); }
65 void setFileAs(); 63 void setFileAs();
66 64
67 // default email address 65 // default email address
68 void setDefaultEmail( const QString &v ); 66 void setDefaultEmail( const QString &v );
69 // inserts email to list and ensure's doesn't already exist 67 // inserts email to list and ensure's doesn't already exist
70 void insertEmail( const QString &v ); 68 void insertEmail( const QString &v );
71 void removeEmail( const QString &v ); 69 void removeEmail( const QString &v );
72 void clearEmails(); 70 void clearEmails();
73 void insertEmails( const QStringList &v ); 71 void insertEmails( const QStringList &v );
74 72
75 // home 73 // home
76 void setHomeStreet( const QString &v ) { replace( Qtopia::HomeStreet, v ); } 74 void setHomeStreet( const QString &v ) { replace( Qtopia::HomeStreet, v ); }
77 void setHomeCity( const QString &v ) { replace( Qtopia::HomeCity, v ); } 75 void setHomeCity( const QString &v ) { replace( Qtopia::HomeCity, v ); }
78 void setHomeState( const QString &v ) { replace( Qtopia::HomeState, v ); } 76 void setHomeState( const QString &v ) { replace( Qtopia::HomeState, v ); }
79 void setHomeZip( const QString &v ) { replace( Qtopia::HomeZip, v ); } 77 void setHomeZip( const QString &v ) { replace( Qtopia::HomeZip, v ); }
80 void setHomeCountry( const QString &v ) { replace( Qtopia::HomeCountry, v ); } 78 void setHomeCountry( const QString &v ) { replace( Qtopia::HomeCountry, v ); }
81 void setHomePhone( const QString &v ) { replace( Qtopia::HomePhone, v ); } 79 void setHomePhone( const QString &v ) { replace( Qtopia::HomePhone, v ); }
82 void setHomeFax( const QString &v ) { replace( Qtopia::HomeFax, v ); } 80 void setHomeFax( const QString &v ) { replace( Qtopia::HomeFax, v ); }
83 void setHomeMobile( const QString &v ) { replace( Qtopia::HomeMobile, v ); } 81 void setHomeMobile( const QString &v ) { replace( Qtopia::HomeMobile, v ); }
84 void setHomeWebpage( const QString &v ) { replace( Qtopia::HomeWebPage, v ); } 82 void setHomeWebpage( const QString &v ) { replace( Qtopia::HomeWebPage, v ); }
85 83
86 // business 84 // business
87 void setCompany( const QString &v ) { replace( Qtopia::Company, v ); } 85 void setCompany( const QString &v ) { replace( Qtopia::Company, v ); }
88 void setBusinessStreet( const QString &v ) { replace( Qtopia::BusinessStreet, v ); } 86 void setBusinessStreet( const QString &v ) { replace( Qtopia::BusinessStreet, v ); }
89 void setBusinessCity( const QString &v ) { replace( Qtopia::BusinessCity, v ); } 87 void setBusinessCity( const QString &v ) { replace( Qtopia::BusinessCity, v ); }
90 void setBusinessState( const QString &v ) { replace( Qtopia::BusinessState, v ); } 88 void setBusinessState( const QString &v ) { replace( Qtopia::BusinessState, v ); }
91 void setBusinessZip( const QString &v ) { replace( Qtopia::BusinessZip, v ); } 89 void setBusinessZip( const QString &v ) { replace( Qtopia::BusinessZip, v ); }
92 void setBusinessCountry( const QString &v ) { replace( Qtopia::BusinessCountry, v ); } 90 void setBusinessCountry( const QString &v ) { replace( Qtopia::BusinessCountry, v ); }
93 void setBusinessWebpage( const QString &v ) { replace( Qtopia::BusinessWebPage, v ); } 91 void setBusinessWebpage( const QString &v ) { replace( Qtopia::BusinessWebPage, v ); }
94 void setJobTitle( const QString &v ) { replace( Qtopia::JobTitle, v ); } 92 void setJobTitle( const QString &v ) { replace( Qtopia::JobTitle, v ); }
95 void setDepartment( const QString &v ) { replace( Qtopia::Department, v ); } 93 void setDepartment( const QString &v ) { replace( Qtopia::Department, v ); }
96 void setOffice( const QString &v ) { replace( Qtopia::Office, v ); } 94 void setOffice( const QString &v ) { replace( Qtopia::Office, v ); }
97 void setBusinessPhone( const QString &v ) { replace( Qtopia::BusinessPhone, v ); } 95 void setBusinessPhone( const QString &v ) { replace( Qtopia::BusinessPhone, v ); }
98 void setBusinessFax( const QString &v ) { replace( Qtopia::BusinessFax, v ); } 96 void setBusinessFax( const QString &v ) { replace( Qtopia::BusinessFax, v ); }
99 void setBusinessMobile( const QString &v ) { replace( Qtopia::BusinessMobile, v ); } 97 void setBusinessMobile( const QString &v ) { replace( Qtopia::BusinessMobile, v ); }
100 void setBusinessPager( const QString &v ) { replace( Qtopia::BusinessPager, v ); } 98 void setBusinessPager( const QString &v ) { replace( Qtopia::BusinessPager, v ); }
101 void setProfession( const QString &v ) { replace( Qtopia::Profession, v ); } 99 void setProfession( const QString &v ) { replace( Qtopia::Profession, v ); }
102 void setAssistant( const QString &v ) { replace( Qtopia::Assistant, v ); } 100 void setAssistant( const QString &v ) { replace( Qtopia::Assistant, v ); }
103 void setManager( const QString &v ) { replace( Qtopia::Manager, v ); } 101 void setManager( const QString &v ) { replace( Qtopia::Manager, v ); }
104 102
105 // personal 103 // personal
106 void setSpouse( const QString &v ) { replace( Qtopia::Spouse, v ); } 104 void setSpouse( const QString &v ) { replace( Qtopia::Spouse, v ); }
107 void setGender( const QString &v ) { replace( Qtopia::Gender, v ); } 105 void setGender( const QString &v ) { replace( Qtopia::Gender, v ); }
108 void setBirthday( const QDate &v ); 106 void setBirthday( const QDate &v );
109 void setAnniversary( const QDate &v ); 107 void setAnniversary( const QDate &v );
110 void setNickname( const QString &v ) { replace( Qtopia::Nickname, v ); } 108 void setNickname( const QString &v ) { replace( Qtopia::Nickname, v ); }
111 void setChildren( const QString &v ); 109 void setChildren( const QString &v );
112 110
113 // other 111 // other
114 void setNotes( const QString &v ) { replace( Qtopia::Notes, v); } 112 void setNotes( const QString &v ) { replace( Qtopia::Notes, v); }
115 113
116 bool match( const QString &regexp ) const; 114 bool match( const QString &regexp ) const;
117 bool match( const QRegExp &regexp ) const; 115 bool match( const QRegExp &regexp ) const;
118 116
119// // custom 117// // custom
120// void setCustomField( const QString &key, const QString &v ) 118// void setCustomField( const QString &key, const QString &v )
121// { replace(Custom- + key, v ); } 119// { replace(Custom- + key, v ); }
122 120
123 // name 121 // name
124 QString fullName() const; 122 QString fullName() const;
125 QString title() const { return find( Qtopia::Title ); } 123 QString title() const { return find( Qtopia::Title ); }
126 QString firstName() const { return find( Qtopia::FirstName ); } 124 QString firstName() const { return find( Qtopia::FirstName ); }
127 QString middleName() const { return find( Qtopia::MiddleName ); } 125 QString middleName() const { return find( Qtopia::MiddleName ); }
128 QString lastName() const { return find( Qtopia::LastName ); } 126 QString lastName() const { return find( Qtopia::LastName ); }
129 QString suffix() const { return find( Qtopia::Suffix ); } 127 QString suffix() const { return find( Qtopia::Suffix ); }
130 QString fileAs() const { return find( Qtopia::FileAs ); } 128 QString fileAs() const { return find( Qtopia::FileAs ); }
131 129
132 // email 130 // email
133 QString defaultEmail() const { return find( Qtopia::DefaultEmail ); } 131 QString defaultEmail() const { return find( Qtopia::DefaultEmail ); }
134 QStringList emailList() const; 132 QStringList emailList() const;
135 133
136 // home 134 // home
137 /* 135 /*
138 * OPimAddress address(enum Location)const; 136 * OPimAddress address(enum Location)const;
139 * would be some how nicer... 137 * would be some how nicer...
140 * -zecke 138 * -zecke
141 */ 139 */
142 QString homeStreet() const { return find( Qtopia::HomeStreet ); } 140 QString homeStreet() const { return find( Qtopia::HomeStreet ); }
143 QString homeCity() const { return find( Qtopia::HomeCity ); } 141 QString homeCity() const { return find( Qtopia::HomeCity ); }
144 QString homeState() const { return find( Qtopia::HomeState ); } 142 QString homeState() const { return find( Qtopia::HomeState ); }
145 QString homeZip() const { return find( Qtopia::HomeZip ); } 143 QString homeZip() const { return find( Qtopia::HomeZip ); }
146 QString homeCountry() const { return find( Qtopia::HomeCountry ); } 144 QString homeCountry() const { return find( Qtopia::HomeCountry ); }
147 QString homePhone() const { return find( Qtopia::HomePhone ); } 145 QString homePhone() const { return find( Qtopia::HomePhone ); }
148 QString homeFax() const { return find( Qtopia::HomeFax ); } 146 QString homeFax() const { return find( Qtopia::HomeFax ); }
149 QString homeMobile() const { return find( Qtopia::HomeMobile ); } 147 QString homeMobile() const { return find( Qtopia::HomeMobile ); }
150 QString homeWebpage() const { return find( Qtopia::HomeWebPage ); } 148 QString homeWebpage() const { return find( Qtopia::HomeWebPage ); }
151 /** Multi line string containing all non-empty address info in the form 149 /** Multi line string containing all non-empty address info in the form
152 * Street 150 * Street
153 * City, State Zip 151 * City, State Zip
154 * Country 152 * Country
155 */ 153 */
156 QString displayHomeAddress() const; 154 QString displayHomeAddress() const;
157 155
158 // business 156 // business
159 QString company() const { return find( Qtopia::Company ); } 157 QString company() const { return find( Qtopia::Company ); }
160 QString businessStreet() const { return find( Qtopia::BusinessStreet ); } 158 QString businessStreet() const { return find( Qtopia::BusinessStreet ); }
161 QString businessCity() const { return find( Qtopia::BusinessCity ); } 159 QString businessCity() const { return find( Qtopia::BusinessCity ); }
162 QString businessState() const { return find( Qtopia::BusinessState ); } 160 QString businessState() const { return find( Qtopia::BusinessState ); }
163 QString businessZip() const { return find( Qtopia::BusinessZip ); } 161 QString businessZip() const { return find( Qtopia::BusinessZip ); }
164 QString businessCountry() const { return find( Qtopia::BusinessCountry ); } 162 QString businessCountry() const { return find( Qtopia::BusinessCountry ); }
165 QString businessWebpage() const { return find( Qtopia::BusinessWebPage ); } 163 QString businessWebpage() const { return find( Qtopia::BusinessWebPage ); }
166 QString jobTitle() const { return find( Qtopia::JobTitle ); } 164 QString jobTitle() const { return find( Qtopia::JobTitle ); }
167 QString department() const { return find( Qtopia::Department ); } 165 QString department() const { return find( Qtopia::Department ); }
168 QString office() const { return find( Qtopia::Office ); } 166 QString office() const { return find( Qtopia::Office ); }
169 QString businessPhone() const { return find( Qtopia::BusinessPhone ); } 167 QString businessPhone() const { return find( Qtopia::BusinessPhone ); }
170 QString businessFax() const { return find( Qtopia::BusinessFax ); } 168 QString businessFax() const { return find( Qtopia::BusinessFax ); }
171 QString businessMobile() const { return find( Qtopia::BusinessMobile ); } 169 QString businessMobile() const { return find( Qtopia::BusinessMobile ); }
172 QString businessPager() const { return find( Qtopia::BusinessPager ); } 170 QString businessPager() const { return find( Qtopia::BusinessPager ); }
173 QString profession() const { return find( Qtopia::Profession ); } 171 QString profession() const { return find( Qtopia::Profession ); }
174 QString assistant() const { return find( Qtopia::Assistant ); } 172 QString assistant() const { return find( Qtopia::Assistant ); }
175 QString manager() const { return find( Qtopia::Manager ); } 173 QString manager() const { return find( Qtopia::Manager ); }
176 /** Multi line string containing all non-empty address info in the form 174 /** Multi line string containing all non-empty address info in the form
177 * Street 175 * Street
178 * City, State Zip 176 * City, State Zip
179 * Country 177 * Country
180 */ 178 */
181 QString displayBusinessAddress() const; 179 QString displayBusinessAddress() const;
182 180
183 //personal 181 //personal
184 QString spouse() const { return find( Qtopia::Spouse ); } 182 QString spouse() const { return find( Qtopia::Spouse ); }
185 QString gender() const { return find( Qtopia::Gender ); } 183 QString gender() const { return find( Qtopia::Gender ); }
186 QDate birthday() const; 184 QDate birthday() const;
187 QDate anniversary() const; 185 QDate anniversary() const;
188 QString nickname() const { return find( Qtopia::Nickname ); } 186 QString nickname() const { return find( Qtopia::Nickname ); }
189 QString children() const { return find( Qtopia::Children ); } 187 QString children() const { return find( Qtopia::Children ); }
190 QStringList childrenList() const; 188 QStringList childrenList() const;
191 189
192 // other 190 // other
193 QString notes() const { return find( Qtopia::Notes ); } 191 QString notes() const { return find( Qtopia::Notes ); }
194 QString groups() const { return find( Qtopia::Groups ); } 192 QString groups() const { return find( Qtopia::Groups ); }
195 QStringList groupList() const; 193 QStringList groupList() const;
196 194
197// // custom 195// // custom
198// const QString &customField( const QString &key ) 196// const QString &customField( const QString &key )
199// { return find( Custom- + key ); } 197// { return find( Custom- + key ); }
200 198
201 199
202 QString toRichText() const; 200 QString toRichText() const;
203 QMap<int, QString> toMap() const; 201 QMap<int, QString> toMap() const;
204 QString field( int key ) const { return find( key ); } 202 QString field( int key ) const { return find( key ); }
205 203
206 204
207 void setUid( int i ); 205 void setUid( int i );
208 206
209 QString toShortText()const; 207 QString toShortText()const;
210 QString OContact::type()const; 208 QString OContact::type()const;
211 QMap<QString,QString> OContact::toExtraMap() const; 209 QMap<QString,QString> OContact::toExtraMap() const;
212 class QString OContact::recordField(int) const; 210 class QString OContact::recordField(int) const;
213 211
214 // Why private ? (eilers,se) 212 // Why private ? (eilers,se)
215 QString emailSeparator() const { return " "; } 213 QString emailSeparator() const { return " "; }
216 // the emails should be seperated by a comma 214 // the emails should be seperated by a comma
217 void setEmails( const QString &v ); 215 void setEmails( const QString &v );
218 QString emails() const { return find( Qtopia::Emails ); } 216 QString emails() const { return find( Qtopia::Emails ); }
219 static int rtti(); 217 static int rtti();
220 218
221 219
222private: 220private:
223 // The XML-Backend needs some access to the private functions 221 // The XML-Backend needs some access to the private functions
224 friend class OContactAccessBackend_XML; 222 friend class OContactAccessBackend_XML;
225 223
226 void insert( int key, const QString &value ); 224 void insert( int key, const QString &value );
227 void replace( int key, const QString &value ); 225 void replace( int key, const QString &value );
228 QString find( int key ) const; 226 QString find( int key ) const;
229 static QStringList fields(); 227 static QStringList fields();
230 228
231 void save( QString &buf ) const; 229 void save( QString &buf ) const;
232 230
233 QString displayAddress( const QString &street, 231 QString displayAddress( const QString &street,
234 const QString &city, 232 const QString &city,
235 const QString &state, 233 const QString &state,
236 const QString &zip, 234 const QString &zip,
237 const QString &country ) const; 235 const QString &country ) const;
238 236
239 QMap<int, QString> mMap; 237 QMap<int, QString> mMap;
240 ContactPrivate *d; 238 ContactPrivate *d;
241}; 239};
242 240
243 241
244#endif 242#endif