summaryrefslogtreecommitdiffabout
path: root/kabc
authorMichael Krelin <hacker@klever.net>2007-07-04 11:23:42 (UTC)
committer Michael Krelin <hacker@klever.net>2007-07-04 11:23:42 (UTC)
commita08aff328d4393031d5ba7d622c2b05705a89d73 (patch) (unidiff)
tree8ee90d686081c52e7c69b5ce946e9b1a7d690001 /kabc
parent11edc920afe4f274c0964436633aa632c8288a40 (diff)
downloadkdepimpi-p1.zip
kdepimpi-p1.tar.gz
kdepimpi-p1.tar.bz2
initial public commit of qt4 portp1
Diffstat (limited to 'kabc') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/address.h6
-rw-r--r--kabc/addressbook.cpp30
-rw-r--r--kabc/addressbook.h4
-rw-r--r--kabc/addressee.cpp2
-rw-r--r--kabc/addressee.h4
-rw-r--r--kabc/addresseedialog.cpp51
-rw-r--r--kabc/addresseedialog.h18
-rw-r--r--kabc/addresseelist.cpp12
-rw-r--r--kabc/addresseelist.h6
-rw-r--r--kabc/addresseeview.cpp47
-rw-r--r--kabc/addresseeview.h4
-rw-r--r--kabc/distributionlist.cpp6
-rw-r--r--kabc/distributionlist.h7
-rw-r--r--kabc/distributionlistdialog.cpp36
-rw-r--r--kabc/distributionlistdialog.h12
-rw-r--r--kabc/distributionlisteditor.cpp30
-rw-r--r--kabc/distributionlisteditor.h10
-rw-r--r--kabc/field.cpp10
-rw-r--r--kabc/field.h4
-rw-r--r--kabc/formatfactory.cpp2
-rw-r--r--kabc/formatfactory.h4
-rw-r--r--kabc/formats/binary/kabcformat_binaryE.pro2
-rw-r--r--kabc/formats/vcardformatplugin2.cpp20
-rw-r--r--kabc/kabc.pro8
-rw-r--r--kabc/kabcE.pro8
-rw-r--r--kabc/key.h6
-rw-r--r--kabc/phonenumber.h6
-rw-r--r--kabc/picture.cpp2
-rw-r--r--kabc/picture.h2
-rw-r--r--kabc/plugins/dir/dir.pro14
-rw-r--r--kabc/plugins/dir/dirE.pro4
-rw-r--r--kabc/plugins/dir/resourcedir.cpp8
-rw-r--r--kabc/plugins/dir/resourcedirconfig.cpp4
-rw-r--r--kabc/plugins/file/file.pro14
-rw-r--r--kabc/plugins/file/fileE.pro4
-rw-r--r--kabc/plugins/file/resourcefile.cpp10
-rw-r--r--kabc/plugins/file/resourcefileconfig.cpp4
-rw-r--r--kabc/plugins/ldap/ldapE.pro4
-rw-r--r--kabc/plugins/olaccess/olaccess.pro8
-rw-r--r--kabc/plugins/opie/opieE.pro6
-rw-r--r--kabc/plugins/qtopia/qtopia.pro16
-rw-r--r--kabc/plugins/qtopia/qtopiaE.pro6
-rw-r--r--kabc/plugins/qtopia/qtopiaconverter.cpp24
-rw-r--r--kabc/plugins/qtopia/qtopiaconverter.h9
-rw-r--r--kabc/plugins/qtopia/resourceqtopia.cpp14
-rw-r--r--kabc/plugins/qtopia/resourceqtopiaconfig.cpp4
-rw-r--r--kabc/plugins/sharpdtm/sharpdtmE.pro8
-rw-r--r--kabc/secrecy.h4
-rw-r--r--kabc/sound.h2
-rw-r--r--kabc/tmpaddressbook.cpp2
-rw-r--r--kabc/vcard/AdrParam.cpp10
-rw-r--r--kabc/vcard/AdrValue.cpp9
-rw-r--r--kabc/vcard/AgentParam.cpp6
-rw-r--r--kabc/vcard/AgentValue.cpp6
-rw-r--r--kabc/vcard/ClassValue.cpp6
-rw-r--r--kabc/vcard/ContentLine.cpp36
-rw-r--r--kabc/vcard/DateParam.cpp6
-rw-r--r--kabc/vcard/DateValue.cpp30
-rw-r--r--kabc/vcard/EmailParam.cpp6
-rw-r--r--kabc/vcard/Entity.cpp12
-rw-r--r--kabc/vcard/Enum.cpp8
-rw-r--r--kabc/vcard/FloatValue.cpp8
-rw-r--r--kabc/vcard/GeoValue.cpp6
-rw-r--r--kabc/vcard/ImageParam.cpp6
-rw-r--r--kabc/vcard/ImageValue.cpp6
-rw-r--r--kabc/vcard/ImgValue.cpp6
-rw-r--r--kabc/vcard/LangValue.cpp24
-rw-r--r--kabc/vcard/NValue.cpp10
-rw-r--r--kabc/vcard/OrgValue.cpp10
-rw-r--r--kabc/vcard/Param.cpp16
-rw-r--r--kabc/vcard/PhoneNumberValue.cpp6
-rw-r--r--kabc/vcard/RToken.cpp6
-rw-r--r--kabc/vcard/SoundValue.cpp6
-rw-r--r--kabc/vcard/SourceParam.cpp6
-rw-r--r--kabc/vcard/TelParam.cpp6
-rw-r--r--kabc/vcard/TelValue.cpp6
-rw-r--r--kabc/vcard/TextBinParam.cpp6
-rw-r--r--kabc/vcard/TextBinValue.cpp6
-rw-r--r--kabc/vcard/TextListValue.cpp10
-rw-r--r--kabc/vcard/TextParam.cpp6
-rw-r--r--kabc/vcard/TextValue.cpp8
-rw-r--r--kabc/vcard/URIValue.cpp16
-rw-r--r--kabc/vcard/UTCValue.cpp6
-rw-r--r--kabc/vcard/VCardEntity.cpp12
-rw-r--r--kabc/vcard/VCardv.cpp33
-rw-r--r--kabc/vcard/Value.cpp6
-rw-r--r--kabc/vcard/include/VCardAdrParam.h16
-rw-r--r--kabc/vcard/include/VCardAdrValue.h46
-rw-r--r--kabc/vcard/include/VCardAgentParam.h4
-rw-r--r--kabc/vcard/include/VCardAgentValue.h2
-rw-r--r--kabc/vcard/include/VCardClassValue.h2
-rw-r--r--kabc/vcard/include/VCardContentLine.h18
-rw-r--r--kabc/vcard/include/VCardDateParam.h2
-rw-r--r--kabc/vcard/include/VCardDateValue.h2
-rw-r--r--kabc/vcard/include/VCardDefines.h6
-rw-r--r--kabc/vcard/include/VCardEmailParam.h8
-rw-r--r--kabc/vcard/include/VCardEntity.h14
-rw-r--r--kabc/vcard/include/VCardEnum.h8
-rw-r--r--kabc/vcard/include/VCardFloatValue.h2
-rw-r--r--kabc/vcard/include/VCardImageParam.h2
-rw-r--r--kabc/vcard/include/VCardImageValue.h2
-rw-r--r--kabc/vcard/include/VCardLangValue.h16
-rw-r--r--kabc/vcard/include/VCardNValue.h26
-rw-r--r--kabc/vcard/include/VCardOrgValue.h8
-rw-r--r--kabc/vcard/include/VCardParam.h22
-rw-r--r--kabc/vcard/include/VCardRToken.h4
-rw-r--r--kabc/vcard/include/VCardSoundValue.h2
-rw-r--r--kabc/vcard/include/VCardSourceParam.h12
-rw-r--r--kabc/vcard/include/VCardTelParam.h6
-rw-r--r--kabc/vcard/include/VCardTelValue.h2
-rw-r--r--kabc/vcard/include/VCardTextBinParam.h2
-rw-r--r--kabc/vcard/include/VCardTextBinValue.h2
-rw-r--r--kabc/vcard/include/VCardTextListValue.h8
-rw-r--r--kabc/vcard/include/VCardTextParam.h2
-rw-r--r--kabc/vcard/include/VCardURIValue.h16
-rw-r--r--kabc/vcard/include/VCardUTCValue.h2
-rw-r--r--kabc/vcard/include/VCardVCard.h18
-rw-r--r--kabc/vcard/include/VCardVCardEntity.h6
-rw-r--r--kabc/vcard/include/VCardValue.h6
-rw-r--r--kabc/vcard/include/generated/AdrParam-generated.h10
-rw-r--r--kabc/vcard/include/generated/AdrValue-generated.h10
-rw-r--r--kabc/vcard/include/generated/AgentParam-generated.h10
-rw-r--r--kabc/vcard/include/generated/AgentValue-generated.h10
-rw-r--r--kabc/vcard/include/generated/ClassValue-generated.h10
-rw-r--r--kabc/vcard/include/generated/ContentLine-generated.h10
-rw-r--r--kabc/vcard/include/generated/DateParam-generated.h10
-rw-r--r--kabc/vcard/include/generated/DateValue-generated.h10
-rw-r--r--kabc/vcard/include/generated/EmailParam-generated.h10
-rw-r--r--kabc/vcard/include/generated/FloatValue-generated.h10
-rw-r--r--kabc/vcard/include/generated/GeoValue-generated.h10
-rw-r--r--kabc/vcard/include/generated/Group-generated.h10
-rw-r--r--kabc/vcard/include/generated/ImageParam-generated.h10
-rw-r--r--kabc/vcard/include/generated/ImageValue-generated.h10
-rw-r--r--kabc/vcard/include/generated/ImgParam-generated.h10
-rw-r--r--kabc/vcard/include/generated/ImgValue-generated.h10
-rw-r--r--kabc/vcard/include/generated/LangValue-generated.h10
-rw-r--r--kabc/vcard/include/generated/NValue-generated.h10
-rw-r--r--kabc/vcard/include/generated/Name-generated.h10
-rw-r--r--kabc/vcard/include/generated/OrgValue-generated.h10
-rw-r--r--kabc/vcard/include/generated/Param-generated.h10
-rw-r--r--kabc/vcard/include/generated/ParamName-generated.h10
-rw-r--r--kabc/vcard/include/generated/ParamValue-generated.h10
-rw-r--r--kabc/vcard/include/generated/PhoneNumberValue-generated.h10
-rw-r--r--kabc/vcard/include/generated/SoundValue-generated.h10
-rw-r--r--kabc/vcard/include/generated/SourceParam-generated.h10
-rw-r--r--kabc/vcard/include/generated/TelParam-generated.h10
-rw-r--r--kabc/vcard/include/generated/TelValue-generated.h10
-rw-r--r--kabc/vcard/include/generated/TextBinParam-generated.h10
-rw-r--r--kabc/vcard/include/generated/TextBinValue-generated.h10
-rw-r--r--kabc/vcard/include/generated/TextListValue-generated.h10
-rw-r--r--kabc/vcard/include/generated/TextNSParam-generated.h10
-rw-r--r--kabc/vcard/include/generated/TextParam-generated.h10
-rw-r--r--kabc/vcard/include/generated/TextValue-generated.h10
-rw-r--r--kabc/vcard/include/generated/URIValue-generated.h10
-rw-r--r--kabc/vcard/include/generated/UTCValue-generated.h10
-rw-r--r--kabc/vcard/include/generated/VCard-generated.h10
-rw-r--r--kabc/vcard/include/generated/VCardEntity-generated.h10
-rw-r--r--kabc/vcard/include/generated/Value-generated.h10
-rw-r--r--kabc/vcard/testread.cpp12
-rw-r--r--kabc/vcard/testwrite.cpp4
-rw-r--r--kabc/vcard21parser.cpp40
-rw-r--r--kabc/vcard21parser.h10
-rw-r--r--kabc/vcardformatimpl.cpp25
-rw-r--r--kabc/vcardformatplugin.cpp2
-rw-r--r--kabc/vcardparser/vcard.h4
-rw-r--r--kabc/vcardparser/vcardline.cpp6
-rw-r--r--kabc/vcardparser/vcardline.h8
-rw-r--r--kabc/vcardparser/vcardparser.cpp2
-rw-r--r--kabc/vcardparser/vcardtool.cpp2
169 files changed, 967 insertions, 732 deletions
diff --git a/kabc/address.h b/kabc/address.h
index 38ad20b..41794fe 100644
--- a/kabc/address.h
+++ b/kabc/address.h
@@ -1,350 +1,350 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28#ifndef KABC_ADDRESS_H 28#ifndef KABC_ADDRESS_H
29#define KABC_ADDRESS_H 29#define KABC_ADDRESS_H
30 30
31#include <qmap.h> 31#include <qmap.h>
32#include <qstring.h> 32#include <qstring.h>
33#include <qregexp.h> 33#include <qregexp.h>
34#include <qstringlist.h> 34#include <qstringlist.h>
35#include <qvaluelist.h> 35#include <q3valuelist.h>
36 36
37// template tags for address formatting localization 37// template tags for address formatting localization
38#define KABC_FMTTAG_realname QString("%n") 38#define KABC_FMTTAG_realname QString("%n")
39#define KABC_FMTTAG_REALNAME QString("%N") 39#define KABC_FMTTAG_REALNAME QString("%N")
40#define KABC_FMTTAG_company QString("%cm") 40#define KABC_FMTTAG_company QString("%cm")
41#define KABC_FMTTAG_COMPANY QString("%CM") 41#define KABC_FMTTAG_COMPANY QString("%CM")
42#define KABC_FMTTAG_pobox QString("%p") 42#define KABC_FMTTAG_pobox QString("%p")
43#define KABC_FMTTAG_street QString("%s") 43#define KABC_FMTTAG_street QString("%s")
44#define KABC_FMTTAG_STREET QString("%S") 44#define KABC_FMTTAG_STREET QString("%S")
45#define KABC_FMTTAG_zipcode QString("%z") 45#define KABC_FMTTAG_zipcode QString("%z")
46#define KABC_FMTTAG_location QString("%l") 46#define KABC_FMTTAG_location QString("%l")
47#define KABC_FMTTAG_LOCATION QString("%L") 47#define KABC_FMTTAG_LOCATION QString("%L")
48#define KABC_FMTTAG_region QString("%r") 48#define KABC_FMTTAG_region QString("%r")
49#define KABC_FMTTAG_REGION QString("%R") 49#define KABC_FMTTAG_REGION QString("%R")
50#define KABC_FMTTAG_newline QString("\\n") 50#define KABC_FMTTAG_newline QString("\\n")
51#define KABC_FMTTAG_condcomma QString("%,") 51#define KABC_FMTTAG_condcomma QString("%,")
52#define KABC_FMTTAG_condwhite QString("%w") 52#define KABC_FMTTAG_condwhite QString("%w")
53#define KABC_FMTTAG_purgeempty QString("%0") 53#define KABC_FMTTAG_purgeempty QString("%0")
54 54
55namespace KABC { 55namespace KABC {
56 56
57/** 57/**
58 @short Postal address information. 58 @short Postal address information.
59 59
60 This class represents information about a postal address. 60 This class represents information about a postal address.
61*/ 61*/
62class Address 62class Address
63{ 63{
64 friend QDataStream &operator<<( QDataStream &, const Address & ); 64 friend QDataStream &operator<<( QDataStream &, const Address & );
65 friend QDataStream &operator>>( QDataStream &, Address & ); 65 friend QDataStream &operator>>( QDataStream &, Address & );
66 66
67 public: 67 public:
68 /** 68 /**
69 List of addresses. 69 List of addresses.
70 */ 70 */
71 typedef QValueList<Address> List; 71 typedef Q3ValueList<Address> List;
72 typedef QValueList<int> TypeList; 72 typedef Q3ValueList<int> TypeList;
73 73
74 /** 74 /**
75 Address types: 75 Address types:
76 76
77 @li @p Dom - domestic 77 @li @p Dom - domestic
78 @li @p Intl - international 78 @li @p Intl - international
79 @li @p Postal - postal 79 @li @p Postal - postal
80 @li @p Parcel - parcel 80 @li @p Parcel - parcel
81 @li @p Home - home address 81 @li @p Home - home address
82 @li @p Work - address at work 82 @li @p Work - address at work
83 @li @p Pref - preferred address 83 @li @p Pref - preferred address
84 */ 84 */
85 enum Type { Dom = 1, Intl = 2, Postal = 4, Parcel = 8, Home = 16, Work = 32, 85 enum Type { Dom = 1, Intl = 2, Postal = 4, Parcel = 8, Home = 16, Work = 32,
86 Pref = 64 }; 86 Pref = 64 };
87 87
88 /** 88 /**
89 Constructor that creates an empty Address, which is initialized 89 Constructor that creates an empty Address, which is initialized
90 with a unique id (see @ref id()). 90 with a unique id (see @ref id()).
91 */ 91 */
92 Address(); 92 Address();
93 93
94 /** 94 /**
95 This is like @ref Address() just above, with the difference 95 This is like @ref Address() just above, with the difference
96 that you can specify the type. 96 that you can specify the type.
97 */ 97 */
98 Address( int ); 98 Address( int );
99 bool matchAddress( QRegExp* searchExp ) const; 99 bool matchAddress( QRegExp* searchExp ) const;
100 100
101 bool operator==( const Address & ) const; 101 bool operator==( const Address & ) const;
102 bool operator!=( const Address & ) const; 102 bool operator!=( const Address & ) const;
103 103
104 /** 104 /**
105 Returns true, if the address is empty. 105 Returns true, if the address is empty.
106 */ 106 */
107 bool isEmpty() const; 107 bool isEmpty() const;
108 108
109 /** 109 /**
110 Clears all entries of the address. 110 Clears all entries of the address.
111 */ 111 */
112 void clear(); 112 void clear();
113 QStringList asList(); 113 QStringList asList();
114 114
115 /** 115 /**
116 Sets the unique id. 116 Sets the unique id.
117 */ 117 */
118 void setId( const QString & ); 118 void setId( const QString & );
119 119
120 /* 120 /*
121 Returns the unique id. 121 Returns the unique id.
122 */ 122 */
123 QString id() const; 123 QString id() const;
124 124
125 /** 125 /**
126 Sets the type of address. See enum for definiton of types. 126 Sets the type of address. See enum for definiton of types.
127 127
128 @param type type, can be a bitwise or of multiple types. 128 @param type type, can be a bitwise or of multiple types.
129 */ 129 */
130 void setType( int type ); 130 void setType( int type );
131 131
132 /** 132 /**
133 Returns the type of address. Can be a bitwise or of multiple types. 133 Returns the type of address. Can be a bitwise or of multiple types.
134 */ 134 */
135 int type() const; 135 int type() const;
136 136
137 /** 137 /**
138 Returns a translated string of all types the address has. 138 Returns a translated string of all types the address has.
139 */ 139 */
140 QString typeLabel() const; 140 QString typeLabel() const;
141 141
142 /** 142 /**
143 Sets the post office box. 143 Sets the post office box.
144 */ 144 */
145 void setPostOfficeBox( const QString & ); 145 void setPostOfficeBox( const QString & );
146 146
147 /** 147 /**
148 Returns the post office box. 148 Returns the post office box.
149 */ 149 */
150 QString postOfficeBox() const; 150 QString postOfficeBox() const;
151 151
152 /** 152 /**
153 Returns the translated label for post office box field. 153 Returns the translated label for post office box field.
154 */ 154 */
155 static QString postOfficeBoxLabel(); 155 static QString postOfficeBoxLabel();
156 156
157 /** 157 /**
158 Sets the extended address information. 158 Sets the extended address information.
159 */ 159 */
160 void setExtended( const QString & ); 160 void setExtended( const QString & );
161 161
162 /** 162 /**
163 Returns the extended address information. 163 Returns the extended address information.
164 */ 164 */
165 QString extended() const; 165 QString extended() const;
166 166
167 /** 167 /**
168 Returns the translated label for extended field. 168 Returns the translated label for extended field.
169 */ 169 */
170 static QString extendedLabel(); 170 static QString extendedLabel();
171 171
172 /** 172 /**
173 Sets the street (including number). 173 Sets the street (including number).
174 */ 174 */
175 void setStreet( const QString & ); 175 void setStreet( const QString & );
176 176
177 /** 177 /**
178 Returns the street. 178 Returns the street.
179 */ 179 */
180 QString street() const; 180 QString street() const;
181 181
182 /** 182 /**
183 Returns the translated label for street field. 183 Returns the translated label for street field.
184 */ 184 */
185 static QString streetLabel(); 185 static QString streetLabel();
186 186
187 /** 187 /**
188 Sets the locality, e.g. city. 188 Sets the locality, e.g. city.
189 */ 189 */
190 void setLocality( const QString & ); 190 void setLocality( const QString & );
191 191
192 /** 192 /**
193 Returns the locality. 193 Returns the locality.
194 */ 194 */
195 QString locality() const; 195 QString locality() const;
196 196
197 /** 197 /**
198 Returns the translated label for locality field. 198 Returns the translated label for locality field.
199 */ 199 */
200 static QString localityLabel(); 200 static QString localityLabel();
201 201
202 /** 202 /**
203 Sets the region, e.g. state. 203 Sets the region, e.g. state.
204 */ 204 */
205 void setRegion( const QString & ); 205 void setRegion( const QString & );
206 206
207 /** 207 /**
208 Returns the region. 208 Returns the region.
209 */ 209 */
210 QString region() const; 210 QString region() const;
211 211
212 /** 212 /**
213 Returns the translated label for region field. 213 Returns the translated label for region field.
214 */ 214 */
215 static QString regionLabel(); 215 static QString regionLabel();
216 216
217 /** 217 /**
218 Sets the postal code. 218 Sets the postal code.
219 */ 219 */
220 void setPostalCode( const QString & ); 220 void setPostalCode( const QString & );
221 221
222 /** 222 /**
223 Returns the postal code. 223 Returns the postal code.
224 */ 224 */
225 QString postalCode() const; 225 QString postalCode() const;
226 226
227 /** 227 /**
228 Returns the translated label for postal code field. 228 Returns the translated label for postal code field.
229 */ 229 */
230 static QString postalCodeLabel(); 230 static QString postalCodeLabel();
231 231
232 /** 232 /**
233 Sets the country. 233 Sets the country.
234 */ 234 */
235 void setCountry( const QString & ); 235 void setCountry( const QString & );
236 236
237 /** 237 /**
238 Returns the country. 238 Returns the country.
239 */ 239 */
240 QString country() const; 240 QString country() const;
241 241
242 /** 242 /**
243 Returns the translated label for country field. 243 Returns the translated label for country field.
244 */ 244 */
245 static QString countryLabel(); 245 static QString countryLabel();
246 246
247 /** 247 /**
248 Sets the delivery label. This is the literal text to be used as label. 248 Sets the delivery label. This is the literal text to be used as label.
249 */ 249 */
250 void setLabel( const QString & ); 250 void setLabel( const QString & );
251 251
252 /** 252 /**
253 Returns the delivery label. 253 Returns the delivery label.
254 */ 254 */
255 QString label() const; 255 QString label() const;
256 256
257 /** 257 /**
258 Returns the translated label for delivery label field. 258 Returns the translated label for delivery label field.
259 */ 259 */
260 static QString labelLabel(); 260 static QString labelLabel();
261 261
262 /** 262 /**
263 Returns the list of available types. 263 Returns the list of available types.
264 */ 264 */
265 static TypeList typeList(); 265 static TypeList typeList();
266 266
267 /** 267 /**
268 Returns the translated label for a special type. 268 Returns the translated label for a special type.
269 */ 269 */
270 static QString typeLabel( int type ); 270 static QString typeLabel( int type );
271 271
272 /** 272 /**
273 Used for debug output. 273 Used for debug output.
274 */ 274 */
275 void dump() const; 275 void dump() const;
276 276
277 /** 277 /**
278 Returns this address formatted according to the country-specific 278 Returns this address formatted according to the country-specific
279 address formatting rules. The formatting rules applied depend on 279 address formatting rules. The formatting rules applied depend on
280 either the addresses {@link #country country} field, or (if the 280 either the addresses {@link #country country} field, or (if the
281 latter is empty) on the system country setting. If companyName is 281 latter is empty) on the system country setting. If companyName is
282 provided, an available business address format will be preferred. 282 provided, an available business address format will be preferred.
283 283
284 @param realName the formatted name of the contact 284 @param realName the formatted name of the contact
285 @param orgaName the name of the organization or company 285 @param orgaName the name of the organization or company
286 @return the formatted address (containing newline characters) 286 @return the formatted address (containing newline characters)
287 */ 287 */
288 QString formattedAddress( const QString &realName=QString::null 288 QString formattedAddress( const QString &realName=QString::null
289 , const QString &orgaName=QString::null ) const; 289 , const QString &orgaName=QString::null ) const;
290 290
291 /** 291 /**
292 Returns ISO code for a localized country name. Only localized country 292 Returns ISO code for a localized country name. Only localized country
293 names will be understood. This might be replaced by a KLocale method in 293 names will be understood. This might be replaced by a KLocale method in
294 the future. 294 the future.
295 @param cname name of the country 295 @param cname name of the country
296 @return two digit ISO code 296 @return two digit ISO code
297 */ 297 */
298 static QString countryToISO( const QString &cname ); 298 static QString countryToISO( const QString &cname );
299 299
300 /** 300 /**
301 Returns a localized country name for a ISO code. 301 Returns a localized country name for a ISO code.
302 This might be replaced by a KLocale method in the future. 302 This might be replaced by a KLocale method in the future.
303 @param ISOname two digit ISO code 303 @param ISOname two digit ISO code
304 @return localized name of the country 304 @return localized name of the country
305 @since 3.2 305 @since 3.2
306 */ 306 */
307 static QString ISOtoCountry( const QString &ISOname ); 307 static QString ISOtoCountry( const QString &ISOname );
308 308
309 private: 309 private:
310 /** 310 /**
311 Parses a snippet of an address template 311 Parses a snippet of an address template
312 @param tsection the template string to be parsed 312 @param tsection the template string to be parsed
313 @param result QString reference in which the result will be stored 313 @param result QString reference in which the result will be stored
314 @return true if at least one tag evaluated positively, else false 314 @return true if at least one tag evaluated positively, else false
315 */ 315 */
316 bool parseAddressTemplateSection( const QString &tsection 316 bool parseAddressTemplateSection( const QString &tsection
317 , QString &result 317 , QString &result
318 , const QString &realName 318 , const QString &realName
319 , const QString &orgaName ) const; 319 , const QString &orgaName ) const;
320 320
321 /** 321 /**
322 Finds the balanced closing bracket starting from the opening bracket at 322 Finds the balanced closing bracket starting from the opening bracket at
323 pos in tsection. 323 pos in tsection.
324 @return position of closing bracket, -1 for unbalanced brackets 324 @return position of closing bracket, -1 for unbalanced brackets
325 */ 325 */
326 int findBalancedBracket( const QString &tsection, int pos ) const; 326 int findBalancedBracket( const QString &tsection, int pos ) const;
327 327
328 bool mEmpty; 328 bool mEmpty;
329 329
330 QString mId; 330 QString mId;
331 int mType; 331 int mType;
332 332
333 QString mPostOfficeBox; 333 QString mPostOfficeBox;
334 QString mExtended; 334 QString mExtended;
335 QString mStreet; 335 QString mStreet;
336 QString mLocality; 336 QString mLocality;
337 QString mRegion; 337 QString mRegion;
338 QString mPostalCode; 338 QString mPostalCode;
339 QString mCountry; 339 QString mCountry;
340 QString mLabel; 340 QString mLabel;
341 341
342 static QMap<QString, QString> mISOMap; 342 static QMap<QString, QString> mISOMap;
343}; 343};
344 344
345QDataStream &operator<<( QDataStream &, const Address & ); 345QDataStream &operator<<( QDataStream &, const Address & );
346QDataStream &operator>>( QDataStream &, Address & ); 346QDataStream &operator>>( QDataStream &, Address & );
347 347
348} 348}
349 349
350#endif 350#endif
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp
index fe59fcb..c700897 100644
--- a/kabc/addressbook.cpp
+++ b/kabc/addressbook.cpp
@@ -1,1314 +1,1314 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28/*US 28/*US
29 29
30#include <qfile.h> 30#include <qfile.h>
31#include <qregexp.h> 31#include <qregexp.h>
32#include <qtimer.h> 32#include <qtimer.h>
33 33
34#include <kapplication.h> 34#include <kapplication.h>
35#include <kinstance.h> 35#include <kinstance.h>
36#include <kstandarddirs.h> 36#include <kstandarddirs.h>
37 37
38#include "errorhandler.h" 38#include "errorhandler.h"
39*/ 39*/
40#include <qptrlist.h> 40#include <q3ptrlist.h>
41#include <qtextstream.h> 41#include <q3textstream.h>
42#include <qfile.h> 42#include <qfile.h>
43#include <qregexp.h> 43#include <qregexp.h>
44 44
45#include <kglobal.h> 45#include <kglobal.h>
46#include <klocale.h> 46#include <klocale.h>
47#include <kmessagebox.h> 47#include <kmessagebox.h>
48#include <kdebug.h> 48#include <kdebug.h>
49#include <libkcal/syncdefines.h> 49#include <libkcal/syncdefines.h>
50#include <libkdepim/phoneaccess.h> 50#include <libkdepim/phoneaccess.h>
51#include "addressbook.h" 51#include "addressbook.h"
52#include "resource.h" 52#include "resource.h"
53#include "vcardconverter.h" 53#include "vcardconverter.h"
54#include "vcardparser/vcardtool.h" 54#include "vcardparser/vcardtool.h"
55 55
56//US #include "addressbook.moc" 56//US #include "addressbook.moc"
57 57
58using namespace KABC; 58using namespace KABC;
59 59
60struct AddressBook::AddressBookData 60struct AddressBook::AddressBookData
61{ 61{
62 Addressee::List mAddressees; 62 Addressee::List mAddressees;
63 Addressee::List mRemovedAddressees; 63 Addressee::List mRemovedAddressees;
64 Field::List mAllFields; 64 Field::List mAllFields;
65 KConfig *mConfig; 65 KConfig *mConfig;
66 KRES::Manager<Resource> *mManager; 66 KRES::Manager<Resource> *mManager;
67//US ErrorHandler *mErrorHandler; 67//US ErrorHandler *mErrorHandler;
68}; 68};
69 69
70struct AddressBook::Iterator::IteratorData 70struct AddressBook::Iterator::IteratorData
71{ 71{
72 Addressee::List::Iterator mIt; 72 Addressee::List::Iterator mIt;
73}; 73};
74 74
75struct AddressBook::ConstIterator::ConstIteratorData 75struct AddressBook::ConstIterator::ConstIteratorData
76{ 76{
77 Addressee::List::ConstIterator mIt; 77 Addressee::List::ConstIterator mIt;
78}; 78};
79 79
80AddressBook::Iterator::Iterator() 80AddressBook::Iterator::Iterator()
81{ 81{
82 d = new IteratorData; 82 d = new IteratorData;
83} 83}
84 84
85AddressBook::Iterator::Iterator( const AddressBook::Iterator &i ) 85AddressBook::Iterator::Iterator( const AddressBook::Iterator &i )
86{ 86{
87 d = new IteratorData; 87 d = new IteratorData;
88 d->mIt = i.d->mIt; 88 d->mIt = i.d->mIt;
89} 89}
90 90
91AddressBook::Iterator &AddressBook::Iterator::operator=( const AddressBook::Iterator &i ) 91AddressBook::Iterator &AddressBook::Iterator::operator=( const AddressBook::Iterator &i )
92{ 92{
93 if( this == &i ) return *this; // guard against self assignment 93 if( this == &i ) return *this; // guard against self assignment
94 delete d; // delete the old data the Iterator was completely constructed before 94 delete d; // delete the old data the Iterator was completely constructed before
95 d = new IteratorData; 95 d = new IteratorData;
96 d->mIt = i.d->mIt; 96 d->mIt = i.d->mIt;
97 return *this; 97 return *this;
98} 98}
99 99
100AddressBook::Iterator::~Iterator() 100AddressBook::Iterator::~Iterator()
101{ 101{
102 delete d; 102 delete d;
103} 103}
104 104
105const Addressee &AddressBook::Iterator::operator*() const 105const Addressee &AddressBook::Iterator::operator*() const
106{ 106{
107 return *(d->mIt); 107 return *(d->mIt);
108} 108}
109 109
110Addressee &AddressBook::Iterator::operator*() 110Addressee &AddressBook::Iterator::operator*()
111{ 111{
112 return *(d->mIt); 112 return *(d->mIt);
113} 113}
114 114
115Addressee *AddressBook::Iterator::operator->() 115Addressee *AddressBook::Iterator::operator->()
116{ 116{
117 return &(*(d->mIt)); 117 return &(*(d->mIt));
118} 118}
119 119
120AddressBook::Iterator &AddressBook::Iterator::operator++() 120AddressBook::Iterator &AddressBook::Iterator::operator++()
121{ 121{
122 (d->mIt)++; 122 (d->mIt)++;
123 return *this; 123 return *this;
124} 124}
125 125
126AddressBook::Iterator &AddressBook::Iterator::operator++(int) 126AddressBook::Iterator &AddressBook::Iterator::operator++(int)
127{ 127{
128 (d->mIt)++; 128 (d->mIt)++;
129 return *this; 129 return *this;
130} 130}
131 131
132AddressBook::Iterator &AddressBook::Iterator::operator--() 132AddressBook::Iterator &AddressBook::Iterator::operator--()
133{ 133{
134 (d->mIt)--; 134 (d->mIt)--;
135 return *this; 135 return *this;
136} 136}
137 137
138AddressBook::Iterator &AddressBook::Iterator::operator--(int) 138AddressBook::Iterator &AddressBook::Iterator::operator--(int)
139{ 139{
140 (d->mIt)--; 140 (d->mIt)--;
141 return *this; 141 return *this;
142} 142}
143 143
144bool AddressBook::Iterator::operator==( const Iterator &it ) 144bool AddressBook::Iterator::operator==( const Iterator &it )
145{ 145{
146 return ( d->mIt == it.d->mIt ); 146 return ( d->mIt == it.d->mIt );
147} 147}
148 148
149bool AddressBook::Iterator::operator!=( const Iterator &it ) 149bool AddressBook::Iterator::operator!=( const Iterator &it )
150{ 150{
151 return ( d->mIt != it.d->mIt ); 151 return ( d->mIt != it.d->mIt );
152} 152}
153 153
154 154
155AddressBook::ConstIterator::ConstIterator() 155AddressBook::ConstIterator::ConstIterator()
156{ 156{
157 d = new ConstIteratorData; 157 d = new ConstIteratorData;
158} 158}
159 159
160AddressBook::ConstIterator::ConstIterator( const AddressBook::ConstIterator &i ) 160AddressBook::ConstIterator::ConstIterator( const AddressBook::ConstIterator &i )
161{ 161{
162 d = new ConstIteratorData; 162 d = new ConstIteratorData;
163 d->mIt = i.d->mIt; 163 d->mIt = i.d->mIt;
164} 164}
165 165
166AddressBook::ConstIterator &AddressBook::ConstIterator::operator=( const AddressBook::ConstIterator &i ) 166AddressBook::ConstIterator &AddressBook::ConstIterator::operator=( const AddressBook::ConstIterator &i )
167{ 167{
168 if( this == &i ) return *this; // guard for self assignment 168 if( this == &i ) return *this; // guard for self assignment
169 delete d; // delete the old data because the Iterator was really constructed before 169 delete d; // delete the old data because the Iterator was really constructed before
170 d = new ConstIteratorData; 170 d = new ConstIteratorData;
171 d->mIt = i.d->mIt; 171 d->mIt = i.d->mIt;
172 return *this; 172 return *this;
173} 173}
174 174
175AddressBook::ConstIterator::~ConstIterator() 175AddressBook::ConstIterator::~ConstIterator()
176{ 176{
177 delete d; 177 delete d;
178} 178}
179 179
180const Addressee &AddressBook::ConstIterator::operator*() const 180const Addressee &AddressBook::ConstIterator::operator*() const
181{ 181{
182 return *(d->mIt); 182 return *(d->mIt);
183} 183}
184 184
185const Addressee* AddressBook::ConstIterator::operator->() const 185const Addressee* AddressBook::ConstIterator::operator->() const
186{ 186{
187 return &(*(d->mIt)); 187 return &(*(d->mIt));
188} 188}
189 189
190AddressBook::ConstIterator &AddressBook::ConstIterator::operator++() 190AddressBook::ConstIterator &AddressBook::ConstIterator::operator++()
191{ 191{
192 (d->mIt)++; 192 (d->mIt)++;
193 return *this; 193 return *this;
194} 194}
195 195
196AddressBook::ConstIterator &AddressBook::ConstIterator::operator++(int) 196AddressBook::ConstIterator &AddressBook::ConstIterator::operator++(int)
197{ 197{
198 (d->mIt)++; 198 (d->mIt)++;
199 return *this; 199 return *this;
200} 200}
201 201
202AddressBook::ConstIterator &AddressBook::ConstIterator::operator--() 202AddressBook::ConstIterator &AddressBook::ConstIterator::operator--()
203{ 203{
204 (d->mIt)--; 204 (d->mIt)--;
205 return *this; 205 return *this;
206} 206}
207 207
208AddressBook::ConstIterator &AddressBook::ConstIterator::operator--(int) 208AddressBook::ConstIterator &AddressBook::ConstIterator::operator--(int)
209{ 209{
210 (d->mIt)--; 210 (d->mIt)--;
211 return *this; 211 return *this;
212} 212}
213 213
214bool AddressBook::ConstIterator::operator==( const ConstIterator &it ) 214bool AddressBook::ConstIterator::operator==( const ConstIterator &it )
215{ 215{
216 return ( d->mIt == it.d->mIt ); 216 return ( d->mIt == it.d->mIt );
217} 217}
218 218
219bool AddressBook::ConstIterator::operator!=( const ConstIterator &it ) 219bool AddressBook::ConstIterator::operator!=( const ConstIterator &it )
220{ 220{
221 return ( d->mIt != it.d->mIt ); 221 return ( d->mIt != it.d->mIt );
222} 222}
223 223
224 224
225AddressBook::AddressBook() 225AddressBook::AddressBook()
226{ 226{
227 init(0, "contact"); 227 init(0, "contact");
228} 228}
229 229
230AddressBook::AddressBook( const QString &config ) 230AddressBook::AddressBook( const QString &config )
231{ 231{
232 init(config, "contact"); 232 init(config, "contact");
233} 233}
234 234
235AddressBook::AddressBook( const QString &config, const QString &family ) 235AddressBook::AddressBook( const QString &config, const QString &family )
236{ 236{
237 init(config, family); 237 init(config, family);
238 238
239} 239}
240 240
241// the default family is "contact" 241// the default family is "contact"
242void AddressBook::init(const QString &config, const QString &family ) 242void AddressBook::init(const QString &config, const QString &family )
243{ 243{
244 blockLSEchange = false; 244 blockLSEchange = false;
245 d = new AddressBookData; 245 d = new AddressBookData;
246 QString fami = family; 246 QString fami = family;
247 if (config != 0) { 247 if (!config.isEmpty()) {
248 if ( family == "syncContact" ) { 248 if ( family == "syncContact" ) {
249 qDebug("creating sync config "); 249 qDebug("creating sync config ");
250 fami = "contact"; 250 fami = "contact";
251 KConfig* con = new KConfig( locateLocal("config", "syncContactrc") ); 251 KConfig* con = new KConfig( locateLocal("config", "syncContactrc") );
252 con->setGroup( "General" ); 252 con->setGroup( "General" );
253 con->writeEntry( "ResourceKeys", QString("sync") ); 253 con->writeEntry( "ResourceKeys", QString("sync") );
254 con->writeEntry( "Standard", QString("sync") ); 254 con->writeEntry( "Standard", QString("sync") );
255 con->setGroup( "Resource_sync" ); 255 con->setGroup( "Resource_sync" );
256 con->writeEntry( "FileName", config ); 256 con->writeEntry( "FileName", config );
257 con->writeEntry( "FileFormat", QString("vcard") ); 257 con->writeEntry( "FileFormat", QString("vcard") );
258 con->writeEntry( "ResourceIdentifier", QString("sync") ); 258 con->writeEntry( "ResourceIdentifier", QString("sync") );
259 con->writeEntry( "ResourceName", QString("sync_res") ); 259 con->writeEntry( "ResourceName", QString("sync_res") );
260 if ( config.right(4) == ".xml" ) 260 if ( config.right(4) == ".xml" )
261 con->writeEntry( "ResourceType", QString("qtopia") ); 261 con->writeEntry( "ResourceType", QString("qtopia") );
262 else if ( config == "sharp" ) { 262 else if ( config == "sharp" ) {
263 con->writeEntry( "ResourceType", QString("sharp") ); 263 con->writeEntry( "ResourceType", QString("sharp") );
264 } else { 264 } else {
265 con->writeEntry( "ResourceType", QString("file") ); 265 con->writeEntry( "ResourceType", QString("file") );
266 } 266 }
267 //con->sync(); 267 //con->sync();
268 d->mConfig = con; 268 d->mConfig = con;
269 } 269 }
270 else 270 else
271 d->mConfig = new KConfig( locateLocal("config", config) ); 271 d->mConfig = new KConfig( locateLocal("config", config) );
272// qDebug("AddressBook::init 1 config=%s",config.latin1() ); 272// qDebug("AddressBook::init 1 config=%s",config.latin1() );
273 } 273 }
274 else { 274 else {
275 d->mConfig = 0; 275 d->mConfig = 0;
276// qDebug("AddressBook::init 1 config=0"); 276// qDebug("AddressBook::init 1 config=0");
277 } 277 }
278 278
279//US d->mErrorHandler = 0; 279//US d->mErrorHandler = 0;
280 d->mManager = new KRES::Manager<Resource>( fami ); 280 d->mManager = new KRES::Manager<Resource>( fami );
281 d->mManager->readConfig( d->mConfig ); 281 d->mManager->readConfig( d->mConfig );
282 if ( family == "syncContact" ) { 282 if ( family == "syncContact" ) {
283 KRES::Manager<Resource> *manager = d->mManager; 283 KRES::Manager<Resource> *manager = d->mManager;
284 KRES::Manager<Resource>::ActiveIterator it; 284 KRES::Manager<Resource>::ActiveIterator it;
285 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) { 285 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) {
286 (*it)->setAddressBook( this ); 286 (*it)->setAddressBook( this );
287 if ( !(*it)->open() ) 287 if ( !(*it)->open() )
288 error( QString( "Unable to open resource '%1'!" ).arg( (*it)->resourceName() ) ); 288 error( QString( "Unable to open resource '%1'!" ).arg( (*it)->resourceName() ) );
289 } 289 }
290 Resource *res = standardResource(); 290 Resource *res = standardResource();
291 if ( !res ) { 291 if ( !res ) {
292 qDebug("ERROR: no standard resource"); 292 qDebug("ERROR: no standard resource");
293 res = manager->createResource( "file" ); 293 res = manager->createResource( "file" );
294 if ( res ) 294 if ( res )
295 { 295 {
296 addResource( res ); 296 addResource( res );
297 } 297 }
298 else 298 else
299 qDebug(" No resource available!!!"); 299 qDebug(" No resource available!!!");
300 } 300 }
301 setStandardResource( res ); 301 setStandardResource( res );
302 manager->writeConfig(); 302 manager->writeConfig();
303 } 303 }
304 addCustomField( i18n( "Department" ), KABC::Field::Organization, 304 addCustomField( i18n( "Department" ), KABC::Field::Organization,
305 "X-Department", "KADDRESSBOOK" ); 305 "X-Department", "KADDRESSBOOK" );
306 addCustomField( i18n( "Profession" ), KABC::Field::Organization, 306 addCustomField( i18n( "Profession" ), KABC::Field::Organization,
307 "X-Profession", "KADDRESSBOOK" ); 307 "X-Profession", "KADDRESSBOOK" );
308 addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization, 308 addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization,
309 "X-AssistantsName", "KADDRESSBOOK" ); 309 "X-AssistantsName", "KADDRESSBOOK" );
310 addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization, 310 addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization,
311 "X-ManagersName", "KADDRESSBOOK" ); 311 "X-ManagersName", "KADDRESSBOOK" );
312 addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal, 312 addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal,
313 "X-SpousesName", "KADDRESSBOOK" ); 313 "X-SpousesName", "KADDRESSBOOK" );
314 addCustomField( i18n( "Office" ), KABC::Field::Personal, 314 addCustomField( i18n( "Office" ), KABC::Field::Personal,
315 "X-Office", "KADDRESSBOOK" ); 315 "X-Office", "KADDRESSBOOK" );
316 addCustomField( i18n( "IM Address" ), KABC::Field::Personal, 316 addCustomField( i18n( "IM Address" ), KABC::Field::Personal,
317 "X-IMAddress", "KADDRESSBOOK" ); 317 "X-IMAddress", "KADDRESSBOOK" );
318 addCustomField( i18n( "Anniversary" ), KABC::Field::Personal, 318 addCustomField( i18n( "Anniversary" ), KABC::Field::Personal,
319 "X-Anniversary", "KADDRESSBOOK" ); 319 "X-Anniversary", "KADDRESSBOOK" );
320 320
321 //US added this field to become compatible with Opie/qtopia addressbook 321 //US added this field to become compatible with Opie/qtopia addressbook
322 // values can be "female" or "male" or "". An empty field represents undefined. 322 // values can be "female" or "male" or "". An empty field represents undefined.
323 addCustomField( i18n( "Gender" ), KABC::Field::Personal, 323 addCustomField( i18n( "Gender" ), KABC::Field::Personal,
324 "X-Gender", "KADDRESSBOOK" ); 324 "X-Gender", "KADDRESSBOOK" );
325 addCustomField( i18n( "Children" ), KABC::Field::Personal, 325 addCustomField( i18n( "Children" ), KABC::Field::Personal,
326 "X-Children", "KADDRESSBOOK" ); 326 "X-Children", "KADDRESSBOOK" );
327 addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal, 327 addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal,
328 "X-FreeBusyUrl", "KADDRESSBOOK" ); 328 "X-FreeBusyUrl", "KADDRESSBOOK" );
329 addCustomField( i18n( "ExternalID" ), KABC::Field::Personal, 329 addCustomField( i18n( "ExternalID" ), KABC::Field::Personal,
330 "X-ExternalID", "KADDRESSBOOK" ); 330 "X-ExternalID", "KADDRESSBOOK" );
331} 331}
332 332
333AddressBook::~AddressBook() 333AddressBook::~AddressBook()
334{ 334{
335 delete d->mConfig; d->mConfig = 0; 335 delete d->mConfig; d->mConfig = 0;
336 delete d->mManager; d->mManager = 0; 336 delete d->mManager; d->mManager = 0;
337//US delete d->mErrorHandler; d->mErrorHandler = 0; 337//US delete d->mErrorHandler; d->mErrorHandler = 0;
338 delete d; d = 0; 338 delete d; d = 0;
339} 339}
340 340
341bool AddressBook::load() 341bool AddressBook::load()
342{ 342{
343 343
344 clear(); 344 clear();
345 KRES::Manager<Resource>::ActiveIterator it; 345 KRES::Manager<Resource>::ActiveIterator it;
346 bool ok = true; 346 bool ok = true;
347 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) 347 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it )
348 if ( !(*it)->load() ) { 348 if ( !(*it)->load() ) {
349 qDebug( i18n("Unable to load resource '%1'").arg( (*it)->resourceName() ) ); 349 qDebug( i18n("Unable to load resource '%1'").arg( (*it)->resourceName() ) );
350 ok = false; 350 ok = false;
351 } else { 351 } else {
352 qDebug( i18n("Resource loaded: '%1'").arg( (*it)->resourceName() ) ); 352 qDebug( i18n("Resource loaded: '%1'").arg( (*it)->resourceName() ) );
353 } 353 }
354 // mark all addressees as unchanged 354 // mark all addressees as unchanged
355 Addressee::List::Iterator addrIt; 355 Addressee::List::Iterator addrIt;
356 for ( addrIt = d->mAddressees.begin(); addrIt != d->mAddressees.end(); ++addrIt ) { 356 for ( addrIt = d->mAddressees.begin(); addrIt != d->mAddressees.end(); ++addrIt ) {
357 (*addrIt).setChanged( false ); 357 (*addrIt).setChanged( false );
358 QString id = (*addrIt).custom( "KADDRESSBOOK", "X-ExternalID" ); 358 QString id = (*addrIt).custom( "KADDRESSBOOK", "X-ExternalID" );
359 if ( !id.isEmpty() ) { 359 if ( !id.isEmpty() ) {
360 //qDebug("setId aa %s ", id.latin1()); 360 //qDebug("setId aa %s ", id.latin1());
361 (*addrIt).setIDStr(id ); 361 (*addrIt).setIDStr(id );
362 } 362 }
363 } 363 }
364 blockLSEchange = true; 364 blockLSEchange = true;
365 return ok; 365 return ok;
366} 366}
367 367
368bool AddressBook::save( Ticket *ticket ) 368bool AddressBook::save( Ticket *ticket )
369{ 369{
370 kdDebug(5700) << "AddressBook::save()"<< endl; 370 kdDebug(5700) << "AddressBook::save()"<< endl;
371 371
372 if ( ticket->resource() ) { 372 if ( ticket->resource() ) {
373 deleteRemovedAddressees(); 373 deleteRemovedAddressees();
374 return ticket->resource()->save( ticket ); 374 return ticket->resource()->save( ticket );
375 } 375 }
376 376
377 return false; 377 return false;
378} 378}
379// exports all Addressees, which are syncable 379// exports all Addressees, which are syncable
380void AddressBook::export2File( QString fileName, QString resourceName ) 380void AddressBook::export2File( QString fileName, QString resourceName )
381{ 381{
382 382
383 QFile outFile( fileName ); 383 QFile outFile( fileName );
384 if ( !outFile.open( IO_WriteOnly ) ) { 384 if ( !outFile.open( QIODevice::WriteOnly ) ) {
385 QString text = i18n( "<qt>Unable to open file <b>%1</b> for export.</qt>" ); 385 QString text = i18n( "<qt>Unable to open file <b>%1</b> for export.</qt>" );
386 KMessageBox::error( 0, text.arg( fileName ) ); 386 KMessageBox::error( 0, text.arg( fileName ) );
387 return ; 387 return ;
388 } 388 }
389 QTextStream t( &outFile ); 389 Q3TextStream t( &outFile );
390 t.setEncoding( QTextStream::UnicodeUTF8 ); 390 t.setEncoding( Q3TextStream::UnicodeUTF8 );
391 Iterator it; 391 Iterator it;
392 KABC::VCardConverter::Version version; 392 KABC::VCardConverter::Version version;
393 version = KABC::VCardConverter::v3_0; 393 version = KABC::VCardConverter::v3_0;
394 for ( it = begin(); it != end(); ++it ) { 394 for ( it = begin(); it != end(); ++it ) {
395 if ( (*it).resource() ) { 395 if ( (*it).resource() ) {
396 bool include = (*it).resource()->includeInSync(); 396 bool include = (*it).resource()->includeInSync();
397 if ( !resourceName.isEmpty() ) 397 if ( !resourceName.isEmpty() )
398 include = (resourceName == (*it).resource()->resourceName() ); 398 include = (resourceName == (*it).resource()->resourceName() );
399 if ( include ) { 399 if ( include ) {
400 //qDebug(QString ("Exporting resource %1 to file %2").arg( (*it).resource()->resourceName() ).arg( fileName ) ); 400 //qDebug(QString ("Exporting resource %1 to file %2").arg( (*it).resource()->resourceName() ).arg( fileName ) );
401 if ( !(*it).IDStr().isEmpty() ) { 401 if ( !(*it).IDStr().isEmpty() ) {
402 (*it).insertCustom( "KADDRESSBOOK", "X-ExternalID", (*it).IDStr() ); 402 (*it).insertCustom( "KADDRESSBOOK", "X-ExternalID", (*it).IDStr() );
403 } 403 }
404 KABC::VCardConverter converter; 404 KABC::VCardConverter converter;
405 QString vcard; 405 QString vcard;
406 //Resource *resource() const; 406 //Resource *resource() const;
407 converter.addresseeToVCard( *it, vcard, version ); 407 converter.addresseeToVCard( *it, vcard, version );
408 t << vcard << "\r\n"; 408 t << vcard << "\r\n";
409 } 409 }
410 } 410 }
411 } 411 }
412 t << "\r\n\r\n"; 412 t << "\r\n\r\n";
413 outFile.close(); 413 outFile.close();
414} 414}
415// if QStringList uids is empty, all are exported 415// if QStringList uids is empty, all are exported
416bool AddressBook::export2PhoneFormat( QStringList uids ,QString fileName ) 416bool AddressBook::export2PhoneFormat( QStringList uids ,QString fileName )
417{ 417{
418 KABC::VCardConverter converter; 418 KABC::VCardConverter converter;
419 QString datastream; 419 QString datastream;
420 Iterator it; 420 Iterator it;
421 bool all = uids.isEmpty(); 421 bool all = uids.isEmpty();
422 for ( it = begin(); it != end(); ++it ) { 422 for ( it = begin(); it != end(); ++it ) {
423 // for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { 423 // for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
424 if ( ! all ) { 424 if ( ! all ) {
425 if ( ! ( uids.contains((*it).uid() ) )) 425 if ( ! ( uids.contains((*it).uid() ) ))
426 continue; 426 continue;
427 } 427 }
428 KABC::Addressee a = ( *it ); 428 KABC::Addressee a = ( *it );
429 if ( a.isEmpty() ) 429 if ( a.isEmpty() )
430 continue; 430 continue;
431 if ( all && a.resource() && !a.resource()->includeInSync() ) 431 if ( all && a.resource() && !a.resource()->includeInSync() )
432 continue; 432 continue;
433 a.simplifyEmails(); 433 a.simplifyEmails();
434 a.simplifyPhoneNumbers(); 434 a.simplifyPhoneNumbers();
435 a.simplifyPhoneNumberTypes(); 435 a.simplifyPhoneNumberTypes();
436 a.simplifyAddresses(); 436 a.simplifyAddresses();
437 437
438 QString vcard; 438 QString vcard;
439 QString vcardnew; 439 QString vcardnew;
440 converter.addresseeToVCard( a, vcard ); 440 converter.addresseeToVCard( a, vcard );
441 int start = 0; 441 int start = 0;
442 int next; 442 int next;
443 while ( (next = vcard.find("TYPE=", start) )>= 0 ) { 443 while ( (next = vcard.find("TYPE=", start) )>= 0 ) {
444 int semi = vcard.find(";", next); 444 int semi = vcard.find(";", next);
445 int dopp = vcard.find(":", next); 445 int dopp = vcard.find(":", next);
446 int sep; 446 int sep;
447 if ( semi < dopp && semi >= 0 ) 447 if ( semi < dopp && semi >= 0 )
448 sep = semi ; 448 sep = semi ;
449 else 449 else
450 sep = dopp; 450 sep = dopp;
451 vcardnew +=vcard.mid( start, next - start); 451 vcardnew +=vcard.mid( start, next - start);
452 vcardnew +=vcard.mid( next+5,sep -next -5 ).upper(); 452 vcardnew +=vcard.mid( next+5,sep -next -5 ).upper();
453 start = sep; 453 start = sep;
454 } 454 }
455 vcardnew += vcard.mid( start,vcard.length() ); 455 vcardnew += vcard.mid( start,vcard.length() );
456 vcard = ""; 456 vcard = "";
457 start = 0; 457 start = 0;
458 while ( (next = vcardnew.find("ADR", start) )>= 0 ) { 458 while ( (next = vcardnew.find("ADR", start) )>= 0 ) {
459 int sep = vcardnew.find(":", next); 459 int sep = vcardnew.find(":", next);
460 vcard +=vcardnew.mid( start, next - start+3); 460 vcard +=vcardnew.mid( start, next - start+3);
461 start = sep; 461 start = sep;
462 } 462 }
463 vcard += vcardnew.mid( start,vcardnew.length() ); 463 vcard += vcardnew.mid( start,vcardnew.length() );
464 vcard.replace ( QRegExp(";;;") , "" ); 464 vcard.replace ( QRegExp(";;;") , "" );
465 vcard.replace ( QRegExp(";;") , "" ); 465 vcard.replace ( QRegExp(";;") , "" );
466 datastream += vcard; 466 datastream += vcard;
467 467
468 } 468 }
469 469
470 QFile outFile(fileName); 470 QFile outFile(fileName);
471 if ( outFile.open(IO_WriteOnly) ) { 471 if ( outFile.open(QIODevice::WriteOnly) ) {
472 datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" ); 472 datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" );
473 QTextStream t( &outFile ); // use a text stream 473 Q3TextStream t( &outFile ); // use a text stream
474 t.setEncoding( QTextStream::UnicodeUTF8 ); 474 t.setEncoding( Q3TextStream::UnicodeUTF8 );
475 t <<datastream; 475 t <<datastream;
476 t << "\r\n\r\n"; 476 t << "\r\n\r\n";
477 outFile.close(); 477 outFile.close();
478 478
479 } else { 479 } else {
480 qDebug("Error open temp file "); 480 qDebug("Error open temp file ");
481 return false; 481 return false;
482 } 482 }
483 return true; 483 return true;
484 484
485} 485}
486int AddressBook::importFromFile( QString fileName, bool replaceLabel, bool removeOld, QString resource ) 486int AddressBook::importFromFile( QString fileName, bool replaceLabel, bool removeOld, QString resource )
487{ 487{
488 488
489 if ( removeOld ) 489 if ( removeOld )
490 setUntagged( true, resource ); 490 setUntagged( true, resource );
491 KABC::Addressee::List list; 491 KABC::Addressee::List list;
492 QFile file( fileName ); 492 QFile file( fileName );
493 file.open( IO_ReadOnly ); 493 file.open( QIODevice::ReadOnly );
494 QByteArray rawData = file.readAll(); 494 QByteArray rawData = file.readAll();
495 file.close(); 495 file.close();
496 QString data; 496 QString data;
497 if ( replaceLabel ) { 497 if ( replaceLabel ) {
498 data = QString::fromLatin1( rawData.data(), rawData.size() + 1 ); 498 data = QString::fromLatin1( rawData.data(), rawData.size() + 1 );
499 data.replace ( QRegExp("LABEL") , "ADR" ); 499 data.replace ( QRegExp("LABEL") , "ADR" );
500 data.replace ( QRegExp("CHARSET=ISO-8859-1") , "" ); 500 data.replace ( QRegExp("CHARSET=ISO-8859-1") , "" );
501 } else 501 } else
502 data = QString::fromUtf8( rawData.data(), rawData.size() + 1 ); 502 data = QString::fromUtf8( rawData.data(), rawData.size() + 1 );
503 KABC::VCardTool tool; 503 KABC::VCardTool tool;
504 list = tool.parseVCards( data ); 504 list = tool.parseVCards( data );
505 KABC::Addressee::List::Iterator it; 505 KABC::Addressee::List::Iterator it;
506 506
507 Resource * setRes = 0; 507 Resource * setRes = 0;
508 if ( !resource.isEmpty() ) { 508 if ( !resource.isEmpty() ) {
509 KRES::Manager<Resource>::ActiveIterator it; 509 KRES::Manager<Resource>::ActiveIterator it;
510 KRES::Manager<Resource> *manager = d->mManager; 510 KRES::Manager<Resource> *manager = d->mManager;
511 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) { 511 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) {
512 //qDebug("SaveAB::checking resource..." ); 512 //qDebug("SaveAB::checking resource..." );
513 if ( (*it)->resourceName() == resource ) { 513 if ( (*it)->resourceName() == resource ) {
514 setRes = (*it); 514 setRes = (*it);
515 qDebug("KA: AB: Inserting imported contacs to resource %s", resource.latin1()); 515 qDebug("KA: AB: Inserting imported contacs to resource %s", resource.latin1());
516 break; 516 break;
517 } 517 }
518 } 518 }
519 } 519 }
520 for ( it = list.begin(); it != list.end(); ++it ) { 520 for ( it = list.begin(); it != list.end(); ++it ) {
521 QString id = (*it).custom( "KADDRESSBOOK", "X-ExternalID" ); 521 QString id = (*it).custom( "KADDRESSBOOK", "X-ExternalID" );
522 if ( !id.isEmpty() ) 522 if ( !id.isEmpty() )
523 (*it).setIDStr(id ); 523 (*it).setIDStr(id );
524 (*it).setResource( setRes ); 524 (*it).setResource( setRes );
525 if ( replaceLabel ) 525 if ( replaceLabel )
526 (*it).removeVoice(); 526 (*it).removeVoice();
527 if ( removeOld ) 527 if ( removeOld )
528 (*it).setTagged( true ); 528 (*it).setTagged( true );
529 insertAddressee( (*it), false, true ); 529 insertAddressee( (*it), false, true );
530 } 530 }
531 if ( removeOld ) 531 if ( removeOld )
532 removeUntagged(); 532 removeUntagged();
533 return list.count(); 533 return list.count();
534} 534}
535void AddressBook::setUntagged(bool setNonSyncTagged, QString resource) // = false , "") 535void AddressBook::setUntagged(bool setNonSyncTagged, QString resource) // = false , "")
536{ 536{
537 Iterator ait; 537 Iterator ait;
538 if ( !resource.isEmpty() ) { 538 if ( !resource.isEmpty() ) {
539 for ( ait = begin(); ait != end(); ++ait ) { 539 for ( ait = begin(); ait != end(); ++ait ) {
540 if ( (*ait).resource() && (*ait).resource()->resourceName() == resource ) { 540 if ( (*ait).resource() && (*ait).resource()->resourceName() == resource ) {
541 (*ait).setTagged( false ); 541 (*ait).setTagged( false );
542 } 542 }
543 else 543 else
544 (*ait).setTagged( true ); 544 (*ait).setTagged( true );
545 } 545 }
546 } else { 546 } else {
547 for ( ait = begin(); ait != end(); ++ait ) { 547 for ( ait = begin(); ait != end(); ++ait ) {
548 if ( setNonSyncTagged ) { 548 if ( setNonSyncTagged ) {
549 if ( (*ait).resource() && ! (*ait).resource()->includeInSync() ) { 549 if ( (*ait).resource() && ! (*ait).resource()->includeInSync() ) {
550 (*ait).setTagged( true ); 550 (*ait).setTagged( true );
551 } else 551 } else
552 (*ait).setTagged( false ); 552 (*ait).setTagged( false );
553 } else 553 } else
554 (*ait).setTagged( false ); 554 (*ait).setTagged( false );
555 } 555 }
556 } 556 }
557} 557}
558void AddressBook::removeUntagged() 558void AddressBook::removeUntagged()
559{ 559{
560 Iterator ait; 560 Iterator ait;
561 bool todelete = false; 561 bool todelete = false;
562 Iterator todel; 562 Iterator todel;
563 for ( ait = begin(); ait != end(); ++ait ) { 563 for ( ait = begin(); ait != end(); ++ait ) {
564 if ( todelete ) 564 if ( todelete )
565 removeAddressee( todel ); 565 removeAddressee( todel );
566 if (!(*ait).tagged()) { 566 if (!(*ait).tagged()) {
567 todelete = true; 567 todelete = true;
568 todel = ait; 568 todel = ait;
569 } else 569 } else
570 todelete = false; 570 todelete = false;
571 } 571 }
572 if ( todelete ) 572 if ( todelete )
573 removeAddressee( todel ); 573 removeAddressee( todel );
574 deleteRemovedAddressees(); 574 deleteRemovedAddressees();
575} 575}
576void AddressBook::smplifyAddressees() 576void AddressBook::smplifyAddressees()
577{ 577{
578 Iterator ait; 578 Iterator ait;
579 for ( ait = begin(); ait != end(); ++ait ) { 579 for ( ait = begin(); ait != end(); ++ait ) {
580 (*ait).simplifyEmails(); 580 (*ait).simplifyEmails();
581 (*ait).simplifyPhoneNumbers(); 581 (*ait).simplifyPhoneNumbers();
582 (*ait).simplifyPhoneNumberTypes(); 582 (*ait).simplifyPhoneNumberTypes();
583 (*ait).simplifyAddresses(); 583 (*ait).simplifyAddresses();
584 } 584 }
585} 585}
586void AddressBook::removeSyncInfo( QString syncProfile) 586void AddressBook::removeSyncInfo( QString syncProfile)
587{ 587{
588 Iterator ait; 588 Iterator ait;
589 for ( ait = begin(); ait != end(); ++ait ) { 589 for ( ait = begin(); ait != end(); ++ait ) {
590 (*ait).removeID( syncProfile ); 590 (*ait).removeID( syncProfile );
591 } 591 }
592 if ( syncProfile.isEmpty() ) { 592 if ( syncProfile.isEmpty() ) {
593 Iterator it = begin(); 593 Iterator it = begin();
594 Iterator it2 ; 594 Iterator it2 ;
595 while ( it != end() ) { 595 while ( it != end() ) {
596 if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) { 596 if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) {
597 it2 = it; 597 it2 = it;
598 //qDebug("removing %s ",(*it).uid().latin1() ); 598 //qDebug("removing %s ",(*it).uid().latin1() );
599 ++it; 599 ++it;
600 removeAddressee( it2 ); 600 removeAddressee( it2 );
601 } else { 601 } else {
602 //qDebug("skipping %s ",(*it).uid().latin1() ); 602 //qDebug("skipping %s ",(*it).uid().latin1() );
603 ++it; 603 ++it;
604 } 604 }
605 } 605 }
606 } else { 606 } else {
607 Addressee lse; 607 Addressee lse;
608 lse = findByUid( "last-syncAddressee-"+ syncProfile ); 608 lse = findByUid( "last-syncAddressee-"+ syncProfile );
609 if ( ! lse.isEmpty() ) 609 if ( ! lse.isEmpty() )
610 removeAddressee( lse ); 610 removeAddressee( lse );
611 } 611 }
612 612
613} 613}
614void AddressBook::preparePhoneSync( QString currentSyncDevice, bool isPreSync ) 614void AddressBook::preparePhoneSync( QString currentSyncDevice, bool isPreSync )
615{ 615{
616 Iterator ait; 616 Iterator ait;
617 for ( ait = begin(); ait != end(); ++ait ) { 617 for ( ait = begin(); ait != end(); ++ait ) {
618 QString id = (*ait).IDStr(); 618 QString id = (*ait).IDStr();
619 (*ait).setIDStr( ":"); 619 (*ait).setIDStr( ":");
620 (*ait).setExternalUID( id ); 620 (*ait).setExternalUID( id );
621 (*ait).setOriginalExternalUID( id ); 621 (*ait).setOriginalExternalUID( id );
622 if ( isPreSync ) 622 if ( isPreSync )
623 (*ait).setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL ); 623 (*ait).setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL );
624 else { 624 else {
625 (*ait).setTempSyncStat( SYNC_TEMPSTATE_NEW_ID ); 625 (*ait).setTempSyncStat( SYNC_TEMPSTATE_NEW_ID );
626 (*ait).setID( currentSyncDevice,id ); 626 (*ait).setID( currentSyncDevice,id );
627 627
628 } 628 }
629 } 629 }
630} 630}
631void AddressBook::findNewExtIds( QString fileName, QString currentSyncDevice ) 631void AddressBook::findNewExtIds( QString fileName, QString currentSyncDevice )
632{ 632{
633 633
634 setUntagged(); 634 setUntagged();
635 KABC::Addressee::List list; 635 KABC::Addressee::List list;
636 QFile file( fileName ); 636 QFile file( fileName );
637 file.open( IO_ReadOnly ); 637 file.open( QIODevice::ReadOnly );
638 QByteArray rawData = file.readAll(); 638 QByteArray rawData = file.readAll();
639 file.close(); 639 file.close();
640 QString data; 640 QString data;
641 641
642 data = QString::fromUtf8( rawData.data(), rawData.size() + 1 ); 642 data = QString::fromUtf8( rawData.data(), rawData.size() + 1 );
643 KABC::VCardTool tool; 643 KABC::VCardTool tool;
644 list = tool.parseVCards( data ); 644 list = tool.parseVCards( data );
645 KABC::Addressee::List::Iterator it; 645 KABC::Addressee::List::Iterator it;
646 for ( it = list.begin(); it != list.end(); ++it ) { 646 for ( it = list.begin(); it != list.end(); ++it ) {
647 Iterator ait; 647 Iterator ait;
648 for ( ait = begin(); ait != end(); ++ait ) { 648 for ( ait = begin(); ait != end(); ++ait ) {
649 if ( !(*ait).tagged() ) { 649 if ( !(*ait).tagged() ) {
650 if ( (*ait).containsAdr(*it)) { 650 if ( (*ait).containsAdr(*it)) {
651 (*ait).setTagged(true); 651 (*ait).setTagged(true);
652 QString id = (*it).custom( "KADDRESSBOOK", "X-ExternalID" ); 652 QString id = (*it).custom( "KADDRESSBOOK", "X-ExternalID" );
653 (*it).setIDStr( ":"); 653 (*it).setIDStr( ":");
654 (*it).setID( currentSyncDevice,id ); 654 (*it).setID( currentSyncDevice,id );
655 (*it).setExternalUID( id ); 655 (*it).setExternalUID( id );
656 (*it).setTempSyncStat( SYNC_TEMPSTATE_NEW_ID ); 656 (*it).setTempSyncStat( SYNC_TEMPSTATE_NEW_ID );
657 (*it).setUid( ( (*ait).uid() )); 657 (*it).setUid( ( (*ait).uid() ));
658 break; 658 break;
659 } 659 }
660 } 660 }
661 661
662 } 662 }
663 if ( ait == end() ) 663 if ( ait == end() )
664 qDebug("ERROR:: no ext ID found for uid: %s", (*it).uid().latin1()); 664 qDebug("ERROR:: no ext ID found for uid: %s", (*it).uid().latin1());
665 } 665 }
666 clear(); 666 clear();
667 for ( it = list.begin(); it != list.end(); ++it ) { 667 for ( it = list.begin(); it != list.end(); ++it ) {
668 insertAddressee( (*it) ); 668 insertAddressee( (*it) );
669 } 669 }
670} 670}
671 671
672bool AddressBook::saveABphone( QString fileName ) 672bool AddressBook::saveABphone( QString fileName )
673{ 673{
674 //smplifyAddressees(); 674 //smplifyAddressees();
675 qDebug("saveABphone:: saving AB... "); 675 qDebug("saveABphone:: saving AB... ");
676 if ( ! export2PhoneFormat( QStringList() ,fileName ) ) 676 if ( ! export2PhoneFormat( QStringList() ,fileName ) )
677 return false; 677 return false;
678 qDebug("saveABphone:: writing to phone... "); 678 qDebug("saveABphone:: writing to phone... ");
679 if ( !PhoneAccess::writeToPhone( fileName) ) { 679 if ( !PhoneAccess::writeToPhone( fileName) ) {
680 return false; 680 return false;
681 } 681 }
682 qDebug("saveABphone:: re-reading from phone... "); 682 qDebug("saveABphone:: re-reading from phone... ");
683 if ( !PhoneAccess::readFromPhone( fileName) ) { 683 if ( !PhoneAccess::readFromPhone( fileName) ) {
684 return false; 684 return false;
685 } 685 }
686 return true; 686 return true;
687} 687}
688bool AddressBook::saveAB() 688bool AddressBook::saveAB()
689{ 689{
690 bool ok = true; 690 bool ok = true;
691 691
692 deleteRemovedAddressees(); 692 deleteRemovedAddressees();
693 Iterator ait; 693 Iterator ait;
694 for ( ait = begin(); ait != end(); ++ait ) { 694 for ( ait = begin(); ait != end(); ++ait ) {
695 if ( !(*ait).IDStr().isEmpty() ) { 695 if ( !(*ait).IDStr().isEmpty() ) {
696 (*ait).insertCustom( "KADDRESSBOOK", "X-ExternalID", (*ait).IDStr() ); 696 (*ait).insertCustom( "KADDRESSBOOK", "X-ExternalID", (*ait).IDStr() );
697 } 697 }
698 } 698 }
699 KRES::Manager<Resource>::ActiveIterator it; 699 KRES::Manager<Resource>::ActiveIterator it;
700 KRES::Manager<Resource> *manager = d->mManager; 700 KRES::Manager<Resource> *manager = d->mManager;
701 qDebug("SaveAB::saving..." ); 701 qDebug("SaveAB::saving..." );
702 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) { 702 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) {
703 qDebug("SaveAB::checking resource..." ); 703 qDebug("SaveAB::checking resource..." );
704 if ( (*it)->readOnly() ) 704 if ( (*it)->readOnly() )
705 qDebug("SaveAB::resource is readonly." ); 705 qDebug("SaveAB::resource is readonly." );
706 if ( (*it)->isOpen() ) 706 if ( (*it)->isOpen() )
707 qDebug("SaveAB::resource is open" ); 707 qDebug("SaveAB::resource is open" );
708 708
709 if ( !(*it)->readOnly() && (*it)->isOpen() ) { 709 if ( !(*it)->readOnly() && (*it)->isOpen() ) {
710 Ticket *ticket = requestSaveTicket( *it ); 710 Ticket *ticket = requestSaveTicket( *it );
711 qDebug("SaveAB::StdAddressBook::save '%s'", (*it)->resourceName().latin1() ); 711 qDebug("SaveAB::StdAddressBook::save '%s'", (*it)->resourceName().latin1() );
712 if ( !ticket ) { 712 if ( !ticket ) {
713 qDebug( i18n( "SaveAB::Unable to save to resource '%1'. It is locked." ) 713 qDebug( i18n( "SaveAB::Unable to save to resource '%1'. It is locked." )
714 .arg( (*it)->resourceName() ) ); 714 .arg( (*it)->resourceName() ) );
715 return false; 715 return false;
716 } 716 }
717 717
718 //if ( !save( ticket ) ) 718 //if ( !save( ticket ) )
719 if ( ticket->resource() ) { 719 if ( ticket->resource() ) {
720 QString name = ticket->resource()->resourceName(); 720 QString name = ticket->resource()->resourceName();
721 if ( ! ticket->resource()->save( ticket ) ) 721 if ( ! ticket->resource()->save( ticket ) )
722 ok = false; 722 ok = false;
723 else 723 else
724 qDebug("SaveAB::resource saved '%s'", name.latin1() ); 724 qDebug("SaveAB::resource saved '%s'", name.latin1() );
725 725
726 } else 726 } else
727 ok = false; 727 ok = false;
728 728
729 } 729 }
730 } 730 }
731 return ok; 731 return ok;
732} 732}
733 733
734AddressBook::Iterator AddressBook::begin() 734AddressBook::Iterator AddressBook::begin()
735{ 735{
736 Iterator it = Iterator(); 736 Iterator it = Iterator();
737 it.d->mIt = d->mAddressees.begin(); 737 it.d->mIt = d->mAddressees.begin();
738 return it; 738 return it;
739} 739}
740 740
741AddressBook::ConstIterator AddressBook::begin() const 741AddressBook::ConstIterator AddressBook::begin() const
742{ 742{
743 ConstIterator it = ConstIterator(); 743 ConstIterator it = ConstIterator();
744 it.d->mIt = d->mAddressees.begin(); 744 it.d->mIt = d->mAddressees.begin();
745 return it; 745 return it;
746} 746}
747 747
748AddressBook::Iterator AddressBook::end() 748AddressBook::Iterator AddressBook::end()
749{ 749{
750 Iterator it = Iterator(); 750 Iterator it = Iterator();
751 it.d->mIt = d->mAddressees.end(); 751 it.d->mIt = d->mAddressees.end();
752 return it; 752 return it;
753} 753}
754 754
755AddressBook::ConstIterator AddressBook::end() const 755AddressBook::ConstIterator AddressBook::end() const
756{ 756{
757 ConstIterator it = ConstIterator(); 757 ConstIterator it = ConstIterator();
758 it.d->mIt = d->mAddressees.end(); 758 it.d->mIt = d->mAddressees.end();
759 return it; 759 return it;
760} 760}
761 761
762void AddressBook::clear() 762void AddressBook::clear()
763{ 763{
764 d->mAddressees.clear(); 764 d->mAddressees.clear();
765} 765}
766 766
767Ticket *AddressBook::requestSaveTicket( Resource *resource ) 767Ticket *AddressBook::requestSaveTicket( Resource *resource )
768{ 768{
769 kdDebug(5700) << "AddressBook::requestSaveTicket()" << endl; 769 kdDebug(5700) << "AddressBook::requestSaveTicket()" << endl;
770 770
771 if ( !resource ) 771 if ( !resource )
772 { 772 {
773 qDebug("AddressBook::requestSaveTicket no resource" ); 773 qDebug("AddressBook::requestSaveTicket no resource" );
774 resource = standardResource(); 774 resource = standardResource();
775 } 775 }
776 776
777 KRES::Manager<Resource>::ActiveIterator it; 777 KRES::Manager<Resource>::ActiveIterator it;
778 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) { 778 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) {
779 if ( (*it) == resource ) { 779 if ( (*it) == resource ) {
780 if ( (*it)->readOnly() || !(*it)->isOpen() ) 780 if ( (*it)->readOnly() || !(*it)->isOpen() )
781 return 0; 781 return 0;
782 else 782 else
783 return (*it)->requestSaveTicket(); 783 return (*it)->requestSaveTicket();
784 } 784 }
785 } 785 }
786 786
787 return 0; 787 return 0;
788} 788}
789//void insertAddressee( const Addressee &, bool setRev = true, bool takeResource = false); 789//void insertAddressee( const Addressee &, bool setRev = true, bool takeResource = false);
790void AddressBook::insertAddressee( const Addressee &a, bool setRev, bool takeResource ) 790void AddressBook::insertAddressee( const Addressee &a, bool setRev, bool takeResource )
791{ 791{
792 if ( blockLSEchange && setRev && a.uid().left( 19 ) == QString("last-syncAddressee-") ) { 792 if ( blockLSEchange && setRev && a.uid().left( 19 ) == QString("last-syncAddressee-") ) {
793 //qDebug("block insert "); 793 //qDebug("block insert ");
794 return; 794 return;
795 } 795 }
796 //qDebug("inserting.... %s ",a.uid().latin1() ); 796 //qDebug("inserting.... %s ",a.uid().latin1() );
797 bool found = false; 797 bool found = false;
798 Addressee::List::Iterator it; 798 Addressee::List::Iterator it;
799 for ( it = d->mAddressees.begin(); it != d->mAddressees.end(); ++it ) { 799 for ( it = d->mAddressees.begin(); it != d->mAddressees.end(); ++it ) {
800 if ( a.uid() == (*it).uid() ) { 800 if ( a.uid() == (*it).uid() ) {
801 801
802 bool changed = false; 802 bool changed = false;
803 Addressee addr = a; 803 Addressee addr = a;
804 if ( addr != (*it) ) 804 if ( addr != (*it) )
805 changed = true; 805 changed = true;
806 806
807 if ( takeResource ) { 807 if ( takeResource ) {
808 Resource * res = (*it).resource(); 808 Resource * res = (*it).resource();
809 (*it) = a; 809 (*it) = a;
810 (*it).setResource( res ); 810 (*it).setResource( res );
811 } else { 811 } else {
812 (*it) = a; 812 (*it) = a;
813 if ( (*it).resource() == 0 ) 813 if ( (*it).resource() == 0 )
814 (*it).setResource( standardResource() ); 814 (*it).setResource( standardResource() );
815 } 815 }
816 if ( changed ) { 816 if ( changed ) {
817 if ( setRev ) { 817 if ( setRev ) {
818 (*it).setRevision( QDateTime::currentDateTime() ); 818 (*it).setRevision( QDateTime::currentDateTime() );
819 } 819 }
820 (*it).setChanged( true ); 820 (*it).setChanged( true );
821 } 821 }
822 822
823 found = true; 823 found = true;
824 } else { 824 } else {
825 if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) { 825 if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) {
826 QString name = (*it).uid().mid( 19 ); 826 QString name = (*it).uid().mid( 19 );
827 Addressee b = a; 827 Addressee b = a;
828 QString id = b.getID( name ); 828 QString id = b.getID( name );
829 if ( ! id.isEmpty() ) { 829 if ( ! id.isEmpty() ) {
830 QString des = (*it).note(); 830 QString des = (*it).note();
831 int startN; 831 int startN;
832 if( (startN = des.find( id ) ) >= 0 ) { 832 if( (startN = des.find( id ) ) >= 0 ) {
833 int endN = des.find( ",", startN+1 ); 833 int endN = des.find( ",", startN+1 );
834 des = des.left( startN ) + des.mid( endN+1 ); 834 des = des.left( startN ) + des.mid( endN+1 );
835 (*it).setNote( des ); 835 (*it).setNote( des );
836 } 836 }
837 } 837 }
838 } 838 }
839 } 839 }
840 } 840 }
841 if ( found ) 841 if ( found )
842 return; 842 return;
843 843
844 d->mAddressees.append( a ); 844 d->mAddressees.append( a );
845 Addressee& addr = d->mAddressees.last(); 845 Addressee& addr = d->mAddressees.last();
846 if ( addr.resource() == 0 ) 846 if ( addr.resource() == 0 )
847 addr.setResource( standardResource() ); 847 addr.setResource( standardResource() );
848 addr.setChanged( true ); 848 addr.setChanged( true );
849} 849}
850 850
851void AddressBook::removeAddressee( const Addressee &a ) 851void AddressBook::removeAddressee( const Addressee &a )
852{ 852{
853 Iterator it; 853 Iterator it;
854 Iterator it2; 854 Iterator it2;
855 bool found = false; 855 bool found = false;
856 for ( it = begin(); it != end(); ++it ) { 856 for ( it = begin(); it != end(); ++it ) {
857 if ( a.uid() == (*it).uid() ) { 857 if ( a.uid() == (*it).uid() ) {
858 found = true; 858 found = true;
859 it2 = it; 859 it2 = it;
860 } else { 860 } else {
861 if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) { 861 if ( (*it).uid().left( 19 ) == QString("last-syncAddressee-") ) {
862 QString name = (*it).uid().mid( 19 ); 862 QString name = (*it).uid().mid( 19 );
863 Addressee b = a; 863 Addressee b = a;
864 QString id = b.getID( name ); 864 QString id = b.getID( name );
865 if ( ! id.isEmpty() ) { 865 if ( ! id.isEmpty() ) {
866 QString des = (*it).note(); 866 QString des = (*it).note();
867 if( des.find( id ) < 0 ) { 867 if( des.find( id ) < 0 ) {
868 des += id + ","; 868 des += id + ",";
869 (*it).setNote( des ); 869 (*it).setNote( des );
870 } 870 }
871 } 871 }
872 } 872 }
873 873
874 } 874 }
875 } 875 }
876 876
877 if ( found ) 877 if ( found )
878 removeAddressee( it2 ); 878 removeAddressee( it2 );
879 879
880} 880}
881 881
882void AddressBook::removeSyncAddressees( bool removeDeleted ) 882void AddressBook::removeSyncAddressees( bool removeDeleted )
883{ 883{
884 Iterator it = begin(); 884 Iterator it = begin();
885 Iterator it2 ; 885 Iterator it2 ;
886 QDateTime dt ( QDate( 2003,1,1) ); 886 QDateTime dt ( QDate( 2003,1,1) );
887 while ( it != end() ) { 887 while ( it != end() ) {
888 (*it).setRevision( dt ); 888 (*it).setRevision( dt );
889 if (( *it).IDStr() != "changed" ) { 889 if (( *it).IDStr() != "changed" ) {
890 // "changed" is used for tagging changed addressees when syncing with KDE or OL 890 // "changed" is used for tagging changed addressees when syncing with KDE or OL
891 (*it).removeCustom( "KADDRESSBOOK", "X-ExternalID" ); 891 (*it).removeCustom( "KADDRESSBOOK", "X-ExternalID" );
892 (*it).setIDStr(":"); 892 (*it).setIDStr(":");
893 } 893 }
894 if ( ( (*it).tempSyncStat() == SYNC_TEMPSTATE_DELETE && removeDeleted )|| (*it).uid().left( 19 ) == QString("last-syncAddressee-")) { 894 if ( ( (*it).tempSyncStat() == SYNC_TEMPSTATE_DELETE && removeDeleted )|| (*it).uid().left( 19 ) == QString("last-syncAddressee-")) {
895 it2 = it; 895 it2 = it;
896 //qDebug("removing %s ",(*it).uid().latin1() ); 896 //qDebug("removing %s ",(*it).uid().latin1() );
897 ++it; 897 ++it;
898 removeAddressee( it2 ); 898 removeAddressee( it2 );
899 } else { 899 } else {
900 //qDebug("skipping %s ",(*it).uid().latin1() ); 900 //qDebug("skipping %s ",(*it).uid().latin1() );
901 if ( removeDeleted ) { 901 if ( removeDeleted ) {
902 // we have no postprocessing in the resource, we have to do it here 902 // we have no postprocessing in the resource, we have to do it here
903 // we have to compute csum for all, because it could be the first sync 903 // we have to compute csum for all, because it could be the first sync
904 (*it).setTempSyncStat( SYNC_TEMPSTATE_NEW_ID ); 904 (*it).setTempSyncStat( SYNC_TEMPSTATE_NEW_ID );
905 } 905 }
906 ++it; 906 ++it;
907 } 907 }
908 } 908 }
909 deleteRemovedAddressees(); 909 deleteRemovedAddressees();
910} 910}
911 911
912void AddressBook::removeAddressee( const Iterator &it ) 912void AddressBook::removeAddressee( const Iterator &it )
913{ 913{
914 d->mRemovedAddressees.append( (*it) ); 914 d->mRemovedAddressees.append( (*it) );
915 d->mAddressees.remove( it.d->mIt ); 915 d->mAddressees.remove( it.d->mIt );
916} 916}
917 917
918AddressBook::Iterator AddressBook::find( const Addressee &a ) 918AddressBook::Iterator AddressBook::find( const Addressee &a )
919{ 919{
920 Iterator it; 920 Iterator it;
921 for ( it = begin(); it != end(); ++it ) { 921 for ( it = begin(); it != end(); ++it ) {
922 if ( a.uid() == (*it).uid() ) { 922 if ( a.uid() == (*it).uid() ) {
923 return it; 923 return it;
924 } 924 }
925 } 925 }
926 return end(); 926 return end();
927} 927}
928 928
929Addressee AddressBook::findByUid( const QString &uid ) 929Addressee AddressBook::findByUid( const QString &uid )
930{ 930{
931 Iterator it; 931 Iterator it;
932 for ( it = begin(); it != end(); ++it ) { 932 for ( it = begin(); it != end(); ++it ) {
933 if ( uid == (*it).uid() ) { 933 if ( uid == (*it).uid() ) {
934 return *it; 934 return *it;
935 } 935 }
936 } 936 }
937 return Addressee(); 937 return Addressee();
938} 938}
939void AddressBook::preExternSync( AddressBook* aBook, const QString& csd , bool isSubset ) 939void AddressBook::preExternSync( AddressBook* aBook, const QString& csd , bool isSubset )
940{ 940{
941 //qDebug("AddressBook::preExternSync "); 941 //qDebug("AddressBook::preExternSync ");
942 AddressBook::Iterator it; 942 AddressBook::Iterator it;
943 for ( it = begin(); it != end(); ++it ) { 943 for ( it = begin(); it != end(); ++it ) {
944 (*it).setID( csd, (*it).externalUID() ); 944 (*it).setID( csd, (*it).externalUID() );
945 (*it).computeCsum( csd ); 945 (*it).computeCsum( csd );
946 } 946 }
947 mergeAB( aBook ,csd, isSubset ); 947 mergeAB( aBook ,csd, isSubset );
948} 948}
949void AddressBook::preOLSync( AddressBook* aBook, const QString& csd ) 949void AddressBook::preOLSync( AddressBook* aBook, const QString& csd )
950{ 950{
951 //qDebug("AddressBook::preExternSync "); 951 //qDebug("AddressBook::preExternSync ");
952 AddressBook::Iterator it; 952 AddressBook::Iterator it;
953 for ( it = begin(); it != end(); ++it ) { 953 for ( it = begin(); it != end(); ++it ) {
954 (*it).setID( csd, (*it).externalUID() ); 954 (*it).setID( csd, (*it).externalUID() );
955 (*it).computeCsum( csd ); 955 (*it).computeCsum( csd );
956 } 956 }
957 957
958 Addressee ad; 958 Addressee ad;
959 for ( it = begin(); it != end(); ++it ) { 959 for ( it = begin(); it != end(); ++it ) {
960 ad = aBook->findByExternUid( (*it).externalUID(), csd ); 960 ad = aBook->findByExternUid( (*it).externalUID(), csd );
961 if ( !ad.isEmpty() ) { 961 if ( !ad.isEmpty() ) {
962 (*it).mergeOLContact( ad ); 962 (*it).mergeOLContact( ad );
963 } 963 }
964 } 964 }
965} 965}
966void AddressBook::postExternSync( AddressBook* aBook , const QString& csd, bool setID) 966void AddressBook::postExternSync( AddressBook* aBook , const QString& csd, bool setID)
967{ 967{
968 //qDebug("AddressBook::postExternSync "); 968 //qDebug("AddressBook::postExternSync ");
969 AddressBook::Iterator it; 969 AddressBook::Iterator it;
970 int foundEmpty = 0; 970 int foundEmpty = 0;
971 for ( it = begin(); it != end(); ++it ) { 971 for ( it = begin(); it != end(); ++it ) {
972 //qDebug("check uid %s ", (*it).uid().latin1() ); 972 //qDebug("check uid %s ", (*it).uid().latin1() );
973 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID || 973 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ||
974 (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_CSUM || 974 (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_CSUM ||
975 (*it).tempSyncStat() == SYNC_TEMPSTATE_ADDED_EXTERNAL) { 975 (*it).tempSyncStat() == SYNC_TEMPSTATE_ADDED_EXTERNAL) {
976 Addressee ad = aBook->findByUid( ( (*it).uid() )); 976 Addressee ad = aBook->findByUid( ( (*it).uid() ));
977 if ( ad.isEmpty() ) { 977 if ( ad.isEmpty() ) {
978 ++foundEmpty; 978 ++foundEmpty;
979 //qDebug("postExternSync:addressee is empty: %s ", (*it).uid().latin1()); 979 //qDebug("postExternSync:addressee is empty: %s ", (*it).uid().latin1());
980 //qDebug("-- formatted name %s ",(*it).formattedName().latin1() ); 980 //qDebug("-- formatted name %s ",(*it).formattedName().latin1() );
981 } else { 981 } else {
982 (*it).setIDStr(":"); 982 (*it).setIDStr(":");
983 if ( setID ) { 983 if ( setID ) {
984 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) 984 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID )
985 ad.setID( csd, (*it).externalUID() );{ 985 ad.setID( csd, (*it).externalUID() );{
986 } 986 }
987 } else 987 } else
988 ad.setID( csd, (*it).uid() ); 988 ad.setID( csd, (*it).uid() );
989 (*it).computeCsum( csd ); 989 (*it).computeCsum( csd );
990 ad.setCsum( csd, (*it).getCsum( csd ) ); 990 ad.setCsum( csd, (*it).getCsum( csd ) );
991 //qDebug("CSUM %s ",(*it).getCsum( csd ).latin1() ); 991 //qDebug("CSUM %s ",(*it).getCsum( csd ).latin1() );
992 aBook->insertAddressee( ad , false); 992 aBook->insertAddressee( ad , false);
993 } 993 }
994 } 994 }
995 } 995 }
996 if ( foundEmpty ) { 996 if ( foundEmpty ) {
997 qDebug("postExternSync:%d empty addressees found:\n probably filtered out by incoming sync filter.",foundEmpty ); 997 qDebug("postExternSync:%d empty addressees found:\n probably filtered out by incoming sync filter.",foundEmpty );
998 } 998 }
999 999
1000} 1000}
1001 1001
1002bool AddressBook::containsExternalUid( const QString& uid ) 1002bool AddressBook::containsExternalUid( const QString& uid )
1003{ 1003{
1004 Iterator it; 1004 Iterator it;
1005 for ( it = begin(); it != end(); ++it ) { 1005 for ( it = begin(); it != end(); ++it ) {
1006 if ( uid == (*it).externalUID( ) ) 1006 if ( uid == (*it).externalUID( ) )
1007 return true; 1007 return true;
1008 } 1008 }
1009 return false; 1009 return false;
1010} 1010}
1011const Addressee AddressBook::findByExternUid( const QString& uid , const QString& profile ) const 1011const Addressee AddressBook::findByExternUid( const QString& uid , const QString& profile ) const
1012{ 1012{
1013 ConstIterator it; 1013 ConstIterator it;
1014 for ( it = begin(); it != end(); ++it ) { 1014 for ( it = begin(); it != end(); ++it ) {
1015 if ( uid == (*it).getID( profile ) ) 1015 if ( uid == (*it).getID( profile ) )
1016 return (*it); 1016 return (*it);
1017 } 1017 }
1018 return Addressee(); 1018 return Addressee();
1019} 1019}
1020void AddressBook::mergeAB( AddressBook *aBook, const QString& profile , bool isSubset ) 1020void AddressBook::mergeAB( AddressBook *aBook, const QString& profile , bool isSubset )
1021{ 1021{
1022 Iterator it; 1022 Iterator it;
1023 Addressee ad; 1023 Addressee ad;
1024 for ( it = begin(); it != end(); ++it ) { 1024 for ( it = begin(); it != end(); ++it ) {
1025 ad = aBook->findByExternUid( (*it).externalUID(), profile ); 1025 ad = aBook->findByExternUid( (*it).externalUID(), profile );
1026 if ( !ad.isEmpty() ) { 1026 if ( !ad.isEmpty() ) {
1027 (*it).mergeContact( ad ,isSubset); 1027 (*it).mergeContact( ad ,isSubset);
1028 } 1028 }
1029 } 1029 }
1030#if 0 1030#if 0
1031 // test only 1031 // test only
1032 for ( it = begin(); it != end(); ++it ) { 1032 for ( it = begin(); it != end(); ++it ) {
1033 1033
1034 qDebug("uid %s ", (*it).uid().latin1()); 1034 qDebug("uid %s ", (*it).uid().latin1());
1035 } 1035 }
1036#endif 1036#endif
1037} 1037}
1038 1038
1039#if 0 1039#if 0
1040Addressee::List AddressBook::getExternLastSyncAddressees() 1040Addressee::List AddressBook::getExternLastSyncAddressees()
1041{ 1041{
1042 Addressee::List results; 1042 Addressee::List results;
1043 1043
1044 Iterator it; 1044 Iterator it;
1045 for ( it = begin(); it != end(); ++it ) { 1045 for ( it = begin(); it != end(); ++it ) {
1046 if ( (*it).uid().left( 19 ) == "last-syncAddressee-" ) { 1046 if ( (*it).uid().left( 19 ) == "last-syncAddressee-" ) {
1047 if ( (*it).familyName().left(4) == "!E: " ) 1047 if ( (*it).familyName().left(4) == "!E: " )
1048 results.append( *it ); 1048 results.append( *it );
1049 } 1049 }
1050 } 1050 }
1051 1051
1052 return results; 1052 return results;
1053} 1053}
1054#endif 1054#endif
1055void AddressBook::resetTempSyncStat() 1055void AddressBook::resetTempSyncStat()
1056{ 1056{
1057 Iterator it; 1057 Iterator it;
1058 for ( it = begin(); it != end(); ++it ) { 1058 for ( it = begin(); it != end(); ++it ) {
1059 (*it).setTempSyncStat ( SYNC_TEMPSTATE_INITIAL ); 1059 (*it).setTempSyncStat ( SYNC_TEMPSTATE_INITIAL );
1060 } 1060 }
1061 1061
1062} 1062}
1063 1063
1064QStringList AddressBook:: uidList() 1064QStringList AddressBook:: uidList()
1065{ 1065{
1066 QStringList results; 1066 QStringList results;
1067 Iterator it; 1067 Iterator it;
1068 for ( it = begin(); it != end(); ++it ) { 1068 for ( it = begin(); it != end(); ++it ) {
1069 results.append( (*it).uid() ); 1069 results.append( (*it).uid() );
1070 } 1070 }
1071 return results; 1071 return results;
1072} 1072}
1073 1073
1074 1074
1075Addressee::List AddressBook::allAddressees() 1075Addressee::List AddressBook::allAddressees()
1076{ 1076{
1077 return d->mAddressees; 1077 return d->mAddressees;
1078 1078
1079} 1079}
1080 1080
1081Addressee::List AddressBook::findByName( const QString &name ) 1081Addressee::List AddressBook::findByName( const QString &name )
1082{ 1082{
1083 Addressee::List results; 1083 Addressee::List results;
1084 1084
1085 Iterator it; 1085 Iterator it;
1086 for ( it = begin(); it != end(); ++it ) { 1086 for ( it = begin(); it != end(); ++it ) {
1087 if ( name == (*it).realName() ) { 1087 if ( name == (*it).realName() ) {
1088 results.append( *it ); 1088 results.append( *it );
1089 } 1089 }
1090 } 1090 }
1091 1091
1092 return results; 1092 return results;
1093} 1093}
1094 1094
1095Addressee::List AddressBook::findByEmail( const QString &email ) 1095Addressee::List AddressBook::findByEmail( const QString &email )
1096{ 1096{
1097 Addressee::List results; 1097 Addressee::List results;
1098 QStringList mailList; 1098 QStringList mailList;
1099 1099
1100 Iterator it; 1100 Iterator it;
1101 for ( it = begin(); it != end(); ++it ) { 1101 for ( it = begin(); it != end(); ++it ) {
1102 mailList = (*it).emails(); 1102 mailList = (*it).emails();
1103 for ( QStringList::Iterator ite = mailList.begin(); ite != mailList.end(); ++ite ) { 1103 for ( QStringList::Iterator ite = mailList.begin(); ite != mailList.end(); ++ite ) {
1104 if ( email == (*ite) ) { 1104 if ( email == (*ite) ) {
1105 results.append( *it ); 1105 results.append( *it );
1106 } 1106 }
1107 } 1107 }
1108 } 1108 }
1109 1109
1110 return results; 1110 return results;
1111} 1111}
1112 1112
1113Addressee::List AddressBook::findByCategory( const QString &category ) 1113Addressee::List AddressBook::findByCategory( const QString &category )
1114{ 1114{
1115 Addressee::List results; 1115 Addressee::List results;
1116 1116
1117 Iterator it; 1117 Iterator it;
1118 for ( it = begin(); it != end(); ++it ) { 1118 for ( it = begin(); it != end(); ++it ) {
1119 if ( (*it).hasCategory( category) ) { 1119 if ( (*it).hasCategory( category) ) {
1120 results.append( *it ); 1120 results.append( *it );
1121 } 1121 }
1122 } 1122 }
1123 1123
1124 return results; 1124 return results;
1125} 1125}
1126 1126
1127void AddressBook::dump() const 1127void AddressBook::dump() const
1128{ 1128{
1129 kdDebug(5700) << "AddressBook::dump() --- begin ---" << endl; 1129 kdDebug(5700) << "AddressBook::dump() --- begin ---" << endl;
1130 1130
1131 ConstIterator it; 1131 ConstIterator it;
1132 for( it = begin(); it != end(); ++it ) { 1132 for( it = begin(); it != end(); ++it ) {
1133 (*it).dump(); 1133 (*it).dump();
1134 } 1134 }
1135 1135
1136 kdDebug(5700) << "AddressBook::dump() --- end ---" << endl; 1136 kdDebug(5700) << "AddressBook::dump() --- end ---" << endl;
1137} 1137}
1138 1138
1139QString AddressBook::identifier() 1139QString AddressBook::identifier()
1140{ 1140{
1141 QStringList identifier; 1141 QStringList identifier;
1142 1142
1143 1143
1144 KRES::Manager<Resource>::ActiveIterator it; 1144 KRES::Manager<Resource>::ActiveIterator it;
1145 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) { 1145 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) {
1146 if ( !(*it)->identifier().isEmpty() ) 1146 if ( !(*it)->identifier().isEmpty() )
1147 identifier.append( (*it)->identifier() ); 1147 identifier.append( (*it)->identifier() );
1148 } 1148 }
1149 1149
1150 return identifier.join( ":" ); 1150 return identifier.join( ":" );
1151} 1151}
1152 1152
1153Field::List AddressBook::fields( int category ) 1153Field::List AddressBook::fields( int category )
1154{ 1154{
1155 if ( d->mAllFields.isEmpty() ) { 1155 if ( d->mAllFields.isEmpty() ) {
1156 d->mAllFields = Field::allFields(); 1156 d->mAllFields = Field::allFields();
1157 } 1157 }
1158 1158
1159 if ( category == Field::All ) return d->mAllFields; 1159 if ( category == Field::All ) return d->mAllFields;
1160 1160
1161 Field::List result; 1161 Field::List result;
1162 Field::List::ConstIterator it; 1162 Field::List::ConstIterator it;
1163 for( it = d->mAllFields.begin(); it != d->mAllFields.end(); ++it ) { 1163 for( it = d->mAllFields.begin(); it != d->mAllFields.end(); ++it ) {
1164 if ( (*it)->category() & category ) result.append( *it ); 1164 if ( (*it)->category() & category ) result.append( *it );
1165 } 1165 }
1166 1166
1167 return result; 1167 return result;
1168} 1168}
1169 1169
1170bool AddressBook::addCustomField( const QString &label, int category, 1170bool AddressBook::addCustomField( const QString &label, int category,
1171 const QString &key, const QString &app ) 1171 const QString &key, const QString &app )
1172{ 1172{
1173 if ( d->mAllFields.isEmpty() ) { 1173 if ( d->mAllFields.isEmpty() ) {
1174 d->mAllFields = Field::allFields(); 1174 d->mAllFields = Field::allFields();
1175 } 1175 }
1176//US QString a = app.isNull() ? KGlobal::instance()->instanceName() : app; 1176//US QString a = app.isNull() ? KGlobal::instance()->instanceName() : app;
1177 QString a = app.isNull() ? KGlobal::getAppName() : app; 1177 QString a = app.isNull() ? KGlobal::getAppName() : app;
1178 1178
1179 QString k = key.isNull() ? label : key; 1179 QString k = key.isNull() ? label : key;
1180 1180
1181 Field *field = Field::createCustomField( label, category, k, a ); 1181 Field *field = Field::createCustomField( label, category, k, a );
1182 1182
1183 if ( !field ) return false; 1183 if ( !field ) return false;
1184 1184
1185 d->mAllFields.append( field ); 1185 d->mAllFields.append( field );
1186 1186
1187 return true; 1187 return true;
1188} 1188}
1189 1189
1190QDataStream &KABC::operator<<( QDataStream &s, const AddressBook &ab ) 1190QDataStream &KABC::operator<<( QDataStream &s, const AddressBook &ab )
1191{ 1191{
1192 if (!ab.d) return s; 1192 if (!ab.d) return s;
1193 1193
1194 return s << ab.d->mAddressees; 1194 return s << ab.d->mAddressees;
1195} 1195}
1196 1196
1197QDataStream &KABC::operator>>( QDataStream &s, AddressBook &ab ) 1197QDataStream &KABC::operator>>( QDataStream &s, AddressBook &ab )
1198{ 1198{
1199 if (!ab.d) return s; 1199 if (!ab.d) return s;
1200 1200
1201 s >> ab.d->mAddressees; 1201 s >> ab.d->mAddressees;
1202 1202
1203 return s; 1203 return s;
1204} 1204}
1205 1205
1206bool AddressBook::addResource( Resource *resource ) 1206bool AddressBook::addResource( Resource *resource )
1207{ 1207{
1208 if ( !resource->open() ) { 1208 if ( !resource->open() ) {
1209 kdDebug(5700) << "AddressBook::addResource(): can't add resource" << endl; 1209 kdDebug(5700) << "AddressBook::addResource(): can't add resource" << endl;
1210 return false; 1210 return false;
1211 } 1211 }
1212 1212
1213 resource->setAddressBook( this ); 1213 resource->setAddressBook( this );
1214 1214
1215 d->mManager->add( resource ); 1215 d->mManager->add( resource );
1216 return true; 1216 return true;
1217} 1217}
1218void AddressBook::removeResources() 1218void AddressBook::removeResources()
1219{ 1219{
1220 //remove all possible resources. This should cleanup the configfile. 1220 //remove all possible resources. This should cleanup the configfile.
1221 QPtrList<KABC::Resource> mResources = resources(); 1221 Q3PtrList<KABC::Resource> mResources = resources();
1222 1222
1223 QPtrListIterator<KABC::Resource> it(mResources); 1223 Q3PtrListIterator<KABC::Resource> it(mResources);
1224 for ( ; it.current(); ++it ) { 1224 for ( ; it.current(); ++it ) {
1225 KABC::Resource *res = it.current(); 1225 KABC::Resource *res = it.current();
1226 removeResource(res); 1226 removeResource(res);
1227 } 1227 }
1228} 1228}
1229 1229
1230bool AddressBook::removeResource( Resource *resource ) 1230bool AddressBook::removeResource( Resource *resource )
1231{ 1231{
1232 resource->close(); 1232 resource->close();
1233 1233
1234 if ( resource == standardResource() ) 1234 if ( resource == standardResource() )
1235 d->mManager->setStandardResource( 0 ); 1235 d->mManager->setStandardResource( 0 );
1236 1236
1237 resource->setAddressBook( 0 ); 1237 resource->setAddressBook( 0 );
1238 1238
1239 d->mManager->remove( resource ); 1239 d->mManager->remove( resource );
1240 return true; 1240 return true;
1241} 1241}
1242 1242
1243QPtrList<Resource> AddressBook::resources() 1243Q3PtrList<Resource> AddressBook::resources()
1244{ 1244{
1245 QPtrList<Resource> list; 1245 Q3PtrList<Resource> list;
1246 1246
1247// qDebug("AddressBook::resources() 1"); 1247// qDebug("AddressBook::resources() 1");
1248 1248
1249 KRES::Manager<Resource>::ActiveIterator it; 1249 KRES::Manager<Resource>::ActiveIterator it;
1250 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) 1250 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it )
1251 list.append( *it ); 1251 list.append( *it );
1252 1252
1253 return list; 1253 return list;
1254} 1254}
1255 1255
1256/*US 1256/*US
1257void AddressBook::setErrorHandler( ErrorHandler *handler ) 1257void AddressBook::setErrorHandler( ErrorHandler *handler )
1258{ 1258{
1259 delete d->mErrorHandler; 1259 delete d->mErrorHandler;
1260 d->mErrorHandler = handler; 1260 d->mErrorHandler = handler;
1261} 1261}
1262*/ 1262*/
1263 1263
1264void AddressBook::error( const QString& msg ) 1264void AddressBook::error( const QString& msg )
1265{ 1265{
1266/*US 1266/*US
1267 if ( !d->mErrorHandler ) // create default error handler 1267 if ( !d->mErrorHandler ) // create default error handler
1268 d->mErrorHandler = new ConsoleErrorHandler; 1268 d->mErrorHandler = new ConsoleErrorHandler;
1269 1269
1270 if ( d->mErrorHandler ) 1270 if ( d->mErrorHandler )
1271 d->mErrorHandler->error( msg ); 1271 d->mErrorHandler->error( msg );
1272 else 1272 else
1273 kdError(5700) << "no error handler defined" << endl; 1273 kdError(5700) << "no error handler defined" << endl;
1274*/ 1274*/
1275 kdDebug(5700) << "msg" << endl; 1275 kdDebug(5700) << "msg" << endl;
1276 qDebug(msg); 1276 qDebug(msg);
1277} 1277}
1278 1278
1279void AddressBook::deleteRemovedAddressees() 1279void AddressBook::deleteRemovedAddressees()
1280{ 1280{
1281 Addressee::List::Iterator it; 1281 Addressee::List::Iterator it;
1282 for ( it = d->mRemovedAddressees.begin(); it != d->mRemovedAddressees.end(); ++it ) { 1282 for ( it = d->mRemovedAddressees.begin(); it != d->mRemovedAddressees.end(); ++it ) {
1283 Resource *resource = (*it).resource(); 1283 Resource *resource = (*it).resource();
1284 if ( resource && !resource->readOnly() && resource->isOpen() ) 1284 if ( resource && !resource->readOnly() && resource->isOpen() )
1285 resource->removeAddressee( *it ); 1285 resource->removeAddressee( *it );
1286 } 1286 }
1287 1287
1288 d->mRemovedAddressees.clear(); 1288 d->mRemovedAddressees.clear();
1289} 1289}
1290 1290
1291void AddressBook::setStandardResource( Resource *resource ) 1291void AddressBook::setStandardResource( Resource *resource )
1292{ 1292{
1293// qDebug("AddressBook::setStandardResource 1"); 1293// qDebug("AddressBook::setStandardResource 1");
1294 d->mManager->setStandardResource( resource ); 1294 d->mManager->setStandardResource( resource );
1295} 1295}
1296 1296
1297Resource *AddressBook::standardResource() 1297Resource *AddressBook::standardResource()
1298{ 1298{
1299 return d->mManager->standardResource(); 1299 return d->mManager->standardResource();
1300} 1300}
1301 1301
1302KRES::Manager<Resource> *AddressBook::resourceManager() 1302KRES::Manager<Resource> *AddressBook::resourceManager()
1303{ 1303{
1304 return d->mManager; 1304 return d->mManager;
1305} 1305}
1306 1306
1307void AddressBook::cleanUp() 1307void AddressBook::cleanUp()
1308{ 1308{
1309 KRES::Manager<Resource>::ActiveIterator it; 1309 KRES::Manager<Resource>::ActiveIterator it;
1310 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) { 1310 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) {
1311 if ( !(*it)->readOnly() && (*it)->isOpen() ) 1311 if ( !(*it)->readOnly() && (*it)->isOpen() )
1312 (*it)->cleanUp(); 1312 (*it)->cleanUp();
1313 } 1313 }
1314} 1314}
diff --git a/kabc/addressbook.h b/kabc/addressbook.h
index a8a9fc1..56fce4d 100644
--- a/kabc/addressbook.h
+++ b/kabc/addressbook.h
@@ -1,351 +1,351 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28#ifndef KABC_ADDRESSBOOK_H 28#ifndef KABC_ADDRESSBOOK_H
29#define KABC_ADDRESSBOOK_H 29#define KABC_ADDRESSBOOK_H
30 30
31#include <qobject.h> 31#include <qobject.h>
32 32
33#include <kresources/manager.h> 33#include <kresources/manager.h>
34#include <qptrlist.h> 34#include <q3ptrlist.h>
35 35
36#include "addressee.h" 36#include "addressee.h"
37#include "field.h" 37#include "field.h"
38 38
39namespace KABC { 39namespace KABC {
40 40
41class ErrorHandler; 41class ErrorHandler;
42class Resource; 42class Resource;
43class Ticket; 43class Ticket;
44 44
45/** 45/**
46 @short Address Book 46 @short Address Book
47 47
48 This class provides access to a collection of address book entries. 48 This class provides access to a collection of address book entries.
49*/ 49*/
50class AddressBook : public QObject 50class AddressBook : public QObject
51{ 51{
52 Q_OBJECT 52 Q_OBJECT
53 53
54 friend QDataStream &operator<<( QDataStream &, const AddressBook & ); 54 friend QDataStream &operator<<( QDataStream &, const AddressBook & );
55 friend QDataStream &operator>>( QDataStream &, AddressBook & ); 55 friend QDataStream &operator>>( QDataStream &, AddressBook & );
56 friend class StdAddressBook; 56 friend class StdAddressBook;
57 57
58 public: 58 public:
59 /** 59 /**
60 @short Address Book Iterator 60 @short Address Book Iterator
61 61
62 This class provides an iterator for address book entries. 62 This class provides an iterator for address book entries.
63 */ 63 */
64 class Iterator 64 class Iterator
65 { 65 {
66 public: 66 public:
67 Iterator(); 67 Iterator();
68 Iterator( const Iterator & ); 68 Iterator( const Iterator & );
69 ~Iterator(); 69 ~Iterator();
70 70
71 Iterator &operator=( const Iterator & ); 71 Iterator &operator=( const Iterator & );
72 const Addressee &operator*() const; 72 const Addressee &operator*() const;
73 Addressee &operator*(); 73 Addressee &operator*();
74 Addressee* operator->(); 74 Addressee* operator->();
75 Iterator &operator++(); 75 Iterator &operator++();
76 Iterator &operator++(int); 76 Iterator &operator++(int);
77 Iterator &operator--(); 77 Iterator &operator--();
78 Iterator &operator--(int); 78 Iterator &operator--(int);
79 bool operator==( const Iterator &it ); 79 bool operator==( const Iterator &it );
80 bool operator!=( const Iterator &it ); 80 bool operator!=( const Iterator &it );
81 81
82 struct IteratorData; 82 struct IteratorData;
83 IteratorData *d; 83 IteratorData *d;
84 }; 84 };
85 85
86 /** 86 /**
87 @short Address Book Const Iterator 87 @short Address Book Const Iterator
88 88
89 This class provides a const iterator for address book entries. 89 This class provides a const iterator for address book entries.
90 */ 90 */
91 class ConstIterator 91 class ConstIterator
92 { 92 {
93 public: 93 public:
94 ConstIterator(); 94 ConstIterator();
95 ConstIterator( const ConstIterator & ); 95 ConstIterator( const ConstIterator & );
96 ~ConstIterator(); 96 ~ConstIterator();
97 97
98 ConstIterator &operator=( const ConstIterator & ); 98 ConstIterator &operator=( const ConstIterator & );
99 const Addressee &operator*() const; 99 const Addressee &operator*() const;
100 const Addressee* operator->() const; 100 const Addressee* operator->() const;
101 ConstIterator &operator++(); 101 ConstIterator &operator++();
102 ConstIterator &operator++(int); 102 ConstIterator &operator++(int);
103 ConstIterator &operator--(); 103 ConstIterator &operator--();
104 ConstIterator &operator--(int); 104 ConstIterator &operator--(int);
105 bool operator==( const ConstIterator &it ); 105 bool operator==( const ConstIterator &it );
106 bool operator!=( const ConstIterator &it ); 106 bool operator!=( const ConstIterator &it );
107 107
108 struct ConstIteratorData; 108 struct ConstIteratorData;
109 ConstIteratorData *d; 109 ConstIteratorData *d;
110 }; 110 };
111 111
112 /** 112 /**
113 Constructs a address book object. 113 Constructs a address book object.
114 114
115 @param format File format class. 115 @param format File format class.
116 */ 116 */
117 AddressBook(); 117 AddressBook();
118 AddressBook( const QString &config ); 118 AddressBook( const QString &config );
119 AddressBook( const QString &config, const QString &family ); 119 AddressBook( const QString &config, const QString &family );
120 virtual ~AddressBook(); 120 virtual ~AddressBook();
121 121
122 /** 122 /**
123 Requests a ticket for saving the addressbook. Calling this function locks 123 Requests a ticket for saving the addressbook. Calling this function locks
124 the addressbook for all other processes. If the address book is already 124 the addressbook for all other processes. If the address book is already
125 locked the function returns 0. You need the returned @ref Ticket object 125 locked the function returns 0. You need the returned @ref Ticket object
126 for calling the @ref save() function. 126 for calling the @ref save() function.
127 127
128 @see save() 128 @see save()
129 */ 129 */
130 Ticket *requestSaveTicket( Resource *resource=0 ); 130 Ticket *requestSaveTicket( Resource *resource=0 );
131 131
132 /** 132 /**
133 Load address book from file. 133 Load address book from file.
134 */ 134 */
135 bool load(); 135 bool load();
136 136
137 /** 137 /**
138 Save address book. The address book is saved to the file, the Ticket 138 Save address book. The address book is saved to the file, the Ticket
139 object has been requested for by @ref requestSaveTicket(). 139 object has been requested for by @ref requestSaveTicket().
140 140
141 @param ticket a ticket object returned by @ref requestSaveTicket() 141 @param ticket a ticket object returned by @ref requestSaveTicket()
142 */ 142 */
143 bool save( Ticket *ticket ); 143 bool save( Ticket *ticket );
144 bool saveAB( ); 144 bool saveAB( );
145 bool saveABphone( QString fileName ); 145 bool saveABphone( QString fileName );
146 void smplifyAddressees(); 146 void smplifyAddressees();
147 void removeSyncInfo( QString syncProfile); 147 void removeSyncInfo( QString syncProfile);
148 void preparePhoneSync( QString currentSyncDevice, bool isPreSync ); 148 void preparePhoneSync( QString currentSyncDevice, bool isPreSync );
149 void export2File( QString fileName, QString resourceName = "" ); 149 void export2File( QString fileName, QString resourceName = "" );
150 bool export2PhoneFormat( QStringList uids ,QString fileName ); 150 bool export2PhoneFormat( QStringList uids ,QString fileName );
151 int importFromFile( QString fileName, bool replaceLabel = false, bool removeOld = false, QString resource = "" ); 151 int importFromFile( QString fileName, bool replaceLabel = false, bool removeOld = false, QString resource = "" );
152 void setUntagged( bool setNonSyncTagged = false, QString resource = "" ); 152 void setUntagged( bool setNonSyncTagged = false, QString resource = "" );
153 void removeUntagged(); 153 void removeUntagged();
154 void findNewExtIds( QString fileName, QString currentSyncDevice ); 154 void findNewExtIds( QString fileName, QString currentSyncDevice );
155 /** 155 /**
156 Returns a iterator for first entry of address book. 156 Returns a iterator for first entry of address book.
157 */ 157 */
158 Iterator begin(); 158 Iterator begin();
159 159
160 /** 160 /**
161 Returns a const iterator for first entry of address book. 161 Returns a const iterator for first entry of address book.
162 */ 162 */
163 ConstIterator begin() const; 163 ConstIterator begin() const;
164 164
165 /** 165 /**
166 Returns a iterator for first entry of address book. 166 Returns a iterator for first entry of address book.
167 */ 167 */
168 Iterator end(); 168 Iterator end();
169 169
170 /** 170 /**
171 Returns a const iterator for first entry of address book. 171 Returns a const iterator for first entry of address book.
172 */ 172 */
173 ConstIterator end() const; 173 ConstIterator end() const;
174 174
175 /** 175 /**
176 Removes all entries from address book. 176 Removes all entries from address book.
177 */ 177 */
178 void clear(); 178 void clear();
179 179
180 /** 180 /**
181 Insert an Addressee object into address book. If an object with the same 181 Insert an Addressee object into address book. If an object with the same
182 unique id already exists in the address book it it replaced by the new 182 unique id already exists in the address book it it replaced by the new
183 one. If not the new object is appended to the address book. 183 one. If not the new object is appended to the address book.
184 */ 184 */
185 void insertAddressee( const Addressee &, bool setRev = true, bool takeResource = false); 185 void insertAddressee( const Addressee &, bool setRev = true, bool takeResource = false);
186 186
187 /** 187 /**
188 Removes entry from the address book. 188 Removes entry from the address book.
189 */ 189 */
190 void removeAddressee( const Addressee & ); 190 void removeAddressee( const Addressee & );
191 191
192 /** 192 /**
193 This is like @ref removeAddressee() just above, with the difference that 193 This is like @ref removeAddressee() just above, with the difference that
194 the first element is a iterator, returned by @ref begin(). 194 the first element is a iterator, returned by @ref begin().
195 */ 195 */
196 void removeAddressee( const Iterator & ); 196 void removeAddressee( const Iterator & );
197 197
198 /** 198 /**
199 Find the specified entry in address book. Returns end(), if the entry 199 Find the specified entry in address book. Returns end(), if the entry
200 couldn't be found. 200 couldn't be found.
201 */ 201 */
202 Iterator find( const Addressee & ); 202 Iterator find( const Addressee & );
203 203
204 /** 204 /**
205 Find the entry specified by an unique id. Returns an empty Addressee 205 Find the entry specified by an unique id. Returns an empty Addressee
206 object, if the address book does not contain an entry with this id. 206 object, if the address book does not contain an entry with this id.
207 */ 207 */
208 Addressee findByUid( const QString & ); 208 Addressee findByUid( const QString & );
209 209
210 210
211 /** 211 /**
212 Returns a list of all addressees in the address book. This list can 212 Returns a list of all addressees in the address book. This list can
213 be sorted with @ref KABC::AddresseeList for example. 213 be sorted with @ref KABC::AddresseeList for example.
214 */ 214 */
215 Addressee::List allAddressees(); 215 Addressee::List allAddressees();
216 216
217 /** 217 /**
218 Find all entries with the specified name in the address book. Returns 218 Find all entries with the specified name in the address book. Returns
219 an empty list, if no entries could be found. 219 an empty list, if no entries could be found.
220 */ 220 */
221 Addressee::List findByName( const QString & ); 221 Addressee::List findByName( const QString & );
222 222
223 /** 223 /**
224 Find all entries with the specified email address in the address book. 224 Find all entries with the specified email address in the address book.
225 Returns an empty list, if no entries could be found. 225 Returns an empty list, if no entries could be found.
226 */ 226 */
227 Addressee::List findByEmail( const QString & ); 227 Addressee::List findByEmail( const QString & );
228 228
229 /** 229 /**
230 Find all entries wich have the specified category in the address book. 230 Find all entries wich have the specified category in the address book.
231 Returns an empty list, if no entries could be found. 231 Returns an empty list, if no entries could be found.
232 */ 232 */
233 Addressee::List findByCategory( const QString & ); 233 Addressee::List findByCategory( const QString & );
234 234
235 /** 235 /**
236 Return a string identifying this addressbook. 236 Return a string identifying this addressbook.
237 */ 237 */
238 virtual QString identifier(); 238 virtual QString identifier();
239 239
240 /** 240 /**
241 Used for debug output. 241 Used for debug output.
242 */ 242 */
243 void dump() const; 243 void dump() const;
244 244
245 void emitAddressBookLocked() { emit addressBookLocked( this ); } 245 void emitAddressBookLocked() { emit addressBookLocked( this ); }
246 void emitAddressBookUnlocked() { emit addressBookUnlocked( this ); } 246 void emitAddressBookUnlocked() { emit addressBookUnlocked( this ); }
247 void emitAddressBookChanged() { emit addressBookChanged( this ); } 247 void emitAddressBookChanged() { emit addressBookChanged( this ); }
248 248
249 /** 249 /**
250 Return list of all Fields known to the address book which are associated 250 Return list of all Fields known to the address book which are associated
251 with the given field category. 251 with the given field category.
252 */ 252 */
253 Field::List fields( int category = Field::All ); 253 Field::List fields( int category = Field::All );
254 254
255 /** 255 /**
256 Add custom field to address book. 256 Add custom field to address book.
257 257
258 @param label User visible label of the field. 258 @param label User visible label of the field.
259 @param category Ored list of field categories. 259 @param category Ored list of field categories.
260 @param key Identifier used as key for reading and writing the field. 260 @param key Identifier used as key for reading and writing the field.
261 @param app String used as application key for reading and writing 261 @param app String used as application key for reading and writing
262 the field. 262 the field.
263 */ 263 */
264 bool addCustomField( const QString &label, int category = Field::All, 264 bool addCustomField( const QString &label, int category = Field::All,
265 const QString &key = QString::null, 265 const QString &key = QString::null,
266 const QString &app = QString::null ); 266 const QString &app = QString::null );
267 267
268 268
269 /** 269 /**
270 Add address book resource. 270 Add address book resource.
271 */ 271 */
272 bool addResource( Resource * ); 272 bool addResource( Resource * );
273 273
274 /** 274 /**
275 Remove address book resource. 275 Remove address book resource.
276 */ 276 */
277 void removeResources(); 277 void removeResources();
278 bool removeResource( Resource * ); 278 bool removeResource( Resource * );
279 279
280 /** 280 /**
281 Return pointer list of all resources. 281 Return pointer list of all resources.
282 */ 282 */
283 QPtrList<Resource> resources(); 283 Q3PtrList<Resource> resources();
284 284
285 /** 285 /**
286 Set the @p ErrorHandler, that is used by @ref error() to 286 Set the @p ErrorHandler, that is used by @ref error() to
287 provide gui-independend error messages. 287 provide gui-independend error messages.
288 */ 288 */
289 void setErrorHandler( ErrorHandler * ); 289 void setErrorHandler( ErrorHandler * );
290 290
291 /** 291 /**
292 Shows gui independend error messages. 292 Shows gui independend error messages.
293 */ 293 */
294 void error( const QString& ); 294 void error( const QString& );
295 295
296 /** 296 /**
297 Query all resources to clean up their lock files 297 Query all resources to clean up their lock files
298 */ 298 */
299 void cleanUp(); 299 void cleanUp();
300 300
301 // sync stuff 301 // sync stuff
302 //Addressee::List getExternLastSyncAddressees(); 302 //Addressee::List getExternLastSyncAddressees();
303 void resetTempSyncStat(); 303 void resetTempSyncStat();
304 QStringList uidList(); 304 QStringList uidList();
305 void removeSyncAddressees( bool removeDeleted = false ); 305 void removeSyncAddressees( bool removeDeleted = false );
306 void mergeAB( AddressBook *aBook, const QString& profile, bool isSubset ); 306 void mergeAB( AddressBook *aBook, const QString& profile, bool isSubset );
307 const Addressee findByExternUid( const QString& uid , const QString& profile ) const; 307 const Addressee findByExternUid( const QString& uid , const QString& profile ) const;
308 bool containsExternalUid( const QString& uid ); 308 bool containsExternalUid( const QString& uid );
309 309
310 void preExternSync( AddressBook* aBook, const QString& csd, bool isSubset ); 310 void preExternSync( AddressBook* aBook, const QString& csd, bool isSubset );
311 void preOLSync( AddressBook* aBook, const QString& csd); 311 void preOLSync( AddressBook* aBook, const QString& csd);
312 void postExternSync( AddressBook* aBook, const QString& csd , bool setID ); 312 void postExternSync( AddressBook* aBook, const QString& csd , bool setID );
313 signals: 313 signals:
314 /** 314 /**
315 Emitted, when the address book has changed on disk. 315 Emitted, when the address book has changed on disk.
316 */ 316 */
317 void addressBookChanged( AddressBook * ); 317 void addressBookChanged( AddressBook * );
318 318
319 /** 319 /**
320 Emitted, when the address book has been locked for writing. 320 Emitted, when the address book has been locked for writing.
321 */ 321 */
322 void addressBookLocked( AddressBook * ); 322 void addressBookLocked( AddressBook * );
323 323
324 /** 324 /**
325 Emitted, when the address book has been unlocked. 325 Emitted, when the address book has been unlocked.
326 */ 326 */
327 void addressBookUnlocked( AddressBook * ); 327 void addressBookUnlocked( AddressBook * );
328 328
329 protected: 329 protected:
330 void deleteRemovedAddressees(); 330 void deleteRemovedAddressees();
331 void setStandardResource( Resource * ); 331 void setStandardResource( Resource * );
332 Resource *standardResource(); 332 Resource *standardResource();
333 KRES::Manager<Resource> *resourceManager(); 333 KRES::Manager<Resource> *resourceManager();
334 334
335 void init(const QString &config, const QString &family); 335 void init(const QString &config, const QString &family);
336 336
337 private: 337 private:
338//US QPtrList<Resource> mDummy; // Remove in KDE 4 338//US QPtrList<Resource> mDummy; // Remove in KDE 4
339 339
340 340
341 struct AddressBookData; 341 struct AddressBookData;
342 AddressBookData *d; 342 AddressBookData *d;
343 bool blockLSEchange; 343 bool blockLSEchange;
344}; 344};
345 345
346QDataStream &operator<<( QDataStream &, const AddressBook & ); 346QDataStream &operator<<( QDataStream &, const AddressBook & );
347QDataStream &operator>>( QDataStream &, AddressBook & ); 347QDataStream &operator>>( QDataStream &, AddressBook & );
348 348
349} 349}
350 350
351#endif 351#endif
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp
index e8e440c..9994e29 100644
--- a/kabc/addressee.cpp
+++ b/kabc/addressee.cpp
@@ -1,2355 +1,2355 @@
1/*** Warning! This file has been generated by the script makeaddressee ***/ 1/*** Warning! This file has been generated by the script makeaddressee ***/
2/* 2/*
3 This file is part of libkabc. 3 This file is part of libkabc.
4 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 4 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
5 5
6 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
10 10
11 This library is distributed in the hope that it will be useful, 11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details. 14 Library General Public License for more details.
15 15
16 You should have received a copy of the GNU Library General Public License 16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to 17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. 19 Boston, MA 02111-1307, USA.
20*/ 20*/
21 21
22/* 22/*
23Enhanced Version of the file for platform independent KDE tools. 23Enhanced Version of the file for platform independent KDE tools.
24Copyright (c) 2004 Ulf Schenk 24Copyright (c) 2004 Ulf Schenk
25 25
26$Id$ 26$Id$
27*/ 27*/
28 28
29#include <kconfig.h> 29#include <kconfig.h>
30 30
31#include <ksharedptr.h> 31#include <ksharedptr.h>
32#include <kdebug.h> 32#include <kdebug.h>
33#include <kapplication.h> 33#include <kapplication.h>
34#include <klocale.h> 34#include <klocale.h>
35#include <kmessagebox.h> 35#include <kmessagebox.h>
36#include <kidmanager.h> 36#include <kidmanager.h>
37//US 37//US
38#include <kstandarddirs.h> 38#include <kstandarddirs.h>
39#include <libkcal/syncdefines.h> 39#include <libkcal/syncdefines.h>
40 40
41//US #include "resource.h" 41//US #include "resource.h"
42#include "addressee.h" 42#include "addressee.h"
43 43
44using namespace KABC; 44using namespace KABC;
45 45
46static bool matchBinaryPattern( int value, int pattern ); 46static bool matchBinaryPattern( int value, int pattern );
47static bool matchBinaryPatternA( int value, int pattern ); 47static bool matchBinaryPatternA( int value, int pattern );
48static bool matchBinaryPatternP( int value, int pattern ); 48static bool matchBinaryPatternP( int value, int pattern );
49 49
50struct Addressee::AddresseeData : public KShared 50struct Addressee::AddresseeData : public KShared
51{ 51{
52 QString uid; 52 QString uid;
53 QString name; 53 QString name;
54 QString formattedName; 54 QString formattedName;
55 QString familyName; 55 QString familyName;
56 QString givenName; 56 QString givenName;
57 QString additionalName; 57 QString additionalName;
58 QString prefix; 58 QString prefix;
59 QString suffix; 59 QString suffix;
60 QString nickName; 60 QString nickName;
61 QDateTime birthday; 61 QDateTime birthday;
62 QString mailer; 62 QString mailer;
63 TimeZone timeZone; 63 TimeZone timeZone;
64 Geo geo; 64 Geo geo;
65 QString title; 65 QString title;
66 QString role; 66 QString role;
67 QString organization; 67 QString organization;
68 QString note; 68 QString note;
69 QString productId; 69 QString productId;
70 QDateTime revision; 70 QDateTime revision;
71 QString sortString; 71 QString sortString;
72 QString externalUID; 72 QString externalUID;
73 QString originalExternalUID; 73 QString originalExternalUID;
74 KURL url; 74 KURL url;
75 Secrecy secrecy; 75 Secrecy secrecy;
76 Picture logo; 76 Picture logo;
77 Picture photo; 77 Picture photo;
78 Sound sound; 78 Sound sound;
79 Agent agent; 79 Agent agent;
80 QString mExternalId; 80 QString mExternalId;
81 PhoneNumber::List phoneNumbers; 81 PhoneNumber::List phoneNumbers;
82 Address::List addresses; 82 Address::List addresses;
83 Key::List keys; 83 Key::List keys;
84 QStringList emails; 84 QStringList emails;
85 QStringList categories; 85 QStringList categories;
86 QStringList custom; 86 QStringList custom;
87 int mTempSyncStat; 87 int mTempSyncStat;
88 Resource *resource; 88 Resource *resource;
89 89
90 bool empty :1; 90 bool empty :1;
91 bool changed :1; 91 bool changed :1;
92 bool tagged :1; 92 bool tagged :1;
93}; 93};
94 94
95Addressee::Addressee() 95Addressee::Addressee()
96{ 96{
97 mData = new AddresseeData; 97 mData = new AddresseeData;
98 mData->empty = true; 98 mData->empty = true;
99 mData->changed = false; 99 mData->changed = false;
100 mData->resource = 0; 100 mData->resource = 0;
101 mData->mExternalId = ":"; 101 mData->mExternalId = ":";
102 mData->revision = QDateTime ( QDate( 2003,1,1)); 102 mData->revision = QDateTime ( QDate( 2003,1,1));
103 mData->mTempSyncStat = SYNC_TEMPSTATE_INITIAL; 103 mData->mTempSyncStat = SYNC_TEMPSTATE_INITIAL;
104} 104}
105 105
106Addressee::~Addressee() 106Addressee::~Addressee()
107{ 107{
108} 108}
109 109
110Addressee::Addressee( const Addressee &a ) 110Addressee::Addressee( const Addressee &a )
111{ 111{
112 mData = a.mData; 112 mData = a.mData;
113} 113}
114 114
115Addressee &Addressee::operator=( const Addressee &a ) 115Addressee &Addressee::operator=( const Addressee &a )
116{ 116{
117 mData = a.mData; 117 mData = a.mData;
118 return (*this); 118 return (*this);
119} 119}
120 120
121Addressee Addressee::copy() 121Addressee Addressee::copy()
122{ 122{
123 Addressee a; 123 Addressee a;
124 *(a.mData) = *mData; 124 *(a.mData) = *mData;
125 return a; 125 return a;
126} 126}
127 127
128void Addressee::detach() 128void Addressee::detach()
129{ 129{
130 if ( mData.count() == 1 ) return; 130 if ( mData.count() == 1 ) return;
131 *this = copy(); 131 *this = copy();
132} 132}
133 133
134bool Addressee::operator==( const Addressee &a ) const 134bool Addressee::operator==( const Addressee &a ) const
135{ 135{
136 if ( uid() != a.uid() ) return false; 136 if ( uid() != a.uid() ) return false;
137 if ( mData->name != a.mData->name ) return false; 137 if ( mData->name != a.mData->name ) return false;
138 if ( mData->formattedName != a.mData->formattedName ) return false; 138 if ( mData->formattedName != a.mData->formattedName ) return false;
139 if ( mData->familyName != a.mData->familyName ) return false; 139 if ( mData->familyName != a.mData->familyName ) return false;
140 if ( mData->givenName != a.mData->givenName ) return false; 140 if ( mData->givenName != a.mData->givenName ) return false;
141 if ( mData->additionalName != a.mData->additionalName ) return false; 141 if ( mData->additionalName != a.mData->additionalName ) return false;
142 if ( mData->prefix != a.mData->prefix ) return false; 142 if ( mData->prefix != a.mData->prefix ) return false;
143 if ( mData->suffix != a.mData->suffix ) return false; 143 if ( mData->suffix != a.mData->suffix ) return false;
144 if ( mData->nickName != a.mData->nickName ) return false; 144 if ( mData->nickName != a.mData->nickName ) return false;
145 if ( mData->birthday != a.mData->birthday ) return false; 145 if ( mData->birthday != a.mData->birthday ) return false;
146 if ( mData->mailer != a.mData->mailer ) return false; 146 if ( mData->mailer != a.mData->mailer ) return false;
147 if ( mData->timeZone != a.mData->timeZone ) return false; 147 if ( mData->timeZone != a.mData->timeZone ) return false;
148 if ( mData->geo != a.mData->geo ) return false; 148 if ( mData->geo != a.mData->geo ) return false;
149 if ( mData->title != a.mData->title ) return false; 149 if ( mData->title != a.mData->title ) return false;
150 if ( mData->role != a.mData->role ) return false; 150 if ( mData->role != a.mData->role ) return false;
151 if ( mData->organization != a.mData->organization ) return false; 151 if ( mData->organization != a.mData->organization ) return false;
152 if ( mData->note != a.mData->note ) return false; 152 if ( mData->note != a.mData->note ) return false;
153 if ( mData->productId != a.mData->productId ) return false; 153 if ( mData->productId != a.mData->productId ) return false;
154 //if ( mData->revision != a.mData->revision ) return false; 154 //if ( mData->revision != a.mData->revision ) return false;
155 if ( mData->sortString != a.mData->sortString ) return false; 155 if ( mData->sortString != a.mData->sortString ) return false;
156 if ( mData->secrecy != a.mData->secrecy ) return false; 156 if ( mData->secrecy != a.mData->secrecy ) return false;
157 if ( mData->logo != a.mData->logo ) return false; 157 if ( mData->logo != a.mData->logo ) return false;
158 if ( mData->photo != a.mData->photo ) return false; 158 if ( mData->photo != a.mData->photo ) return false;
159 if ( mData->sound != a.mData->sound ) return false; 159 if ( mData->sound != a.mData->sound ) return false;
160 if ( mData->agent != a.mData->agent ) return false; 160 if ( mData->agent != a.mData->agent ) return false;
161 if ( ( mData->url.isValid() || a.mData->url.isValid() ) && 161 if ( ( mData->url.isValid() || a.mData->url.isValid() ) &&
162 ( mData->url != a.mData->url ) ) return false; 162 ( mData->url != a.mData->url ) ) return false;
163 if ( mData->phoneNumbers != a.mData->phoneNumbers ) return false; 163 if ( mData->phoneNumbers != a.mData->phoneNumbers ) return false;
164 if ( mData->addresses != a.mData->addresses ) return false; 164 if ( mData->addresses != a.mData->addresses ) return false;
165 if ( mData->keys != a.mData->keys ) return false; 165 if ( mData->keys != a.mData->keys ) return false;
166 if ( mData->emails != a.mData->emails ) return false; 166 if ( mData->emails != a.mData->emails ) return false;
167 if ( mData->categories != a.mData->categories ) return false; 167 if ( mData->categories != a.mData->categories ) return false;
168 if ( mData->custom != a.mData->custom ) return false; 168 if ( mData->custom != a.mData->custom ) return false;
169 169
170 return true; 170 return true;
171} 171}
172 172
173bool Addressee::operator!=( const Addressee &a ) const 173bool Addressee::operator!=( const Addressee &a ) const
174{ 174{
175 return !( a == *this ); 175 return !( a == *this );
176} 176}
177 177
178bool Addressee::isEmpty() const 178bool Addressee::isEmpty() const
179{ 179{
180 return mData->empty; 180 return mData->empty;
181} 181}
182ulong Addressee::getCsum4List( const QStringList & attList) 182ulong Addressee::getCsum4List( const QStringList & attList)
183{ 183{
184 int max = attList.count(); 184 int max = attList.count();
185 ulong cSum = 0; 185 ulong cSum = 0;
186 int j,k,i; 186 int j,k,i;
187 int add; 187 int add;
188 for ( i = 0; i < max ; ++i ) { 188 for ( i = 0; i < max ; ++i ) {
189 QString s = attList[i]; 189 QString s = attList[i];
190 if ( ! s.isEmpty() ){ 190 if ( ! s.isEmpty() ){
191 j = s.length(); 191 j = s.length();
192 for ( k = 0; k < j; ++k ) { 192 for ( k = 0; k < j; ++k ) {
193 int mul = k +1; 193 int mul = k +1;
194 add = s[k].unicode (); 194 add = s[k].unicode ();
195 if ( k < 16 ) 195 if ( k < 16 )
196 mul = mul * mul; 196 mul = mul * mul;
197 int ii = i+1; 197 int ii = i+1;
198 add = add * mul *ii*ii*ii; 198 add = add * mul *ii*ii*ii;
199 cSum += add; 199 cSum += add;
200 //qDebug("csum: %d %d %d", i,k,cSum); 200 //qDebug("csum: %d %d %d", i,k,cSum);
201 } 201 }
202 } 202 }
203 203
204 } 204 }
205 //QString dump = attList.join(","); 205 //QString dump = attList.join(",");
206 //qDebug("csum: %d %s", cSum,dump.latin1()); 206 //qDebug("csum: %d %s", cSum,dump.latin1());
207 207
208 return cSum; 208 return cSum;
209 209
210} 210}
211void Addressee::computeCsum(const QString &dev) 211void Addressee::computeCsum(const QString &dev)
212{ 212{
213 QStringList l; 213 QStringList l;
214 //if ( !mData->name.isEmpty() ) l.append(mData->name); 214 //if ( !mData->name.isEmpty() ) l.append(mData->name);
215 if ( !mData->formattedName.isEmpty() ) l.append(mData->formattedName ); 215 if ( !mData->formattedName.isEmpty() ) l.append(mData->formattedName );
216 if ( !mData->familyName.isEmpty() ) l.append( mData->familyName ); 216 if ( !mData->familyName.isEmpty() ) l.append( mData->familyName );
217 if ( !mData->givenName.isEmpty() ) l.append(mData->givenName ); 217 if ( !mData->givenName.isEmpty() ) l.append(mData->givenName );
218 if ( !mData->additionalName.isEmpty() ) l.append( mData->additionalName ); 218 if ( !mData->additionalName.isEmpty() ) l.append( mData->additionalName );
219 if ( !mData->prefix.isEmpty() ) l.append( mData->prefix ); 219 if ( !mData->prefix.isEmpty() ) l.append( mData->prefix );
220 if ( !mData->suffix.isEmpty() ) l.append( mData->suffix ); 220 if ( !mData->suffix.isEmpty() ) l.append( mData->suffix );
221 if ( !mData->nickName.isEmpty() ) l.append( mData->nickName ); 221 if ( !mData->nickName.isEmpty() ) l.append( mData->nickName );
222 if ( mData->birthday.isValid() ) l.append( mData->birthday.toString() ); 222 if ( mData->birthday.isValid() ) l.append( mData->birthday.toString() );
223 if ( !mData->mailer.isEmpty() ) l.append( mData->mailer ); 223 if ( !mData->mailer.isEmpty() ) l.append( mData->mailer );
224 if ( mData->timeZone.isValid() ) l.append( mData->timeZone.asString() ); 224 if ( mData->timeZone.isValid() ) l.append( mData->timeZone.asString() );
225 if ( mData->geo.isValid() ) l.append( mData->geo.asString() ); 225 if ( mData->geo.isValid() ) l.append( mData->geo.asString() );
226 if ( !mData->title .isEmpty() ) l.append( mData->title ); 226 if ( !mData->title .isEmpty() ) l.append( mData->title );
227 if ( !mData->role.isEmpty() ) l.append( mData->role ); 227 if ( !mData->role.isEmpty() ) l.append( mData->role );
228 if ( !mData->organization.isEmpty() ) l.append( mData->organization ); 228 if ( !mData->organization.isEmpty() ) l.append( mData->organization );
229 if ( !mData->note.isEmpty() ) l.append( mData->note ); 229 if ( !mData->note.isEmpty() ) l.append( mData->note );
230 if ( !mData->productId.isEmpty() ) l.append(mData->productId ); 230 if ( !mData->productId.isEmpty() ) l.append(mData->productId );
231 if ( !mData->sortString.isEmpty() ) l.append( mData->sortString ); 231 if ( !mData->sortString.isEmpty() ) l.append( mData->sortString );
232 if ( mData->secrecy.isValid() ) l.append( mData->secrecy.asString()); 232 if ( mData->secrecy.isValid() ) l.append( mData->secrecy.asString());
233 if ( !mData->logo.undefined() ) { 233 if ( !mData->logo.undefined() ) {
234 if ( !mData->logo.isIntern() ) 234 if ( !mData->logo.isIntern() )
235 l.append( mData->logo.url() ); 235 l.append( mData->logo.url() );
236 else 236 else
237 l.append( QString::number(mData->logo.data().width()* mData->logo.data().height())); 237 l.append( QString::number(mData->logo.data().width()* mData->logo.data().height()));
238 } else { 238 } else {
239 l.append( "nologo"); 239 l.append( "nologo");
240 } 240 }
241 if ( !mData->photo.undefined() ) { 241 if ( !mData->photo.undefined() ) {
242 if ( !mData->photo.isIntern() ) 242 if ( !mData->photo.isIntern() )
243 l.append( mData->photo.url() ); 243 l.append( mData->photo.url() );
244 else 244 else
245 l.append( QString::number(mData->photo.data().width()* mData->photo.data().height())); 245 l.append( QString::number(mData->photo.data().width()* mData->photo.data().height()));
246 } else { 246 } else {
247 l.append( "nophoto"); 247 l.append( "nophoto");
248 } 248 }
249#if 0 249#if 0
250 if ( !mData->sound.undefined() ) { 250 if ( !mData->sound.undefined() ) {
251 if ( !mData->sound.isIntern() ) 251 if ( !mData->sound.isIntern() )
252 l.append( mData->sound.url() ); 252 l.append( mData->sound.url() );
253 else 253 else
254 l.append( QString(mData->sound.data().with()* mData->sound.data().height())); 254 l.append( QString(mData->sound.data().with()* mData->sound.data().height()));
255 } else { 255 } else {
256 l.append( "nosound"); 256 l.append( "nosound");
257 } 257 }
258#endif 258#endif
259 //if ( !mData->agent.isEmpty() ) l.append( ); 259 //if ( !mData->agent.isEmpty() ) l.append( );
260 if ( mData->url.isValid() ) 260 if ( mData->url.isValid() )
261 if ( ! mData->url.path().isEmpty()) l.append( mData->url.path() ); 261 if ( ! mData->url.path().isEmpty()) l.append( mData->url.path() );
262 KABC::PhoneNumber::List phoneNumbers; 262 KABC::PhoneNumber::List phoneNumbers;
263 KABC::PhoneNumber::List::Iterator phoneIter; 263 KABC::PhoneNumber::List::Iterator phoneIter;
264 264
265 QStringList t; 265 QStringList t;
266 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end(); 266 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end();
267 ++phoneIter ) 267 ++phoneIter )
268 t.append( ( *phoneIter ).number()+QString::number( ( *phoneIter ).type() ) ); 268 t.append( ( *phoneIter ).number()+QString::number( ( *phoneIter ).type() ) );
269 t.sort(); 269 t.sort();
270 uint iii; 270 uint iii;
271 for ( iii = 0; iii < t.count(); ++iii) 271 for ( iii = 0; iii < t.count(); ++iii)
272 l.append( t[iii] ); 272 l.append( t[iii] );
273 t = mData->emails; 273 t = mData->emails;
274 t.sort(); 274 t.sort();
275 for ( iii = 0; iii < t.count(); ++iii) 275 for ( iii = 0; iii < t.count(); ++iii)
276 l.append( t[iii] ); 276 l.append( t[iii] );
277 t = mData->categories; 277 t = mData->categories;
278 t.sort(); 278 t.sort();
279 for ( iii = 0; iii < t.count(); ++iii) 279 for ( iii = 0; iii < t.count(); ++iii)
280 l.append( t[iii] ); 280 l.append( t[iii] );
281 t = mData->custom; 281 t = mData->custom;
282 t.sort(); 282 t.sort();
283 for ( iii = 0; iii < t.count(); ++iii) 283 for ( iii = 0; iii < t.count(); ++iii)
284 if ( t[iii].left( 25 ) != "KADDRESSBOOK-X-ExternalID" ) { 284 if ( t[iii].left( 25 ) != "KADDRESSBOOK-X-ExternalID" ) {
285 int find = t[iii].find (':')+1; 285 int find = t[iii].find (':')+1;
286 //qDebug("lennnn %d %d ", find, t[iii].length()); 286 //qDebug("lennnn %d %d ", find, t[iii].length());
287 if ( find < t[iii].length()) 287 if ( find < t[iii].length())
288 l.append( t[iii] ); 288 l.append( t[iii] );
289 289
290 } 290 }
291 KABC::Address::List::Iterator addressIter; 291 KABC::Address::List::Iterator addressIter;
292 for ( addressIter = mData->addresses.begin(); addressIter != mData->addresses.end(); 292 for ( addressIter = mData->addresses.begin(); addressIter != mData->addresses.end();
293 ++addressIter ) { 293 ++addressIter ) {
294 t = (*addressIter).asList(); 294 t = (*addressIter).asList();
295 t.sort(); 295 t.sort();
296 for ( iii = 0; iii < t.count(); ++iii) 296 for ( iii = 0; iii < t.count(); ++iii)
297 l.append( t[iii] ); 297 l.append( t[iii] );
298 } 298 }
299 uint cs = getCsum4List(l); 299 uint cs = getCsum4List(l);
300 300
301#if 0 301#if 0
302 for ( iii = 0; iii < l.count(); ++iii) 302 for ( iii = 0; iii < l.count(); ++iii)
303 qDebug("%d***%s***",iii,l[iii].latin1()); 303 qDebug("%d***%s***",iii,l[iii].latin1());
304 qDebug("CSUM computed %d %s %s", cs,QString::number (cs ).latin1(), uid().latin1() ); 304 qDebug("CSUM computed %d %s %s", cs,QString::number (cs ).latin1(), uid().latin1() );
305#endif 305#endif
306 306
307 307
308 setCsum( dev, QString::number (cs )); 308 setCsum( dev, QString::number (cs ));
309} 309}
310bool Addressee::matchAddress( QRegExp* re ) const 310bool Addressee::matchAddress( QRegExp* re ) const
311{ 311{
312 KABC::Address::List::Iterator addressIter; 312 KABC::Address::List::Iterator addressIter;
313 for ( addressIter = mData->addresses.begin(); addressIter != mData->addresses.end(); 313 for ( addressIter = mData->addresses.begin(); addressIter != mData->addresses.end();
314 ++addressIter ) { 314 ++addressIter ) {
315 if ( (*addressIter).matchAddress( re ) ) 315 if ( (*addressIter).matchAddress( re ) )
316 return true; 316 return true;
317 } 317 }
318 return false; 318 return false;
319} 319}
320bool Addressee::matchPhoneNumber( QRegExp* re ) const 320bool Addressee::matchPhoneNumber( QRegExp* re ) const
321{ 321{
322 KABC::PhoneNumber::List::Iterator phoneIter; 322 KABC::PhoneNumber::List::Iterator phoneIter;
323 323
324 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end(); ++phoneIter ) { 324 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end(); ++phoneIter ) {
325#if QT_VERSION >= 0x030000 325#if QT_VERSION >= 0x030000
326 if (re->search( (*phoneIter).number() ) == 0) 326 if (re->search( (*phoneIter).number() ) == 0)
327#else 327#else
328 if (re->match( (*phoneIter).number() ) == 0) 328 if (re->match( (*phoneIter).number() ) == 0)
329#endif 329#endif
330 return true; 330 return true;
331 331
332 } 332 }
333 return false; 333 return false;
334 334
335} 335}
336void Addressee::mergeOLContact( const Addressee& ad ) 336void Addressee::mergeOLContact( const Addressee& ad )
337{ 337{
338 if ( mData->formattedName.isEmpty() ) mData->formattedName = ad.mData->formattedName; 338 if ( mData->formattedName.isEmpty() ) mData->formattedName = ad.mData->formattedName;
339 if ( mData->mailer.isEmpty() ) mData->mailer = ad.mData->mailer; 339 if ( mData->mailer.isEmpty() ) mData->mailer = ad.mData->mailer;
340 if ( !mData->timeZone.isValid() ) mData->timeZone = ad.mData->timeZone; 340 if ( !mData->timeZone.isValid() ) mData->timeZone = ad.mData->timeZone;
341 if ( !mData->geo.isValid() ) mData->geo = ad.mData->geo; 341 if ( !mData->geo.isValid() ) mData->geo = ad.mData->geo;
342 if ( mData->logo.undefined() && !ad.mData->logo.undefined() ) mData->logo = ad.mData->logo; 342 if ( mData->logo.undefined() && !ad.mData->logo.undefined() ) mData->logo = ad.mData->logo;
343 if ( mData->photo.undefined() && !ad.mData->photo.undefined() ) mData->photo = ad.mData->photo; 343 if ( mData->photo.undefined() && !ad.mData->photo.undefined() ) mData->photo = ad.mData->photo;
344 if ( !mData->sound.isIntern() ) { 344 if ( !mData->sound.isIntern() ) {
345 if ( mData->sound.url().isEmpty() ) { 345 if ( mData->sound.url().isEmpty() ) {
346 mData->sound = ad.mData->sound; 346 mData->sound = ad.mData->sound;
347 } 347 }
348 } 348 }
349 if ( !mData->agent.isIntern() ) { 349 if ( !mData->agent.isIntern() ) {
350 if ( mData->agent.url().isEmpty() ) { 350 if ( mData->agent.url().isEmpty() ) {
351 mData->agent = ad.mData->agent; 351 mData->agent = ad.mData->agent;
352 } 352 }
353 } 353 }
354 { 354 {
355 Key::List::Iterator itA; 355 Key::List::Iterator itA;
356 for( itA = ad.mData->keys.begin(); itA != ad.mData->keys.end(); ++itA ) { 356 for( itA = ad.mData->keys.begin(); itA != ad.mData->keys.end(); ++itA ) {
357 bool found = false; 357 bool found = false;
358 Key::List::Iterator it; 358 Key::List::Iterator it;
359 for( it = mData->keys.begin(); it != mData->keys.end(); ++it ) { 359 for( it = mData->keys.begin(); it != mData->keys.end(); ++it ) {
360 if ( (*it) == (*itA)) { 360 if ( (*it) == (*itA)) {
361 found = true; 361 found = true;
362 break; 362 break;
363 363
364 } 364 }
365 } 365 }
366 if ( ! found ) { 366 if ( ! found ) {
367 mData->keys.append( *itA ); 367 mData->keys.append( *itA );
368 } 368 }
369 } 369 }
370 } 370 }
371 371
372 KABC::Address addthis = otherAddress(); 372 KABC::Address addthis = otherAddress();
373 KABC::Address addother = ad.otherAddress(); 373 KABC::Address addother = ad.otherAddress();
374 if ( !addthis.isEmpty() && !addother.isEmpty() ) 374 if ( !addthis.isEmpty() && !addother.isEmpty() )
375 addthis.setType( addother.type() ); 375 addthis.setType( addother.type() );
376 //qDebug("merge contact %s ", ad.uid().latin1()); 376 //qDebug("merge contact %s ", ad.uid().latin1());
377 setUid( ad.uid() ); 377 setUid( ad.uid() );
378 setRevision( ad.revision() ); 378 setRevision( ad.revision() );
379 379
380 380
381} 381}
382 382
383void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false) 383void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false)
384{ 384{
385 // merge all standard non-outlook fields. 385 // merge all standard non-outlook fields.
386 //if isSubSet (e.g. mobile phone sync) merge all fields 386 //if isSubSet (e.g. mobile phone sync) merge all fields
387 387
388 detach(); 388 detach();
389 if ( isSubSet ) { 389 if ( isSubSet ) {
390 if ( mData->name.isEmpty() ) mData->name = ad.mData->name; 390 if ( mData->name.isEmpty() ) mData->name = ad.mData->name;
391 if ( mData->formattedName.isEmpty() ) mData->formattedName = ad.mData->formattedName; 391 if ( mData->formattedName.isEmpty() ) mData->formattedName = ad.mData->formattedName;
392 if ( mData->familyName.isEmpty() ) mData->familyName = ad.mData->familyName; 392 if ( mData->familyName.isEmpty() ) mData->familyName = ad.mData->familyName;
393 if ( mData->givenName.isEmpty() ) mData->givenName = ad.mData->givenName ; 393 if ( mData->givenName.isEmpty() ) mData->givenName = ad.mData->givenName ;
394 if ( mData->additionalName ) mData->additionalName = ad.mData->additionalName; 394 if ( mData->additionalName.isEmpty() ) mData->additionalName = ad.mData->additionalName;
395 if ( mData->prefix.isEmpty() ) mData->prefix = ad.mData->prefix; 395 if ( mData->prefix.isEmpty() ) mData->prefix = ad.mData->prefix;
396 if ( mData->suffix.isEmpty() ) mData->suffix = ad.mData->suffix; 396 if ( mData->suffix.isEmpty() ) mData->suffix = ad.mData->suffix;
397 if ( mData->title .isEmpty() ) mData->title = ad.mData->title ; 397 if ( mData->title .isEmpty() ) mData->title = ad.mData->title ;
398 if ( mData->role.isEmpty() ) mData->role = ad.mData->role ; 398 if ( mData->role.isEmpty() ) mData->role = ad.mData->role ;
399 if ( mData->nickName.isEmpty() ) mData->nickName = ad.mData->nickName; 399 if ( mData->nickName.isEmpty() ) mData->nickName = ad.mData->nickName;
400 if ( mData->organization.isEmpty() ) mData->organization = ad.mData->organization ; 400 if ( mData->organization.isEmpty() ) mData->organization = ad.mData->organization ;
401 if ( mData->note.isEmpty() ) mData->note = ad.mData->note ; 401 if ( mData->note.isEmpty() ) mData->note = ad.mData->note ;
402 if ( !mData->secrecy.isValid() ) mData->secrecy = ad.mData->secrecy; 402 if ( !mData->secrecy.isValid() ) mData->secrecy = ad.mData->secrecy;
403 if ( ( !mData->url.isValid() && ad.mData->url.isValid() ) ) mData->url = ad.mData->url ; 403 if ( ( !mData->url.isValid() && ad.mData->url.isValid() ) ) mData->url = ad.mData->url ;
404 if ( !mData->birthday.isValid() ) 404 if ( !mData->birthday.isValid() )
405 if ( ad.mData->birthday.isValid()) 405 if ( ad.mData->birthday.isValid())
406 mData->birthday = ad.mData->birthday; 406 mData->birthday = ad.mData->birthday;
407 407
408 } 408 }
409 if ( mData->mailer.isEmpty() ) mData->mailer = ad.mData->mailer; 409 if ( mData->mailer.isEmpty() ) mData->mailer = ad.mData->mailer;
410 if ( !mData->timeZone.isValid() ) mData->timeZone = ad.mData->timeZone; 410 if ( !mData->timeZone.isValid() ) mData->timeZone = ad.mData->timeZone;
411 if ( !mData->geo.isValid() ) mData->geo = ad.mData->geo; 411 if ( !mData->geo.isValid() ) mData->geo = ad.mData->geo;
412 if ( mData->productId.isEmpty() ) mData->productId = ad.mData->productId; 412 if ( mData->productId.isEmpty() ) mData->productId = ad.mData->productId;
413 if ( mData->sortString.isEmpty() ) mData->sortString = ad.mData->sortString; 413 if ( mData->sortString.isEmpty() ) mData->sortString = ad.mData->sortString;
414 QStringList t; 414 QStringList t;
415 QStringList tAD; 415 QStringList tAD;
416 uint iii; 416 uint iii;
417 417
418 // ********** phone numbers 418 // ********** phone numbers
419 if ( isSubSet ) { 419 if ( isSubSet ) {
420 PhoneNumber::List phoneAD = ad.phoneNumbers(); 420 PhoneNumber::List phoneAD = ad.phoneNumbers();
421 PhoneNumber::List::Iterator phoneItAD; 421 PhoneNumber::List::Iterator phoneItAD;
422 for ( phoneItAD = phoneAD.begin(); phoneItAD != phoneAD.end(); ++phoneItAD ) { 422 for ( phoneItAD = phoneAD.begin(); phoneItAD != phoneAD.end(); ++phoneItAD ) {
423 bool found = false; 423 bool found = false;
424 PhoneNumber::List::Iterator it; 424 PhoneNumber::List::Iterator it;
425 for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) { 425 for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) {
426 if ( ( *phoneItAD ).contains( (*it) ) ) { 426 if ( ( *phoneItAD ).contains( (*it) ) ) {
427 found = true; 427 found = true;
428 (*it).setType( ( *phoneItAD ).type() ); 428 (*it).setType( ( *phoneItAD ).type() );
429 (*it).setNumber( ( *phoneItAD ).number() ); 429 (*it).setNumber( ( *phoneItAD ).number() );
430 break; 430 break;
431 } 431 }
432 } 432 }
433 // if ( isSubSet && ! found ) 433 // if ( isSubSet && ! found )
434 if ( ! found ) // LR try this one... 434 if ( ! found ) // LR try this one...
435 mData->phoneNumbers.append( *phoneItAD ); 435 mData->phoneNumbers.append( *phoneItAD );
436 } 436 }
437 } else { 437 } else {
438 PhoneNumber::List phoneAD = ad.phoneNumbers(); 438 PhoneNumber::List phoneAD = ad.phoneNumbers();
439 PhoneNumber::List::Iterator phoneItAD; 439 PhoneNumber::List::Iterator phoneItAD;
440 for ( phoneItAD = phoneAD.begin(); phoneItAD != phoneAD.end(); ++phoneItAD ) { 440 for ( phoneItAD = phoneAD.begin(); phoneItAD != phoneAD.end(); ++phoneItAD ) {
441 bool found = false; 441 bool found = false;
442 PhoneNumber::List::Iterator it; 442 PhoneNumber::List::Iterator it;
443 for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) { 443 for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) {
444 if ( ( *phoneItAD ).contains( (*it) ) ) { 444 if ( ( *phoneItAD ).contains( (*it) ) ) {
445 found = true; 445 found = true;
446 (*it).setType( ( *phoneItAD ).type() ); 446 (*it).setType( ( *phoneItAD ).type() );
447 (*it).setNumber( ( *phoneItAD ).number() ); 447 (*it).setNumber( ( *phoneItAD ).number() );
448 break; 448 break;
449 } 449 }
450 } 450 }
451 if ( ! found ) { // append numbers which do not have work or home type 451 if ( ! found ) { // append numbers which do not have work or home type
452 if ( ! ( ( *phoneItAD ).type() & (PhoneNumber::Work | PhoneNumber::Home) ) ) 452 if ( ! ( ( *phoneItAD ).type() & (PhoneNumber::Work | PhoneNumber::Home) ) )
453 mData->phoneNumbers.append( *phoneItAD ); 453 mData->phoneNumbers.append( *phoneItAD );
454 } 454 }
455 } 455 }
456 } 456 }
457 if ( isSubSet ) { 457 if ( isSubSet ) {
458 // ************* emails; 458 // ************* emails;
459 t = mData->emails; 459 t = mData->emails;
460 tAD = ad.mData->emails; 460 tAD = ad.mData->emails;
461 for ( iii = 0; iii < tAD.count(); ++iii) 461 for ( iii = 0; iii < tAD.count(); ++iii)
462 if ( !t.contains(tAD[iii] ) ) 462 if ( !t.contains(tAD[iii] ) )
463 mData->emails.append( tAD[iii] ); 463 mData->emails.append( tAD[iii] );
464 } 464 }
465 465
466 // ************* categories; 466 // ************* categories;
467 if ( isSubSet ) { 467 if ( isSubSet ) {
468 t = mData->categories; 468 t = mData->categories;
469 tAD = ad.mData->categories; 469 tAD = ad.mData->categories;
470 for ( iii = 0; iii < tAD.count(); ++iii) 470 for ( iii = 0; iii < tAD.count(); ++iii)
471 if ( !t.contains(tAD[iii] ) ) 471 if ( !t.contains(tAD[iii] ) )
472 mData->categories.append( tAD[iii] ); 472 mData->categories.append( tAD[iii] );
473 } 473 }
474 QStringList::ConstIterator it; 474 QStringList::ConstIterator it;
475 for( it = ad.mData->custom.begin(); it != ad.mData->custom.end(); ++it ) { 475 for( it = ad.mData->custom.begin(); it != ad.mData->custom.end(); ++it ) {
476 QString qualifiedName = (*it).left( (*it).find( ":" )); 476 QString qualifiedName = (*it).left( (*it).find( ":" ));
477 bool found = false; 477 bool found = false;
478 QStringList::ConstIterator itL; 478 QStringList::ConstIterator itL;
479 for( itL = mData->custom.begin(); itL != mData->custom.end(); ++itL ) { 479 for( itL = mData->custom.begin(); itL != mData->custom.end(); ++itL ) {
480 if ( (*itL).startsWith( qualifiedName ) ) { 480 if ( (*itL).startsWith( qualifiedName ) ) {
481 found = true; 481 found = true;
482 break; 482 break;
483 } 483 }
484 } 484 }
485 if ( ! found ) { 485 if ( ! found ) {
486 mData->custom.append( *it ); 486 mData->custom.append( *it );
487 } 487 }
488 } 488 }
489 if ( mData->logo.undefined() && !ad.mData->logo.undefined() ) mData->logo = ad.mData->logo; 489 if ( mData->logo.undefined() && !ad.mData->logo.undefined() ) mData->logo = ad.mData->logo;
490 if ( mData->photo.undefined() && !ad.mData->photo.undefined() ) mData->photo = ad.mData->photo; 490 if ( mData->photo.undefined() && !ad.mData->photo.undefined() ) mData->photo = ad.mData->photo;
491 if ( !mData->sound.isIntern() ) { 491 if ( !mData->sound.isIntern() ) {
492 if ( mData->sound.url().isEmpty() ) { 492 if ( mData->sound.url().isEmpty() ) {
493 mData->sound = ad.mData->sound; 493 mData->sound = ad.mData->sound;
494 } 494 }
495 } 495 }
496 if ( !mData->agent.isIntern() ) { 496 if ( !mData->agent.isIntern() ) {
497 if ( mData->agent.url().isEmpty() ) { 497 if ( mData->agent.url().isEmpty() ) {
498 mData->agent = ad.mData->agent; 498 mData->agent = ad.mData->agent;
499 } 499 }
500 } 500 }
501 { 501 {
502 Key::List::Iterator itA; 502 Key::List::Iterator itA;
503 for( itA = ad.mData->keys.begin(); itA != ad.mData->keys.end(); ++itA ) { 503 for( itA = ad.mData->keys.begin(); itA != ad.mData->keys.end(); ++itA ) {
504 bool found = false; 504 bool found = false;
505 Key::List::Iterator it; 505 Key::List::Iterator it;
506 for( it = mData->keys.begin(); it != mData->keys.end(); ++it ) { 506 for( it = mData->keys.begin(); it != mData->keys.end(); ++it ) {
507 if ( (*it) == (*itA)) { 507 if ( (*it) == (*itA)) {
508 found = true; 508 found = true;
509 break; 509 break;
510 510
511 } 511 }
512 } 512 }
513 if ( ! found ) { 513 if ( ! found ) {
514 mData->keys.append( *itA ); 514 mData->keys.append( *itA );
515 } 515 }
516 } 516 }
517 } 517 }
518 if ( isSubSet ) { 518 if ( isSubSet ) {
519 KABC::Address::List::Iterator addressIterA; 519 KABC::Address::List::Iterator addressIterA;
520 for ( addressIterA = ad.mData->addresses.begin(); addressIterA != ad.mData->addresses.end(); ++addressIterA ) { 520 for ( addressIterA = ad.mData->addresses.begin(); addressIterA != ad.mData->addresses.end(); ++addressIterA ) {
521 bool found = false; 521 bool found = false;
522 KABC::Address::List::Iterator addressIter; 522 KABC::Address::List::Iterator addressIter;
523 for ( addressIter = mData->addresses.begin(); addressIter != mData->addresses.end(); 523 for ( addressIter = mData->addresses.begin(); addressIter != mData->addresses.end();
524 ++addressIter ) { 524 ++addressIter ) {
525 if ( (*addressIter) == (*addressIterA)) { 525 if ( (*addressIter) == (*addressIterA)) {
526 found = true; 526 found = true;
527 (*addressIter).setType( (*addressIterA).type() ); 527 (*addressIter).setType( (*addressIterA).type() );
528 break; 528 break;
529 } 529 }
530 530
531 } 531 }
532 if ( isSubSet && ! found ) { 532 if ( isSubSet && ! found ) {
533 mData->addresses.append( *addressIterA ); 533 mData->addresses.append( *addressIterA );
534 } 534 }
535 } 535 }
536 } 536 }
537 //qDebug("merge contact %s ", ad.uid().latin1()); 537 //qDebug("merge contact %s ", ad.uid().latin1());
538 setUid( ad.uid() ); 538 setUid( ad.uid() );
539 setRevision( ad.revision() ); 539 setRevision( ad.revision() );
540} 540}
541 541
542bool Addressee::removeVoice() 542bool Addressee::removeVoice()
543{ 543{
544 PhoneNumber::List phoneN = phoneNumbers(); 544 PhoneNumber::List phoneN = phoneNumbers();
545 PhoneNumber::List::Iterator phoneIt; 545 PhoneNumber::List::Iterator phoneIt;
546 bool found = false; 546 bool found = false;
547 for ( phoneIt = phoneN.begin(); phoneIt != phoneN.end(); ++phoneIt ) { 547 for ( phoneIt = phoneN.begin(); phoneIt != phoneN.end(); ++phoneIt ) {
548 if ( (*phoneIt).type() & PhoneNumber::Voice) { // voice found 548 if ( (*phoneIt).type() & PhoneNumber::Voice) { // voice found
549 if ((*phoneIt).type() - PhoneNumber::Voice ) { 549 if ((*phoneIt).type() - PhoneNumber::Voice ) {
550 (*phoneIt).setType((*phoneIt).type() - PhoneNumber::Voice ); 550 (*phoneIt).setType((*phoneIt).type() - PhoneNumber::Voice );
551 insertPhoneNumber( (*phoneIt) ); 551 insertPhoneNumber( (*phoneIt) );
552 found = true; 552 found = true;
553 } 553 }
554 } 554 }
555 555
556 } 556 }
557 return found; 557 return found;
558} 558}
559 559
560bool Addressee::containsAdr(const Addressee& ad ) 560bool Addressee::containsAdr(const Addressee& ad )
561{ 561{
562 if ( ! ad.mData->familyName.isEmpty() ) if ( mData->familyName != ad.mData->familyName) return false; 562 if ( ! ad.mData->familyName.isEmpty() ) if ( mData->familyName != ad.mData->familyName) return false;
563 if ( ! ad.mData->givenName.isEmpty() )if ( mData->givenName != ad.mData->givenName ) return false; 563 if ( ! ad.mData->givenName.isEmpty() )if ( mData->givenName != ad.mData->givenName ) return false;
564 if ( ad.mData->url.isValid() ) if (mData->url != ad.mData->url) return false ; 564 if ( ad.mData->url.isValid() ) if (mData->url != ad.mData->url) return false ;
565 if ( ! ad.mData->role.isEmpty() ) if (mData->role != ad.mData->role) return false ; 565 if ( ! ad.mData->role.isEmpty() ) if (mData->role != ad.mData->role) return false ;
566 if ( ! ad.mData->organization.isEmpty() ) if (mData->organization != ad.mData->organization) return false ; 566 if ( ! ad.mData->organization.isEmpty() ) if (mData->organization != ad.mData->organization) return false ;
567 if ( ! ad.mData->note.isEmpty() ) if (mData->note != ad.mData->note) return false ; 567 if ( ! ad.mData->note.isEmpty() ) if (mData->note != ad.mData->note) return false ;
568 if ( ! ad.mData->title .isEmpty() ) if (mData->title != ad.mData->title ) return false ; 568 if ( ! ad.mData->title .isEmpty() ) if (mData->title != ad.mData->title ) return false ;
569 569
570 // compare phone numbers 570 // compare phone numbers
571 PhoneNumber::List phoneN = ad.phoneNumbers(); 571 PhoneNumber::List phoneN = ad.phoneNumbers();
572 PhoneNumber::List::Iterator phoneIt; 572 PhoneNumber::List::Iterator phoneIt;
573 bool found = false; 573 bool found = false;
574 for ( phoneIt = phoneN.begin(); phoneIt != phoneN.end(); ++phoneIt ) { 574 for ( phoneIt = phoneN.begin(); phoneIt != phoneN.end(); ++phoneIt ) {
575 bool found = false; 575 bool found = false;
576 PhoneNumber::List phoneL = ad.phoneNumbers(); 576 PhoneNumber::List phoneL = ad.phoneNumbers();
577 PhoneNumber::List::Iterator phoneItL; 577 PhoneNumber::List::Iterator phoneItL;
578 for ( phoneItL = phoneL.begin(); phoneItL != phoneL.end(); ++phoneItL ) { 578 for ( phoneItL = phoneL.begin(); phoneItL != phoneL.end(); ++phoneItL ) {
579 if ( ( *phoneItL ).number() == ( *phoneIt ).number() ) { 579 if ( ( *phoneItL ).number() == ( *phoneIt ).number() ) {
580 found = true; 580 found = true;
581 break; 581 break;
582 } 582 }
583 } 583 }
584 if ( ! found ) 584 if ( ! found )
585 return false; 585 return false;
586 } 586 }
587 return true; 587 return true;
588 588
589} 589}
590void Addressee::simplifyAddresses() 590void Addressee::simplifyAddresses()
591{ 591{
592 592
593 593
594 Address::List list; 594 Address::List list;
595 Address::List::Iterator it; 595 Address::List::Iterator it;
596 Address::List::Iterator it2; 596 Address::List::Iterator it2;
597 for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) { 597 for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) {
598 it2 = it; 598 it2 = it;
599 ++it2; 599 ++it2;
600 for( ; it2 != mData->addresses.end(); ++it2 ) { 600 for( ; it2 != mData->addresses.end(); ++it2 ) {
601 if ( (*it) == (*it2) ) { 601 if ( (*it) == (*it2) ) {
602 list.append( *it ); 602 list.append( *it );
603 break; 603 break;
604 } 604 }
605 } 605 }
606 } 606 }
607 for( it = list.begin(); it != list.end(); ++it ) { 607 for( it = list.begin(); it != list.end(); ++it ) {
608 removeAddress( (*it) ); 608 removeAddress( (*it) );
609 } 609 }
610 610
611 list.clear(); 611 list.clear();
612 int max = 2; 612 int max = 2;
613 if ( mData->url.isValid() ) 613 if ( mData->url.isValid() )
614 max = 1; 614 max = 1;
615 if ( mData->addresses.count() <= max ) return ; 615 if ( mData->addresses.count() <= max ) return ;
616 int count = 0; 616 int count = 0;
617 for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) { 617 for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) {
618 if ( count >= max ) 618 if ( count >= max )
619 list.append( *it ); 619 list.append( *it );
620 ++count; 620 ++count;
621 } 621 }
622 for( it = list.begin(); it != list.end(); ++it ) { 622 for( it = list.begin(); it != list.end(); ++it ) {
623 removeAddress( (*it) ); 623 removeAddress( (*it) );
624 } 624 }
625} 625}
626 626
627// removes all emails but the first 627// removes all emails but the first
628// needed by phone sync 628// needed by phone sync
629void Addressee::simplifyEmails() 629void Addressee::simplifyEmails()
630{ 630{
631 if ( mData->emails.count() == 0 ) return ; 631 if ( mData->emails.count() == 0 ) return ;
632 QString email = mData->emails.first(); 632 QString email = mData->emails.first();
633 detach(); 633 detach();
634 mData->emails.clear(); 634 mData->emails.clear();
635 mData->emails.append( email ); 635 mData->emails.append( email );
636} 636}
637void Addressee::makePhoneNumbersOLcompatible() 637void Addressee::makePhoneNumbersOLcompatible()
638{ 638{
639 KABC::PhoneNumber::List::Iterator phoneIter; 639 KABC::PhoneNumber::List::Iterator phoneIter;
640 KABC::PhoneNumber::List::Iterator phoneIter2; 640 KABC::PhoneNumber::List::Iterator phoneIter2;
641 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end(); 641 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end();
642 ++phoneIter ) { 642 ++phoneIter ) {
643 ( *phoneIter ).makeCompat(); 643 ( *phoneIter ).makeCompat();
644 } 644 }
645 int hasHome = hasPhoneNumberType( PhoneNumber::Home | PhoneNumber::Pref ); 645 int hasHome = hasPhoneNumberType( PhoneNumber::Home | PhoneNumber::Pref );
646 int hasHome2 = hasPhoneNumberType( PhoneNumber::Home ); 646 int hasHome2 = hasPhoneNumberType( PhoneNumber::Home );
647 int hasWork = hasPhoneNumberType( PhoneNumber::Work | PhoneNumber::Pref ); 647 int hasWork = hasPhoneNumberType( PhoneNumber::Work | PhoneNumber::Pref );
648 int hasWork2 = hasPhoneNumberType( PhoneNumber::Work ); 648 int hasWork2 = hasPhoneNumberType( PhoneNumber::Work );
649 int hasCell = hasPhoneNumberType( PhoneNumber::Cell ); 649 int hasCell = hasPhoneNumberType( PhoneNumber::Cell );
650 int hasCell2 = hasPhoneNumberType( PhoneNumber::Car ); 650 int hasCell2 = hasPhoneNumberType( PhoneNumber::Car );
651 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end(); 651 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end();
652 ++phoneIter ) { 652 ++phoneIter ) {
653 if ( (*phoneIter).type() == PhoneNumber::Home && ! hasHome ) { 653 if ( (*phoneIter).type() == PhoneNumber::Home && ! hasHome ) {
654 (*phoneIter).setType( PhoneNumber::Home | PhoneNumber::Pref ); 654 (*phoneIter).setType( PhoneNumber::Home | PhoneNumber::Pref );
655 ++hasHome; 655 ++hasHome;
656 if ( hasHome2 ) --hasHome2; 656 if ( hasHome2 ) --hasHome2;
657 } else if ( ( (*phoneIter).type() == PhoneNumber::Home | PhoneNumber::Pref) && hasHome>1 && !hasHome2 ) { 657 } else if ( ( (*phoneIter).type() == PhoneNumber::Home | PhoneNumber::Pref) && hasHome>1 && !hasHome2 ) {
658 (*phoneIter).setType( PhoneNumber::Home ); 658 (*phoneIter).setType( PhoneNumber::Home );
659 --hasHome; 659 --hasHome;
660 ++hasHome2; 660 ++hasHome2;
661 } else if ( (*phoneIter).type() == PhoneNumber::Work && ! hasWork ) { 661 } else if ( (*phoneIter).type() == PhoneNumber::Work && ! hasWork ) {
662 (*phoneIter).setType( PhoneNumber::Work | PhoneNumber::Pref ); 662 (*phoneIter).setType( PhoneNumber::Work | PhoneNumber::Pref );
663 ++hasWork; 663 ++hasWork;
664 if ( hasWork2 ) --hasWork2; 664 if ( hasWork2 ) --hasWork2;
665 } else if ( ( (*phoneIter).type() == PhoneNumber::Work | PhoneNumber::Pref) && hasWork > 1 && ! hasWork2 ) { 665 } else if ( ( (*phoneIter).type() == PhoneNumber::Work | PhoneNumber::Pref) && hasWork > 1 && ! hasWork2 ) {
666 (*phoneIter).setType( PhoneNumber::Work ); 666 (*phoneIter).setType( PhoneNumber::Work );
667 --hasWork; 667 --hasWork;
668 ++hasWork2; 668 ++hasWork2;
669 } else if ( (*phoneIter).type() == PhoneNumber::Cell && hasCell > 1 && !hasCell2) { 669 } else if ( (*phoneIter).type() == PhoneNumber::Cell && hasCell > 1 && !hasCell2) {
670 (*phoneIter).setType( PhoneNumber::Car ); 670 (*phoneIter).setType( PhoneNumber::Car );
671 ++hasCell2; 671 ++hasCell2;
672 --hasCell; 672 --hasCell;
673 } else if ( (*phoneIter).type() == PhoneNumber::Car && hasCell2 > 1 && !hasCell) { 673 } else if ( (*phoneIter).type() == PhoneNumber::Car && hasCell2 > 1 && !hasCell) {
674 (*phoneIter).setType( PhoneNumber::Cell ); 674 (*phoneIter).setType( PhoneNumber::Cell );
675 ++hasCell; 675 ++hasCell;
676 --hasCell2; 676 --hasCell2;
677 } else{ 677 } else{
678 phoneIter2 = phoneIter; 678 phoneIter2 = phoneIter;
679 ++phoneIter2; 679 ++phoneIter2;
680 for ( ; phoneIter2 != mData->phoneNumbers.end(); 680 for ( ; phoneIter2 != mData->phoneNumbers.end();
681 ++phoneIter2 ) { 681 ++phoneIter2 ) {
682 if ( (*phoneIter2).type() == (*phoneIter).type() ) { 682 if ( (*phoneIter2).type() == (*phoneIter).type() ) {
683 (*phoneIter2).setType( PhoneNumber::Voice ); 683 (*phoneIter2).setType( PhoneNumber::Voice );
684 684
685 } 685 }
686 } 686 }
687 } 687 }
688 } 688 }
689} 689}
690void Addressee::simplifyPhoneNumbers() 690void Addressee::simplifyPhoneNumbers()
691{ 691{
692 int max = 4; 692 int max = 4;
693 int inList = mData->phoneNumbers.count(); 693 int inList = mData->phoneNumbers.count();
694 KABC::PhoneNumber::List removeNumbers; 694 KABC::PhoneNumber::List removeNumbers;
695 KABC::PhoneNumber::List::Iterator phoneIter; 695 KABC::PhoneNumber::List::Iterator phoneIter;
696 if ( inList > max ) { 696 if ( inList > max ) {
697 // delete non-preferred numbers 697 // delete non-preferred numbers
698 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end(); 698 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end();
699 ++phoneIter ) { 699 ++phoneIter ) {
700 if ( inList > max ) { 700 if ( inList > max ) {
701 if ( ! (( *phoneIter ).type() & PhoneNumber::Pref )) { 701 if ( ! (( *phoneIter ).type() & PhoneNumber::Pref )) {
702 removeNumbers.append( ( *phoneIter ) ); 702 removeNumbers.append( ( *phoneIter ) );
703 --inList; 703 --inList;
704 } 704 }
705 } else 705 } else
706 break; 706 break;
707 } 707 }
708 for ( phoneIter = removeNumbers.begin(); phoneIter != removeNumbers.end(); 708 for ( phoneIter = removeNumbers.begin(); phoneIter != removeNumbers.end();
709 ++phoneIter ) { 709 ++phoneIter ) {
710 removePhoneNumber(( *phoneIter )); 710 removePhoneNumber(( *phoneIter ));
711 } 711 }
712 // delete preferred numbers 712 // delete preferred numbers
713 if ( inList > max ) { 713 if ( inList > max ) {
714 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end(); 714 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end();
715 ++phoneIter ) { 715 ++phoneIter ) {
716 if ( inList > max ) { 716 if ( inList > max ) {
717 removeNumbers.append( ( *phoneIter ) ); 717 removeNumbers.append( ( *phoneIter ) );
718 --inList; 718 --inList;
719 } else 719 } else
720 break; 720 break;
721 } 721 }
722 for ( phoneIter = removeNumbers.begin(); phoneIter != removeNumbers.end(); 722 for ( phoneIter = removeNumbers.begin(); phoneIter != removeNumbers.end();
723 ++phoneIter ) { 723 ++phoneIter ) {
724 removePhoneNumber(( *phoneIter )); 724 removePhoneNumber(( *phoneIter ));
725 } 725 }
726 } 726 }
727 } 727 }
728 // remove non-numeric characters 728 // remove non-numeric characters
729 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end(); 729 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end();
730 ++phoneIter ) { 730 ++phoneIter ) {
731 if ( ! ( *phoneIter ).simplifyNumber() ) 731 if ( ! ( *phoneIter ).simplifyNumber() )
732 removeNumbers.append( ( *phoneIter ) ); 732 removeNumbers.append( ( *phoneIter ) );
733 } 733 }
734 for ( phoneIter = removeNumbers.begin(); phoneIter != removeNumbers.end(); 734 for ( phoneIter = removeNumbers.begin(); phoneIter != removeNumbers.end();
735 ++phoneIter ) { 735 ++phoneIter ) {
736 removePhoneNumber(( *phoneIter )); 736 removePhoneNumber(( *phoneIter ));
737 } 737 }
738} 738}
739void Addressee::simplifyPhoneNumberTypes() 739void Addressee::simplifyPhoneNumberTypes()
740{ 740{
741 KABC::PhoneNumber::List::Iterator phoneIter; 741 KABC::PhoneNumber::List::Iterator phoneIter;
742 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end(); 742 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end();
743 ++phoneIter ) 743 ++phoneIter )
744 ( *phoneIter ).simplifyType(); 744 ( *phoneIter ).simplifyType();
745} 745}
746void Addressee::removeID(const QString &prof) 746void Addressee::removeID(const QString &prof)
747{ 747{
748 detach(); 748 detach();
749 if ( prof.isEmpty() ) 749 if ( prof.isEmpty() )
750 mData->mExternalId = ":"; 750 mData->mExternalId = ":";
751 else 751 else
752 mData->mExternalId = KIdManager::removeId ( mData->mExternalId, prof); 752 mData->mExternalId = KIdManager::removeId ( mData->mExternalId, prof);
753 753
754} 754}
755void Addressee::setID( const QString & prof , const QString & id ) 755void Addressee::setID( const QString & prof , const QString & id )
756{ 756{
757 detach(); 757 detach();
758 mData->mExternalId = KIdManager::setId ( mData->mExternalId, prof, id ); 758 mData->mExternalId = KIdManager::setId ( mData->mExternalId, prof, id );
759 //qDebug("setID2 %s %s %s",mData->mExternalId.latin1(), prof.latin1(), id.latin1() ); 759 //qDebug("setID2 %s %s %s",mData->mExternalId.latin1(), prof.latin1(), id.latin1() );
760} 760}
761void Addressee::setTempSyncStat( int id ) 761void Addressee::setTempSyncStat( int id )
762{ 762{
763 if ( mData->mTempSyncStat == id ) return; 763 if ( mData->mTempSyncStat == id ) return;
764 detach(); 764 detach();
765 mData->mTempSyncStat = id; 765 mData->mTempSyncStat = id;
766} 766}
767int Addressee::tempSyncStat() const 767int Addressee::tempSyncStat() const
768{ 768{
769 return mData->mTempSyncStat; 769 return mData->mTempSyncStat;
770} 770}
771 771
772const QString Addressee::getID( const QString & prof) const 772const QString Addressee::getID( const QString & prof) const
773{ 773{
774 return KIdManager::getId ( mData->mExternalId, prof ); 774 return KIdManager::getId ( mData->mExternalId, prof );
775} 775}
776 776
777void Addressee::setCsum( const QString & prof , const QString & id ) 777void Addressee::setCsum( const QString & prof , const QString & id )
778{ 778{
779 detach(); 779 detach();
780 //qDebug("setcsum1 %s %s %s",mData->mExternalId.latin1(), prof.latin1(), id.latin1() ); 780 //qDebug("setcsum1 %s %s %s",mData->mExternalId.latin1(), prof.latin1(), id.latin1() );
781 mData->mExternalId = KIdManager::setCsum ( mData->mExternalId, prof, id ); 781 mData->mExternalId = KIdManager::setCsum ( mData->mExternalId, prof, id );
782 //qDebug("setcsum2 %s ",mData->mExternalId.latin1() ); 782 //qDebug("setcsum2 %s ",mData->mExternalId.latin1() );
783} 783}
784 784
785const QString Addressee::getCsum( const QString & prof) const 785const QString Addressee::getCsum( const QString & prof) const
786{ 786{
787 return KIdManager::getCsum ( mData->mExternalId, prof ); 787 return KIdManager::getCsum ( mData->mExternalId, prof );
788} 788}
789 789
790void Addressee::setIDStr( const QString & s ) 790void Addressee::setIDStr( const QString & s )
791{ 791{
792 detach(); 792 detach();
793 mData->mExternalId = s; 793 mData->mExternalId = s;
794} 794}
795 795
796const QString Addressee::IDStr() const 796const QString Addressee::IDStr() const
797{ 797{
798 return mData->mExternalId; 798 return mData->mExternalId;
799} 799}
800 800
801void Addressee::setExternalUID( const QString &id ) 801void Addressee::setExternalUID( const QString &id )
802{ 802{
803 if ( id == mData->externalUID ) return; 803 if ( id == mData->externalUID ) return;
804 detach(); 804 detach();
805 mData->empty = false; 805 mData->empty = false;
806 mData->externalUID = id; 806 mData->externalUID = id;
807} 807}
808 808
809const QString Addressee::externalUID() const 809const QString Addressee::externalUID() const
810{ 810{
811 return mData->externalUID; 811 return mData->externalUID;
812} 812}
813void Addressee::setOriginalExternalUID( const QString &id ) 813void Addressee::setOriginalExternalUID( const QString &id )
814{ 814{
815 if ( id == mData->originalExternalUID ) return; 815 if ( id == mData->originalExternalUID ) return;
816 detach(); 816 detach();
817 mData->empty = false; 817 mData->empty = false;
818 //qDebug("*******Set orig uid %s ", id.latin1()); 818 //qDebug("*******Set orig uid %s ", id.latin1());
819 mData->originalExternalUID = id; 819 mData->originalExternalUID = id;
820} 820}
821 821
822QString Addressee::originalExternalUID() const 822QString Addressee::originalExternalUID() const
823{ 823{
824 return mData->originalExternalUID; 824 return mData->originalExternalUID;
825} 825}
826 826
827void Addressee::setUid( const QString &id ) 827void Addressee::setUid( const QString &id )
828{ 828{
829 if ( id == mData->uid ) return; 829 if ( id == mData->uid ) return;
830 detach(); 830 detach();
831 //qDebug("****setuid %s ", id.latin1()); 831 //qDebug("****setuid %s ", id.latin1());
832 mData->empty = false; 832 mData->empty = false;
833 mData->uid = id; 833 mData->uid = id;
834} 834}
835 835
836const QString Addressee::uid() const 836const QString Addressee::uid() const
837{ 837{
838 if ( mData->uid.isEmpty() ) 838 if ( mData->uid.isEmpty() )
839 mData->uid = KApplication::randomString( 10 ); 839 mData->uid = KApplication::randomString( 10 );
840 840
841 return mData->uid; 841 return mData->uid;
842} 842}
843 843
844QString Addressee::uidLabel() 844QString Addressee::uidLabel()
845{ 845{
846 return i18n("Unique Identifier"); 846 return i18n("Unique Identifier");
847} 847}
848 848
849void Addressee::setName( const QString &name ) 849void Addressee::setName( const QString &name )
850{ 850{
851 if ( name == mData->name ) return; 851 if ( name == mData->name ) return;
852 detach(); 852 detach();
853 mData->empty = false; 853 mData->empty = false;
854 mData->name = name; 854 mData->name = name;
855} 855}
856 856
857QString Addressee::name() const 857QString Addressee::name() const
858{ 858{
859 return mData->name; 859 return mData->name;
860} 860}
861 861
862QString Addressee::nameLabel() 862QString Addressee::nameLabel()
863{ 863{
864 return i18n("Name"); 864 return i18n("Name");
865} 865}
866 866
867 867
868void Addressee::setFormattedName( const QString &formattedName ) 868void Addressee::setFormattedName( const QString &formattedName )
869{ 869{
870 if ( formattedName == mData->formattedName ) return; 870 if ( formattedName == mData->formattedName ) return;
871 detach(); 871 detach();
872 mData->empty = false; 872 mData->empty = false;
873 mData->formattedName = formattedName; 873 mData->formattedName = formattedName;
874} 874}
875 875
876QString Addressee::formattedName() const 876QString Addressee::formattedName() const
877{ 877{
878 return mData->formattedName; 878 return mData->formattedName;
879} 879}
880 880
881QString Addressee::formattedNameLabel() 881QString Addressee::formattedNameLabel()
882{ 882{
883 return i18n("Formatted Name"); 883 return i18n("Formatted Name");
884} 884}
885 885
886 886
887void Addressee::setFamilyName( const QString &familyName ) 887void Addressee::setFamilyName( const QString &familyName )
888{ 888{
889 if ( familyName == mData->familyName ) return; 889 if ( familyName == mData->familyName ) return;
890 detach(); 890 detach();
891 mData->empty = false; 891 mData->empty = false;
892 mData->familyName = familyName; 892 mData->familyName = familyName;
893} 893}
894 894
895QString Addressee::familyName() const 895QString Addressee::familyName() const
896{ 896{
897 return mData->familyName; 897 return mData->familyName;
898} 898}
899 899
900QString Addressee::familyNameLabel() 900QString Addressee::familyNameLabel()
901{ 901{
902 return i18n("Family Name"); 902 return i18n("Family Name");
903} 903}
904 904
905 905
906void Addressee::setGivenName( const QString &givenName ) 906void Addressee::setGivenName( const QString &givenName )
907{ 907{
908 if ( givenName == mData->givenName ) return; 908 if ( givenName == mData->givenName ) return;
909 detach(); 909 detach();
910 mData->empty = false; 910 mData->empty = false;
911 mData->givenName = givenName; 911 mData->givenName = givenName;
912} 912}
913 913
914QString Addressee::givenName() const 914QString Addressee::givenName() const
915{ 915{
916 return mData->givenName; 916 return mData->givenName;
917} 917}
918 918
919QString Addressee::givenNameLabel() 919QString Addressee::givenNameLabel()
920{ 920{
921 return i18n("Given Name"); 921 return i18n("Given Name");
922} 922}
923 923
924 924
925void Addressee::setAdditionalName( const QString &additionalName ) 925void Addressee::setAdditionalName( const QString &additionalName )
926{ 926{
927 if ( additionalName == mData->additionalName ) return; 927 if ( additionalName == mData->additionalName ) return;
928 detach(); 928 detach();
929 mData->empty = false; 929 mData->empty = false;
930 mData->additionalName = additionalName; 930 mData->additionalName = additionalName;
931} 931}
932 932
933QString Addressee::additionalName() const 933QString Addressee::additionalName() const
934{ 934{
935 return mData->additionalName; 935 return mData->additionalName;
936} 936}
937 937
938QString Addressee::additionalNameLabel() 938QString Addressee::additionalNameLabel()
939{ 939{
940 return i18n("Additional Names"); 940 return i18n("Additional Names");
941} 941}
942 942
943 943
944void Addressee::setPrefix( const QString &prefix ) 944void Addressee::setPrefix( const QString &prefix )
945{ 945{
946 if ( prefix == mData->prefix ) return; 946 if ( prefix == mData->prefix ) return;
947 detach(); 947 detach();
948 mData->empty = false; 948 mData->empty = false;
949 mData->prefix = prefix; 949 mData->prefix = prefix;
950} 950}
951 951
952QString Addressee::prefix() const 952QString Addressee::prefix() const
953{ 953{
954 return mData->prefix; 954 return mData->prefix;
955} 955}
956 956
957QString Addressee::prefixLabel() 957QString Addressee::prefixLabel()
958{ 958{
959 return i18n("Honorific Prefixes"); 959 return i18n("Honorific Prefixes");
960} 960}
961 961
962 962
963void Addressee::setSuffix( const QString &suffix ) 963void Addressee::setSuffix( const QString &suffix )
964{ 964{
965 if ( suffix == mData->suffix ) return; 965 if ( suffix == mData->suffix ) return;
966 detach(); 966 detach();
967 mData->empty = false; 967 mData->empty = false;
968 mData->suffix = suffix; 968 mData->suffix = suffix;
969} 969}
970 970
971QString Addressee::suffix() const 971QString Addressee::suffix() const
972{ 972{
973 return mData->suffix; 973 return mData->suffix;
974} 974}
975 975
976QString Addressee::suffixLabel() 976QString Addressee::suffixLabel()
977{ 977{
978 return i18n("Honorific Suffixes"); 978 return i18n("Honorific Suffixes");
979} 979}
980 980
981 981
982void Addressee::setNickName( const QString &nickName ) 982void Addressee::setNickName( const QString &nickName )
983{ 983{
984 if ( nickName == mData->nickName ) return; 984 if ( nickName == mData->nickName ) return;
985 detach(); 985 detach();
986 mData->empty = false; 986 mData->empty = false;
987 mData->nickName = nickName; 987 mData->nickName = nickName;
988} 988}
989 989
990QString Addressee::nickName() const 990QString Addressee::nickName() const
991{ 991{
992 return mData->nickName; 992 return mData->nickName;
993} 993}
994 994
995QString Addressee::nickNameLabel() 995QString Addressee::nickNameLabel()
996{ 996{
997 return i18n("Nick Name"); 997 return i18n("Nick Name");
998} 998}
999 999
1000 1000
1001void Addressee::setBirthday( const QDateTime &birthday ) 1001void Addressee::setBirthday( const QDateTime &birthday )
1002{ 1002{
1003 if ( birthday == mData->birthday ) return; 1003 if ( birthday == mData->birthday ) return;
1004 detach(); 1004 detach();
1005 mData->empty = false; 1005 mData->empty = false;
1006 mData->birthday = birthday; 1006 mData->birthday = birthday;
1007} 1007}
1008 1008
1009QDateTime Addressee::birthday() const 1009QDateTime Addressee::birthday() const
1010{ 1010{
1011 return mData->birthday; 1011 return mData->birthday;
1012} 1012}
1013 1013
1014QString Addressee::birthdayLabel() 1014QString Addressee::birthdayLabel()
1015{ 1015{
1016 return i18n("Birthday"); 1016 return i18n("Birthday");
1017} 1017}
1018 1018
1019 1019
1020QString Addressee::homeAddressStreetLabel() 1020QString Addressee::homeAddressStreetLabel()
1021{ 1021{
1022 return i18n("Home Address Street"); 1022 return i18n("Home Address Street");
1023} 1023}
1024 1024
1025 1025
1026QString Addressee::homeAddressLocalityLabel() 1026QString Addressee::homeAddressLocalityLabel()
1027{ 1027{
1028 return i18n("Home Address Locality"); 1028 return i18n("Home Address Locality");
1029} 1029}
1030 1030
1031 1031
1032QString Addressee::homeAddressRegionLabel() 1032QString Addressee::homeAddressRegionLabel()
1033{ 1033{
1034 return i18n("Home Address Region"); 1034 return i18n("Home Address Region");
1035} 1035}
1036 1036
1037 1037
1038QString Addressee::homeAddressPostalCodeLabel() 1038QString Addressee::homeAddressPostalCodeLabel()
1039{ 1039{
1040 return i18n("Home Address Postal Code"); 1040 return i18n("Home Address Postal Code");
1041} 1041}
1042 1042
1043 1043
1044QString Addressee::homeAddressCountryLabel() 1044QString Addressee::homeAddressCountryLabel()
1045{ 1045{
1046 return i18n("Home Address Country"); 1046 return i18n("Home Address Country");
1047} 1047}
1048 1048
1049 1049
1050QString Addressee::homeAddressLabelLabel() 1050QString Addressee::homeAddressLabelLabel()
1051{ 1051{
1052 return i18n("Home Address Label"); 1052 return i18n("Home Address Label");
1053} 1053}
1054 1054
1055 1055
1056QString Addressee::businessAddressStreetLabel() 1056QString Addressee::businessAddressStreetLabel()
1057{ 1057{
1058 return i18n("Business Address Street"); 1058 return i18n("Business Address Street");
1059} 1059}
1060 1060
1061 1061
1062QString Addressee::businessAddressLocalityLabel() 1062QString Addressee::businessAddressLocalityLabel()
1063{ 1063{
1064 return i18n("Business Address Locality"); 1064 return i18n("Business Address Locality");
1065} 1065}
1066 1066
1067 1067
1068QString Addressee::businessAddressRegionLabel() 1068QString Addressee::businessAddressRegionLabel()
1069{ 1069{
1070 return i18n("Business Address Region"); 1070 return i18n("Business Address Region");
1071} 1071}
1072 1072
1073 1073
1074QString Addressee::businessAddressPostalCodeLabel() 1074QString Addressee::businessAddressPostalCodeLabel()
1075{ 1075{
1076 return i18n("Business Address Postal Code"); 1076 return i18n("Business Address Postal Code");
1077} 1077}
1078 1078
1079 1079
1080QString Addressee::businessAddressCountryLabel() 1080QString Addressee::businessAddressCountryLabel()
1081{ 1081{
1082 return i18n("Business Address Country"); 1082 return i18n("Business Address Country");
1083} 1083}
1084 1084
1085 1085
1086QString Addressee::businessAddressLabelLabel() 1086QString Addressee::businessAddressLabelLabel()
1087{ 1087{
1088 return i18n("Business Address Label"); 1088 return i18n("Business Address Label");
1089} 1089}
1090 1090
1091 1091
1092QString Addressee::homePhoneLabel() 1092QString Addressee::homePhoneLabel()
1093{ 1093{
1094 return i18n("Home Phone"); 1094 return i18n("Home Phone");
1095} 1095}
1096 1096
1097 1097
1098QString Addressee::businessPhoneLabel() 1098QString Addressee::businessPhoneLabel()
1099{ 1099{
1100 return i18n("Work Phone"); 1100 return i18n("Work Phone");
1101} 1101}
1102 1102
1103 1103
1104QString Addressee::mobilePhoneLabel() 1104QString Addressee::mobilePhoneLabel()
1105{ 1105{
1106 return i18n("Mobile"); 1106 return i18n("Mobile");
1107} 1107}
1108QString Addressee::mobileWorkPhoneLabel() 1108QString Addressee::mobileWorkPhoneLabel()
1109{ 1109{
1110 return i18n("Mobile2"); 1110 return i18n("Mobile2");
1111} 1111}
1112 1112
1113 1113
1114QString Addressee::homeFaxLabel() 1114QString Addressee::homeFaxLabel()
1115{ 1115{
1116 return i18n("Fax (Home)"); 1116 return i18n("Fax (Home)");
1117} 1117}
1118 1118
1119 1119
1120QString Addressee::businessFaxLabel() 1120QString Addressee::businessFaxLabel()
1121{ 1121{
1122 return i18n("Fax (Work)"); 1122 return i18n("Fax (Work)");
1123} 1123}
1124 1124
1125 1125
1126QString Addressee::isdnLabel() 1126QString Addressee::isdnLabel()
1127{ 1127{
1128 return i18n("ISDN"); 1128 return i18n("ISDN");
1129} 1129}
1130 1130
1131 1131
1132QString Addressee::pagerLabel() 1132QString Addressee::pagerLabel()
1133{ 1133{
1134 return i18n("Pager"); 1134 return i18n("Pager");
1135} 1135}
1136QString Addressee::otherPhoneLabel() 1136QString Addressee::otherPhoneLabel()
1137{ 1137{
1138 return i18n("Other Phone"); 1138 return i18n("Other Phone");
1139} 1139}
1140 1140
1141QString Addressee::sipLabel() 1141QString Addressee::sipLabel()
1142{ 1142{
1143 return i18n("SiP"); 1143 return i18n("SiP");
1144} 1144}
1145 1145
1146QString Addressee::emailLabel() 1146QString Addressee::emailLabel()
1147{ 1147{
1148 return i18n("Email Address"); 1148 return i18n("Email Address");
1149} 1149}
1150 1150
1151 1151
1152void Addressee::setMailer( const QString &mailer ) 1152void Addressee::setMailer( const QString &mailer )
1153{ 1153{
1154 if ( mailer == mData->mailer ) return; 1154 if ( mailer == mData->mailer ) return;
1155 detach(); 1155 detach();
1156 mData->empty = false; 1156 mData->empty = false;
1157 mData->mailer = mailer; 1157 mData->mailer = mailer;
1158} 1158}
1159 1159
1160QString Addressee::mailer() const 1160QString Addressee::mailer() const
1161{ 1161{
1162 return mData->mailer; 1162 return mData->mailer;
1163} 1163}
1164 1164
1165QString Addressee::mailerLabel() 1165QString Addressee::mailerLabel()
1166{ 1166{
1167 return i18n("Mail Client"); 1167 return i18n("Mail Client");
1168} 1168}
1169 1169
1170 1170
1171void Addressee::setTimeZone( const TimeZone &timeZone ) 1171void Addressee::setTimeZone( const TimeZone &timeZone )
1172{ 1172{
1173 if ( timeZone == mData->timeZone ) return; 1173 if ( timeZone == mData->timeZone ) return;
1174 detach(); 1174 detach();
1175 mData->empty = false; 1175 mData->empty = false;
1176 mData->timeZone = timeZone; 1176 mData->timeZone = timeZone;
1177} 1177}
1178 1178
1179TimeZone Addressee::timeZone() const 1179TimeZone Addressee::timeZone() const
1180{ 1180{
1181 return mData->timeZone; 1181 return mData->timeZone;
1182} 1182}
1183 1183
1184QString Addressee::timeZoneLabel() 1184QString Addressee::timeZoneLabel()
1185{ 1185{
1186 return i18n("Time Zone"); 1186 return i18n("Time Zone");
1187} 1187}
1188 1188
1189 1189
1190void Addressee::setGeo( const Geo &geo ) 1190void Addressee::setGeo( const Geo &geo )
1191{ 1191{
1192 if ( geo == mData->geo ) return; 1192 if ( geo == mData->geo ) return;
1193 detach(); 1193 detach();
1194 mData->empty = false; 1194 mData->empty = false;
1195 mData->geo = geo; 1195 mData->geo = geo;
1196} 1196}
1197 1197
1198Geo Addressee::geo() const 1198Geo Addressee::geo() const
1199{ 1199{
1200 return mData->geo; 1200 return mData->geo;
1201} 1201}
1202 1202
1203QString Addressee::geoLabel() 1203QString Addressee::geoLabel()
1204{ 1204{
1205 return i18n("Geographic Position"); 1205 return i18n("Geographic Position");
1206} 1206}
1207 1207
1208 1208
1209void Addressee::setTitle( const QString &title ) 1209void Addressee::setTitle( const QString &title )
1210{ 1210{
1211 if ( title == mData->title ) return; 1211 if ( title == mData->title ) return;
1212 detach(); 1212 detach();
1213 mData->empty = false; 1213 mData->empty = false;
1214 mData->title = title; 1214 mData->title = title;
1215} 1215}
1216 1216
1217QString Addressee::title() const 1217QString Addressee::title() const
1218{ 1218{
1219 return mData->title; 1219 return mData->title;
1220} 1220}
1221 1221
1222QString Addressee::titleLabel() 1222QString Addressee::titleLabel()
1223{ 1223{
1224 return i18n("Title"); 1224 return i18n("Title");
1225} 1225}
1226 1226
1227 1227
1228void Addressee::setRole( const QString &role ) 1228void Addressee::setRole( const QString &role )
1229{ 1229{
1230 if ( role == mData->role ) return; 1230 if ( role == mData->role ) return;
1231 detach(); 1231 detach();
1232 mData->empty = false; 1232 mData->empty = false;
1233 mData->role = role; 1233 mData->role = role;
1234} 1234}
1235 1235
1236QString Addressee::role() const 1236QString Addressee::role() const
1237{ 1237{
1238 return mData->role; 1238 return mData->role;
1239} 1239}
1240 1240
1241QString Addressee::roleLabel() 1241QString Addressee::roleLabel()
1242{ 1242{
1243 return i18n("Role"); 1243 return i18n("Role");
1244} 1244}
1245 1245
1246 1246
1247void Addressee::setOrganization( const QString &organization ) 1247void Addressee::setOrganization( const QString &organization )
1248{ 1248{
1249 if ( organization == mData->organization ) return; 1249 if ( organization == mData->organization ) return;
1250 detach(); 1250 detach();
1251 mData->empty = false; 1251 mData->empty = false;
1252 mData->organization = organization; 1252 mData->organization = organization;
1253} 1253}
1254 1254
1255QString Addressee::organization() const 1255QString Addressee::organization() const
1256{ 1256{
1257 return mData->organization; 1257 return mData->organization;
1258} 1258}
1259 1259
1260QString Addressee::organizationLabel() 1260QString Addressee::organizationLabel()
1261{ 1261{
1262 return i18n("Organization"); 1262 return i18n("Organization");
1263} 1263}
1264 1264
1265 1265
1266void Addressee::setNote( const QString &note ) 1266void Addressee::setNote( const QString &note )
1267{ 1267{
1268 if ( note == mData->note ) return; 1268 if ( note == mData->note ) return;
1269 detach(); 1269 detach();
1270 mData->empty = false; 1270 mData->empty = false;
1271 mData->note = note; 1271 mData->note = note;
1272} 1272}
1273 1273
1274QString Addressee::note() const 1274QString Addressee::note() const
1275{ 1275{
1276 return mData->note; 1276 return mData->note;
1277} 1277}
1278 1278
1279QString Addressee::noteLabel() 1279QString Addressee::noteLabel()
1280{ 1280{
1281 return i18n("Note"); 1281 return i18n("Note");
1282} 1282}
1283 1283
1284 1284
1285void Addressee::setProductId( const QString &productId ) 1285void Addressee::setProductId( const QString &productId )
1286{ 1286{
1287 if ( productId == mData->productId ) return; 1287 if ( productId == mData->productId ) return;
1288 detach(); 1288 detach();
1289 mData->empty = false; 1289 mData->empty = false;
1290 mData->productId = productId; 1290 mData->productId = productId;
1291} 1291}
1292 1292
1293QString Addressee::productId() const 1293QString Addressee::productId() const
1294{ 1294{
1295 return mData->productId; 1295 return mData->productId;
1296} 1296}
1297 1297
1298QString Addressee::productIdLabel() 1298QString Addressee::productIdLabel()
1299{ 1299{
1300 return i18n("Product Identifier"); 1300 return i18n("Product Identifier");
1301} 1301}
1302 1302
1303 1303
1304void Addressee::setRevision( const QDateTime &revision ) 1304void Addressee::setRevision( const QDateTime &revision )
1305{ 1305{
1306 if ( revision == mData->revision ) return; 1306 if ( revision == mData->revision ) return;
1307 detach(); 1307 detach();
1308 mData->empty = false; 1308 mData->empty = false;
1309 mData->revision = QDateTime( revision.date(), 1309 mData->revision = QDateTime( revision.date(),
1310 QTime (revision.time().hour(), 1310 QTime (revision.time().hour(),
1311 revision.time().minute(), 1311 revision.time().minute(),
1312 revision.time().second())); 1312 revision.time().second()));
1313} 1313}
1314 1314
1315QDateTime Addressee::revision() const 1315QDateTime Addressee::revision() const
1316{ 1316{
1317 return mData->revision; 1317 return mData->revision;
1318} 1318}
1319 1319
1320QString Addressee::revisionLabel() 1320QString Addressee::revisionLabel()
1321{ 1321{
1322 return i18n("Revision Date"); 1322 return i18n("Revision Date");
1323} 1323}
1324 1324
1325 1325
1326void Addressee::setSortString( const QString &sortString ) 1326void Addressee::setSortString( const QString &sortString )
1327{ 1327{
1328 if ( sortString == mData->sortString ) return; 1328 if ( sortString == mData->sortString ) return;
1329 detach(); 1329 detach();
1330 mData->empty = false; 1330 mData->empty = false;
1331 mData->sortString = sortString; 1331 mData->sortString = sortString;
1332} 1332}
1333 1333
1334QString Addressee::sortString() const 1334QString Addressee::sortString() const
1335{ 1335{
1336 return mData->sortString; 1336 return mData->sortString;
1337} 1337}
1338 1338
1339QString Addressee::sortStringLabel() 1339QString Addressee::sortStringLabel()
1340{ 1340{
1341 return i18n("Sort String"); 1341 return i18n("Sort String");
1342} 1342}
1343 1343
1344 1344
1345void Addressee::setUrl( const KURL &url ) 1345void Addressee::setUrl( const KURL &url )
1346{ 1346{
1347 if ( url == mData->url ) return; 1347 if ( url == mData->url ) return;
1348 detach(); 1348 detach();
1349 mData->empty = false; 1349 mData->empty = false;
1350 mData->url = url; 1350 mData->url = url;
1351} 1351}
1352 1352
1353KURL Addressee::url() const 1353KURL Addressee::url() const
1354{ 1354{
1355 return mData->url; 1355 return mData->url;
1356} 1356}
1357 1357
1358QString Addressee::urlLabel() 1358QString Addressee::urlLabel()
1359{ 1359{
1360 return i18n("URL"); 1360 return i18n("URL");
1361} 1361}
1362 1362
1363 1363
1364void Addressee::setSecrecy( const Secrecy &secrecy ) 1364void Addressee::setSecrecy( const Secrecy &secrecy )
1365{ 1365{
1366 if ( secrecy == mData->secrecy ) return; 1366 if ( secrecy == mData->secrecy ) return;
1367 detach(); 1367 detach();
1368 mData->empty = false; 1368 mData->empty = false;
1369 mData->secrecy = secrecy; 1369 mData->secrecy = secrecy;
1370} 1370}
1371 1371
1372Secrecy Addressee::secrecy() const 1372Secrecy Addressee::secrecy() const
1373{ 1373{
1374 return mData->secrecy; 1374 return mData->secrecy;
1375} 1375}
1376 1376
1377QString Addressee::secrecyLabel() 1377QString Addressee::secrecyLabel()
1378{ 1378{
1379 return i18n("Security Class"); 1379 return i18n("Security Class");
1380} 1380}
1381 1381
1382 1382
1383void Addressee::setLogo( const Picture &logo ) 1383void Addressee::setLogo( const Picture &logo )
1384{ 1384{
1385 if ( logo == mData->logo ) return; 1385 if ( logo == mData->logo ) return;
1386 detach(); 1386 detach();
1387 mData->empty = false; 1387 mData->empty = false;
1388 mData->logo = logo; 1388 mData->logo = logo;
1389} 1389}
1390 1390
1391Picture Addressee::logo() const 1391Picture Addressee::logo() const
1392{ 1392{
1393 return mData->logo; 1393 return mData->logo;
1394} 1394}
1395 1395
1396QString Addressee::logoLabel() 1396QString Addressee::logoLabel()
1397{ 1397{
1398 return i18n("Logo"); 1398 return i18n("Logo");
1399} 1399}
1400 1400
1401 1401
1402void Addressee::setPhoto( const Picture &photo ) 1402void Addressee::setPhoto( const Picture &photo )
1403{ 1403{
1404 if ( photo == mData->photo ) return; 1404 if ( photo == mData->photo ) return;
1405 detach(); 1405 detach();
1406 mData->empty = false; 1406 mData->empty = false;
1407 mData->photo = photo; 1407 mData->photo = photo;
1408} 1408}
1409 1409
1410Picture Addressee::photo() const 1410Picture Addressee::photo() const
1411{ 1411{
1412 return mData->photo; 1412 return mData->photo;
1413} 1413}
1414 1414
1415QString Addressee::photoLabel() 1415QString Addressee::photoLabel()
1416{ 1416{
1417 return i18n("Photo"); 1417 return i18n("Photo");
1418} 1418}
1419 1419
1420 1420
1421void Addressee::setSound( const Sound &sound ) 1421void Addressee::setSound( const Sound &sound )
1422{ 1422{
1423 if ( sound == mData->sound ) return; 1423 if ( sound == mData->sound ) return;
1424 detach(); 1424 detach();
1425 mData->empty = false; 1425 mData->empty = false;
1426 mData->sound = sound; 1426 mData->sound = sound;
1427} 1427}
1428 1428
1429Sound Addressee::sound() const 1429Sound Addressee::sound() const
1430{ 1430{
1431 return mData->sound; 1431 return mData->sound;
1432} 1432}
1433 1433
1434QString Addressee::soundLabel() 1434QString Addressee::soundLabel()
1435{ 1435{
1436 return i18n("Sound"); 1436 return i18n("Sound");
1437} 1437}
1438 1438
1439 1439
1440void Addressee::setAgent( const Agent &agent ) 1440void Addressee::setAgent( const Agent &agent )
1441{ 1441{
1442 if ( agent == mData->agent ) return; 1442 if ( agent == mData->agent ) return;
1443 detach(); 1443 detach();
1444 mData->empty = false; 1444 mData->empty = false;
1445 mData->agent = agent; 1445 mData->agent = agent;
1446} 1446}
1447 1447
1448Agent Addressee::agent() const 1448Agent Addressee::agent() const
1449{ 1449{
1450 return mData->agent; 1450 return mData->agent;
1451} 1451}
1452 1452
1453QString Addressee::agentLabel() 1453QString Addressee::agentLabel()
1454{ 1454{
1455 return i18n("Agent"); 1455 return i18n("Agent");
1456} 1456}
1457 1457
1458 1458
1459 1459
1460void Addressee::setNameFromString( const QString &str ) 1460void Addressee::setNameFromString( const QString &str )
1461{ 1461{
1462 setFormattedName( str ); 1462 setFormattedName( str );
1463 setName( str ); 1463 setName( str );
1464 1464
1465 static bool first = true; 1465 static bool first = true;
1466 static QStringList titles; 1466 static QStringList titles;
1467 static QStringList suffixes; 1467 static QStringList suffixes;
1468 static QStringList prefixes; 1468 static QStringList prefixes;
1469 1469
1470 if ( first ) { 1470 if ( first ) {
1471 first = false; 1471 first = false;
1472 titles += i18n( "Dr." ); 1472 titles += i18n( "Dr." );
1473 titles += i18n( "Miss" ); 1473 titles += i18n( "Miss" );
1474 titles += i18n( "Mr." ); 1474 titles += i18n( "Mr." );
1475 titles += i18n( "Mrs." ); 1475 titles += i18n( "Mrs." );
1476 titles += i18n( "Ms." ); 1476 titles += i18n( "Ms." );
1477 titles += i18n( "Prof." ); 1477 titles += i18n( "Prof." );
1478 1478
1479 suffixes += i18n( "I" ); 1479 suffixes += i18n( "I" );
1480 suffixes += i18n( "II" ); 1480 suffixes += i18n( "II" );
1481 suffixes += i18n( "III" ); 1481 suffixes += i18n( "III" );
1482 suffixes += i18n( "Jr." ); 1482 suffixes += i18n( "Jr." );
1483 suffixes += i18n( "Sr." ); 1483 suffixes += i18n( "Sr." );
1484 1484
1485 prefixes += "van"; 1485 prefixes += "van";
1486 prefixes += "von"; 1486 prefixes += "von";
1487 prefixes += "de"; 1487 prefixes += "de";
1488 1488
1489 KConfig config( locateLocal( "config", "kabcrc") ); 1489 KConfig config( locateLocal( "config", "kabcrc") );
1490 config.setGroup( "General" ); 1490 config.setGroup( "General" );
1491 titles += config.readListEntry( "Prefixes" ); 1491 titles += config.readListEntry( "Prefixes" );
1492 titles.remove( "" ); 1492 titles.remove( "" );
1493 prefixes += config.readListEntry( "Inclusions" ); 1493 prefixes += config.readListEntry( "Inclusions" );
1494 prefixes.remove( "" ); 1494 prefixes.remove( "" );
1495 suffixes += config.readListEntry( "Suffixes" ); 1495 suffixes += config.readListEntry( "Suffixes" );
1496 suffixes.remove( "" ); 1496 suffixes.remove( "" );
1497 } 1497 }
1498 1498
1499 // clear all name parts 1499 // clear all name parts
1500 setPrefix( "" ); 1500 setPrefix( "" );
1501 setGivenName( "" ); 1501 setGivenName( "" );
1502 setAdditionalName( "" ); 1502 setAdditionalName( "" );
1503 setFamilyName( "" ); 1503 setFamilyName( "" );
1504 setSuffix( "" ); 1504 setSuffix( "" );
1505 1505
1506 if ( str.isEmpty() ) 1506 if ( str.isEmpty() )
1507 return; 1507 return;
1508 1508
1509 int i = str.find(','); 1509 int i = str.find(',');
1510 if( i < 0 ) { 1510 if( i < 0 ) {
1511 QStringList parts = QStringList::split( " ", str ); 1511 QStringList parts = QStringList::split( " ", str );
1512 int leftOffset = 0; 1512 int leftOffset = 0;
1513 int rightOffset = parts.count() - 1; 1513 int rightOffset = parts.count() - 1;
1514 1514
1515 QString suffix; 1515 QString suffix;
1516 while ( rightOffset >= 0 ) { 1516 while ( rightOffset >= 0 ) {
1517 if ( suffixes.contains( parts[ rightOffset ] ) ) { 1517 if ( suffixes.contains( parts[ rightOffset ] ) ) {
1518 suffix.prepend(parts[ rightOffset ] + (suffix.isEmpty() ? "" : " ")); 1518 suffix.prepend(parts[ rightOffset ] + (suffix.isEmpty() ? "" : " "));
1519 rightOffset--; 1519 rightOffset--;
1520 } else 1520 } else
1521 break; 1521 break;
1522 } 1522 }
1523 setSuffix( suffix ); 1523 setSuffix( suffix );
1524 1524
1525 if ( rightOffset < 0 ) 1525 if ( rightOffset < 0 )
1526 return; 1526 return;
1527 1527
1528 if ( rightOffset - 1 >= 0 && prefixes.contains( parts[ rightOffset - 1 ].lower() ) ) { 1528 if ( rightOffset - 1 >= 0 && prefixes.contains( parts[ rightOffset - 1 ].lower() ) ) {
1529 setFamilyName( parts[ rightOffset - 1 ] + " " + parts[ rightOffset ] ); 1529 setFamilyName( parts[ rightOffset - 1 ] + " " + parts[ rightOffset ] );
1530 rightOffset--; 1530 rightOffset--;
1531 } else 1531 } else
1532 setFamilyName( parts[ rightOffset ] ); 1532 setFamilyName( parts[ rightOffset ] );
1533 1533
1534 QString prefix; 1534 QString prefix;
1535 while ( leftOffset < rightOffset ) { 1535 while ( leftOffset < rightOffset ) {
1536 if ( titles.contains( parts[ leftOffset ] ) ) { 1536 if ( titles.contains( parts[ leftOffset ] ) ) {
1537 prefix.append( ( prefix.isEmpty() ? "" : " ") + parts[ leftOffset ] ); 1537 prefix.append( ( prefix.isEmpty() ? "" : " ") + parts[ leftOffset ] );
1538 leftOffset++; 1538 leftOffset++;
1539 } else 1539 } else
1540 break; 1540 break;
1541 } 1541 }
1542 setPrefix( prefix ); 1542 setPrefix( prefix );
1543 1543
1544 if ( leftOffset < rightOffset ) { 1544 if ( leftOffset < rightOffset ) {
1545 setGivenName( parts[ leftOffset ] ); 1545 setGivenName( parts[ leftOffset ] );
1546 leftOffset++; 1546 leftOffset++;
1547 } 1547 }
1548 1548
1549 QString additionalName; 1549 QString additionalName;
1550 while ( leftOffset < rightOffset ) { 1550 while ( leftOffset < rightOffset ) {
1551 additionalName.append( ( additionalName.isEmpty() ? "" : " ") + parts[ leftOffset ] ); 1551 additionalName.append( ( additionalName.isEmpty() ? "" : " ") + parts[ leftOffset ] );
1552 leftOffset++; 1552 leftOffset++;
1553 } 1553 }
1554 setAdditionalName( additionalName ); 1554 setAdditionalName( additionalName );
1555 } else { 1555 } else {
1556 QString part1 = str.left( i ); 1556 QString part1 = str.left( i );
1557 QString part2 = str.mid( i + 1 ); 1557 QString part2 = str.mid( i + 1 );
1558 1558
1559 QStringList parts = QStringList::split( " ", part1 ); 1559 QStringList parts = QStringList::split( " ", part1 );
1560 int leftOffset = 0; 1560 int leftOffset = 0;
1561 int rightOffset = parts.count() - 1; 1561 int rightOffset = parts.count() - 1;
1562 1562
1563 QString suffix; 1563 QString suffix;
1564 while ( rightOffset >= 0 ) { 1564 while ( rightOffset >= 0 ) {
1565 if ( suffixes.contains( parts[ rightOffset ] ) ) { 1565 if ( suffixes.contains( parts[ rightOffset ] ) ) {
1566 suffix.prepend(parts[ rightOffset ] + (suffix.isEmpty() ? "" : " ")); 1566 suffix.prepend(parts[ rightOffset ] + (suffix.isEmpty() ? "" : " "));
1567 rightOffset--; 1567 rightOffset--;
1568 } else 1568 } else
1569 break; 1569 break;
1570 } 1570 }
1571 setSuffix( suffix ); 1571 setSuffix( suffix );
1572 1572
1573 if ( rightOffset - 1 >= 0 && prefixes.contains( parts[ rightOffset - 1 ].lower() ) ) { 1573 if ( rightOffset - 1 >= 0 && prefixes.contains( parts[ rightOffset - 1 ].lower() ) ) {
1574 setFamilyName( parts[ rightOffset - 1 ] + " " + parts[ rightOffset ] ); 1574 setFamilyName( parts[ rightOffset - 1 ] + " " + parts[ rightOffset ] );
1575 rightOffset--; 1575 rightOffset--;
1576 } else 1576 } else
1577 setFamilyName( parts[ rightOffset ] ); 1577 setFamilyName( parts[ rightOffset ] );
1578 1578
1579 QString prefix; 1579 QString prefix;
1580 while ( leftOffset < rightOffset ) { 1580 while ( leftOffset < rightOffset ) {
1581 if ( titles.contains( parts[ leftOffset ] ) ) { 1581 if ( titles.contains( parts[ leftOffset ] ) ) {
1582 prefix.append( ( prefix.isEmpty() ? "" : " ") + parts[ leftOffset ] ); 1582 prefix.append( ( prefix.isEmpty() ? "" : " ") + parts[ leftOffset ] );
1583 leftOffset++; 1583 leftOffset++;
1584 } else 1584 } else
1585 break; 1585 break;
1586 } 1586 }
1587 1587
1588 parts = QStringList::split( " ", part2 ); 1588 parts = QStringList::split( " ", part2 );
1589 1589
1590 leftOffset = 0; 1590 leftOffset = 0;
1591 rightOffset = parts.count(); 1591 rightOffset = parts.count();
1592 1592
1593 while ( leftOffset < rightOffset ) { 1593 while ( leftOffset < rightOffset ) {
1594 if ( titles.contains( parts[ leftOffset ] ) ) { 1594 if ( titles.contains( parts[ leftOffset ] ) ) {
1595 prefix.append( ( prefix.isEmpty() ? "" : " ") + parts[ leftOffset ] ); 1595 prefix.append( ( prefix.isEmpty() ? "" : " ") + parts[ leftOffset ] );
1596 leftOffset++; 1596 leftOffset++;
1597 } else 1597 } else
1598 break; 1598 break;
1599 } 1599 }
1600 setPrefix( prefix ); 1600 setPrefix( prefix );
1601 1601
1602 if ( leftOffset < rightOffset ) { 1602 if ( leftOffset < rightOffset ) {
1603 setGivenName( parts[ leftOffset ] ); 1603 setGivenName( parts[ leftOffset ] );
1604 leftOffset++; 1604 leftOffset++;
1605 } 1605 }
1606 1606
1607 QString additionalName; 1607 QString additionalName;
1608 while ( leftOffset < rightOffset ) { 1608 while ( leftOffset < rightOffset ) {
1609 additionalName.append( ( additionalName.isEmpty() ? "" : " ") + parts[ leftOffset ] ); 1609 additionalName.append( ( additionalName.isEmpty() ? "" : " ") + parts[ leftOffset ] );
1610 leftOffset++; 1610 leftOffset++;
1611 } 1611 }
1612 setAdditionalName( additionalName ); 1612 setAdditionalName( additionalName );
1613 } 1613 }
1614} 1614}
1615 1615
1616QString Addressee::realName() const 1616QString Addressee::realName() const
1617{ 1617{
1618 if ( !formattedName().isEmpty() ) 1618 if ( !formattedName().isEmpty() )
1619 return formattedName(); 1619 return formattedName();
1620 1620
1621 QString n = assembledName(); 1621 QString n = assembledName();
1622 1622
1623 if ( n.isEmpty() ) 1623 if ( n.isEmpty() )
1624 n = name(); 1624 n = name();
1625 if ( n.isEmpty() ) 1625 if ( n.isEmpty() )
1626 n = organization(); 1626 n = organization();
1627 return n; 1627 return n;
1628} 1628}
1629 1629
1630QString Addressee::assembledName() const 1630QString Addressee::assembledName() const
1631{ 1631{
1632 QString name = prefix() + " " + givenName() + " " + additionalName() + " " + 1632 QString name = prefix() + " " + givenName() + " " + additionalName() + " " +
1633 familyName() + " " + suffix(); 1633 familyName() + " " + suffix();
1634 1634
1635 return name.simplifyWhiteSpace(); 1635 return name.simplifyWhiteSpace();
1636} 1636}
1637 1637
1638QString Addressee::fullEmail( const QString &email ) const 1638QString Addressee::fullEmail( const QString &email ) const
1639{ 1639{
1640 QString e; 1640 QString e;
1641 if ( email.isNull() ) { 1641 if ( email.isNull() ) {
1642 e = preferredEmail(); 1642 e = preferredEmail();
1643 } else { 1643 } else {
1644 e = email; 1644 e = email;
1645 } 1645 }
1646 if ( e.isEmpty() ) return QString::null; 1646 if ( e.isEmpty() ) return QString::null;
1647 1647
1648 QString text; 1648 QString text;
1649 if ( realName().isEmpty() ) 1649 if ( realName().isEmpty() )
1650 text = e; 1650 text = e;
1651 else 1651 else
1652 text = assembledName() + " <" + e + ">"; 1652 text = assembledName() + " <" + e + ">";
1653 1653
1654 return text; 1654 return text;
1655} 1655}
1656 1656
1657void Addressee::insertEmail( const QString &email, bool preferred ) 1657void Addressee::insertEmail( const QString &email, bool preferred )
1658{ 1658{
1659 detach(); 1659 detach();
1660 1660
1661 QStringList::Iterator it = mData->emails.find( email ); 1661 QStringList::Iterator it = mData->emails.find( email );
1662 1662
1663 if ( it != mData->emails.end() ) { 1663 if ( it != mData->emails.end() ) {
1664 if ( !preferred || it == mData->emails.begin() ) return; 1664 if ( !preferred || it == mData->emails.begin() ) return;
1665 mData->emails.remove( it ); 1665 mData->emails.remove( it );
1666 mData->emails.prepend( email ); 1666 mData->emails.prepend( email );
1667 } else { 1667 } else {
1668 if ( preferred ) { 1668 if ( preferred ) {
1669 mData->emails.prepend( email ); 1669 mData->emails.prepend( email );
1670 } else { 1670 } else {
1671 mData->emails.append( email ); 1671 mData->emails.append( email );
1672 } 1672 }
1673 } 1673 }
1674} 1674}
1675 1675
1676void Addressee::removeEmail( const QString &email ) 1676void Addressee::removeEmail( const QString &email )
1677{ 1677{
1678 detach(); 1678 detach();
1679 1679
1680 QStringList::Iterator it = mData->emails.find( email ); 1680 QStringList::Iterator it = mData->emails.find( email );
1681 if ( it == mData->emails.end() ) return; 1681 if ( it == mData->emails.end() ) return;
1682 1682
1683 mData->emails.remove( it ); 1683 mData->emails.remove( it );
1684} 1684}
1685 1685
1686QString Addressee::preferredEmail() const 1686QString Addressee::preferredEmail() const
1687{ 1687{
1688 if ( mData->emails.count() == 0 ) return QString::null; 1688 if ( mData->emails.count() == 0 ) return QString::null;
1689 else return mData->emails.first(); 1689 else return mData->emails.first();
1690} 1690}
1691 1691
1692QStringList Addressee::emails() const 1692QStringList Addressee::emails() const
1693{ 1693{
1694 return mData->emails; 1694 return mData->emails;
1695} 1695}
1696void Addressee::setEmails( const QStringList& emails ) { 1696void Addressee::setEmails( const QStringList& emails ) {
1697 detach(); 1697 detach();
1698 mData->emails = emails; 1698 mData->emails = emails;
1699} 1699}
1700void Addressee::insertPhoneNumber( const PhoneNumber &phoneNumber ) 1700void Addressee::insertPhoneNumber( const PhoneNumber &phoneNumber )
1701{ 1701{
1702 detach(); 1702 detach();
1703 mData->empty = false; 1703 mData->empty = false;
1704 PhoneNumber::List::Iterator it; 1704 PhoneNumber::List::Iterator it;
1705 for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) { 1705 for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) {
1706 if ( (*it).id() == phoneNumber.id() ) { 1706 if ( (*it).id() == phoneNumber.id() ) {
1707 *it = phoneNumber; 1707 *it = phoneNumber;
1708 return; 1708 return;
1709 } 1709 }
1710 } 1710 }
1711 mData->phoneNumbers.append( phoneNumber ); 1711 mData->phoneNumbers.append( phoneNumber );
1712} 1712}
1713 1713
1714void Addressee::removePhoneNumber( const PhoneNumber &phoneNumber ) 1714void Addressee::removePhoneNumber( const PhoneNumber &phoneNumber )
1715{ 1715{
1716 detach(); 1716 detach();
1717 1717
1718 PhoneNumber::List::Iterator it; 1718 PhoneNumber::List::Iterator it;
1719 for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) { 1719 for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) {
1720 if ( (*it).id() == phoneNumber.id() ) { 1720 if ( (*it).id() == phoneNumber.id() ) {
1721 mData->phoneNumbers.remove( it ); 1721 mData->phoneNumbers.remove( it );
1722 return; 1722 return;
1723 } 1723 }
1724 } 1724 }
1725} 1725}
1726 1726
1727PhoneNumber Addressee::phoneNumber( int type ) const 1727PhoneNumber Addressee::phoneNumber( int type ) const
1728{ 1728{
1729 PhoneNumber phoneNumber( "", type ); 1729 PhoneNumber phoneNumber( "", type );
1730 PhoneNumber::List::ConstIterator it; 1730 PhoneNumber::List::ConstIterator it;
1731 for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) { 1731 for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) {
1732 if ( matchBinaryPatternP( (*it).type(), type ) ) { 1732 if ( matchBinaryPatternP( (*it).type(), type ) ) {
1733 if ( (*it).type() & PhoneNumber::Pref ) 1733 if ( (*it).type() & PhoneNumber::Pref )
1734 return (*it); 1734 return (*it);
1735 else if ( phoneNumber.number().isEmpty() ) 1735 else if ( phoneNumber.number().isEmpty() )
1736 phoneNumber = (*it); 1736 phoneNumber = (*it);
1737 } 1737 }
1738 } 1738 }
1739 1739
1740 return phoneNumber; 1740 return phoneNumber;
1741} 1741}
1742 1742
1743PhoneNumber::List Addressee::phoneNumbers() const 1743PhoneNumber::List Addressee::phoneNumbers() const
1744{ 1744{
1745 return mData->phoneNumbers; 1745 return mData->phoneNumbers;
1746} 1746}
1747 1747
1748int Addressee::hasPhoneNumberType( int type ) 1748int Addressee::hasPhoneNumberType( int type )
1749{ 1749{
1750 int retval = 0; 1750 int retval = 0;
1751 PhoneNumber::List::ConstIterator it; 1751 PhoneNumber::List::ConstIterator it;
1752 for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) { 1752 for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) {
1753 if ( (*it).type() == type ) 1753 if ( (*it).type() == type )
1754 ++retval; 1754 ++retval;
1755 } 1755 }
1756 return retval; 1756 return retval;
1757} 1757}
1758PhoneNumber::List Addressee::phoneNumbers( int type ) const 1758PhoneNumber::List Addressee::phoneNumbers( int type ) const
1759{ 1759{
1760 PhoneNumber::List list; 1760 PhoneNumber::List list;
1761 1761
1762 PhoneNumber::List::ConstIterator it; 1762 PhoneNumber::List::ConstIterator it;
1763 for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) { 1763 for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) {
1764 if ( matchBinaryPattern( (*it).type(), type ) ) { 1764 if ( matchBinaryPattern( (*it).type(), type ) ) {
1765 list.append( *it ); 1765 list.append( *it );
1766 } 1766 }
1767 } 1767 }
1768 return list; 1768 return list;
1769} 1769}
1770QString Addressee::phoneNumberString( int type ) const 1770QString Addressee::phoneNumberString( int type ) const
1771{ 1771{
1772 1772
1773 PhoneNumber::List::ConstIterator it; 1773 PhoneNumber::List::ConstIterator it;
1774 for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) { 1774 for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) {
1775 if ((*it).type() == type ) { 1775 if ((*it).type() == type ) {
1776 return ( *it ).number(); 1776 return ( *it ).number();
1777 } 1777 }
1778 } 1778 }
1779 return ""; 1779 return "";
1780} 1780}
1781 1781
1782PhoneNumber Addressee::findPhoneNumber( const QString &id ) const 1782PhoneNumber Addressee::findPhoneNumber( const QString &id ) const
1783{ 1783{
1784 PhoneNumber::List::ConstIterator it; 1784 PhoneNumber::List::ConstIterator it;
1785 for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) { 1785 for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) {
1786 if ( (*it).id() == id ) { 1786 if ( (*it).id() == id ) {
1787 return *it; 1787 return *it;
1788 } 1788 }
1789 } 1789 }
1790 return PhoneNumber(); 1790 return PhoneNumber();
1791} 1791}
1792 1792
1793void Addressee::insertKey( const Key &key ) 1793void Addressee::insertKey( const Key &key )
1794{ 1794{
1795 detach(); 1795 detach();
1796 mData->empty = false; 1796 mData->empty = false;
1797 1797
1798 Key::List::Iterator it; 1798 Key::List::Iterator it;
1799 for( it = mData->keys.begin(); it != mData->keys.end(); ++it ) { 1799 for( it = mData->keys.begin(); it != mData->keys.end(); ++it ) {
1800 if ( (*it).id() == key.id() ) { 1800 if ( (*it).id() == key.id() ) {
1801 *it = key; 1801 *it = key;
1802 return; 1802 return;
1803 } 1803 }
1804 } 1804 }
1805 mData->keys.append( key ); 1805 mData->keys.append( key );
1806} 1806}
1807 1807
1808void Addressee::removeKey( const Key &key ) 1808void Addressee::removeKey( const Key &key )
1809{ 1809{
1810 detach(); 1810 detach();
1811 1811
1812 Key::List::Iterator it; 1812 Key::List::Iterator it;
1813 for( it = mData->keys.begin(); it != mData->keys.end(); ++it ) { 1813 for( it = mData->keys.begin(); it != mData->keys.end(); ++it ) {
1814 if ( (*it).id() == key.id() ) { 1814 if ( (*it).id() == key.id() ) {
1815 mData->keys.remove( key ); 1815 mData->keys.remove( key );
1816 return; 1816 return;
1817 } 1817 }
1818 } 1818 }
1819} 1819}
1820 1820
1821Key Addressee::key( int type, QString customTypeString ) const 1821Key Addressee::key( int type, QString customTypeString ) const
1822{ 1822{
1823 Key::List::ConstIterator it; 1823 Key::List::ConstIterator it;
1824 for( it = mData->keys.begin(); it != mData->keys.end(); ++it ) { 1824 for( it = mData->keys.begin(); it != mData->keys.end(); ++it ) {
1825 if ( (*it).type() == type ) { 1825 if ( (*it).type() == type ) {
1826 if ( type == Key::Custom ) { 1826 if ( type == Key::Custom ) {
1827 if ( customTypeString.isEmpty() ) { 1827 if ( customTypeString.isEmpty() ) {
1828 return *it; 1828 return *it;
1829 } else { 1829 } else {
1830 if ( (*it).customTypeString() == customTypeString ) 1830 if ( (*it).customTypeString() == customTypeString )
1831 return (*it); 1831 return (*it);
1832 } 1832 }
1833 } else { 1833 } else {
1834 return *it; 1834 return *it;
1835 } 1835 }
1836 } 1836 }
1837 } 1837 }
1838 return Key( QString(), type ); 1838 return Key( QString(), type );
1839} 1839}
1840void Addressee::setKeys( const Key::List& list ) { 1840void Addressee::setKeys( const Key::List& list ) {
1841 detach(); 1841 detach();
1842 mData->keys = list; 1842 mData->keys = list;
1843} 1843}
1844 1844
1845Key::List Addressee::keys() const 1845Key::List Addressee::keys() const
1846{ 1846{
1847 return mData->keys; 1847 return mData->keys;
1848} 1848}
1849 1849
1850Key::List Addressee::keys( int type, QString customTypeString ) const 1850Key::List Addressee::keys( int type, QString customTypeString ) const
1851{ 1851{
1852 Key::List list; 1852 Key::List list;
1853 1853
1854 Key::List::ConstIterator it; 1854 Key::List::ConstIterator it;
1855 for( it = mData->keys.begin(); it != mData->keys.end(); ++it ) { 1855 for( it = mData->keys.begin(); it != mData->keys.end(); ++it ) {
1856 if ( (*it).type() == type ) { 1856 if ( (*it).type() == type ) {
1857 if ( type == Key::Custom ) { 1857 if ( type == Key::Custom ) {
1858 if ( customTypeString.isEmpty() ) { 1858 if ( customTypeString.isEmpty() ) {
1859 list.append(*it); 1859 list.append(*it);
1860 } else { 1860 } else {
1861 if ( (*it).customTypeString() == customTypeString ) 1861 if ( (*it).customTypeString() == customTypeString )
1862 list.append(*it); 1862 list.append(*it);
1863 } 1863 }
1864 } else { 1864 } else {
1865 list.append(*it); 1865 list.append(*it);
1866 } 1866 }
1867 } 1867 }
1868 } 1868 }
1869 return list; 1869 return list;
1870} 1870}
1871 1871
1872Key Addressee::findKey( const QString &id ) const 1872Key Addressee::findKey( const QString &id ) const
1873{ 1873{
1874 Key::List::ConstIterator it; 1874 Key::List::ConstIterator it;
1875 for( it = mData->keys.begin(); it != mData->keys.end(); ++it ) { 1875 for( it = mData->keys.begin(); it != mData->keys.end(); ++it ) {
1876 if ( (*it).id() == id ) { 1876 if ( (*it).id() == id ) {
1877 return *it; 1877 return *it;
1878 } 1878 }
1879 } 1879 }
1880 return Key(); 1880 return Key();
1881} 1881}
1882 1882
1883QString Addressee::asString() const 1883QString Addressee::asString() const
1884{ 1884{
1885 return "Smith, agent Smith..."; 1885 return "Smith, agent Smith...";
1886} 1886}
1887 1887
1888void Addressee::dump() const 1888void Addressee::dump() const
1889{ 1889{
1890 return; 1890 return;
1891#if 0 1891#if 0
1892 kdDebug(5700) << "Addressee {" << endl; 1892 kdDebug(5700) << "Addressee {" << endl;
1893 1893
1894 kdDebug(5700) << " Uid: '" << uid() << "'" << endl; 1894 kdDebug(5700) << " Uid: '" << uid() << "'" << endl;
1895 1895
1896 kdDebug(5700) << " Name: '" << name() << "'" << endl; 1896 kdDebug(5700) << " Name: '" << name() << "'" << endl;
1897 kdDebug(5700) << " FormattedName: '" << formattedName() << "'" << endl; 1897 kdDebug(5700) << " FormattedName: '" << formattedName() << "'" << endl;
1898 kdDebug(5700) << " FamilyName: '" << familyName() << "'" << endl; 1898 kdDebug(5700) << " FamilyName: '" << familyName() << "'" << endl;
1899 kdDebug(5700) << " GivenName: '" << givenName() << "'" << endl; 1899 kdDebug(5700) << " GivenName: '" << givenName() << "'" << endl;
1900 kdDebug(5700) << " AdditionalName: '" << additionalName() << "'" << endl; 1900 kdDebug(5700) << " AdditionalName: '" << additionalName() << "'" << endl;
1901 kdDebug(5700) << " Prefix: '" << prefix() << "'" << endl; 1901 kdDebug(5700) << " Prefix: '" << prefix() << "'" << endl;
1902 kdDebug(5700) << " Suffix: '" << suffix() << "'" << endl; 1902 kdDebug(5700) << " Suffix: '" << suffix() << "'" << endl;
1903 kdDebug(5700) << " NickName: '" << nickName() << "'" << endl; 1903 kdDebug(5700) << " NickName: '" << nickName() << "'" << endl;
1904 kdDebug(5700) << " Birthday: '" << birthday().toString() << "'" << endl; 1904 kdDebug(5700) << " Birthday: '" << birthday().toString() << "'" << endl;
1905 kdDebug(5700) << " Mailer: '" << mailer() << "'" << endl; 1905 kdDebug(5700) << " Mailer: '" << mailer() << "'" << endl;
1906 kdDebug(5700) << " TimeZone: '" << timeZone().asString() << "'" << endl; 1906 kdDebug(5700) << " TimeZone: '" << timeZone().asString() << "'" << endl;
1907 kdDebug(5700) << " Geo: '" << geo().asString() << "'" << endl; 1907 kdDebug(5700) << " Geo: '" << geo().asString() << "'" << endl;
1908 kdDebug(5700) << " Title: '" << title() << "'" << endl; 1908 kdDebug(5700) << " Title: '" << title() << "'" << endl;
1909 kdDebug(5700) << " Role: '" << role() << "'" << endl; 1909 kdDebug(5700) << " Role: '" << role() << "'" << endl;
1910 kdDebug(5700) << " Organization: '" << organization() << "'" << endl; 1910 kdDebug(5700) << " Organization: '" << organization() << "'" << endl;
1911 kdDebug(5700) << " Note: '" << note() << "'" << endl; 1911 kdDebug(5700) << " Note: '" << note() << "'" << endl;
1912 kdDebug(5700) << " ProductId: '" << productId() << "'" << endl; 1912 kdDebug(5700) << " ProductId: '" << productId() << "'" << endl;
1913 kdDebug(5700) << " Revision: '" << revision().toString() << "'" << endl; 1913 kdDebug(5700) << " Revision: '" << revision().toString() << "'" << endl;
1914 kdDebug(5700) << " SortString: '" << sortString() << "'" << endl; 1914 kdDebug(5700) << " SortString: '" << sortString() << "'" << endl;
1915 kdDebug(5700) << " Url: '" << url().url() << "'" << endl; 1915 kdDebug(5700) << " Url: '" << url().url() << "'" << endl;
1916 kdDebug(5700) << " Secrecy: '" << secrecy().asString() << "'" << endl; 1916 kdDebug(5700) << " Secrecy: '" << secrecy().asString() << "'" << endl;
1917 kdDebug(5700) << " Logo: '" << logo().asString() << "'" << endl; 1917 kdDebug(5700) << " Logo: '" << logo().asString() << "'" << endl;
1918 kdDebug(5700) << " Photo: '" << photo().asString() << "'" << endl; 1918 kdDebug(5700) << " Photo: '" << photo().asString() << "'" << endl;
1919 kdDebug(5700) << " Sound: '" << sound().asString() << "'" << endl; 1919 kdDebug(5700) << " Sound: '" << sound().asString() << "'" << endl;
1920 kdDebug(5700) << " Agent: '" << agent().asString() << "'" << endl; 1920 kdDebug(5700) << " Agent: '" << agent().asString() << "'" << endl;
1921 1921
1922 kdDebug(5700) << " Emails {" << endl; 1922 kdDebug(5700) << " Emails {" << endl;
1923 QStringList e = emails(); 1923 QStringList e = emails();
1924 QStringList::ConstIterator it; 1924 QStringList::ConstIterator it;
1925 for( it = e.begin(); it != e.end(); ++it ) { 1925 for( it = e.begin(); it != e.end(); ++it ) {
1926 kdDebug(5700) << " " << (*it) << endl; 1926 kdDebug(5700) << " " << (*it) << endl;
1927 } 1927 }
1928 kdDebug(5700) << " }" << endl; 1928 kdDebug(5700) << " }" << endl;
1929 1929
1930 kdDebug(5700) << " PhoneNumbers {" << endl; 1930 kdDebug(5700) << " PhoneNumbers {" << endl;
1931 PhoneNumber::List p = phoneNumbers(); 1931 PhoneNumber::List p = phoneNumbers();
1932 PhoneNumber::List::ConstIterator it2; 1932 PhoneNumber::List::ConstIterator it2;
1933 for( it2 = p.begin(); it2 != p.end(); ++it2 ) { 1933 for( it2 = p.begin(); it2 != p.end(); ++it2 ) {
1934 kdDebug(5700) << " Type: " << int((*it2).type()) << " Number: " << (*it2).number() << endl; 1934 kdDebug(5700) << " Type: " << int((*it2).type()) << " Number: " << (*it2).number() << endl;
1935 } 1935 }
1936 kdDebug(5700) << " }" << endl; 1936 kdDebug(5700) << " }" << endl;
1937 1937
1938 Address::List a = addresses(); 1938 Address::List a = addresses();
1939 Address::List::ConstIterator it3; 1939 Address::List::ConstIterator it3;
1940 for( it3 = a.begin(); it3 != a.end(); ++it3 ) { 1940 for( it3 = a.begin(); it3 != a.end(); ++it3 ) {
1941 (*it3).dump(); 1941 (*it3).dump();
1942 } 1942 }
1943 1943
1944 kdDebug(5700) << " Keys {" << endl; 1944 kdDebug(5700) << " Keys {" << endl;
1945 Key::List k = keys(); 1945 Key::List k = keys();
1946 Key::List::ConstIterator it4; 1946 Key::List::ConstIterator it4;
1947 for( it4 = k.begin(); it4 != k.end(); ++it4 ) { 1947 for( it4 = k.begin(); it4 != k.end(); ++it4 ) {
1948 kdDebug(5700) << " Type: " << int((*it4).type()) << 1948 kdDebug(5700) << " Type: " << int((*it4).type()) <<
1949 " Key: " << (*it4).textData() << 1949 " Key: " << (*it4).textData() <<
1950 " CustomString: " << (*it4).customTypeString() << endl; 1950 " CustomString: " << (*it4).customTypeString() << endl;
1951 } 1951 }
1952 kdDebug(5700) << " }" << endl; 1952 kdDebug(5700) << " }" << endl;
1953 1953
1954 kdDebug(5700) << "}" << endl; 1954 kdDebug(5700) << "}" << endl;
1955#endif 1955#endif
1956} 1956}
1957 1957
1958 1958
1959void Addressee::insertAddress( const Address &address ) 1959void Addressee::insertAddress( const Address &address )
1960{ 1960{
1961 detach(); 1961 detach();
1962 mData->empty = false; 1962 mData->empty = false;
1963 1963
1964 Address::List::Iterator it; 1964 Address::List::Iterator it;
1965 for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) { 1965 for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) {
1966 if ( (*it).id() == address.id() ) { 1966 if ( (*it).id() == address.id() ) {
1967 *it = address; 1967 *it = address;
1968 return; 1968 return;
1969 } 1969 }
1970 } 1970 }
1971 mData->addresses.append( address ); 1971 mData->addresses.append( address );
1972} 1972}
1973 1973
1974void Addressee::removeAddress( const Address &address ) 1974void Addressee::removeAddress( const Address &address )
1975{ 1975{
1976 detach(); 1976 detach();
1977 1977
1978 Address::List::Iterator it; 1978 Address::List::Iterator it;
1979 for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) { 1979 for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) {
1980 if ( (*it).id() == address.id() ) { 1980 if ( (*it).id() == address.id() ) {
1981 mData->addresses.remove( it ); 1981 mData->addresses.remove( it );
1982 return; 1982 return;
1983 } 1983 }
1984 } 1984 }
1985} 1985}
1986Address Addressee::otherAddress() const 1986Address Addressee::otherAddress() const
1987{ 1987{
1988 Address::List::ConstIterator it; 1988 Address::List::ConstIterator it;
1989 for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) { 1989 for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) {
1990 if ( matchBinaryPatternA( (*it).type(), KABC::Address::Work ) ) 1990 if ( matchBinaryPatternA( (*it).type(), KABC::Address::Work ) )
1991 continue; 1991 continue;
1992 if ( matchBinaryPatternA( (*it).type(), KABC::Address::Home ) ) 1992 if ( matchBinaryPatternA( (*it).type(), KABC::Address::Home ) )
1993 continue; 1993 continue;
1994 return (*it); 1994 return (*it);
1995 } 1995 }
1996 return Address(); 1996 return Address();
1997} 1997}
1998Address Addressee::address( int type ) const 1998Address Addressee::address( int type ) const
1999{ 1999{
2000 Address address( type ); 2000 Address address( type );
2001 Address::List::ConstIterator it; 2001 Address::List::ConstIterator it;
2002 for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) { 2002 for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) {
2003 if ( matchBinaryPatternA( (*it).type(), type ) ) { 2003 if ( matchBinaryPatternA( (*it).type(), type ) ) {
2004 if ( (*it).type() & Address::Pref ) 2004 if ( (*it).type() & Address::Pref )
2005 return (*it); 2005 return (*it);
2006 else if ( address.isEmpty() ) 2006 else if ( address.isEmpty() )
2007 address = (*it); 2007 address = (*it);
2008 } 2008 }
2009 } 2009 }
2010 2010
2011 return address; 2011 return address;
2012} 2012}
2013 2013
2014Address::List Addressee::addresses() const 2014Address::List Addressee::addresses() const
2015{ 2015{
2016 return mData->addresses; 2016 return mData->addresses;
2017} 2017}
2018 2018
2019Address::List Addressee::addresses( int type ) const 2019Address::List Addressee::addresses( int type ) const
2020{ 2020{
2021 Address::List list; 2021 Address::List list;
2022 2022
2023 Address::List::ConstIterator it; 2023 Address::List::ConstIterator it;
2024 for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) { 2024 for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) {
2025 if ( matchBinaryPattern( (*it).type(), type ) ) { 2025 if ( matchBinaryPattern( (*it).type(), type ) ) {
2026 list.append( *it ); 2026 list.append( *it );
2027 } 2027 }
2028 } 2028 }
2029 2029
2030 return list; 2030 return list;
2031} 2031}
2032 2032
2033Address Addressee::findAddress( const QString &id ) const 2033Address Addressee::findAddress( const QString &id ) const
2034{ 2034{
2035 Address::List::ConstIterator it; 2035 Address::List::ConstIterator it;
2036 for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) { 2036 for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) {
2037 if ( (*it).id() == id ) { 2037 if ( (*it).id() == id ) {
2038 return *it; 2038 return *it;
2039 } 2039 }
2040 } 2040 }
2041 return Address(); 2041 return Address();
2042} 2042}
2043 2043
2044void Addressee::insertCategory( const QString &c ) 2044void Addressee::insertCategory( const QString &c )
2045{ 2045{
2046 detach(); 2046 detach();
2047 mData->empty = false; 2047 mData->empty = false;
2048 2048
2049 if ( mData->categories.contains( c ) ) return; 2049 if ( mData->categories.contains( c ) ) return;
2050 2050
2051 mData->categories.append( c ); 2051 mData->categories.append( c );
2052} 2052}
2053 2053
2054void Addressee::removeCategory( const QString &c ) 2054void Addressee::removeCategory( const QString &c )
2055{ 2055{
2056 detach(); 2056 detach();
2057 2057
2058 QStringList::Iterator it = mData->categories.find( c ); 2058 QStringList::Iterator it = mData->categories.find( c );
2059 if ( it == mData->categories.end() ) return; 2059 if ( it == mData->categories.end() ) return;
2060 2060
2061 mData->categories.remove( it ); 2061 mData->categories.remove( it );
2062} 2062}
2063 2063
2064bool Addressee::hasCategory( const QString &c ) const 2064bool Addressee::hasCategory( const QString &c ) const
2065{ 2065{
2066 return ( mData->categories.contains( c ) ); 2066 return ( mData->categories.contains( c ) );
2067} 2067}
2068 2068
2069void Addressee::setCategories( const QStringList &c ) 2069void Addressee::setCategories( const QStringList &c )
2070{ 2070{
2071 detach(); 2071 detach();
2072 mData->empty = false; 2072 mData->empty = false;
2073 2073
2074 mData->categories = c; 2074 mData->categories = c;
2075} 2075}
2076 2076
2077QStringList Addressee::categories() const 2077QStringList Addressee::categories() const
2078{ 2078{
2079 return mData->categories; 2079 return mData->categories;
2080} 2080}
2081 2081
2082void Addressee::insertCustom( const QString &app, const QString &name, 2082void Addressee::insertCustom( const QString &app, const QString &name,
2083 const QString &value ) 2083 const QString &value )
2084{ 2084{
2085 if ( value.isNull() || name.isEmpty() || app.isEmpty() ) return; 2085 if ( value.isNull() || name.isEmpty() || app.isEmpty() ) return;
2086 2086
2087 detach(); 2087 detach();
2088 mData->empty = false; 2088 mData->empty = false;
2089 2089
2090 QString qualifiedName = app + "-" + name + ":"; 2090 QString qualifiedName = app + "-" + name + ":";
2091 2091
2092 QStringList::Iterator it; 2092 QStringList::Iterator it;
2093 for( it = mData->custom.begin(); it != mData->custom.end(); ++it ) { 2093 for( it = mData->custom.begin(); it != mData->custom.end(); ++it ) {
2094 if ( (*it).startsWith( qualifiedName ) ) { 2094 if ( (*it).startsWith( qualifiedName ) ) {
2095 (*it) = qualifiedName + value; 2095 (*it) = qualifiedName + value;
2096 return; 2096 return;
2097 } 2097 }
2098 } 2098 }
2099 mData->custom.append( qualifiedName + value ); 2099 mData->custom.append( qualifiedName + value );
2100} 2100}
2101 2101
2102void Addressee::removeCustom( const QString &app, const QString &name) 2102void Addressee::removeCustom( const QString &app, const QString &name)
2103{ 2103{
2104 detach(); 2104 detach();
2105 2105
2106 QString qualifiedName = app + "-" + name + ":"; 2106 QString qualifiedName = app + "-" + name + ":";
2107 2107
2108 QStringList::Iterator it; 2108 QStringList::Iterator it;
2109 for( it = mData->custom.begin(); it != mData->custom.end(); ++it ) { 2109 for( it = mData->custom.begin(); it != mData->custom.end(); ++it ) {
2110 if ( (*it).startsWith( qualifiedName ) ) { 2110 if ( (*it).startsWith( qualifiedName ) ) {
2111 mData->custom.remove( it ); 2111 mData->custom.remove( it );
2112 return; 2112 return;
2113 } 2113 }
2114 } 2114 }
2115} 2115}
2116 2116
2117QString Addressee::custom( const QString &app, const QString &name ) const 2117QString Addressee::custom( const QString &app, const QString &name ) const
2118{ 2118{
2119 QString qualifiedName = app + "-" + name + ":"; 2119 QString qualifiedName = app + "-" + name + ":";
2120 QString value; 2120 QString value;
2121 2121
2122 QStringList::ConstIterator it; 2122 QStringList::ConstIterator it;
2123 for( it = mData->custom.begin(); it != mData->custom.end(); ++it ) { 2123 for( it = mData->custom.begin(); it != mData->custom.end(); ++it ) {
2124 if ( (*it).startsWith( qualifiedName ) ) { 2124 if ( (*it).startsWith( qualifiedName ) ) {
2125 value = (*it).mid( (*it).find( ":" ) + 1 ); 2125 value = (*it).mid( (*it).find( ":" ) + 1 );
2126 break; 2126 break;
2127 } 2127 }
2128 } 2128 }
2129 2129
2130 return value; 2130 return value;
2131} 2131}
2132 2132
2133void Addressee::setCustoms( const QStringList &l ) 2133void Addressee::setCustoms( const QStringList &l )
2134{ 2134{
2135 detach(); 2135 detach();
2136 mData->empty = false; 2136 mData->empty = false;
2137 2137
2138 mData->custom = l; 2138 mData->custom = l;
2139} 2139}
2140 2140
2141QStringList Addressee::customs() const 2141QStringList Addressee::customs() const
2142{ 2142{
2143 return mData->custom; 2143 return mData->custom;
2144} 2144}
2145 2145
2146void Addressee::parseEmailAddress( const QString &rawEmail, QString &fullName, 2146void Addressee::parseEmailAddress( const QString &rawEmail, QString &fullName,
2147 QString &email) 2147 QString &email)
2148{ 2148{
2149 int startPos, endPos, len; 2149 int startPos, endPos, len;
2150 QString partA, partB, result; 2150 QString partA, partB, result;
2151 char endCh = '>'; 2151 char endCh = '>';
2152 2152
2153 startPos = rawEmail.find('<'); 2153 startPos = rawEmail.find('<');
2154 if (startPos < 0) 2154 if (startPos < 0)
2155 { 2155 {
2156 startPos = rawEmail.find('('); 2156 startPos = rawEmail.find('(');
2157 endCh = ')'; 2157 endCh = ')';
2158 } 2158 }
2159 if (startPos < 0) 2159 if (startPos < 0)
2160 { 2160 {
2161 // We couldn't find any separators, so we assume the whole string 2161 // We couldn't find any separators, so we assume the whole string
2162 // is the email address 2162 // is the email address
2163 email = rawEmail; 2163 email = rawEmail;
2164 fullName = ""; 2164 fullName = "";
2165 } 2165 }
2166 else 2166 else
2167 { 2167 {
2168 // We have a start position, try to find an end 2168 // We have a start position, try to find an end
2169 endPos = rawEmail.find(endCh, startPos+1); 2169 endPos = rawEmail.find(endCh, startPos+1);
2170 2170
2171 if (endPos < 0) 2171 if (endPos < 0)
2172 { 2172 {
2173 // We couldn't find the end of the email address. We can only 2173 // We couldn't find the end of the email address. We can only
2174 // assume the entire string is the email address. 2174 // assume the entire string is the email address.
2175 email = rawEmail; 2175 email = rawEmail;
2176 fullName = ""; 2176 fullName = "";
2177 } 2177 }
2178 else 2178 else
2179 { 2179 {
2180 // We have a start and end to the email address 2180 // We have a start and end to the email address
2181 2181
2182 // Grab the name part 2182 // Grab the name part
2183 fullName = rawEmail.left(startPos).stripWhiteSpace(); 2183 fullName = rawEmail.left(startPos).stripWhiteSpace();
2184 2184
2185 // grab the email part 2185 // grab the email part
2186 email = rawEmail.mid(startPos+1, endPos-startPos-1).stripWhiteSpace(); 2186 email = rawEmail.mid(startPos+1, endPos-startPos-1).stripWhiteSpace();
2187 2187
2188 // Check that we do not have any extra characters on the end of the 2188 // Check that we do not have any extra characters on the end of the
2189 // strings 2189 // strings
2190 len = fullName.length(); 2190 len = fullName.length();
2191 if (fullName[0]=='"' && fullName[len-1]=='"') 2191 if (fullName[0]=='"' && fullName[len-1]=='"')
2192 fullName = fullName.mid(1, len-2); 2192 fullName = fullName.mid(1, len-2);
2193 else if (fullName[0]=='<' && fullName[len-1]=='>') 2193 else if (fullName[0]=='<' && fullName[len-1]=='>')
2194 fullName = fullName.mid(1, len-2); 2194 fullName = fullName.mid(1, len-2);
2195 else if (fullName[0]=='(' && fullName[len-1]==')') 2195 else if (fullName[0]=='(' && fullName[len-1]==')')
2196 fullName = fullName.mid(1, len-2); 2196 fullName = fullName.mid(1, len-2);
2197 } 2197 }
2198 } 2198 }
2199} 2199}
2200 2200
2201void Addressee::setResource( Resource *resource ) 2201void Addressee::setResource( Resource *resource )
2202{ 2202{
2203 detach(); 2203 detach();
2204 mData->resource = resource; 2204 mData->resource = resource;
2205} 2205}
2206 2206
2207Resource *Addressee::resource() const 2207Resource *Addressee::resource() const
2208{ 2208{
2209 return mData->resource; 2209 return mData->resource;
2210} 2210}
2211 2211
2212//US 2212//US
2213QString Addressee::resourceLabel() 2213QString Addressee::resourceLabel()
2214{ 2214{
2215 return i18n("Resource"); 2215 return i18n("Resource");
2216} 2216}
2217QString Addressee::categoryLabel() 2217QString Addressee::categoryLabel()
2218{ 2218{
2219 return i18n("Category"); 2219 return i18n("Category");
2220} 2220}
2221 2221
2222void Addressee::setChanged( bool value ) 2222void Addressee::setChanged( bool value )
2223{ 2223{
2224 detach(); 2224 detach();
2225 mData->changed = value; 2225 mData->changed = value;
2226} 2226}
2227 2227
2228bool Addressee::changed() const 2228bool Addressee::changed() const
2229{ 2229{
2230 return mData->changed; 2230 return mData->changed;
2231} 2231}
2232 2232
2233void Addressee::setTagged( bool value ) 2233void Addressee::setTagged( bool value )
2234{ 2234{
2235 detach(); 2235 detach();
2236 mData->tagged = value; 2236 mData->tagged = value;
2237} 2237}
2238 2238
2239bool Addressee::tagged() const 2239bool Addressee::tagged() const
2240{ 2240{
2241 return mData->tagged; 2241 return mData->tagged;
2242} 2242}
2243 2243
2244QDataStream &KABC::operator<<( QDataStream &s, const Addressee &a ) 2244QDataStream &KABC::operator<<( QDataStream &s, const Addressee &a )
2245{ 2245{
2246 if (!a.mData) return s; 2246 if (!a.mData) return s;
2247 2247
2248 s << a.uid(); 2248 s << a.uid();
2249 2249
2250 s << a.mData->name; 2250 s << a.mData->name;
2251 s << a.mData->formattedName; 2251 s << a.mData->formattedName;
2252 s << a.mData->familyName; 2252 s << a.mData->familyName;
2253 s << a.mData->givenName; 2253 s << a.mData->givenName;
2254 s << a.mData->additionalName; 2254 s << a.mData->additionalName;
2255 s << a.mData->prefix; 2255 s << a.mData->prefix;
2256 s << a.mData->suffix; 2256 s << a.mData->suffix;
2257 s << a.mData->nickName; 2257 s << a.mData->nickName;
2258 s << a.mData->birthday; 2258 s << a.mData->birthday;
2259 s << a.mData->mailer; 2259 s << a.mData->mailer;
2260 s << a.mData->timeZone; 2260 s << a.mData->timeZone;
2261 s << a.mData->geo; 2261 s << a.mData->geo;
2262 s << a.mData->title; 2262 s << a.mData->title;
2263 s << a.mData->role; 2263 s << a.mData->role;
2264 s << a.mData->organization; 2264 s << a.mData->organization;
2265 s << a.mData->note; 2265 s << a.mData->note;
2266 s << a.mData->productId; 2266 s << a.mData->productId;
2267 s << a.mData->revision; 2267 s << a.mData->revision;
2268 s << a.mData->sortString; 2268 s << a.mData->sortString;
2269 s << a.mData->url; 2269 s << a.mData->url;
2270 s << a.mData->secrecy; 2270 s << a.mData->secrecy;
2271 s << a.mData->logo; 2271 s << a.mData->logo;
2272 s << a.mData->photo; 2272 s << a.mData->photo;
2273 s << a.mData->sound; 2273 s << a.mData->sound;
2274 s << a.mData->agent; 2274 s << a.mData->agent;
2275 s << a.mData->phoneNumbers; 2275 s << a.mData->phoneNumbers;
2276 s << a.mData->addresses; 2276 s << a.mData->addresses;
2277 s << a.mData->emails; 2277 s << a.mData->emails;
2278 s << a.mData->categories; 2278 s << a.mData->categories;
2279 s << a.mData->custom; 2279 s << a.mData->custom;
2280 s << a.mData->keys; 2280 s << a.mData->keys;
2281 return s; 2281 return s;
2282} 2282}
2283 2283
2284QDataStream &KABC::operator>>( QDataStream &s, Addressee &a ) 2284QDataStream &KABC::operator>>( QDataStream &s, Addressee &a )
2285{ 2285{
2286 if (!a.mData) return s; 2286 if (!a.mData) return s;
2287 2287
2288 s >> a.mData->uid; 2288 s >> a.mData->uid;
2289 2289
2290 s >> a.mData->name; 2290 s >> a.mData->name;
2291 s >> a.mData->formattedName; 2291 s >> a.mData->formattedName;
2292 s >> a.mData->familyName; 2292 s >> a.mData->familyName;
2293 s >> a.mData->givenName; 2293 s >> a.mData->givenName;
2294 s >> a.mData->additionalName; 2294 s >> a.mData->additionalName;
2295 s >> a.mData->prefix; 2295 s >> a.mData->prefix;
2296 s >> a.mData->suffix; 2296 s >> a.mData->suffix;
2297 s >> a.mData->nickName; 2297 s >> a.mData->nickName;
2298 s >> a.mData->birthday; 2298 s >> a.mData->birthday;
2299 s >> a.mData->mailer; 2299 s >> a.mData->mailer;
2300 s >> a.mData->timeZone; 2300 s >> a.mData->timeZone;
2301 s >> a.mData->geo; 2301 s >> a.mData->geo;
2302 s >> a.mData->title; 2302 s >> a.mData->title;
2303 s >> a.mData->role; 2303 s >> a.mData->role;
2304 s >> a.mData->organization; 2304 s >> a.mData->organization;
2305 s >> a.mData->note; 2305 s >> a.mData->note;
2306 s >> a.mData->productId; 2306 s >> a.mData->productId;
2307 s >> a.mData->revision; 2307 s >> a.mData->revision;
2308 s >> a.mData->sortString; 2308 s >> a.mData->sortString;
2309 s >> a.mData->url; 2309 s >> a.mData->url;
2310 s >> a.mData->secrecy; 2310 s >> a.mData->secrecy;
2311 s >> a.mData->logo; 2311 s >> a.mData->logo;
2312 s >> a.mData->photo; 2312 s >> a.mData->photo;
2313 s >> a.mData->sound; 2313 s >> a.mData->sound;
2314 s >> a.mData->agent; 2314 s >> a.mData->agent;
2315 s >> a.mData->phoneNumbers; 2315 s >> a.mData->phoneNumbers;
2316 s >> a.mData->addresses; 2316 s >> a.mData->addresses;
2317 s >> a.mData->emails; 2317 s >> a.mData->emails;
2318 s >> a.mData->categories; 2318 s >> a.mData->categories;
2319 s >> a.mData->custom; 2319 s >> a.mData->custom;
2320 s >> a.mData->keys; 2320 s >> a.mData->keys;
2321 2321
2322 a.mData->empty = false; 2322 a.mData->empty = false;
2323 2323
2324 return s; 2324 return s;
2325} 2325}
2326bool matchBinaryPattern( int value, int pattern ) 2326bool matchBinaryPattern( int value, int pattern )
2327{ 2327{
2328 /** 2328 /**
2329 We want to match all telephonnumbers/addresses which have the bits in the 2329 We want to match all telephonnumbers/addresses which have the bits in the
2330 pattern set. More are allowed. 2330 pattern set. More are allowed.
2331 if pattern == 0 we have a special handling, then we want only those with 2331 if pattern == 0 we have a special handling, then we want only those with
2332 exactly no bit set. 2332 exactly no bit set.
2333 */ 2333 */
2334 if ( pattern == 0 ) 2334 if ( pattern == 0 )
2335 return ( value == 0 ); 2335 return ( value == 0 );
2336 else 2336 else
2337 return ( pattern == ( pattern & value ) ); 2337 return ( pattern == ( pattern & value ) );
2338} 2338}
2339 2339
2340bool matchBinaryPatternP( int value, int pattern ) 2340bool matchBinaryPatternP( int value, int pattern )
2341{ 2341{
2342 2342
2343 if ( pattern == 0 ) 2343 if ( pattern == 0 )
2344 return ( value == 0 ); 2344 return ( value == 0 );
2345 else 2345 else
2346 return ( (pattern |PhoneNumber::Pref ) == ( value |PhoneNumber::Pref ) ); 2346 return ( (pattern |PhoneNumber::Pref ) == ( value |PhoneNumber::Pref ) );
2347} 2347}
2348bool matchBinaryPatternA( int value, int pattern ) 2348bool matchBinaryPatternA( int value, int pattern )
2349{ 2349{
2350 2350
2351 if ( pattern == 0 ) 2351 if ( pattern == 0 )
2352 return ( value == 0 ); 2352 return ( value == 0 );
2353 else 2353 else
2354 return ( (pattern | Address::Pref) == ( value | Address::Pref ) ); 2354 return ( (pattern | Address::Pref) == ( value | Address::Pref ) );
2355} 2355}
diff --git a/kabc/addressee.h b/kabc/addressee.h
index 0ea1803..30dcd5d 100644
--- a/kabc/addressee.h
+++ b/kabc/addressee.h
@@ -1,858 +1,858 @@
1/*** Warning! This file has been generated by the script makeaddressee ***/ 1/*** Warning! This file has been generated by the script makeaddressee ***/
2/* 2/*
3 This file is part of libkabc. 3 This file is part of libkabc.
4 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 4 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
5 5
6 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
10 10
11 This library is distributed in the hope that it will be useful, 11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details. 14 Library General Public License for more details.
15 15
16 You should have received a copy of the GNU Library General Public License 16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to 17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. 19 Boston, MA 02111-1307, USA.
20*/ 20*/
21 21
22/* 22/*
23Enhanced Version of the file for platform independent KDE tools. 23Enhanced Version of the file for platform independent KDE tools.
24Copyright (c) 2004 Ulf Schenk 24Copyright (c) 2004 Ulf Schenk
25 25
26$Id$ 26$Id$
27*/ 27*/
28 28
29#ifndef KABC_ADDRESSEE_H 29#ifndef KABC_ADDRESSEE_H
30#define KABC_ADDRESSEE_H 30#define KABC_ADDRESSEE_H
31 31
32#include <qdatetime.h> 32#include <qdatetime.h>
33#include <qstring.h> 33#include <qstring.h>
34#include <qregexp.h> 34#include <qregexp.h>
35#include <qstringlist.h> 35#include <qstringlist.h>
36#include <qvaluelist.h> 36#include <q3valuelist.h>
37 37
38#include <ksharedptr.h> 38#include <ksharedptr.h>
39#include <kurl.h> 39#include <kurl.h>
40 40
41#include "address.h" 41#include "address.h"
42#include "agent.h" 42#include "agent.h"
43#include "geo.h" 43#include "geo.h"
44#include "key.h" 44#include "key.h"
45#include "phonenumber.h" 45#include "phonenumber.h"
46#include "picture.h" 46#include "picture.h"
47#include "secrecy.h" 47#include "secrecy.h"
48#include "sound.h" 48#include "sound.h"
49#include "timezone.h" 49#include "timezone.h"
50 50
51namespace KABC { 51namespace KABC {
52 52
53class Resource; 53class Resource;
54 54
55/** 55/**
56 @short address book entry 56 @short address book entry
57 57
58 This class represents an entry in the address book. 58 This class represents an entry in the address book.
59 59
60 The data of this class is implicitly shared. You can pass this class by value. 60 The data of this class is implicitly shared. You can pass this class by value.
61 61
62 If you need the name of a field for presenting it to the user you should use 62 If you need the name of a field for presenting it to the user you should use
63 the functions ending in Label(). They return a translated string which can be 63 the functions ending in Label(). They return a translated string which can be
64 used as label for the corresponding field. 64 used as label for the corresponding field.
65 65
66 About the name fields: 66 About the name fields:
67 67
68 givenName() is the first name and familyName() the last name. In some 68 givenName() is the first name and familyName() the last name. In some
69 countries the family name comes first, that's the reason for the 69 countries the family name comes first, that's the reason for the
70 naming. formattedName() is the full name with the correct formatting. 70 naming. formattedName() is the full name with the correct formatting.
71 It is used as an override, when the correct formatting can't be generated 71 It is used as an override, when the correct formatting can't be generated
72 from the other name fields automatically. 72 from the other name fields automatically.
73 73
74 realName() returns a fully formatted name(). It uses formattedName, if set, 74 realName() returns a fully formatted name(). It uses formattedName, if set,
75 otherwise it constucts the name from the name fields. As fallback, if 75 otherwise it constucts the name from the name fields. As fallback, if
76 nothing else is set it uses name(). 76 nothing else is set it uses name().
77 77
78 name() is the NAME type of RFC2426. It can be used as internal name for the 78 name() is the NAME type of RFC2426. It can be used as internal name for the
79 data enty, but shouldn't be used for displaying the data to the user. 79 data enty, but shouldn't be used for displaying the data to the user.
80 */ 80 */
81class Addressee 81class Addressee
82{ 82{
83 friend QDataStream &operator<<( QDataStream &, const Addressee & ); 83 friend QDataStream &operator<<( QDataStream &, const Addressee & );
84 friend QDataStream &operator>>( QDataStream &, Addressee & ); 84 friend QDataStream &operator>>( QDataStream &, Addressee & );
85 85
86 public: 86 public:
87 typedef QValueList<Addressee> List; 87 typedef Q3ValueList<Addressee> List;
88 88
89 /** 89 /**
90 Construct an empty address book entry. 90 Construct an empty address book entry.
91 */ 91 */
92 Addressee(); 92 Addressee();
93 ~Addressee(); 93 ~Addressee();
94 94
95 Addressee( const Addressee & ); 95 Addressee( const Addressee & );
96 Addressee &operator=( const Addressee & ); 96 Addressee &operator=( const Addressee & );
97 97
98 bool operator==( const Addressee & ) const; 98 bool operator==( const Addressee & ) const;
99 bool operator!=( const Addressee & ) const; 99 bool operator!=( const Addressee & ) const;
100 // sync stuff 100 // sync stuff
101 void setTempSyncStat(int id); 101 void setTempSyncStat(int id);
102 int tempSyncStat() const; 102 int tempSyncStat() const;
103 void setIDStr( const QString & ); 103 void setIDStr( const QString & );
104 const QString IDStr() const; 104 const QString IDStr() const;
105 void setID( const QString &, const QString & ); 105 void setID( const QString &, const QString & );
106 const QString getID( const QString & ) const; 106 const QString getID( const QString & ) const;
107 void setCsum( const QString &, const QString & ); 107 void setCsum( const QString &, const QString & );
108 const QString getCsum( const QString & ) const ; 108 const QString getCsum( const QString & ) const ;
109 void removeID(const QString &); 109 void removeID(const QString &);
110 void computeCsum(const QString &dev); 110 void computeCsum(const QString &dev);
111 ulong getCsum4List( const QStringList & attList); 111 ulong getCsum4List( const QStringList & attList);
112 /** 112 /**
113 Return, if the address book entry is empty. 113 Return, if the address book entry is empty.
114 */ 114 */
115 bool isEmpty() const; 115 bool isEmpty() const;
116 void setExternalUID( const QString &id ); 116 void setExternalUID( const QString &id );
117 const QString externalUID() const; 117 const QString externalUID() const;
118 void setOriginalExternalUID( const QString &id ); 118 void setOriginalExternalUID( const QString &id );
119 QString originalExternalUID() const; 119 QString originalExternalUID() const;
120 void mergeContact( const Addressee& ad, bool isSubSet ); 120 void mergeContact( const Addressee& ad, bool isSubSet );
121 void mergeOLContact( const Addressee& ad ); 121 void mergeOLContact( const Addressee& ad );
122 void simplifyEmails(); 122 void simplifyEmails();
123 void simplifyAddresses(); 123 void simplifyAddresses();
124 void simplifyPhoneNumbers(); 124 void simplifyPhoneNumbers();
125 void simplifyPhoneNumberTypes(); 125 void simplifyPhoneNumberTypes();
126 void makePhoneNumbersOLcompatible(); 126 void makePhoneNumbersOLcompatible();
127 int hasPhoneNumberType( int type ); 127 int hasPhoneNumberType( int type );
128 bool removeVoice(); 128 bool removeVoice();
129 bool containsAdr(const Addressee& addr ); 129 bool containsAdr(const Addressee& addr );
130 130
131 /** 131 /**
132 Set unique identifier. 132 Set unique identifier.
133 */ 133 */
134 void setUid( const QString &uid ); 134 void setUid( const QString &uid );
135 /** 135 /**
136 Return unique identifier. 136 Return unique identifier.
137 */ 137 */
138 const QString uid() const; 138 const QString uid() const;
139 /** 139 /**
140 Return translated label for uid field. 140 Return translated label for uid field.
141 */ 141 */
142 static QString uidLabel(); 142 static QString uidLabel();
143 143
144 /** 144 /**
145 Set name. 145 Set name.
146 */ 146 */
147 void setName( const QString &name ); 147 void setName( const QString &name );
148 /** 148 /**
149 Return name. 149 Return name.
150 */ 150 */
151 QString name() const; 151 QString name() const;
152 /** 152 /**
153 Return translated label for name field. 153 Return translated label for name field.
154 */ 154 */
155 static QString nameLabel(); 155 static QString nameLabel();
156 156
157 /** 157 /**
158 Set formatted name. 158 Set formatted name.
159 */ 159 */
160 void setFormattedName( const QString &formattedName ); 160 void setFormattedName( const QString &formattedName );
161 /** 161 /**
162 Return formatted name. 162 Return formatted name.
163 */ 163 */
164 QString formattedName() const; 164 QString formattedName() const;
165 /** 165 /**
166 Return translated label for formattedName field. 166 Return translated label for formattedName field.
167 */ 167 */
168 static QString formattedNameLabel(); 168 static QString formattedNameLabel();
169 169
170 /** 170 /**
171 Set family name. 171 Set family name.
172 */ 172 */
173 void setFamilyName( const QString &familyName ); 173 void setFamilyName( const QString &familyName );
174 /** 174 /**
175 Return family name. 175 Return family name.
176 */ 176 */
177 QString familyName() const; 177 QString familyName() const;
178 /** 178 /**
179 Return translated label for familyName field. 179 Return translated label for familyName field.
180 */ 180 */
181 static QString familyNameLabel(); 181 static QString familyNameLabel();
182 182
183 /** 183 /**
184 Set given name. 184 Set given name.
185 */ 185 */
186 void setGivenName( const QString &givenName ); 186 void setGivenName( const QString &givenName );
187 /** 187 /**
188 Return given name. 188 Return given name.
189 */ 189 */
190 QString givenName() const; 190 QString givenName() const;
191 /** 191 /**
192 Return translated label for givenName field. 192 Return translated label for givenName field.
193 */ 193 */
194 static QString givenNameLabel(); 194 static QString givenNameLabel();
195 195
196 /** 196 /**
197 Set additional names. 197 Set additional names.
198 */ 198 */
199 void setAdditionalName( const QString &additionalName ); 199 void setAdditionalName( const QString &additionalName );
200 /** 200 /**
201 Return additional names. 201 Return additional names.
202 */ 202 */
203 QString additionalName() const; 203 QString additionalName() const;
204 /** 204 /**
205 Return translated label for additionalName field. 205 Return translated label for additionalName field.
206 */ 206 */
207 static QString additionalNameLabel(); 207 static QString additionalNameLabel();
208 208
209 /** 209 /**
210 Set honorific prefixes. 210 Set honorific prefixes.
211 */ 211 */
212 void setPrefix( const QString &prefix ); 212 void setPrefix( const QString &prefix );
213 /** 213 /**
214 Return honorific prefixes. 214 Return honorific prefixes.
215 */ 215 */
216 QString prefix() const; 216 QString prefix() const;
217 /** 217 /**
218 Return translated label for prefix field. 218 Return translated label for prefix field.
219 */ 219 */
220 static QString prefixLabel(); 220 static QString prefixLabel();
221 221
222 /** 222 /**
223 Set honorific suffixes. 223 Set honorific suffixes.
224 */ 224 */
225 void setSuffix( const QString &suffix ); 225 void setSuffix( const QString &suffix );
226 /** 226 /**
227 Return honorific suffixes. 227 Return honorific suffixes.
228 */ 228 */
229 QString suffix() const; 229 QString suffix() const;
230 /** 230 /**
231 Return translated label for suffix field. 231 Return translated label for suffix field.
232 */ 232 */
233 static QString suffixLabel(); 233 static QString suffixLabel();
234 234
235 /** 235 /**
236 Set nick name. 236 Set nick name.
237 */ 237 */
238 void setNickName( const QString &nickName ); 238 void setNickName( const QString &nickName );
239 /** 239 /**
240 Return nick name. 240 Return nick name.
241 */ 241 */
242 QString nickName() const; 242 QString nickName() const;
243 /** 243 /**
244 Return translated label for nickName field. 244 Return translated label for nickName field.
245 */ 245 */
246 static QString nickNameLabel(); 246 static QString nickNameLabel();
247 247
248 /** 248 /**
249 Set birthday. 249 Set birthday.
250 */ 250 */
251 void setBirthday( const QDateTime &birthday ); 251 void setBirthday( const QDateTime &birthday );
252 /** 252 /**
253 Return birthday. 253 Return birthday.
254 */ 254 */
255 QDateTime birthday() const; 255 QDateTime birthday() const;
256 /** 256 /**
257 Return translated label for birthday field. 257 Return translated label for birthday field.
258 */ 258 */
259 static QString birthdayLabel(); 259 static QString birthdayLabel();
260 260
261 /** 261 /**
262 Return translated label for homeAddressStreet field. 262 Return translated label for homeAddressStreet field.
263 */ 263 */
264 static QString homeAddressStreetLabel(); 264 static QString homeAddressStreetLabel();
265 265
266 /** 266 /**
267 Return translated label for homeAddressLocality field. 267 Return translated label for homeAddressLocality field.
268 */ 268 */
269 static QString homeAddressLocalityLabel(); 269 static QString homeAddressLocalityLabel();
270 270
271 /** 271 /**
272 Return translated label for homeAddressRegion field. 272 Return translated label for homeAddressRegion field.
273 */ 273 */
274 static QString homeAddressRegionLabel(); 274 static QString homeAddressRegionLabel();
275 275
276 /** 276 /**
277 Return translated label for homeAddressPostalCode field. 277 Return translated label for homeAddressPostalCode field.
278 */ 278 */
279 static QString homeAddressPostalCodeLabel(); 279 static QString homeAddressPostalCodeLabel();
280 280
281 /** 281 /**
282 Return translated label for homeAddressCountry field. 282 Return translated label for homeAddressCountry field.
283 */ 283 */
284 static QString homeAddressCountryLabel(); 284 static QString homeAddressCountryLabel();
285 285
286 /** 286 /**
287 Return translated label for homeAddressLabel field. 287 Return translated label for homeAddressLabel field.
288 */ 288 */
289 static QString homeAddressLabelLabel(); 289 static QString homeAddressLabelLabel();
290 290
291 /** 291 /**
292 Return translated label for businessAddressStreet field. 292 Return translated label for businessAddressStreet field.
293 */ 293 */
294 static QString businessAddressStreetLabel(); 294 static QString businessAddressStreetLabel();
295 295
296 /** 296 /**
297 Return translated label for businessAddressLocality field. 297 Return translated label for businessAddressLocality field.
298 */ 298 */
299 static QString businessAddressLocalityLabel(); 299 static QString businessAddressLocalityLabel();
300 300
301 /** 301 /**
302 Return translated label for businessAddressRegion field. 302 Return translated label for businessAddressRegion field.
303 */ 303 */
304 static QString businessAddressRegionLabel(); 304 static QString businessAddressRegionLabel();
305 305
306 /** 306 /**
307 Return translated label for businessAddressPostalCode field. 307 Return translated label for businessAddressPostalCode field.
308 */ 308 */
309 static QString businessAddressPostalCodeLabel(); 309 static QString businessAddressPostalCodeLabel();
310 310
311 /** 311 /**
312 Return translated label for businessAddressCountry field. 312 Return translated label for businessAddressCountry field.
313 */ 313 */
314 static QString businessAddressCountryLabel(); 314 static QString businessAddressCountryLabel();
315 315
316 /** 316 /**
317 Return translated label for businessAddressLabel field. 317 Return translated label for businessAddressLabel field.
318 */ 318 */
319 static QString businessAddressLabelLabel(); 319 static QString businessAddressLabelLabel();
320 320
321 /** 321 /**
322 Return translated label for homePhone field. 322 Return translated label for homePhone field.
323 */ 323 */
324 static QString homePhoneLabel(); 324 static QString homePhoneLabel();
325 325
326 /** 326 /**
327 Return translated label for businessPhone field. 327 Return translated label for businessPhone field.
328 */ 328 */
329 static QString businessPhoneLabel(); 329 static QString businessPhoneLabel();
330 330
331 /** 331 /**
332 Return translated label for mobilePhone field. 332 Return translated label for mobilePhone field.
333 */ 333 */
334 static QString mobilePhoneLabel(); 334 static QString mobilePhoneLabel();
335 static QString mobileWorkPhoneLabel(); 335 static QString mobileWorkPhoneLabel();
336 336
337 /** 337 /**
338 Return translated label for homeFax field. 338 Return translated label for homeFax field.
339 */ 339 */
340 static QString homeFaxLabel(); 340 static QString homeFaxLabel();
341 341
342 /** 342 /**
343 Return translated label for businessFax field. 343 Return translated label for businessFax field.
344 */ 344 */
345 static QString businessFaxLabel(); 345 static QString businessFaxLabel();
346 346
347 347
348 /** 348 /**
349 Return translated label for isdn field. 349 Return translated label for isdn field.
350 */ 350 */
351 static QString isdnLabel(); 351 static QString isdnLabel();
352 352
353 /** 353 /**
354 Return translated label for pager field. 354 Return translated label for pager field.
355 */ 355 */
356 static QString pagerLabel(); 356 static QString pagerLabel();
357 static QString otherPhoneLabel(); 357 static QString otherPhoneLabel();
358 /** 358 /**
359 Return translated label for sip field. 359 Return translated label for sip field.
360 */ 360 */
361 static QString sipLabel(); 361 static QString sipLabel();
362 362
363 /** 363 /**
364 Return translated label for email field. 364 Return translated label for email field.
365 */ 365 */
366 static QString emailLabel(); 366 static QString emailLabel();
367 367
368 /** 368 /**
369 Set mail client. 369 Set mail client.
370 */ 370 */
371 void setMailer( const QString &mailer ); 371 void setMailer( const QString &mailer );
372 /** 372 /**
373 Return mail client. 373 Return mail client.
374 */ 374 */
375 QString mailer() const; 375 QString mailer() const;
376 /** 376 /**
377 Return translated label for mailer field. 377 Return translated label for mailer field.
378 */ 378 */
379 static QString mailerLabel(); 379 static QString mailerLabel();
380 380
381 /** 381 /**
382 Set time zone. 382 Set time zone.
383 */ 383 */
384 void setTimeZone( const TimeZone &timeZone ); 384 void setTimeZone( const TimeZone &timeZone );
385 /** 385 /**
386 Return time zone. 386 Return time zone.
387 */ 387 */
388 TimeZone timeZone() const; 388 TimeZone timeZone() const;
389 /** 389 /**
390 Return translated label for timeZone field. 390 Return translated label for timeZone field.
391 */ 391 */
392 static QString timeZoneLabel(); 392 static QString timeZoneLabel();
393 393
394 /** 394 /**
395 Set geographic position. 395 Set geographic position.
396 */ 396 */
397 void setGeo( const Geo &geo ); 397 void setGeo( const Geo &geo );
398 /** 398 /**
399 Return geographic position. 399 Return geographic position.
400 */ 400 */
401 Geo geo() const; 401 Geo geo() const;
402 /** 402 /**
403 Return translated label for geo field. 403 Return translated label for geo field.
404 */ 404 */
405 static QString geoLabel(); 405 static QString geoLabel();
406 406
407 /** 407 /**
408 Set title. 408 Set title.
409 */ 409 */
410 void setTitle( const QString &title ); 410 void setTitle( const QString &title );
411 /** 411 /**
412 Return title. 412 Return title.
413 */ 413 */
414 QString title() const; 414 QString title() const;
415 /** 415 /**
416 Return translated label for title field. 416 Return translated label for title field.
417 */ 417 */
418 static QString titleLabel(); 418 static QString titleLabel();
419 419
420 /** 420 /**
421 Set role. 421 Set role.
422 */ 422 */
423 void setRole( const QString &role ); 423 void setRole( const QString &role );
424 /** 424 /**
425 Return role. 425 Return role.
426 */ 426 */
427 QString role() const; 427 QString role() const;
428 /** 428 /**
429 Return translated label for role field. 429 Return translated label for role field.
430 */ 430 */
431 static QString roleLabel(); 431 static QString roleLabel();
432 432
433 /** 433 /**
434 Set organization. 434 Set organization.
435 */ 435 */
436 void setOrganization( const QString &organization ); 436 void setOrganization( const QString &organization );
437 /** 437 /**
438 Return organization. 438 Return organization.
439 */ 439 */
440 QString organization() const; 440 QString organization() const;
441 /** 441 /**
442 Return translated label for organization field. 442 Return translated label for organization field.
443 */ 443 */
444 static QString organizationLabel(); 444 static QString organizationLabel();
445 445
446 /** 446 /**
447 Set note. 447 Set note.
448 */ 448 */
449 void setNote( const QString &note ); 449 void setNote( const QString &note );
450 /** 450 /**
451 Return note. 451 Return note.
452 */ 452 */
453 QString note() const; 453 QString note() const;
454 /** 454 /**
455 Return translated label for note field. 455 Return translated label for note field.
456 */ 456 */
457 static QString noteLabel(); 457 static QString noteLabel();
458 458
459 /** 459 /**
460 Set product identifier. 460 Set product identifier.
461 */ 461 */
462 void setProductId( const QString &productId ); 462 void setProductId( const QString &productId );
463 /** 463 /**
464 Return product identifier. 464 Return product identifier.
465 */ 465 */
466 QString productId() const; 466 QString productId() const;
467 /** 467 /**
468 Return translated label for productId field. 468 Return translated label for productId field.
469 */ 469 */
470 static QString productIdLabel(); 470 static QString productIdLabel();
471 471
472 /** 472 /**
473 Set revision date. 473 Set revision date.
474 */ 474 */
475 void setRevision( const QDateTime &revision ); 475 void setRevision( const QDateTime &revision );
476 /** 476 /**
477 Return revision date. 477 Return revision date.
478 */ 478 */
479 QDateTime revision() const; 479 QDateTime revision() const;
480 /** 480 /**
481 Return translated label for revision field. 481 Return translated label for revision field.
482 */ 482 */
483 static QString revisionLabel(); 483 static QString revisionLabel();
484 484
485 /** 485 /**
486 Set sort string. 486 Set sort string.
487 */ 487 */
488 void setSortString( const QString &sortString ); 488 void setSortString( const QString &sortString );
489 /** 489 /**
490 Return sort string. 490 Return sort string.
491 */ 491 */
492 QString sortString() const; 492 QString sortString() const;
493 /** 493 /**
494 Return translated label for sortString field. 494 Return translated label for sortString field.
495 */ 495 */
496 static QString sortStringLabel(); 496 static QString sortStringLabel();
497 497
498 /** 498 /**
499 Set URL. 499 Set URL.
500 */ 500 */
501 void setUrl( const KURL &url ); 501 void setUrl( const KURL &url );
502 /** 502 /**
503 Return URL. 503 Return URL.
504 */ 504 */
505 KURL url() const; 505 KURL url() const;
506 /** 506 /**
507 Return translated label for url field. 507 Return translated label for url field.
508 */ 508 */
509 static QString urlLabel(); 509 static QString urlLabel();
510 510
511 /** 511 /**
512 Set security class. 512 Set security class.
513 */ 513 */
514 void setSecrecy( const Secrecy &secrecy ); 514 void setSecrecy( const Secrecy &secrecy );
515 /** 515 /**
516 Return security class. 516 Return security class.
517 */ 517 */
518 Secrecy secrecy() const; 518 Secrecy secrecy() const;
519 /** 519 /**
520 Return translated label for secrecy field. 520 Return translated label for secrecy field.
521 */ 521 */
522 static QString secrecyLabel(); 522 static QString secrecyLabel();
523 523
524 /** 524 /**
525 Set logo. 525 Set logo.
526 */ 526 */
527 void setLogo( const Picture &logo ); 527 void setLogo( const Picture &logo );
528 /** 528 /**
529 Return logo. 529 Return logo.
530 */ 530 */
531 Picture logo() const; 531 Picture logo() const;
532 /** 532 /**
533 Return translated label for logo field. 533 Return translated label for logo field.
534 */ 534 */
535 static QString logoLabel(); 535 static QString logoLabel();
536 536
537 /** 537 /**
538 Set photo. 538 Set photo.
539 */ 539 */
540 void setPhoto( const Picture &photo ); 540 void setPhoto( const Picture &photo );
541 /** 541 /**
542 Return photo. 542 Return photo.
543 */ 543 */
544 Picture photo() const; 544 Picture photo() const;
545 /** 545 /**
546 Return translated label for photo field. 546 Return translated label for photo field.
547 */ 547 */
548 static QString photoLabel(); 548 static QString photoLabel();
549 549
550 /** 550 /**
551 Set sound. 551 Set sound.
552 */ 552 */
553 void setSound( const Sound &sound ); 553 void setSound( const Sound &sound );
554 /** 554 /**
555 Return sound. 555 Return sound.
556 */ 556 */
557 Sound sound() const; 557 Sound sound() const;
558 /** 558 /**
559 Return translated label for sound field. 559 Return translated label for sound field.
560 */ 560 */
561 static QString soundLabel(); 561 static QString soundLabel();
562 562
563 /** 563 /**
564 Set agent. 564 Set agent.
565 */ 565 */
566 void setAgent( const Agent &agent ); 566 void setAgent( const Agent &agent );
567 /** 567 /**
568 Return agent. 568 Return agent.
569 */ 569 */
570 Agent agent() const; 570 Agent agent() const;
571 /** 571 /**
572 Return translated label for agent field. 572 Return translated label for agent field.
573 */ 573 */
574 static QString agentLabel(); 574 static QString agentLabel();
575 575
576 /** 576 /**
577 Set name fields by parsing the given string and trying to associate the 577 Set name fields by parsing the given string and trying to associate the
578 parts of the string with according fields. This function should probably 578 parts of the string with according fields. This function should probably
579 be a bit more clever. 579 be a bit more clever.
580 */ 580 */
581 void setNameFromString( const QString & ); 581 void setNameFromString( const QString & );
582 582
583 /** 583 /**
584 Return the name of the addressee. This is calculated from all the name 584 Return the name of the addressee. This is calculated from all the name
585 fields. 585 fields.
586 */ 586 */
587 QString realName() const; 587 QString realName() const;
588 588
589 /** 589 /**
590 Return the name that consists of all name parts. 590 Return the name that consists of all name parts.
591 */ 591 */
592 QString assembledName() const; 592 QString assembledName() const;
593 593
594 /** 594 /**
595 Return email address including real name. 595 Return email address including real name.
596 596
597 @param email Email address to be used to construct the full email string. 597 @param email Email address to be used to construct the full email string.
598 If this is QString::null the preferred email address is used. 598 If this is QString::null the preferred email address is used.
599 */ 599 */
600 QString fullEmail( const QString &email=QString::null ) const; 600 QString fullEmail( const QString &email=QString::null ) const;
601 601
602 /** 602 /**
603 Insert an email address. If the email address already exists in this 603 Insert an email address. If the email address already exists in this
604 addressee it is not duplicated. 604 addressee it is not duplicated.
605 605
606 @param email Email address 606 @param email Email address
607 @param preferred Set to true, if this is the preferred email address of 607 @param preferred Set to true, if this is the preferred email address of
608 the addressee. 608 the addressee.
609 */ 609 */
610 void insertEmail( const QString &email, bool preferred=false ); 610 void insertEmail( const QString &email, bool preferred=false );
611 611
612 /** 612 /**
613 Remove email address. If the email address doesn't exist, nothing happens. 613 Remove email address. If the email address doesn't exist, nothing happens.
614 */ 614 */
615 void removeEmail( const QString &email ); 615 void removeEmail( const QString &email );
616 616
617 /** 617 /**
618 Return preferred email address. This is the first email address or the 618 Return preferred email address. This is the first email address or the
619 last one added with @ref insertEmail() with a set preferred parameter. 619 last one added with @ref insertEmail() with a set preferred parameter.
620 */ 620 */
621 QString preferredEmail() const; 621 QString preferredEmail() const;
622 622
623 /** 623 /**
624 Return list of all email addresses. 624 Return list of all email addresses.
625 */ 625 */
626 QStringList emails() const; 626 QStringList emails() const;
627 627
628 /** 628 /**
629 Set the emails to @param. 629 Set the emails to @param.
630 The first email address gets the preferred one! 630 The first email address gets the preferred one!
631 @param list The list of email addresses. 631 @param list The list of email addresses.
632 */ 632 */
633 void setEmails( const QStringList& list); 633 void setEmails( const QStringList& list);
634 634
635 /** 635 /**
636 Insert a phone number. If a phone number with the same id already exists 636 Insert a phone number. If a phone number with the same id already exists
637 in this addressee it is not duplicated. 637 in this addressee it is not duplicated.
638 */ 638 */
639 void insertPhoneNumber( const PhoneNumber &phoneNumber ); 639 void insertPhoneNumber( const PhoneNumber &phoneNumber );
640 640
641 /** 641 /**
642 Remove phone number. If no phone number with the given id exists for this 642 Remove phone number. If no phone number with the given id exists for this
643 addresse nothing happens. 643 addresse nothing happens.
644 */ 644 */
645 void removePhoneNumber( const PhoneNumber &phoneNumber ); 645 void removePhoneNumber( const PhoneNumber &phoneNumber );
646 646
647 /** 647 /**
648 Return phone number, which matches the given type. 648 Return phone number, which matches the given type.
649 */ 649 */
650 PhoneNumber phoneNumber( int type ) const; 650 PhoneNumber phoneNumber( int type ) const;
651 QString phoneNumberString( int type ) const; 651 QString phoneNumberString( int type ) const;
652 652
653 bool matchPhoneNumber( QRegExp* searchExp ) const; 653 bool matchPhoneNumber( QRegExp* searchExp ) const;
654 bool matchAddress( QRegExp* searchExp ) const; 654 bool matchAddress( QRegExp* searchExp ) const;
655 655
656 /** 656 /**
657 Return list of all phone numbers. 657 Return list of all phone numbers.
658 */ 658 */
659 PhoneNumber::List phoneNumbers() const; 659 PhoneNumber::List phoneNumbers() const;
660 660
661 /** 661 /**
662 Return list of phone numbers with a special type. 662 Return list of phone numbers with a special type.
663 */ 663 */
664 PhoneNumber::List phoneNumbers( int type ) const; 664 PhoneNumber::List phoneNumbers( int type ) const;
665 665
666 /** 666 /**
667 Return phone number with the given id. 667 Return phone number with the given id.
668 */ 668 */
669 PhoneNumber findPhoneNumber( const QString &id ) const; 669 PhoneNumber findPhoneNumber( const QString &id ) const;
670 670
671 /** 671 /**
672 Insert a key. If a key with the same id already exists 672 Insert a key. If a key with the same id already exists
673 in this addressee it is not duplicated. 673 in this addressee it is not duplicated.
674 */ 674 */
675 void insertKey( const Key &key ); 675 void insertKey( const Key &key );
676 676
677 /** 677 /**
678 Remove a key. If no key with the given id exists for this 678 Remove a key. If no key with the given id exists for this
679 addresse nothing happens. 679 addresse nothing happens.
680 */ 680 */
681 void removeKey( const Key &key ); 681 void removeKey( const Key &key );
682 682
683 /** 683 /**
684 Return key, which matches the given type. 684 Return key, which matches the given type.
685 If @p type == Key::Custom you can specify a string 685 If @p type == Key::Custom you can specify a string
686 that should match. If you leave the string empty, the first 686 that should match. If you leave the string empty, the first
687 key with a custom value is returned. 687 key with a custom value is returned.
688 */ 688 */
689 Key key( int type, QString customTypeString = QString::null ) const; 689 Key key( int type, QString customTypeString = QString::null ) const;
690 690
691 /** 691 /**
692 Return list of all keys. 692 Return list of all keys.
693 */ 693 */
694 Key::List keys() const; 694 Key::List keys() const;
695 695
696 /** 696 /**
697 Set the list of keys 697 Set the list of keys
698 @param keys The keys to be set. 698 @param keys The keys to be set.
699 */ 699 */
700 void setKeys( const Key::List& keys); 700 void setKeys( const Key::List& keys);
701 701
702 /** 702 /**
703 Return list of keys with a special type. 703 Return list of keys with a special type.
704 If @p type == Key::Custom you can specify a string 704 If @p type == Key::Custom you can specify a string
705 that should match. If you leave the string empty, all custom 705 that should match. If you leave the string empty, all custom
706 keys will be returned. 706 keys will be returned.
707 */ 707 */
708 Key::List keys( int type, QString customTypeString = QString::null ) const; 708 Key::List keys( int type, QString customTypeString = QString::null ) const;
709 709
710 /** 710 /**
711 Return key with the given id. 711 Return key with the given id.
712 */ 712 */
713 Key findKey( const QString &id ) const; 713 Key findKey( const QString &id ) const;
714 714
715 /** 715 /**
716 Insert an address. If an address with the same id already exists 716 Insert an address. If an address with the same id already exists
717 in this addressee it is not duplicated. 717 in this addressee it is not duplicated.
718 */ 718 */
719 void insertAddress( const Address &address ); 719 void insertAddress( const Address &address );
720 720
721 /** 721 /**
722 Remove address. If no address with the given id exists for this 722 Remove address. If no address with the given id exists for this
723 addresse nothing happens. 723 addresse nothing happens.
724 */ 724 */
725 void removeAddress( const Address &address ); 725 void removeAddress( const Address &address );
726 726
727 /** 727 /**
728 Return address, which matches the given type. 728 Return address, which matches the given type.
729 */ 729 */
730 Address address( int type ) const; 730 Address address( int type ) const;
731 731
732 /** 732 /**
733 Return list of all addresses. 733 Return list of all addresses.
734 */ 734 */
735 Address::List addresses() const; 735 Address::List addresses() const;
736 Address otherAddress() const; 736 Address otherAddress() const;
737 /** 737 /**
738 Return list of addresses with a special type. 738 Return list of addresses with a special type.
739 */ 739 */
740 Address::List addresses( int type ) const; 740 Address::List addresses( int type ) const;
741 741
742 /** 742 /**
743 Return address with the given id. 743 Return address with the given id.
744 */ 744 */
745 Address findAddress( const QString &id ) const; 745 Address findAddress( const QString &id ) const;
746 746
747 /** 747 /**
748 Insert category. If the category already exists it is not duplicated. 748 Insert category. If the category already exists it is not duplicated.
749 */ 749 */
750 void insertCategory( const QString & ); 750 void insertCategory( const QString & );
751 751
752 /** 752 /**
753 Remove category. 753 Remove category.
754 */ 754 */
755 void removeCategory( const QString & ); 755 void removeCategory( const QString & );
756 756
757 /** 757 /**
758 Return, if addressee has the given category. 758 Return, if addressee has the given category.
759 */ 759 */
760 bool hasCategory( const QString & ) const; 760 bool hasCategory( const QString & ) const;
761 761
762 /** 762 /**
763 Set categories to given value. 763 Set categories to given value.
764 */ 764 */
765 void setCategories( const QStringList & ); 765 void setCategories( const QStringList & );
766 766
767 /** 767 /**
768 Return list of all set categories. 768 Return list of all set categories.
769 */ 769 */
770 QStringList categories() const; 770 QStringList categories() const;
771 771
772 /** 772 /**
773 Insert custom entry. The entry is identified by the name of the inserting 773 Insert custom entry. The entry is identified by the name of the inserting
774 application and a unique name. If an entry with the given app and name 774 application and a unique name. If an entry with the given app and name
775 already exists its value is replaced with the new given value. 775 already exists its value is replaced with the new given value.
776 */ 776 */
777 void insertCustom( const QString &app, const QString &name, 777 void insertCustom( const QString &app, const QString &name,
778 const QString &value ); 778 const QString &value );
779 779
780 /** 780 /**
781 Remove custom entry. 781 Remove custom entry.
782 */ 782 */
783 void removeCustom( const QString &app, const QString &name ); 783 void removeCustom( const QString &app, const QString &name );
784 784
785 /** 785 /**
786 Return value of custom entry, identified by app and entry name. 786 Return value of custom entry, identified by app and entry name.
787 */ 787 */
788 QString custom( const QString &app, const QString &name ) const; 788 QString custom( const QString &app, const QString &name ) const;
789 789
790 /** 790 /**
791 Set all custom entries. 791 Set all custom entries.
792 */ 792 */
793 void setCustoms( const QStringList & ); 793 void setCustoms( const QStringList & );
794 794
795 /** 795 /**
796 Return list of all custom entries. 796 Return list of all custom entries.
797 */ 797 */
798 QStringList customs() const; 798 QStringList customs() const;
799 799
800 /** 800 /**
801 Parse full email address. The result is given back in fullName and email. 801 Parse full email address. The result is given back in fullName and email.
802 */ 802 */
803 static void parseEmailAddress( const QString &rawEmail, QString &fullName, 803 static void parseEmailAddress( const QString &rawEmail, QString &fullName,
804 QString &email ); 804 QString &email );
805 805
806 /** 806 /**
807 Debug output. 807 Debug output.
808 */ 808 */
809 void dump() const; 809 void dump() const;
810 810
811 /** 811 /**
812 Returns string representation of the addressee. 812 Returns string representation of the addressee.
813 */ 813 */
814 QString asString() const; 814 QString asString() const;
815 815
816 /** 816 /**
817 Set resource where the addressee is from. 817 Set resource where the addressee is from.
818 */ 818 */
819 void setResource( Resource *resource ); 819 void setResource( Resource *resource );
820 820
821 /** 821 /**
822 Return pointer to resource. 822 Return pointer to resource.
823 */ 823 */
824 Resource *resource() const; 824 Resource *resource() const;
825 825
826 /** 826 /**
827 Return resourcelabel. 827 Return resourcelabel.
828 */ 828 */
829 //US 829 //US
830 static QString resourceLabel(); 830 static QString resourceLabel();
831 static QString categoryLabel(); 831 static QString categoryLabel();
832 /** 832 /**
833 Mark addressee as changed. 833 Mark addressee as changed.
834 */ 834 */
835 void setChanged( bool value ); 835 void setChanged( bool value );
836 836
837 /** 837 /**
838 Return whether the addressee is changed. 838 Return whether the addressee is changed.
839 */ 839 */
840 bool changed() const; 840 bool changed() const;
841 841
842 void setTagged( bool value ); 842 void setTagged( bool value );
843 bool tagged() const; 843 bool tagged() const;
844 844
845 private: 845 private:
846 Addressee copy(); 846 Addressee copy();
847 void detach(); 847 void detach();
848 848
849 struct AddresseeData; 849 struct AddresseeData;
850 mutable KSharedPtr<AddresseeData> mData; 850 mutable KSharedPtr<AddresseeData> mData;
851}; 851};
852 852
853QDataStream &operator<<( QDataStream &, const Addressee & ); 853QDataStream &operator<<( QDataStream &, const Addressee & );
854QDataStream &operator>>( QDataStream &, Addressee & ); 854QDataStream &operator>>( QDataStream &, Addressee & );
855 855
856} 856}
857 857
858#endif 858#endif
diff --git a/kabc/addresseedialog.cpp b/kabc/addresseedialog.cpp
index 671787e..bda1b9e 100644
--- a/kabc/addresseedialog.cpp
+++ b/kabc/addresseedialog.cpp
@@ -1,351 +1,354 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#include <qlayout.h> 21#include <qlayout.h>
22#include <qpushbutton.h> 22#include <qpushbutton.h>
23#include <qgroupbox.h> 23#include <q3groupbox.h>
24#include <qapplication.h> 24#include <qapplication.h>
25#include <qregexp.h> 25#include <qregexp.h>
26#include <qvbox.h> 26#include <q3vbox.h>
27#include <qlabel.h> 27#include <qlabel.h>
28//Added by qt3to4:
29#include <Q3ValueList>
30#include <Q3VBoxLayout>
28 31
29#include <klocale.h> 32#include <klocale.h>
30#include <kdebug.h> 33#include <kdebug.h>
31#include <kglobalsettings.h> 34#include <kglobalsettings.h>
32 35
33#include "stdaddressbook.h" 36#include "stdaddressbook.h"
34 37
35#include "addresseedialog.h" 38#include "addresseedialog.h"
36#include "KDGanttMinimizeSplitter.h" 39#include "KDGanttMinimizeSplitter.h"
37//#include "addresseedialog.moc" 40//#include "addresseedialog.moc"
38 41
39using namespace KABC; 42using namespace KABC;
40 43
41AddresseeItem::AddresseeItem( QListView *parent, const Addressee &addressee ) : 44AddresseeItem::AddresseeItem( Q3ListView *parent, const Addressee &addressee ) :
42 QListViewItem( parent ), 45 Q3ListViewItem( parent ),
43 mAddressee( addressee ) 46 mAddressee( addressee )
44{ 47{
45 setText( Name,addressee.realName()); 48 setText( Name,addressee.realName());
46 setText( Email, addressee.preferredEmail() ); 49 setText( Email, addressee.preferredEmail() );
47 setText( Category, addressee.categories().join(";") ); 50 setText( Category, addressee.categories().join(";") );
48} 51}
49 52
50QString AddresseeItem::key( int column, bool ) const 53QString AddresseeItem::key( int column, bool ) const
51{ 54{
52 55
53 if (column == Email) { 56 if (column == Email) {
54 QString value = text(Email); 57 QString value = text(Email);
55 int val = value.findRev("@"); 58 int val = value.findRev("@");
56 return value.mid( val) + value.left( val ); 59 return value.mid( val) + value.left( val );
57 } 60 }
58 return text(column).lower(); 61 return text(column).lower();
59} 62}
60 63
61AddresseeDialog::AddresseeDialog( QWidget *parent, bool multiple ) : 64AddresseeDialog::AddresseeDialog( QWidget *parent, bool multiple ) :
62 KDialogBase( KDialogBase::Plain, i18n("Select Addressee"), 65 KDialogBase( KDialogBase::Plain, i18n("Select Addressee"),
63 Ok|Cancel, No, parent ), mMultiple( multiple ) 66 Ok|Cancel, No, parent ), mMultiple( multiple )
64{ 67{
65 qDebug("NEW AddresseeDialog "); 68 qDebug("NEW AddresseeDialog ");
66 69
67 70
68 KDGanttMinimizeSplitter* mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this ); 71 KDGanttMinimizeSplitter* mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this );
69 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 72 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
70 setMainWidget( mMiniSplitter ); 73 setMainWidget( mMiniSplitter );
71 74
72 QWidget *listWidget = new QWidget( mMiniSplitter ); 75 QWidget *listWidget = new QWidget( mMiniSplitter );
73 76
74 QVBoxLayout *listLayout = new QVBoxLayout (listWidget) ; 77 Q3VBoxLayout *listLayout = new Q3VBoxLayout (listWidget) ;
75 //topLayout->addLayout( listLayout ); 78 //topLayout->addLayout( listLayout );
76 79
77 mAddresseeList = new KListView( listWidget ); 80 mAddresseeList = new KListView( listWidget );
78 mAddresseeList->addColumn( i18n("Name") ); 81 mAddresseeList->addColumn( i18n("Name") );
79 mAddresseeList->addColumn( i18n("Email") ); 82 mAddresseeList->addColumn( i18n("Email") );
80 mAddresseeList->addColumn( i18n("Category") ); 83 mAddresseeList->addColumn( i18n("Category") );
81 mAddresseeList->setAllColumnsShowFocus( true ); 84 mAddresseeList->setAllColumnsShowFocus( true );
82 mAddresseeList->setFullWidth( true ); 85 mAddresseeList->setFullWidth( true );
83 listLayout->addWidget( mAddresseeList ); 86 listLayout->addWidget( mAddresseeList );
84 connect( mAddresseeList, SIGNAL( doubleClicked( QListViewItem * ) ), 87 connect( mAddresseeList, SIGNAL( doubleClicked( Q3ListViewItem * ) ),
85 SLOT( slotOk() ) ); 88 SLOT( slotOk() ) );
86 //QHBox* searchBox = new QHBox ( listWidget ); 89 //QHBox* searchBox = new QHBox ( listWidget );
87 QHBox * hb = new QHBox ( listWidget ); 90 Q3HBox * hb = new Q3HBox ( listWidget );
88 listLayout->addWidget ( hb ); 91 listLayout->addWidget ( hb );
89 mAddresseeEdit = new QLineEdit( hb ); 92 mAddresseeEdit = new QLineEdit( hb );
90 connect( mAddresseeEdit, SIGNAL( returnPressed() ), 93 connect( mAddresseeEdit, SIGNAL( returnPressed() ),
91 SLOT( loadAddressBook() ) ); 94 SLOT( loadAddressBook() ) );
92 mAddresseeEdit->setFocus(); 95 mAddresseeEdit->setFocus();
93 QPushButton *searchButton = new QPushButton( i18n("Search!"), hb ); 96 QPushButton *searchButton = new QPushButton( i18n("Search!"), hb );
94 connect ( searchButton, SIGNAL( clicked() ), SLOT( loadAddressBook() ) ); 97 connect ( searchButton, SIGNAL( clicked() ), SLOT( loadAddressBook() ) );
95 if ( mMultiple ) { 98 if ( mMultiple ) {
96 99
97 mSelectedList = new KListView( mMiniSplitter ); 100 mSelectedList = new KListView( mMiniSplitter );
98 mSelectedList->addColumn( i18n("Selected Name") ); 101 mSelectedList->addColumn( i18n("Selected Name") );
99 mSelectedList->addColumn( i18n("Email") ); 102 mSelectedList->addColumn( i18n("Email") );
100 mSelectedList->setAllColumnsShowFocus( true ); 103 mSelectedList->setAllColumnsShowFocus( true );
101 mSelectedList->setFullWidth( true ); 104 mSelectedList->setFullWidth( true );
102 //connect( mSelectedList, SIGNAL( doubleClicked( QListViewItem * ) ), 105 //connect( mSelectedList, SIGNAL( doubleClicked( QListViewItem * ) ),
103 // SLOT( removeSelected() ) ); 106 // SLOT( removeSelected() ) );
104 connect( mSelectedList, SIGNAL( clicked( QListViewItem * ) ), 107 connect( mSelectedList, SIGNAL( clicked( Q3ListViewItem * ) ),
105 SLOT( removeSelected() ) ); 108 SLOT( removeSelected() ) );
106 connect( mSelectedList, SIGNAL( returnPressed( QListViewItem *) ), 109 connect( mSelectedList, SIGNAL( returnPressed( Q3ListViewItem *) ),
107 SLOT( removeSelected() ) ); 110 SLOT( removeSelected() ) );
108 111
109#if 0 112#if 0
110 QPushButton *unselectButton = new QPushButton( i18n("Unselect"), selectedGroup ); 113 QPushButton *unselectButton = new QPushButton( i18n("Unselect"), selectedGroup );
111 connect ( unselectButton, SIGNAL( clicked() ), SLOT( removeSelected() ) ); 114 connect ( unselectButton, SIGNAL( clicked() ), SLOT( removeSelected() ) );
112 115
113#endif 116#endif
114 connect( mAddresseeList, SIGNAL( clicked( QListViewItem * ) ), 117 connect( mAddresseeList, SIGNAL( clicked( Q3ListViewItem * ) ),
115 SLOT( addSelected( QListViewItem * ) ) ); 118 SLOT( addSelected( Q3ListViewItem * ) ) );
116 connect( mAddresseeList, SIGNAL( returnPressed( QListViewItem * ) ), 119 connect( mAddresseeList, SIGNAL( returnPressed( Q3ListViewItem * ) ),
117 SLOT( selectNextItem( QListViewItem * ) ) ); 120 SLOT( selectNextItem( Q3ListViewItem * ) ) );
118 121
119 } 122 }
120 123
121 mAddressBook = StdAddressBook::self( true ); 124 mAddressBook = StdAddressBook::self( true );
122 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook* ) ), 125 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook* ) ),
123 SLOT( addressBookChanged() ) ); 126 SLOT( addressBookChanged() ) );
124#if 0 127#if 0
125 connect( mAddressBook, SIGNAL( loadingFinished( Resource* ) ), 128 connect( mAddressBook, SIGNAL( loadingFinished( Resource* ) ),
126 SLOT( addressBookChanged() ) ); 129 SLOT( addressBookChanged() ) );
127#endif 130#endif
128 loadAddressBook(); 131 loadAddressBook();
129 QValueList<int> splitterSize; 132 Q3ValueList<int> splitterSize;
130 splitterSize.append( ( width() / 5 ) * 3 ); 133 splitterSize.append( ( width() / 5 ) * 3 );
131 splitterSize.append( ( width() / 5 ) *2 ); 134 splitterSize.append( ( width() / 5 ) *2 );
132 mMiniSplitter->setSizes( splitterSize ); 135 mMiniSplitter->setSizes( splitterSize );
133} 136}
134 137
135AddresseeDialog::~AddresseeDialog() 138AddresseeDialog::~AddresseeDialog()
136{ 139{
137 qDebug("DELETE AddresseeDialog "); 140 qDebug("DELETE AddresseeDialog ");
138} 141}
139 142
140void AddresseeDialog::loadAddressBook() 143void AddresseeDialog::loadAddressBook()
141{ 144{
142 mAddresseeList->clear(); 145 mAddresseeList->clear();
143 mItemDict.clear(); 146 mItemDict.clear();
144 if ( mAddresseeEdit->text().isEmpty() ) { 147 if ( mAddresseeEdit->text().isEmpty() ) {
145 AddressBook::Iterator it; 148 AddressBook::Iterator it;
146 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 149 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
147 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) 150 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") )
148 continue; 151 continue;
149 new AddresseeItem( mAddresseeList, (*it) ); 152 new AddresseeItem( mAddresseeList, (*it) );
150 } 153 }
151 return; 154 return;
152 } 155 }
153 //mAddresseeEdit->completionObject()->clear(); 156 //mAddresseeEdit->completionObject()->clear();
154 QRegExp re; 157 QRegExp re;
155 re.setWildcard(true); // most people understand these better. 158 re.setWildcard(true); // most people understand these better.
156 re.setCaseSensitive(false); 159 re.setCaseSensitive(false);
157 re.setPattern( "*"+ mAddresseeEdit->text() + "*"); 160 re.setPattern( "*"+ mAddresseeEdit->text() + "*");
158 161
159 AddressBook::Iterator it; 162 AddressBook::Iterator it;
160 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 163 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
161 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) 164 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") )
162 continue; 165 continue;
163 QString name = (*it).realName(); 166 QString name = (*it).realName();
164 name += (*it).preferredEmail(); 167 name += (*it).preferredEmail();
165 name += (*it).categories().join(";"); 168 name += (*it).categories().join(";");
166#if QT_VERSION >= 0x030000 169#if QT_VERSION >= 0x030000
167 if (re.search(name) != -1) 170 if (re.search(name) != -1)
168#else 171#else
169 if (re.match(name) != -1) 172 if (re.match(name) != -1)
170#endif 173#endif
171 AddresseeItem *item = new AddresseeItem( mAddresseeList, (*it) ); 174 AddresseeItem *item = new AddresseeItem( mAddresseeList, (*it) );
172 } 175 }
173} 176}
174 177
175void AddresseeDialog::addCompletionItem( const QString &str, QListViewItem *item ) 178void AddresseeDialog::addCompletionItem( const QString &str, Q3ListViewItem *item )
176{ 179{
177 if ( str.isEmpty() ) return; 180 if ( str.isEmpty() ) return;
178 181
179 mItemDict.insert( str, item ); 182 mItemDict.insert( str, item );
180 //mAddresseeEdit->completionObject()->addItem( str ); 183 //mAddresseeEdit->completionObject()->addItem( str );
181} 184}
182 185
183void AddresseeDialog::selectItem( const QString &str ) 186void AddresseeDialog::selectItem( const QString &str )
184{ 187{
185 if ( str.isEmpty() ) return; 188 if ( str.isEmpty() ) return;
186 189
187 QListViewItem *item = mItemDict.find( str ); 190 Q3ListViewItem *item = mItemDict.find( str );
188 if ( item ) { 191 if ( item ) {
189 mAddresseeList->blockSignals( true ); 192 mAddresseeList->blockSignals( true );
190 mAddresseeList->setSelected( item, true ); 193 mAddresseeList->setSelected( item, true );
191 mAddresseeList->ensureItemVisible( item ); 194 mAddresseeList->ensureItemVisible( item );
192 mAddresseeList->blockSignals( false ); 195 mAddresseeList->blockSignals( false );
193 } 196 }
194} 197}
195 198
196void AddresseeDialog::updateEdit( QListViewItem *item ) 199void AddresseeDialog::updateEdit( Q3ListViewItem *item )
197{ 200{
198 mAddresseeEdit->setText( item->text( 0 ) ); 201 mAddresseeEdit->setText( item->text( 0 ) );
199 mAddresseeEdit->setSelection( 0, item->text( 0 ).length() ); 202 mAddresseeEdit->setSelection( 0, item->text( 0 ).length() );
200} 203}
201 204
202void AddresseeDialog::selectNextItem( QListViewItem *item ) 205void AddresseeDialog::selectNextItem( Q3ListViewItem *item )
203{ 206{
204 addSelected( item ); 207 addSelected( item );
205 QListViewItem *next = item->nextSibling(); 208 Q3ListViewItem *next = item->nextSibling();
206 if ( next ) { 209 if ( next ) {
207 next->setSelected( true ); 210 next->setSelected( true );
208 item->setSelected( false ); 211 item->setSelected( false );
209 mAddresseeList->setCurrentItem( next ); 212 mAddresseeList->setCurrentItem( next );
210 } 213 }
211} 214}
212void AddresseeDialog::addSelected( QListViewItem *item ) 215void AddresseeDialog::addSelected( Q3ListViewItem *item )
213{ 216{
214 AddresseeItem *addrItem = (AddresseeItem *)( item ); 217 AddresseeItem *addrItem = (AddresseeItem *)( item );
215 if ( !addrItem ) return; 218 if ( !addrItem ) return;
216 219
217 Addressee a = addrItem->addressee(); 220 Addressee a = addrItem->addressee();
218 221
219 QListViewItem *selectedItem = mSelectedDict.find( a.uid() ); 222 Q3ListViewItem *selectedItem = mSelectedDict.find( a.uid() );
220 if ( !selectedItem ) { 223 if ( !selectedItem ) {
221 selectedItem = new AddresseeItem( mSelectedList, a ); 224 selectedItem = new AddresseeItem( mSelectedList, a );
222 mSelectedDict.insert( a.uid(), selectedItem ); 225 mSelectedDict.insert( a.uid(), selectedItem );
223 } 226 }
224 227
225} 228}
226 229
227void AddresseeDialog::removeSelected() 230void AddresseeDialog::removeSelected()
228{ 231{
229 QListViewItem *item = mSelectedList->selectedItem(); 232 Q3ListViewItem *item = mSelectedList->selectedItem();
230 AddresseeItem *addrItem = (AddresseeItem *)( item ); 233 AddresseeItem *addrItem = (AddresseeItem *)( item );
231 if ( !addrItem ) return; 234 if ( !addrItem ) return;
232 QListViewItem *next = item->nextSibling(); 235 Q3ListViewItem *next = item->nextSibling();
233 mSelectedDict.remove( addrItem->addressee().uid() ); 236 mSelectedDict.remove( addrItem->addressee().uid() );
234 delete addrItem; 237 delete addrItem;
235 if ( next ) 238 if ( next )
236 next->setSelected( true ); 239 next->setSelected( true );
237} 240}
238 241
239Addressee AddresseeDialog::addressee() 242Addressee AddresseeDialog::addressee()
240{ 243{
241 AddresseeItem *aItem = 0; 244 AddresseeItem *aItem = 0;
242 245
243 if ( mMultiple ) 246 if ( mMultiple )
244 aItem = (AddresseeItem *)( mSelectedList->firstChild() ); 247 aItem = (AddresseeItem *)( mSelectedList->firstChild() );
245 else 248 else
246 aItem = (AddresseeItem *)( mAddresseeList->selectedItem() ); 249 aItem = (AddresseeItem *)( mAddresseeList->selectedItem() );
247 250
248 if (aItem) return aItem->addressee(); 251 if (aItem) return aItem->addressee();
249 return Addressee(); 252 return Addressee();
250} 253}
251 254
252Addressee::List AddresseeDialog::addressees() 255Addressee::List AddresseeDialog::addressees()
253{ 256{
254 Addressee::List al; 257 Addressee::List al;
255 AddresseeItem *aItem = 0; 258 AddresseeItem *aItem = 0;
256 259
257 if ( mMultiple ) { 260 if ( mMultiple ) {
258 QListViewItem *item = mSelectedList->firstChild(); 261 Q3ListViewItem *item = mSelectedList->firstChild();
259 while( item ) { 262 while( item ) {
260 aItem = (AddresseeItem *)( item ); 263 aItem = (AddresseeItem *)( item );
261 if ( aItem ) al.append( aItem->addressee() ); 264 if ( aItem ) al.append( aItem->addressee() );
262 item = item->nextSibling(); 265 item = item->nextSibling();
263 } 266 }
264 } 267 }
265 else 268 else
266 { 269 {
267 aItem = (AddresseeItem *)( mAddresseeList->selectedItem() ); 270 aItem = (AddresseeItem *)( mAddresseeList->selectedItem() );
268 if (aItem) al.append( aItem->addressee() ); 271 if (aItem) al.append( aItem->addressee() );
269 } 272 }
270 273
271 return al; 274 return al;
272} 275}
273 276
274Addressee AddresseeDialog::getAddressee( QWidget *parent ) 277Addressee AddresseeDialog::getAddressee( QWidget *parent )
275{ 278{
276 AddresseeDialog *dlg = new AddresseeDialog( parent ); 279 AddresseeDialog *dlg = new AddresseeDialog( parent );
277 Addressee addressee; 280 Addressee addressee;
278#ifdef DESKTOP_VERSION 281#ifdef DESKTOP_VERSION
279 static int geoX = 0; 282 static int geoX = 0;
280 static int geoY = 0; 283 static int geoY = 0;
281 static int geoW = 0; 284 static int geoW = 0;
282 static int geoH = 0; 285 static int geoH = 0;
283 if ( !geoX && ! geoY && !geoW &&!geoH ) { 286 if ( !geoX && ! geoY && !geoW &&!geoH ) {
284 geoX = dlg->geometry().x(); 287 geoX = dlg->geometry().x();
285 geoY = dlg->geometry().y(); 288 geoY = dlg->geometry().y();
286 geoW = dlg->width(); 289 geoW = dlg->width();
287 geoH = dlg->height(); 290 geoH = dlg->height();
288 } else { 291 } else {
289 dlg->show(); 292 dlg->show();
290 dlg->setGeometry(geoX , geoY,geoW , geoH ); 293 dlg->setGeometry(geoX , geoY,geoW , geoH );
291 294
292 } 295 }
293#endif 296#endif
294 int result = dlg->exec(); 297 int result = dlg->exec();
295#ifdef DESKTOP_VERSION 298#ifdef DESKTOP_VERSION
296 geoX = dlg->geometry().x(); 299 geoX = dlg->geometry().x();
297 geoY = dlg->geometry().y(); 300 geoY = dlg->geometry().y();
298 geoW = dlg->width(); 301 geoW = dlg->width();
299 geoH = dlg->height(); 302 geoH = dlg->height();
300#endif 303#endif
301 if ( result == QDialog::Accepted ) { 304 if ( result == QDialog::Accepted ) {
302 addressee = dlg->addressee(); 305 addressee = dlg->addressee();
303 } 306 }
304 307
305 delete dlg; 308 delete dlg;
306 return addressee; 309 return addressee;
307} 310}
308 311
309Addressee::List AddresseeDialog::getAddressees( QWidget *parent ) 312Addressee::List AddresseeDialog::getAddressees( QWidget *parent )
310{ 313{
311 Addressee::List addressees; 314 Addressee::List addressees;
312 static bool running = false; 315 static bool running = false;
313 if ( running ) return addressees; 316 if ( running ) return addressees;
314 running = true; 317 running = true;
315 AddresseeDialog *dlg = new AddresseeDialog( parent, true ); 318 AddresseeDialog *dlg = new AddresseeDialog( parent, true );
316#ifdef DESKTOP_VERSION 319#ifdef DESKTOP_VERSION
317 static int geoX = 0; 320 static int geoX = 0;
318 static int geoY = 0; 321 static int geoY = 0;
319 static int geoW = 0; 322 static int geoW = 0;
320 static int geoH = 0; 323 static int geoH = 0;
321 if ( !geoX && ! geoY && !geoW &&!geoH ) { 324 if ( !geoX && ! geoY && !geoW &&!geoH ) {
322 geoX = dlg->geometry().x(); 325 geoX = dlg->geometry().x();
323 geoY = dlg->geometry().y(); 326 geoY = dlg->geometry().y();
324 geoW = dlg->width(); 327 geoW = dlg->width();
325 geoH = dlg->height(); 328 geoH = dlg->height();
326 } 329 }
327 dlg->show(); 330 dlg->show();
328 dlg->setGeometry(geoX , geoY,geoW , geoH ); 331 dlg->setGeometry(geoX , geoY,geoW , geoH );
329#else 332#else
330 dlg->showMaximized(); 333 dlg->showMaximized();
331#endif 334#endif
332 int result = dlg->exec(); 335 int result = dlg->exec();
333#ifdef DESKTOP_VERSION 336#ifdef DESKTOP_VERSION
334 geoX = dlg->geometry().x(); 337 geoX = dlg->geometry().x();
335 geoY = dlg->geometry().y(); 338 geoY = dlg->geometry().y();
336 geoW = dlg->width(); 339 geoW = dlg->width();
337 geoH = dlg->height(); 340 geoH = dlg->height();
338#endif 341#endif
339 if ( result == QDialog::Accepted ) { 342 if ( result == QDialog::Accepted ) {
340 addressees = dlg->addressees(); 343 addressees = dlg->addressees();
341 } 344 }
342 345
343 delete dlg; 346 delete dlg;
344 running = false; 347 running = false;
345 return addressees; 348 return addressees;
346} 349}
347 350
348void AddresseeDialog::addressBookChanged() 351void AddresseeDialog::addressBookChanged()
349{ 352{
350 loadAddressBook(); 353 loadAddressBook();
351} 354}
diff --git a/kabc/addresseedialog.h b/kabc/addresseedialog.h
index 6fab62d..be7bbb4 100644
--- a/kabc/addresseedialog.h
+++ b/kabc/addresseedialog.h
@@ -1,161 +1,161 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#ifndef KABC_ADDRESSEEDIALOG_H 21#ifndef KABC_ADDRESSEEDIALOG_H
22#define KABC_ADDRESSEEDIALOG_H 22#define KABC_ADDRESSEEDIALOG_H
23 23
24#include <qdict.h> 24#include <q3dict.h>
25 25
26#include <kdialogbase.h> 26#include <kdialogbase.h>
27#include <klineedit.h> 27#include <klineedit.h>
28#include <klistview.h> 28#include <klistview.h>
29 29
30#include "addressbook.h" 30#include "addressbook.h"
31 31
32namespace KABC { 32namespace KABC {
33 33
34/** 34/**
35 @short Special ListViewItem, that is used by the AddresseeDialog. 35 @short Special ListViewItem, that is used by the AddresseeDialog.
36*/ 36*/
37class AddresseeItem : public QListViewItem 37class AddresseeItem : public Q3ListViewItem
38{ 38{
39 public: 39 public:
40 40
41 /** 41 /**
42 Type of column 42 Type of column
43 @li @p Name - Name in Addressee 43 @li @p Name - Name in Addressee
44 @li @p Email - Email in Addressee 44 @li @p Email - Email in Addressee
45 */ 45 */
46 enum columns { Name = 0, Email = 1,Category = 2 }; 46 enum columns { Name = 0, Email = 1,Category = 2 };
47 47
48 /** 48 /**
49 Constructor. 49 Constructor.
50 50
51 @param parent The parent listview. 51 @param parent The parent listview.
52 @param addressee The associated addressee. 52 @param addressee The associated addressee.
53 */ 53 */
54 AddresseeItem( QListView *parent, const Addressee &addressee ); 54 AddresseeItem( Q3ListView *parent, const Addressee &addressee );
55 55
56 /** 56 /**
57 Returns the addressee. 57 Returns the addressee.
58 */ 58 */
59 Addressee addressee() const { return mAddressee; } 59 Addressee addressee() const { return mAddressee; }
60 60
61 /** 61 /**
62 Method used by QListView to sort the items. 62 Method used by QListView to sort the items.
63 */ 63 */
64 virtual QString key( int column, bool ascending ) const; 64 virtual QString key( int column, bool ascending ) const;
65 65
66 private: 66 private:
67 Addressee mAddressee; 67 Addressee mAddressee;
68}; 68};
69 69
70/** 70/**
71 @short Dialog for selecting address book entries. 71 @short Dialog for selecting address book entries.
72 72
73 This class provides a dialog for selecting entries from the standard KDE 73 This class provides a dialog for selecting entries from the standard KDE
74 address book. Use the getAddressee() function to open a modal dialog, 74 address book. Use the getAddressee() function to open a modal dialog,
75 returning an address book entry. 75 returning an address book entry.
76 76
77 In the dialog you can select an entry from the list with the mouse or type in 77 In the dialog you can select an entry from the list with the mouse or type in
78 the first letters of the name or email address you are searching for. The 78 the first letters of the name or email address you are searching for. The
79 entry matching best is automatically selected. Use double click, pressing 79 entry matching best is automatically selected. Use double click, pressing
80 return or pressing the ok button to return the selected addressee to the 80 return or pressing the ok button to return the selected addressee to the
81 application. 81 application.
82*/ 82*/
83class AddresseeDialog : public KDialogBase 83class AddresseeDialog : public KDialogBase
84{ 84{
85 Q_OBJECT 85 Q_OBJECT
86 86
87 public: 87 public:
88 /** 88 /**
89 Construct addressbook entry select dialog. 89 Construct addressbook entry select dialog.
90 90
91 @param parent parent widget 91 @param parent parent widget
92 */ 92 */
93 AddresseeDialog( QWidget *parent=0, bool multiple=false ); 93 AddresseeDialog( QWidget *parent=0, bool multiple=false );
94 94
95 /** 95 /**
96 Destructor. 96 Destructor.
97 */ 97 */
98 virtual ~AddresseeDialog(); 98 virtual ~AddresseeDialog();
99 99
100 /** 100 /**
101 Return the address chosen. 101 Return the address chosen.
102 102
103 If it is a multiple select, this will return only the first address chosen 103 If it is a multiple select, this will return only the first address chosen
104 */ 104 */
105 Addressee addressee(); 105 Addressee addressee();
106 106
107 /** 107 /**
108 Return the list of addresses chosen 108 Return the list of addresses chosen
109 */ 109 */
110 Addressee::List addressees(); 110 Addressee::List addressees();
111 111
112 /** 112 /**
113 Select a single address book entry. 113 Select a single address book entry.
114 114
115 Open addressee select dialog and return the entry selected by the user. 115 Open addressee select dialog and return the entry selected by the user.
116 If the user doesn't select an entry or presses cancel, the returned 116 If the user doesn't select an entry or presses cancel, the returned
117 addressee is empty. 117 addressee is empty.
118 */ 118 */
119 static Addressee getAddressee( QWidget *parent ); 119 static Addressee getAddressee( QWidget *parent );
120 120
121 /** 121 /**
122 Select multiple address book entries. 122 Select multiple address book entries.
123 123
124 Open addressee select dialog and return the entries selected by the user. 124 Open addressee select dialog and return the entries selected by the user.
125 If the user doesn't select an entry or presses cancel, the returned 125 If the user doesn't select an entry or presses cancel, the returned
126 addressee list is empty. 126 addressee list is empty.
127 */ 127 */
128 static Addressee::List getAddressees( QWidget *parent ); 128 static Addressee::List getAddressees( QWidget *parent );
129 129
130 private slots: 130 private slots:
131 void selectItem( const QString & ); 131 void selectItem( const QString & );
132 void selectNextItem( QListViewItem *item ); 132 void selectNextItem( Q3ListViewItem *item );
133 void updateEdit( QListViewItem *item ); 133 void updateEdit( Q3ListViewItem *item );
134 void addSelected( QListViewItem *item ); 134 void addSelected( Q3ListViewItem *item );
135 void removeSelected(); 135 void removeSelected();
136 void loadAddressBook(); 136 void loadAddressBook();
137 137
138 protected slots: 138 protected slots:
139 void addressBookChanged(); 139 void addressBookChanged();
140 140
141 private: 141 private:
142 void addCompletionItem( const QString &str, QListViewItem *item ); 142 void addCompletionItem( const QString &str, Q3ListViewItem *item );
143 143
144 bool mMultiple; 144 bool mMultiple;
145 145
146 KListView *mAddresseeList; 146 KListView *mAddresseeList;
147 QLineEdit *mAddresseeEdit; 147 QLineEdit *mAddresseeEdit;
148 148
149 KListView *mSelectedList; 149 KListView *mSelectedList;
150 150
151 AddressBook *mAddressBook; 151 AddressBook *mAddressBook;
152 152
153 QDict<QListViewItem> mItemDict; 153 Q3Dict<Q3ListViewItem> mItemDict;
154 QDict<QListViewItem> mSelectedDict; 154 Q3Dict<Q3ListViewItem> mSelectedDict;
155 155
156 class AddresseeDialogPrivate; 156 class AddresseeDialogPrivate;
157 AddresseeDialogPrivate *d; 157 AddresseeDialogPrivate *d;
158}; 158};
159 159
160} 160}
161#endif 161#endif
diff --git a/kabc/addresseelist.cpp b/kabc/addresseelist.cpp
index 097e162..e1ba1ce 100644
--- a/kabc/addresseelist.cpp
+++ b/kabc/addresseelist.cpp
@@ -1,292 +1,294 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2002 Jost Schenck <jost@schenck.de> 3 Copyright (c) 2002 Jost Schenck <jost@schenck.de>
4 2003 Tobias Koenig <tokoe@kde.org> 4 2003 Tobias Koenig <tokoe@kde.org>
5 5
6 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
10 10
11 This library is distributed in the hope that it will be useful, 11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details. 14 Library General Public License for more details.
15 15
16 You should have received a copy of the GNU Library General Public License 16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to 17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. 19 Boston, MA 02111-1307, USA.
20*/ 20*/
21 21
22/* 22/*
23Enhanced Version of the file for platform independent KDE tools. 23Enhanced Version of the file for platform independent KDE tools.
24Copyright (c) 2004 Ulf Schenk 24Copyright (c) 2004 Ulf Schenk
25 25
26$Id$ 26$Id$
27*/ 27*/
28 28
29#include <kdebug.h> 29#include <kdebug.h>
30//US 30//US
31#include <qtl.h> 31#include <q3tl.h>
32//Added by qt3to4:
33#include <Q3ValueList>
32 34
33 35
34#include "addresseelist.h" 36#include "addresseelist.h"
35#include "field.h" 37#include "field.h"
36 38
37using namespace KABC; 39using namespace KABC;
38 40
39// 41//
40// 42//
41// Traits 43// Traits
42// 44//
43// 45//
44 46
45bool SortingTraits::Uid::eq( const Addressee &a1, const Addressee &a2 ) 47bool SortingTraits::Uid::eq( const Addressee &a1, const Addressee &a2 )
46{ 48{
47 // locale awareness doesn't make sense sorting ids 49 // locale awareness doesn't make sense sorting ids
48 return ( QString::compare( a1.uid(), a2.uid() ) == 0 ); 50 return ( QString::compare( a1.uid(), a2.uid() ) == 0 );
49} 51}
50 52
51bool SortingTraits::Uid::lt( const Addressee &a1, const Addressee &a2 ) 53bool SortingTraits::Uid::lt( const Addressee &a1, const Addressee &a2 )
52{ 54{
53 // locale awareness doesn't make sense sorting ids 55 // locale awareness doesn't make sense sorting ids
54 return ( QString::compare( a1.uid(), a2.uid() ) < 0 ); 56 return ( QString::compare( a1.uid(), a2.uid() ) < 0 );
55} 57}
56 58
57bool SortingTraits::Name::eq( const Addressee &a1, const Addressee &a2 ) 59bool SortingTraits::Name::eq( const Addressee &a1, const Addressee &a2 )
58{ 60{
59//US QString::localeAwareCompare is not available in my distribution. Redefine it to compare 61//US QString::localeAwareCompare is not available in my distribution. Redefine it to compare
60 return ( QString::compare( a1.name(), a2.name() ) == 0 ); 62 return ( QString::compare( a1.name(), a2.name() ) == 0 );
61} 63}
62 64
63bool SortingTraits::Name::lt( const Addressee &a1, const Addressee &a2 ) 65bool SortingTraits::Name::lt( const Addressee &a1, const Addressee &a2 )
64{ 66{
65//US QString::localeAwareCompare is not available in my distribution. Redefine it to compare 67//US QString::localeAwareCompare is not available in my distribution. Redefine it to compare
66 return ( QString::compare( a1.name(), a2.name() ) < 0 ); 68 return ( QString::compare( a1.name(), a2.name() ) < 0 );
67} 69}
68 70
69bool SortingTraits::FormattedName::eq( const Addressee &a1, const Addressee &a2 ) 71bool SortingTraits::FormattedName::eq( const Addressee &a1, const Addressee &a2 )
70{ 72{
71//US QString::localeAwareCompare is not available in my distribution. Redefine it to compare 73//US QString::localeAwareCompare is not available in my distribution. Redefine it to compare
72 return ( QString::compare( a1.formattedName(), a2.formattedName() ) == 0 ); 74 return ( QString::compare( a1.formattedName(), a2.formattedName() ) == 0 );
73} 75}
74 76
75bool SortingTraits::FormattedName::lt( const Addressee &a1, const Addressee &a2 ) 77bool SortingTraits::FormattedName::lt( const Addressee &a1, const Addressee &a2 )
76{ 78{
77//US QString::localeAwareCompare is not available in my distribution. Redefine it to compare 79//US QString::localeAwareCompare is not available in my distribution. Redefine it to compare
78 return ( QString::compare( a1.formattedName(), a2.formattedName() ) < 0 ); 80 return ( QString::compare( a1.formattedName(), a2.formattedName() ) < 0 );
79} 81}
80 82
81bool SortingTraits::FamilyName::eq( const Addressee &a1, const Addressee &a2 ) 83bool SortingTraits::FamilyName::eq( const Addressee &a1, const Addressee &a2 )
82{ 84{
83//US QString::localeAwareCompare is not available in my distribution. Redefine it to compare 85//US QString::localeAwareCompare is not available in my distribution. Redefine it to compare
84 return ( QString::compare( a1.familyName(), a2.familyName() ) == 0 86 return ( QString::compare( a1.familyName(), a2.familyName() ) == 0
85 && QString::compare( a1.givenName(), a2.givenName() ) == 0 ); 87 && QString::compare( a1.givenName(), a2.givenName() ) == 0 );
86} 88}
87 89
88bool SortingTraits::FamilyName::lt( const Addressee &a1, const Addressee &a2 ) 90bool SortingTraits::FamilyName::lt( const Addressee &a1, const Addressee &a2 )
89{ 91{
90//US QString::localeAwareCompare is not available in my distribution. Redefine it to compare 92//US QString::localeAwareCompare is not available in my distribution. Redefine it to compare
91 int family = QString::compare( a1.familyName(), a2.familyName() ); 93 int family = QString::compare( a1.familyName(), a2.familyName() );
92 if ( 0 == family ) { 94 if ( 0 == family ) {
93 return ( QString::compare( a1.givenName(), a2.givenName() ) < 0 ); 95 return ( QString::compare( a1.givenName(), a2.givenName() ) < 0 );
94 } else { 96 } else {
95 return family < 0; 97 return family < 0;
96 } 98 }
97} 99}
98 100
99bool SortingTraits::GivenName::eq( const Addressee &a1, const Addressee &a2 ) 101bool SortingTraits::GivenName::eq( const Addressee &a1, const Addressee &a2 )
100{ 102{
101//US QString::localeAwareCompare is not available in my distribution. Redefine it to compare 103//US QString::localeAwareCompare is not available in my distribution. Redefine it to compare
102 return ( QString::compare( a1.givenName(), a2.givenName() ) == 0 104 return ( QString::compare( a1.givenName(), a2.givenName() ) == 0
103 && QString::compare( a1.familyName(), a2.familyName() ) == 0 ); 105 && QString::compare( a1.familyName(), a2.familyName() ) == 0 );
104} 106}
105 107
106bool SortingTraits::GivenName::lt( const Addressee &a1, const Addressee &a2 ) 108bool SortingTraits::GivenName::lt( const Addressee &a1, const Addressee &a2 )
107{ 109{
108//US QString::localeAwareCompare is not available in my distribution. Redefine it to compare 110//US QString::localeAwareCompare is not available in my distribution. Redefine it to compare
109 int given = QString::compare( a1.givenName(), a2.givenName() ); 111 int given = QString::compare( a1.givenName(), a2.givenName() );
110 if ( 0 == given ) { 112 if ( 0 == given ) {
111 return ( QString::compare( a1.familyName(), a2.familyName() ) < 0 ); 113 return ( QString::compare( a1.familyName(), a2.familyName() ) < 0 );
112 } else { 114 } else {
113 return given < 0; 115 return given < 0;
114 } 116 }
115} 117}
116 118
117// 119//
118// 120//
119// AddresseeList 121// AddresseeList
120// 122//
121// 123//
122 124
123AddresseeList::AddresseeList() 125AddresseeList::AddresseeList()
124 : QValueList<Addressee>() 126 : Q3ValueList<Addressee>()
125{ 127{
126 mReverseSorting = false; 128 mReverseSorting = false;
127 mActiveSortingCriterion = FormattedName; 129 mActiveSortingCriterion = FormattedName;
128 mActiveSortingField = 0; 130 mActiveSortingField = 0;
129} 131}
130 132
131AddresseeList::~AddresseeList() 133AddresseeList::~AddresseeList()
132{ 134{
133} 135}
134 136
135AddresseeList::AddresseeList( const AddresseeList &l ) 137AddresseeList::AddresseeList( const AddresseeList &l )
136 : QValueList<Addressee>( l ) 138 : Q3ValueList<Addressee>( l )
137{ 139{
138 mReverseSorting = l.reverseSorting(); 140 mReverseSorting = l.reverseSorting();
139 mActiveSortingCriterion = l.sortingCriterion(); 141 mActiveSortingCriterion = l.sortingCriterion();
140} 142}
141 143
142AddresseeList::AddresseeList( const QValueList<Addressee> &l ) 144AddresseeList::AddresseeList( const Q3ValueList<Addressee> &l )
143 : QValueList<Addressee>( l ) 145 : Q3ValueList<Addressee>( l )
144{ 146{
145 mReverseSorting = false; 147 mReverseSorting = false;
146} 148}
147 149
148void AddresseeList::dump() const 150void AddresseeList::dump() const
149{ 151{
150 kdDebug(5700) << "AddresseeList {" << endl; 152 kdDebug(5700) << "AddresseeList {" << endl;
151 kdDebug(5700) << "reverse order: " << ( mReverseSorting ? "true" : "false" ) << endl; 153 kdDebug(5700) << "reverse order: " << ( mReverseSorting ? "true" : "false" ) << endl;
152 154
153 QString crit; 155 QString crit;
154 if ( Uid == mActiveSortingCriterion ) { 156 if ( Uid == mActiveSortingCriterion ) {
155 crit = "Uid"; 157 crit = "Uid";
156 } else if ( Name == mActiveSortingCriterion ) { 158 } else if ( Name == mActiveSortingCriterion ) {
157 crit = "Name"; 159 crit = "Name";
158 } else if ( FormattedName == mActiveSortingCriterion ) { 160 } else if ( FormattedName == mActiveSortingCriterion ) {
159 crit = "FormattedName"; 161 crit = "FormattedName";
160 } else if ( FamilyName == mActiveSortingCriterion ) { 162 } else if ( FamilyName == mActiveSortingCriterion ) {
161 crit = "FamilyName"; 163 crit = "FamilyName";
162 } else if ( GivenName == mActiveSortingCriterion ) { 164 } else if ( GivenName == mActiveSortingCriterion ) {
163 crit = "GivenName"; 165 crit = "GivenName";
164 } else { 166 } else {
165 crit = "unknown -- update dump method"; 167 crit = "unknown -- update dump method";
166 } 168 }
167 169
168 kdDebug(5700) << "sorting criterion: " << crit << endl; 170 kdDebug(5700) << "sorting criterion: " << crit << endl;
169 171
170//US 172//US
171//US for ( const_iterator it = begin(); it != end(); ++it ) 173//US for ( const_iterator it = begin(); it != end(); ++it )
172 for ( ConstIterator it = begin(); it != end(); ++it ) 174 for ( ConstIterator it = begin(); it != end(); ++it )
173 (*it).dump(); 175 (*it).dump();
174 176
175 kdDebug(5700) << "}" << endl; 177 kdDebug(5700) << "}" << endl;
176} 178}
177 179
178void AddresseeList::sortBy( SortingCriterion c ) 180void AddresseeList::sortBy( SortingCriterion c )
179{ 181{
180 mActiveSortingCriterion = c; 182 mActiveSortingCriterion = c;
181 if ( Uid == c ) { 183 if ( Uid == c ) {
182 sortByTrait<SortingTraits::Uid>(); 184 sortByTrait<SortingTraits::Uid>();
183 } else if ( Name == c ) { 185 } else if ( Name == c ) {
184 sortByTrait<SortingTraits::Name>(); 186 sortByTrait<SortingTraits::Name>();
185 } else if ( FormattedName == c ) { 187 } else if ( FormattedName == c ) {
186 sortByTrait<SortingTraits::FormattedName>(); 188 sortByTrait<SortingTraits::FormattedName>();
187 } else if ( FamilyName == c ) { 189 } else if ( FamilyName == c ) {
188 sortByTrait<SortingTraits::FamilyName>(); 190 sortByTrait<SortingTraits::FamilyName>();
189 } else if ( GivenName==c ) { 191 } else if ( GivenName==c ) {
190 sortByTrait<SortingTraits::GivenName>(); 192 sortByTrait<SortingTraits::GivenName>();
191 } else { 193 } else {
192 kdError(5700) << "AddresseeList sorting criterion passed for which a trait is not known. No sorting done." << endl; 194 kdError(5700) << "AddresseeList sorting criterion passed for which a trait is not known. No sorting done." << endl;
193 } 195 }
194} 196}
195 197
196void AddresseeList::sort() 198void AddresseeList::sort()
197{ 199{
198 sortBy( mActiveSortingCriterion ); 200 sortBy( mActiveSortingCriterion );
199} 201}
200 202
201template<class Trait> 203template<class Trait>
202void AddresseeList::sortByTrait() 204void AddresseeList::sortByTrait()
203{ 205{
204 // FIXME: better sorting algorithm, bubblesort is not acceptable for larger lists. 206 // FIXME: better sorting algorithm, bubblesort is not acceptable for larger lists.
205 // 207 //
206 // for i := 1 to n - 1 208 // for i := 1 to n - 1
207 // do for j := 1 to n - i 209 // do for j := 1 to n - i
208 // do if A[j] > A[j+1] 210 // do if A[j] > A[j+1]
209 // then temp := A[j] 211 // then temp := A[j]
210 // A[j] := A[j + 1] 212 // A[j] := A[j + 1]
211 // A[j + 1 ] := temp 213 // A[j + 1 ] := temp
212 214
213//US iterator i1 = begin(); 215//US iterator i1 = begin();
214 Iterator i1 = begin(); 216 Iterator i1 = begin();
215//US iterator endIt = end(); 217//US iterator endIt = end();
216 Iterator endIt = end(); 218 Iterator endIt = end();
217 --endIt; 219 --endIt;
218 if ( i1 == endIt ) // don't need sorting 220 if ( i1 == endIt ) // don't need sorting
219 return; 221 return;
220 222
221//US iterator i2 = endIt; 223//US iterator i2 = endIt;
222 Iterator i2 = endIt; 224 Iterator i2 = endIt;
223 while( i1 != endIt ) { 225 while( i1 != endIt ) {
224//US iterator j1 = begin(); 226//US iterator j1 = begin();
225 Iterator j1 = begin(); 227 Iterator j1 = begin();
226//US iterator j2 = j1; 228//US iterator j2 = j1;
227 Iterator j2 = j1; 229 Iterator j2 = j1;
228 ++j2; 230 ++j2;
229 while( j1 != i2 ) { 231 while( j1 != i2 ) {
230 if ( !mReverseSorting && Trait::lt( *j2, *j1 ) 232 if ( !mReverseSorting && Trait::lt( *j2, *j1 )
231 || mReverseSorting && Trait::lt( *j1, *j2 ) ) { 233 || mReverseSorting && Trait::lt( *j1, *j2 ) ) {
232 qSwap( *j1, *j2 ); 234 qSwap( *j1, *j2 );
233 } 235 }
234 ++j1; 236 ++j1;
235 ++j2; 237 ++j2;
236 } 238 }
237 ++i1; 239 ++i1;
238 --i2; 240 --i2;
239 } 241 }
240} 242}
241 243
242void AddresseeList::sortByField( Field *field ) 244void AddresseeList::sortByField( Field *field )
243{ 245{
244 if ( field ) 246 if ( field )
245 mActiveSortingField = field; 247 mActiveSortingField = field;
246 248
247 if ( !mActiveSortingField ) { 249 if ( !mActiveSortingField ) {
248 kdWarning(5700) << "sortByField called with no active sort field" << endl; 250 kdWarning(5700) << "sortByField called with no active sort field" << endl;
249 return; 251 return;
250 } 252 }
251 253
252 if ( count() == 0 ) 254 if ( count() == 0 )
253 return; 255 return;
254 256
255 quickSortByField( 0, count() - 1 ); 257 quickSortByField( 0, count() - 1 );
256} 258}
257 259
258void AddresseeList::quickSortByField( int left, int right ) 260void AddresseeList::quickSortByField( int left, int right )
259{ 261{
260 int i = left; 262 int i = left;
261 int j = right; 263 int j = right;
262 int mid = ( left + right ) / 2; 264 int mid = ( left + right ) / 2;
263 265
264//US iterator x = at( mid ); 266//US iterator x = at( mid );
265 ConstIterator x = at( mid ); 267 ConstIterator x = at( mid );
266 268
267 do { 269 do {
268 if ( !mReverseSorting ) { 270 if ( !mReverseSorting ) {
269 //US QString::localeAwareCompare was not available. Used compare instead. 271 //US QString::localeAwareCompare was not available. Used compare instead.
270 while ( QString::compare( mActiveSortingField->value( *at( i ) ).upper(), mActiveSortingField->value( *x ).upper() ) < 0 ) 272 while ( QString::compare( mActiveSortingField->value( *at( i ) ).upper(), mActiveSortingField->value( *x ).upper() ) < 0 )
271 i++; 273 i++;
272 //US QString::localeAwareCompare was not available. Used compare instead. 274 //US QString::localeAwareCompare was not available. Used compare instead.
273 while ( QString::compare( mActiveSortingField->value( *at( j ) ).upper(), mActiveSortingField->value( *x ).upper() ) > 0 ) 275 while ( QString::compare( mActiveSortingField->value( *at( j ) ).upper(), mActiveSortingField->value( *x ).upper() ) > 0 )
274 j--; 276 j--;
275 } else { 277 } else {
276 //US QString::localeAwareCompare was not available. Used compare instead. 278 //US QString::localeAwareCompare was not available. Used compare instead.
277 while ( QString::compare( mActiveSortingField->value( *at( i ) ).upper(), mActiveSortingField->value( *x ).upper() ) > 0 ) 279 while ( QString::compare( mActiveSortingField->value( *at( i ) ).upper(), mActiveSortingField->value( *x ).upper() ) > 0 )
278 i++; 280 i++;
279 //US QString::localeAwareCompare was not available. Used compare instead. 281 //US QString::localeAwareCompare was not available. Used compare instead.
280 while ( QString::compare( mActiveSortingField->value( *at( j ) ).upper(), mActiveSortingField->value( *x ).upper() ) < 0 ) 282 while ( QString::compare( mActiveSortingField->value( *at( j ) ).upper(), mActiveSortingField->value( *x ).upper() ) < 0 )
281 j--; 283 j--;
282 } 284 }
283 if ( i <= j ) { 285 if ( i <= j ) {
284 qSwap( *at( i ), *at( j ) ); 286 qSwap( *at( i ), *at( j ) );
285 i++; 287 i++;
286 j--; 288 j--;
287 } 289 }
288 } while ( i <= j ); 290 } while ( i <= j );
289 291
290 if ( left < j ) quickSortByField( left, j ); 292 if ( left < j ) quickSortByField( left, j );
291 if ( right > i ) quickSortByField( i, right ); 293 if ( right > i ) quickSortByField( i, right );
292} 294}
diff --git a/kabc/addresseelist.h b/kabc/addresseelist.h
index 2df252c..6106804 100644
--- a/kabc/addresseelist.h
+++ b/kabc/addresseelist.h
@@ -1,218 +1,218 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2002 Jost Schenck <jost@schenck.de> 3 Copyright (c) 2002 Jost Schenck <jost@schenck.de>
4 2003 Tobias Koenig <tokoe@kde.org> 4 2003 Tobias Koenig <tokoe@kde.org>
5 5
6 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
10 10
11 This library is distributed in the hope that it will be useful, 11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details. 14 Library General Public License for more details.
15 15
16 You should have received a copy of the GNU Library General Public License 16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to 17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. 19 Boston, MA 02111-1307, USA.
20*/ 20*/
21 21
22/* 22/*
23Enhanced Version of the file for platform independent KDE tools. 23Enhanced Version of the file for platform independent KDE tools.
24Copyright (c) 2004 Ulf Schenk 24Copyright (c) 2004 Ulf Schenk
25 25
26$Id$ 26$Id$
27*/ 27*/
28 28
29#ifndef KABC_ADDRESSEELIST_H 29#ifndef KABC_ADDRESSEELIST_H
30#define KABC_ADDRESSEELIST_H 30#define KABC_ADDRESSEELIST_H
31 31
32#include <qvaluelist.h> 32#include <q3valuelist.h>
33 33
34#include "addressee.h" 34#include "addressee.h"
35 35
36namespace KABC { 36namespace KABC {
37 37
38class Field; 38class Field;
39 39
40/** 40/**
41 * Each trait must implement one static function for equality, one for "less 41 * Each trait must implement one static function for equality, one for "less
42 * than". Class name should be the field name. A trait does not necessarily 42 * than". Class name should be the field name. A trait does not necessarily
43 * have to stick to just one field: a trait sorting by family name can e.g. 43 * have to stick to just one field: a trait sorting by family name can e.g.
44 * sort addressees with equal family name by given name. 44 * sort addressees with equal family name by given name.
45 * 45 *
46 * If you want to implement reverse sorting, you do not have to write another 46 * If you want to implement reverse sorting, you do not have to write another
47 * trait, as AddresseeList takes care of that. 47 * trait, as AddresseeList takes care of that.
48 */ 48 */
49namespace SortingTraits 49namespace SortingTraits
50{ 50{
51 51
52class Uid 52class Uid
53{ 53{
54 public: 54 public:
55 static bool eq( const Addressee &, const Addressee & ); 55 static bool eq( const Addressee &, const Addressee & );
56 static bool lt( const Addressee &, const Addressee & ); 56 static bool lt( const Addressee &, const Addressee & );
57}; 57};
58 58
59class Name 59class Name
60{ 60{
61 public: 61 public:
62 static bool eq( const Addressee &, const Addressee & ); 62 static bool eq( const Addressee &, const Addressee & );
63 static bool lt( const Addressee &, const Addressee & ); 63 static bool lt( const Addressee &, const Addressee & );
64}; 64};
65 65
66class FormattedName 66class FormattedName
67{ 67{
68 public: 68 public:
69 static bool eq( const Addressee &, const Addressee & ); 69 static bool eq( const Addressee &, const Addressee & );
70 static bool lt( const Addressee &, const Addressee & ); 70 static bool lt( const Addressee &, const Addressee & );
71}; 71};
72 72
73class FamilyName // fallback to given name 73class FamilyName // fallback to given name
74{ 74{
75 public: 75 public:
76 static bool eq( const Addressee &, const Addressee & ); 76 static bool eq( const Addressee &, const Addressee & );
77 static bool lt( const Addressee &, const Addressee & ); 77 static bool lt( const Addressee &, const Addressee & );
78}; 78};
79 79
80class GivenName // fallback to family name 80class GivenName // fallback to family name
81{ 81{
82 public: 82 public:
83 static bool eq( const Addressee &, const Addressee & ); 83 static bool eq( const Addressee &, const Addressee & );
84 static bool lt( const Addressee &, const Addressee & ); 84 static bool lt( const Addressee &, const Addressee & );
85}; 85};
86 86
87} 87}
88 88
89/** 89/**
90 * Addressee attribute used for sorting. 90 * Addressee attribute used for sorting.
91 */ 91 */
92typedef enum { Uid, Name, FormattedName, FamilyName, GivenName } SortingCriterion; 92typedef enum { Uid, Name, FormattedName, FamilyName, GivenName } SortingCriterion;
93 93
94/** 94/**
95 * @short a QValueList of Addressee, with sorting functionality 95 * @short a QValueList of Addressee, with sorting functionality
96 * 96 *
97 * This class extends the functionality of QValueList with 97 * This class extends the functionality of QValueList with
98 * sorting methods specific to the Addressee class. It can be used 98 * sorting methods specific to the Addressee class. It can be used
99 * just like any other QValueList but is no template class. 99 * just like any other QValueList but is no template class.
100 * 100 *
101 * An AddresseeList does not automatically keep sorted when addressees 101 * An AddresseeList does not automatically keep sorted when addressees
102 * are added or removed or the sorting order is changed, as this would 102 * are added or removed or the sorting order is changed, as this would
103 * slow down larger operations by sorting after every step. So after 103 * slow down larger operations by sorting after every step. So after
104 * such operations you have to call {@link #sort} or {@link #sortBy} to 104 * such operations you have to call {@link #sort} or {@link #sortBy} to
105 * create a defined order again. 105 * create a defined order again.
106 * 106 *
107 * Iterator usage is inherited by QValueList and extensively documented 107 * Iterator usage is inherited by QValueList and extensively documented
108 * there. Please remember that the state of an iterator is undefined 108 * there. Please remember that the state of an iterator is undefined
109 * after any sorting operation. 109 * after any sorting operation.
110 * 110 *
111 * For the enumeration Type SortingCriterion, which specifies the 111 * For the enumeration Type SortingCriterion, which specifies the
112 * field by the collection will be sorted, the following values exist: 112 * field by the collection will be sorted, the following values exist:
113 * Uid, Name, FormattedName, FamilyName, GivenName. 113 * Uid, Name, FormattedName, FamilyName, GivenName.
114 * 114 *
115 * @author Jost Schenck jost@schenck.de 115 * @author Jost Schenck jost@schenck.de
116 */ 116 */
117class AddresseeList : public QValueList<Addressee> 117class AddresseeList : public Q3ValueList<Addressee>
118{ 118{
119 public: 119 public:
120 AddresseeList(); 120 AddresseeList();
121 ~AddresseeList(); 121 ~AddresseeList();
122 AddresseeList( const AddresseeList & ); 122 AddresseeList( const AddresseeList & );
123 AddresseeList( const QValueList<Addressee> & ); 123 AddresseeList( const Q3ValueList<Addressee> & );
124 124
125 /** 125 /**
126 * Debug output. 126 * Debug output.
127 */ 127 */
128 void dump() const; 128 void dump() const;
129 129
130 /** 130 /**
131 * Determines the direction of sorting. On change, the list 131 * Determines the direction of sorting. On change, the list
132 * will <em>not</em> automatically be resorted. 132 * will <em>not</em> automatically be resorted.
133 * @param r <tt>true</tt> if sorting should be done reverse, <tt>false</tt> otherwise 133 * @param r <tt>true</tt> if sorting should be done reverse, <tt>false</tt> otherwise
134 */ 134 */
135 void setReverseSorting( bool r = true ) { mReverseSorting = r; } 135 void setReverseSorting( bool r = true ) { mReverseSorting = r; }
136 136
137 /** 137 /**
138 * Returns the direction of sorting. 138 * Returns the direction of sorting.
139 * @return <tt>true</tt> if sorting is done reverse, <tt>false</tt> otherwise 139 * @return <tt>true</tt> if sorting is done reverse, <tt>false</tt> otherwise
140 */ 140 */
141 bool reverseSorting() const { return mReverseSorting; } 141 bool reverseSorting() const { return mReverseSorting; }
142 142
143 /** 143 /**
144 * Sorts this list by a specific criterion. 144 * Sorts this list by a specific criterion.
145 * @param c the criterion by which should be sorted 145 * @param c the criterion by which should be sorted
146 */ 146 */
147 void sortBy( SortingCriterion c ); 147 void sortBy( SortingCriterion c );
148 148
149 /** 149 /**
150 * Sorts this list by a specific field. If no parameter is given, the 150 * Sorts this list by a specific field. If no parameter is given, the
151 * last used Field object will be used. 151 * last used Field object will be used.
152 * @param field pointer to the Field object to be sorted by 152 * @param field pointer to the Field object to be sorted by
153 */ 153 */
154 void sortByField( Field *field = 0 ); 154 void sortByField( Field *field = 0 );
155 155
156 /** 156 /**
157 * Sorts this list by its active sorting criterion. This normally is the 157 * Sorts this list by its active sorting criterion. This normally is the
158 * criterion of the last sortBy operation or <tt>FormattedName</tt> if up 158 * criterion of the last sortBy operation or <tt>FormattedName</tt> if up
159 * to now there has been no sortBy operation. 159 * to now there has been no sortBy operation.
160 * 160 *
161 * Please note that the sorting trait of the last {@link #sortByTrait} 161 * Please note that the sorting trait of the last {@link #sortByTrait}
162 * method call is not remembered and thus the action can not be repeated 162 * method call is not remembered and thus the action can not be repeated
163 * by this method. 163 * by this method.
164 */ 164 */
165 void sort(); 165 void sort();
166 166
167 /** 167 /**
168 * Templated sort function. You normally will not want to use this but 168 * Templated sort function. You normally will not want to use this but
169 * {@link #sortBy} and {@link #sort} instead as the existing sorting 169 * {@link #sortBy} and {@link #sort} instead as the existing sorting
170 * criteria completely suffice for most cases. 170 * criteria completely suffice for most cases.
171 * 171 *
172 * However, if you do want to use some special sorting criterion, you can 172 * However, if you do want to use some special sorting criterion, you can
173 * write a trait class that will be provided to this templated method. 173 * write a trait class that will be provided to this templated method.
174 * This trait class has to have a class declaration like the following: 174 * This trait class has to have a class declaration like the following:
175 * <pre> 175 * <pre>
176 * class MySortingTrait { 176 * class MySortingTrait {
177 * public: 177 * public:
178 * // eq returns true if a1 and a2 are equal 178 * // eq returns true if a1 and a2 are equal
179 * static bool eq(KABC::Addressee a1, KABC::Addressee a2); 179 * static bool eq(KABC::Addressee a1, KABC::Addressee a2);
180 * // lt returns true is a1 is "less than" a2 180 * // lt returns true is a1 is "less than" a2
181 * static bool lt(KABC::Addressee a1, KABC::Addressee a2); 181 * static bool lt(KABC::Addressee a1, KABC::Addressee a2);
182 * }; 182 * };
183 * </pre> 183 * </pre>
184 * You can then pass this class to the sortByTrait method like this: 184 * You can then pass this class to the sortByTrait method like this:
185 * <pre> 185 * <pre>
186 * myAddresseelist.sortByTrait&lt;MySortingTrait&gt;(); 186 * myAddresseelist.sortByTrait&lt;MySortingTrait&gt;();
187 * </pre> 187 * </pre>
188 * Please note that the {@link #sort} method can not be used to repeat the 188 * Please note that the {@link #sort} method can not be used to repeat the
189 * sorting of the last <tt>sortByTrait</tt> action. 189 * sorting of the last <tt>sortByTrait</tt> action.
190 * 190 *
191 * Right now this method uses the bubble sort algorithm. This should be 191 * Right now this method uses the bubble sort algorithm. This should be
192 * replaced for a better one when I have time. 192 * replaced for a better one when I have time.
193 */ 193 */
194 template<class Trait> void sortByTrait(); 194 template<class Trait> void sortByTrait();
195 195
196 /** 196 /**
197 * Returns the active sorting criterion, ie the sorting criterion that 197 * Returns the active sorting criterion, ie the sorting criterion that
198 * will be used by a {@link #sort} call. 198 * will be used by a {@link #sort} call.
199 */ 199 */
200 SortingCriterion sortingCriterion() const { return mActiveSortingCriterion; } 200 SortingCriterion sortingCriterion() const { return mActiveSortingCriterion; }
201 201
202 /** 202 /**
203 * Returns the active sorting field, ie a pointer to the Field object 203 * Returns the active sorting field, ie a pointer to the Field object
204 * which was used for the last {@link #sortByField} operation. 204 * which was used for the last {@link #sortByField} operation.
205 */ 205 */
206 Field* sortingField() const { return mActiveSortingField; } 206 Field* sortingField() const { return mActiveSortingField; }
207 207
208 private: 208 private:
209 void quickSortByField( int, int ); 209 void quickSortByField( int, int );
210 210
211 bool mReverseSorting; 211 bool mReverseSorting;
212 SortingCriterion mActiveSortingCriterion; 212 SortingCriterion mActiveSortingCriterion;
213 Field* mActiveSortingField; 213 Field* mActiveSortingField;
214}; 214};
215 215
216} 216}
217 217
218#endif 218#endif
diff --git a/kabc/addresseeview.cpp b/kabc/addresseeview.cpp
index cde19a1..425e67c 100644
--- a/kabc/addresseeview.cpp
+++ b/kabc/addresseeview.cpp
@@ -1,739 +1,744 @@
1/* 1/*
2 This file is part of libkdepim. 2 This file is part of libkdepim.
3 3
4 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 4 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
5 5
6 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
10 10
11 This library is distributed in the hope that it will be useful, 11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details. 14 Library General Public License for more details.
15 15
16 You should have received a copy of the GNU Library General Public License 16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to 17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. 19 Boston, MA 02111-1307, USA.
20*/ 20*/
21 21
22#include <kabc/address.h> 22#include <kabc/address.h>
23#include <kabc/addressee.h> 23#include <kabc/addressee.h>
24#include <kabc/phonenumber.h> 24#include <kabc/phonenumber.h>
25#include <kglobal.h> 25#include <kglobal.h>
26//US#include <kglobalsettings.h> 26//US#include <kglobalsettings.h>
27#include <kiconloader.h> 27#include <kiconloader.h>
28#include <klocale.h> 28#include <klocale.h>
29//US #include <kstringhandler.h> 29//US #include <kstringhandler.h>
30#include <qscrollview.h> 30#include <q3scrollview.h>
31#include <qregexp.h> 31#include <qregexp.h>
32#include <qfile.h> 32#include <qfile.h>
33#include <qvbox.h> 33#include <q3vbox.h>
34#include <qlabel.h> 34#include <qlabel.h>
35#include <qwidget.h> 35#include <qwidget.h>
36#include <qlayout.h> 36#include <qlayout.h>
37#include <qapplication.h> 37#include <qapplication.h>
38#include <qpushbutton.h> 38#include <qpushbutton.h>
39#ifdef DESKTOP_VERSION 39#ifdef DESKTOP_VERSION
40#include <qpaintdevicemetrics.h> 40#include <q3paintdevicemetrics.h>
41#include <qprinter.h> 41#include <qprinter.h>
42#include <qpainter.h> 42#include <qpainter.h>
43#endif 43#endif
44#include <QDesktopWidget>
44 45
45 46
46#include <qstylesheet.h> 47#include <q3stylesheet.h>
48//Added by qt3to4:
49#include <Q3HBoxLayout>
50#include <QPixmap>
51#include <Q3VBoxLayout>
47#include "externalapphandler.h" 52#include "externalapphandler.h"
48#include <kabc/addresseeview.h> 53#include <kabc/addresseeview.h>
49 54
50 55
51//US #ifndef DESKTOP_VERSION 56//US #ifndef DESKTOP_VERSION
52//US #include <qtopia/qcopenvelope_qws.h> 57//US #include <qtopia/qcopenvelope_qws.h>
53//US #include <qpe/qpeapplication.h> 58//US #include <qpe/qpeapplication.h>
54//US #endif 59//US #endif
55 60
56//US static int kphoneInstalled = 0; 61//US static int kphoneInstalled = 0;
57 62
58using namespace KABC; 63using namespace KABC;
59bool AddresseeView::sFullDetailsMode = false; 64bool AddresseeView::sFullDetailsMode = false;
60 65
61AddresseeView::AddresseeView( QWidget *parent, const char *name ) 66AddresseeView::AddresseeView( QWidget *parent, const char *name )
62 : QTextBrowser( parent, name ) 67 : Q3TextBrowser( parent, name )
63 68
64 69
65{ 70{
66//US setWrapPolicy( QTextEdit::AtWordBoundary ); 71//US setWrapPolicy( QTextEdit::AtWordBoundary );
67 setLinkUnderline( false ); 72 setLinkUnderline( false );
68 // setVScrollBarMode( QScrollView::AlwaysOff ); 73 // setVScrollBarMode( QScrollView::AlwaysOff );
69 //setHScrollBarMode( QScrollView::AlwaysOff ); 74 //setHScrollBarMode( QScrollView::AlwaysOff );
70 75
71//US QStyleSheet *sheet = styleSheet(); 76//US QStyleSheet *sheet = styleSheet();
72//US QStyleSheetItem *link = sheet->item( "a" ); 77//US QStyleSheetItem *link = sheet->item( "a" );
73//US link->setColor( KGlobalSettings::linkColor() ); 78//US link->setColor( KGlobalSettings::linkColor() );
74 79
75 80
76} 81}
77void AddresseeView::printMe() 82void AddresseeView::printMe()
78{ 83{
79#ifdef DESKTOP_VERSION 84#ifdef DESKTOP_VERSION
80 QPrinter printer; 85 QPrinter printer;
81 if (!printer.setup() ) 86 if (!printer.setup() )
82 return; 87 return;
83 QPainter p; 88 QPainter p;
84 p.begin ( &printer ); 89 p.begin ( &printer );
85 QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer ); 90 Q3PaintDeviceMetrics m = Q3PaintDeviceMetrics ( &printer );
86 float dx, dy; 91 float dx, dy;
87 int wid = (m.width() * 9)/10; 92 int wid = (m.width() * 9)/10;
88 dx = (float) wid/(float)contentsWidth (); 93 dx = (float) wid/(float)contentsWidth ();
89 dy = (float)(m.height()) / (float)contentsHeight (); 94 dy = (float)(m.height()) / (float)contentsHeight ();
90 float scale; 95 float scale;
91 // scale to fit the width or height of the paper 96 // scale to fit the width or height of the paper
92 if ( dx < dy ) 97 if ( dx < dy )
93 scale = dx; 98 scale = dx;
94 else 99 else
95 scale = dy; 100 scale = dy;
96 p.translate( m.width()/10,0 ); 101 p.translate( m.width()/10,0 );
97 p.scale( scale, scale ); 102 p.scale( scale, scale );
98 drawContents ( &p, 0,0, contentsWidth (), contentsHeight () ); 103 drawContents ( &p, 0,0, contentsWidth (), contentsHeight () );
99 p.end(); 104 p.end();
100#endif 105#endif
101} 106}
102void AddresseeView::setSource(const QString& n) 107void AddresseeView::setSource(const QString& n)
103{ 108{
104 //qDebug("********AddresseeView::setSource %s", n.latin1()); 109 //qDebug("********AddresseeView::setSource %s", n.latin1());
105 110
106 if ( n == "allDetails" ) { 111 if ( n == "allDetails" ) {
107 sFullDetailsMode = true; 112 sFullDetailsMode = true;
108 setAddressee( mCurrentContact ); 113 setAddressee( mCurrentContact );
109 } else if ( n == "notAllDetails" ) { 114 } else if ( n == "notAllDetails" ) {
110 sFullDetailsMode = false; 115 sFullDetailsMode = false;
111 setAddressee( mCurrentContact ); 116 setAddressee( mCurrentContact );
112 } else if ( n.left( 6 ) == "mailto" ) 117 } else if ( n.left( 6 ) == "mailto" )
113 ExternalAppHandler::instance()->mailToOneContact( n.mid(7) ); 118 ExternalAppHandler::instance()->mailToOneContact( n.mid(7) );
114 else if ( n.left( 7 ) == "phoneto" ) 119 else if ( n.left( 7 ) == "phoneto" )
115 ExternalAppHandler::instance()->callByPhone( n.mid(8) ); 120 ExternalAppHandler::instance()->callByPhone( n.mid(8) );
116 else if ( n.left( 5 ) == "faxto" ) 121 else if ( n.left( 5 ) == "faxto" )
117 ExternalAppHandler::instance()->callByFax( n.mid(6) ); 122 ExternalAppHandler::instance()->callByFax( n.mid(6) );
118 else if ( n.left( 5 ) == "smsto" ) 123 else if ( n.left( 5 ) == "smsto" )
119 ExternalAppHandler::instance()->callBySMS( n.mid(6) ); 124 ExternalAppHandler::instance()->callBySMS( n.mid(6) );
120 else if ( n.left( 7 ) == "pagerto" ) 125 else if ( n.left( 7 ) == "pagerto" )
121 ExternalAppHandler::instance()->callByPager( n.mid(8) ); 126 ExternalAppHandler::instance()->callByPager( n.mid(8) );
122 else if ( n.left( 5 ) == "sipto" ) 127 else if ( n.left( 5 ) == "sipto" )
123 ExternalAppHandler::instance()->callBySIP( n.mid(6) ); 128 ExternalAppHandler::instance()->callBySIP( n.mid(6) );
124 129
125} 130}
126void AddresseeView::setAddressee( const KABC::Addressee& mAddressee ) 131void AddresseeView::setAddressee( const KABC::Addressee& mAddressee )
127{ 132{
128 bool kemailAvail = ExternalAppHandler::instance()->isEmailAppAvailable(); 133 bool kemailAvail = ExternalAppHandler::instance()->isEmailAppAvailable();
129 // mAddressee = addr; 134 // mAddressee = addr;
130 // clear view 135 // clear view
131 //setText( QString::null ); 136 //setText( QString::null );
132 mCurrentContact = mAddressee; 137 mCurrentContact = mAddressee;
133 if ( mAddressee.isEmpty() ) { 138 if ( mAddressee.isEmpty() ) {
134 setText( QString::null); 139 setText( QString::null);
135 return; 140 return;
136 } 141 }
137#if 0 142#if 0
138 QString name = ( mAddressee.assembledName().isEmpty() ? 143 QString name = ( mAddressee.assembledName().isEmpty() ?
139 mAddressee.formattedName() : mAddressee.assembledName() ); 144 mAddressee.formattedName() : mAddressee.assembledName() );
140#endif 145#endif
141 146
142 QString name = mAddressee.realName(); 147 QString name = mAddressee.realName();
143 QString assName = mAddressee.assembledName(); 148 QString assName = mAddressee.assembledName();
144 if ( assName.isEmpty() ) 149 if ( assName.isEmpty() )
145 assName = name; 150 assName = name;
146 QString dynamicPart; 151 QString dynamicPart;
147 152
148 dynamicPart += getPhoneNumbers( mAddressee.phoneNumbers(),true ); 153 dynamicPart += getPhoneNumbers( mAddressee.phoneNumbers(),true );
149 QStringList emails = mAddressee.emails(); 154 QStringList emails = mAddressee.emails();
150 QStringList::ConstIterator emailIt; 155 QStringList::ConstIterator emailIt;
151 QString type = i18n( "Email" ); 156 QString type = i18n( "Email" );
152 emailIt = emails.begin(); 157 emailIt = emails.begin();
153 if ( emailIt != emails.end() ) { 158 if ( emailIt != emails.end() ) {
154 if ( kemailAvail ) { 159 if ( kemailAvail ) {
155 dynamicPart += QString( 160 dynamicPart += QString(
156 "<tr><td align=\"right\"><b>%1</b></td>" 161 "<tr><td align=\"right\"><b>%1</b></td>"
157 "<td align=\"left\"><a href=\"mailto:%2 <%3> \">%4</a></td></tr>" ) 162 "<td align=\"left\"><a href=\"mailto:%2 <%3> \">%4</a></td></tr>" )
158 .arg( type ) 163 .arg( type )
159 .arg( assName ) 164 .arg( assName )
160 .arg( *emailIt ) 165 .arg( *emailIt )
161 .arg( *emailIt ); 166 .arg( *emailIt );
162 ++emailIt; 167 ++emailIt;
163 } else { 168 } else {
164 dynamicPart += QString( 169 dynamicPart += QString(
165 "<tr><td align=\"right\"><b>%1</b></td>" 170 "<tr><td align=\"right\"><b>%1</b></td>"
166 "<td align=\"left\">%2</td></tr>" ) 171 "<td align=\"left\">%2</td></tr>" )
167 .arg( type ) 172 .arg( type )
168 .arg( *emailIt ); 173 .arg( *emailIt );
169 ++emailIt; 174 ++emailIt;
170 } 175 }
171 } 176 }
172 if ( mAddressee.birthday().date().isValid() ) { 177 if ( mAddressee.birthday().date().isValid() ) {
173 dynamicPart += QString( 178 dynamicPart += QString(
174 "<tr><td align=\"right\"><b>%1</b></td>" 179 "<tr><td align=\"right\"><b>%1</b></td>"
175 "<td align=\"left\">%2</td></tr>" ) 180 "<td align=\"left\">%2</td></tr>" )
176 .arg( i18n ("Birthday") ) 181 .arg( i18n ("Birthday") )
177 .arg( KGlobal::locale()->formatDate( mAddressee.birthday().date() ,true) ); 182 .arg( KGlobal::locale()->formatDate( mAddressee.birthday().date() ,true) );
178 } 183 }
179 dynamicPart += getPhoneNumbers( mAddressee.phoneNumbers(), false ); 184 dynamicPart += getPhoneNumbers( mAddressee.phoneNumbers(), false );
180 185
181 for ( ; emailIt != emails.end(); ++emailIt ) { 186 for ( ; emailIt != emails.end(); ++emailIt ) {
182 if ( kemailAvail ) { 187 if ( kemailAvail ) {
183 dynamicPart += QString( 188 dynamicPart += QString(
184 "<tr><td align=\"right\"><b>%1</b></td>" 189 "<tr><td align=\"right\"><b>%1</b></td>"
185 "<td align=\"left\"><a href=\"mailto:%2 <%3> \">%4</a></td></tr>" ) 190 "<td align=\"left\"><a href=\"mailto:%2 <%3> \">%4</a></td></tr>" )
186 .arg( type ) 191 .arg( type )
187 .arg( name ) 192 .arg( name )
188 .arg( *emailIt ) 193 .arg( *emailIt )
189 .arg( *emailIt ); 194 .arg( *emailIt );
190 } else { 195 } else {
191 dynamicPart += QString( 196 dynamicPart += QString(
192 "<tr><td align=\"right\"><b>%1</b></td>" 197 "<tr><td align=\"right\"><b>%1</b></td>"
193 "<td align=\"left\">%2</td></tr>" ) 198 "<td align=\"left\">%2</td></tr>" )
194 .arg( type ) 199 .arg( type )
195 .arg( *emailIt ); 200 .arg( *emailIt );
196 } 201 }
197 } 202 }
198 203
199 204
200 205
201 KABC::Address::List addresses = mAddressee.addresses(); 206 KABC::Address::List addresses = mAddressee.addresses();
202 KABC::Address::List::ConstIterator addrIt; 207 KABC::Address::List::ConstIterator addrIt;
203 for ( addrIt = addresses.begin(); addrIt != addresses.end(); ++addrIt ) { 208 for ( addrIt = addresses.begin(); addrIt != addresses.end(); ++addrIt ) {
204 if ( true /*(*addrIt).label().isEmpty()*/ ) { 209 if ( true /*(*addrIt).label().isEmpty()*/ ) {
205 QString formattedAddress = (*addrIt).formattedAddress().stripWhiteSpace(); 210 QString formattedAddress = (*addrIt).formattedAddress().stripWhiteSpace();
206//US formattedAddress = formattedAddress.replace( '\n', "<br>" ); 211//US formattedAddress = formattedAddress.replace( '\n', "<br>" );
207 //qDebug("adresss %s ",formattedAddress.latin1() ); 212 //qDebug("adresss %s ",formattedAddress.latin1() );
208 formattedAddress = formattedAddress.replace( QRegExp("\n"), "<br>" ); 213 formattedAddress = formattedAddress.replace( QRegExp("\n"), "<br>" );
209 //qDebug("AddresseeView::setAddressee has to be verified."); 214 //qDebug("AddresseeView::setAddressee has to be verified.");
210 215
211 dynamicPart += QString( 216 dynamicPart += QString(
212 "<tr><td align=\"right\"><b>%1</b></td>" 217 "<tr><td align=\"right\"><b>%1</b></td>"
213 "<td align=\"left\">%2</td></tr>" ) 218 "<td align=\"left\">%2</td></tr>" )
214 .arg( KABC::Address::typeLabel( (*addrIt).type() ) ) 219 .arg( KABC::Address::typeLabel( (*addrIt).type() ) )
215 .arg( formattedAddress ); 220 .arg( formattedAddress );
216 } else { 221 } else {
217 222
218 dynamicPart += QString( 223 dynamicPart += QString(
219 "<tr><td align=\"right\"><b>%1</b></td>" 224 "<tr><td align=\"right\"><b>%1</b></td>"
220 "<td align=\"left\">%2</td></tr>" ) 225 "<td align=\"left\">%2</td></tr>" )
221 .arg( KABC::Address::typeLabel( (*addrIt).type() ) ) 226 .arg( KABC::Address::typeLabel( (*addrIt).type() ) )
222//US .arg( (*addrIt).label().replace( '\n', "<br>" ) ); 227//US .arg( (*addrIt).label().replace( '\n', "<br>" ) );
223 .arg( (*addrIt).label() /*replace( QRegExp("\n"), "<br>" )*/ ); 228 .arg( (*addrIt).label() /*replace( QRegExp("\n"), "<br>" )*/ );
224 229
225 } 230 }
226 } 231 }
227 232
228 233
229 QString notes; 234 QString notes;
230 if ( sFullDetailsMode ) { 235 if ( sFullDetailsMode ) {
231 notes = QString( 236 notes = QString(
232 "<tr><td align=\"right\"><b>%1</b></td>" 237 "<tr><td align=\"right\"><b>%1</b></td>"
233 "<td align=\"left\"><a href=\"notAllDetails\">%4</a></td></tr>" ) 238 "<td align=\"left\"><a href=\"notAllDetails\">%4</a></td></tr>" )
234 .arg( i18n("Details") ) 239 .arg( i18n("Details") )
235 .arg( i18n("Hide!") ); 240 .arg( i18n("Hide!") );
236 241
237 QString tempX = mAddressee.custom( "KADDRESSBOOK", "X-Gender" ); 242 QString tempX = mAddressee.custom( "KADDRESSBOOK", "X-Gender" );
238 if ( !tempX.isEmpty() ) { 243 if ( !tempX.isEmpty() ) {
239 if ( tempX == "male" || tempX == "female" ) { 244 if ( tempX == "male" || tempX == "female" ) {
240 notes += QString( 245 notes += QString(
241 "<tr><td align=\"right\"><b>%1</b></td>" 246 "<tr><td align=\"right\"><b>%1</b></td>"
242 "<td align=\"left\">%2</td></tr>" ) 247 "<td align=\"left\">%2</td></tr>" )
243 .arg( i18n( "" ) ) 248 .arg( i18n( "" ) )
244 .arg( i18n(tempX) ); 249 .arg( i18n(tempX) );
245 } 250 }
246 } 251 }
247 252
248 253
249 tempX = mAddressee.secrecy().asString(); 254 tempX = mAddressee.secrecy().asString();
250 255
251 notes += QString( 256 notes += QString(
252 "<tr><td align=\"right\"><b>%1</b></td>" 257 "<tr><td align=\"right\"><b>%1</b></td>"
253 "<td align=\"left\">%2</td></tr>" ) 258 "<td align=\"left\">%2</td></tr>" )
254 .arg( "" ) 259 .arg( "" )
255 .arg( tempX ); 260 .arg( tempX );
256 261
257 262
258 tempX = mAddressee.categories().join(" - "); 263 tempX = mAddressee.categories().join(" - ");
259 if ( !tempX.isEmpty() ) { 264 if ( !tempX.isEmpty() ) {
260 notes += QString( 265 notes += QString(
261 "<tr><td align=\"right\"><b>%1</b></td>" 266 "<tr><td align=\"right\"><b>%1</b></td>"
262 "<td align=\"left\">%2</td></tr>" ) 267 "<td align=\"left\">%2</td></tr>" )
263 .arg( i18n( "Category" ) ) 268 .arg( i18n( "Category" ) )
264 .arg( tempX ); 269 .arg( tempX );
265 } 270 }
266 tempX = mAddressee.custom( "KADDRESSBOOK", "X-Profession" ); 271 tempX = mAddressee.custom( "KADDRESSBOOK", "X-Profession" );
267 if ( !tempX.isEmpty() ) { 272 if ( !tempX.isEmpty() ) {
268 notes += QString( 273 notes += QString(
269 "<tr><td align=\"right\"><b>%1</b></td>" 274 "<tr><td align=\"right\"><b>%1</b></td>"
270 "<td align=\"left\">%2</td></tr>" ) 275 "<td align=\"left\">%2</td></tr>" )
271 .arg( i18n( "Profession" ) ) 276 .arg( i18n( "Profession" ) )
272 .arg( tempX ); 277 .arg( tempX );
273 } 278 }
274 tempX = mAddressee.custom( "KADDRESSBOOK", "X-Office" ); 279 tempX = mAddressee.custom( "KADDRESSBOOK", "X-Office" );
275 if ( !tempX.isEmpty() ) { 280 if ( !tempX.isEmpty() ) {
276 notes += QString( 281 notes += QString(
277 "<tr><td align=\"right\"><b>%1</b></td>" 282 "<tr><td align=\"right\"><b>%1</b></td>"
278 "<td align=\"left\">%2</td></tr>" ) 283 "<td align=\"left\">%2</td></tr>" )
279 .arg( i18n( "Office" ) ) 284 .arg( i18n( "Office" ) )
280 .arg( tempX ); 285 .arg( tempX );
281 } 286 }
282 tempX = mAddressee.custom( "KADDRESSBOOK", "X-Department" ); 287 tempX = mAddressee.custom( "KADDRESSBOOK", "X-Department" );
283 if ( !tempX.isEmpty() ) { 288 if ( !tempX.isEmpty() ) {
284 notes += QString( 289 notes += QString(
285 "<tr><td align=\"right\"><b>%1</b></td>" 290 "<tr><td align=\"right\"><b>%1</b></td>"
286 "<td align=\"left\">%2</td></tr>" ) 291 "<td align=\"left\">%2</td></tr>" )
287 .arg( i18n( "Department" ) ) 292 .arg( i18n( "Department" ) )
288 .arg( tempX ); 293 .arg( tempX );
289 } 294 }
290 295
291 tempX = mAddressee.custom( "KADDRESSBOOK", "X-ManagersName" ); 296 tempX = mAddressee.custom( "KADDRESSBOOK", "X-ManagersName" );
292 if ( !tempX.isEmpty() ) { 297 if ( !tempX.isEmpty() ) {
293 notes += QString( 298 notes += QString(
294 "<tr><td align=\"right\"><b>%1</b></td>" 299 "<tr><td align=\"right\"><b>%1</b></td>"
295 "<td align=\"left\">%2</td></tr>" ) 300 "<td align=\"left\">%2</td></tr>" )
296 .arg( i18n( "Manager" ) ) 301 .arg( i18n( "Manager" ) )
297 .arg( tempX ); 302 .arg( tempX );
298 } 303 }
299 tempX = mAddressee.custom( "KADDRESSBOOK", "X-AssistantsName" ); 304 tempX = mAddressee.custom( "KADDRESSBOOK", "X-AssistantsName" );
300 if ( !tempX.isEmpty() ) { 305 if ( !tempX.isEmpty() ) {
301 notes += QString( 306 notes += QString(
302 "<tr><td align=\"right\"><b>%1</b></td>" 307 "<tr><td align=\"right\"><b>%1</b></td>"
303 "<td align=\"left\">%2</td></tr>" ) 308 "<td align=\"left\">%2</td></tr>" )
304 .arg( i18n( "Assistant" ) ) 309 .arg( i18n( "Assistant" ) )
305 .arg( tempX ); 310 .arg( tempX );
306 } 311 }
307 if ( !mAddressee.url().url().isEmpty() ) { 312 if ( !mAddressee.url().url().isEmpty() ) {
308 notes += QString( 313 notes += QString(
309 "<tr><td align=\"right\"><b>%1</b></td>" 314 "<tr><td align=\"right\"><b>%1</b></td>"
310 "<td align=\"left\">%2</td></tr>" ) 315 "<td align=\"left\">%2</td></tr>" )
311 .arg( i18n( "Homepage" ) ) 316 .arg( i18n( "Homepage" ) )
312 .arg( mAddressee.url().url() ); 317 .arg( mAddressee.url().url() );
313 } 318 }
314 tempX = mAddressee.nickName(); 319 tempX = mAddressee.nickName();
315 if ( !tempX.isEmpty() ) { 320 if ( !tempX.isEmpty() ) {
316 notes += QString( 321 notes += QString(
317 "<tr><td align=\"right\"><b>%1</b></td>" 322 "<tr><td align=\"right\"><b>%1</b></td>"
318 "<td align=\"left\">%2</td></tr>" ) 323 "<td align=\"left\">%2</td></tr>" )
319 .arg( i18n( "Nickname" ) ) 324 .arg( i18n( "Nickname" ) )
320 .arg( tempX ); 325 .arg( tempX );
321 } 326 }
322 tempX = mAddressee.custom( "KADDRESSBOOK", "X-IMAddress" ); 327 tempX = mAddressee.custom( "KADDRESSBOOK", "X-IMAddress" );
323 if ( !tempX.isEmpty() ) { 328 if ( !tempX.isEmpty() ) {
324 notes += QString( 329 notes += QString(
325 "<tr><td align=\"right\"><b>%1</b></td>" 330 "<tr><td align=\"right\"><b>%1</b></td>"
326 "<td align=\"left\">%2</td></tr>" ) 331 "<td align=\"left\">%2</td></tr>" )
327 .arg( i18n( "Messanger" ) ) 332 .arg( i18n( "Messanger" ) )
328 .arg( tempX ); 333 .arg( tempX );
329 } 334 }
330 335
331 tempX = mAddressee.custom( "KADDRESSBOOK", "X-Anniversary" ); 336 tempX = mAddressee.custom( "KADDRESSBOOK", "X-Anniversary" );
332 if ( !tempX.isEmpty() ) { 337 if ( !tempX.isEmpty() ) {
333 QDate dt = KGlobal::locale()->readDate( tempX, "%Y-%m-%d"); 338 QDate dt = KGlobal::locale()->readDate( tempX, "%Y-%m-%d");
334 if ( dt.isValid () ) { 339 if ( dt.isValid () ) {
335 tempX = KGlobal::locale()->formatDate(dt, true); 340 tempX = KGlobal::locale()->formatDate(dt, true);
336 notes += QString( 341 notes += QString(
337 "<tr><td align=\"right\"><b>%1</b></td>" 342 "<tr><td align=\"right\"><b>%1</b></td>"
338 "<td align=\"left\">%2</td></tr>" ) 343 "<td align=\"left\">%2</td></tr>" )
339 .arg( i18n( "Anniversary" ) ) 344 .arg( i18n( "Anniversary" ) )
340 .arg( tempX ); 345 .arg( tempX );
341 } 346 }
342 } 347 }
343 tempX = mAddressee.custom( "KADDRESSBOOK", "X-SpousesName" ); 348 tempX = mAddressee.custom( "KADDRESSBOOK", "X-SpousesName" );
344 if ( !tempX.isEmpty() ) { 349 if ( !tempX.isEmpty() ) {
345 notes += QString( 350 notes += QString(
346 "<tr><td align=\"right\"><b>%1</b></td>" 351 "<tr><td align=\"right\"><b>%1</b></td>"
347 "<td align=\"left\">%2</td></tr>" ) 352 "<td align=\"left\">%2</td></tr>" )
348 .arg( i18n( "Spouse" ) ) 353 .arg( i18n( "Spouse" ) )
349 .arg( tempX ); 354 .arg( tempX );
350 } 355 }
351 tempX = mAddressee.custom( "KADDRESSBOOK", "X-Children" ); 356 tempX = mAddressee.custom( "KADDRESSBOOK", "X-Children" );
352 if ( !tempX.isEmpty() ) { 357 if ( !tempX.isEmpty() ) {
353 notes += QString( 358 notes += QString(
354 "<tr><td align=\"right\"><b>%1</b></td>" 359 "<tr><td align=\"right\"><b>%1</b></td>"
355 "<td align=\"left\">%2</td></tr>" ) 360 "<td align=\"left\">%2</td></tr>" )
356 .arg( i18n( "Children" ) ) 361 .arg( i18n( "Children" ) )
357 .arg( tempX ); 362 .arg( tempX );
358 } 363 }
359 364
360 if ( !mAddressee.note().isEmpty() ) { 365 if ( !mAddressee.note().isEmpty() ) {
361 notes += QString( 366 notes += QString(
362 "<tr>" 367 "<tr>"
363 "<td align=\"right\" valign=\"top\"><b>%1</b></td>" // note label 368 "<td align=\"right\" valign=\"top\"><b>%1</b></td>" // note label
364 "<td align=\"left\">%2</td>" // note 369 "<td align=\"left\">%2</td>" // note
365 "</tr>" ).arg( i18n( "Notes" ) ) 370 "</tr>" ).arg( i18n( "Notes" ) )
366 //US .arg( mAddressee.note().replace( '\n', "<br>" ) ); 371 //US .arg( mAddressee.note().replace( '\n', "<br>" ) );
367 .arg( mAddressee.note().replace( QRegExp("\n"), "<br>" ) ); 372 .arg( mAddressee.note().replace( QRegExp("\n"), "<br>" ) );
368 //qDebug("AddresseeView::setAddressee has to be verified."); 373 //qDebug("AddresseeView::setAddressee has to be verified.");
369 } 374 }
370 } else { 375 } else {
371 notes = QString( 376 notes = QString(
372 "<tr><td align=\"right\"><b>%1</b></td>" 377 "<tr><td align=\"right\"><b>%1</b></td>"
373 "<td align=\"left\"><a href=\"allDetails\">%4</a></td></tr>" ) 378 "<td align=\"left\"><a href=\"allDetails\">%4</a></td></tr>" )
374 .arg( i18n("Details") ) 379 .arg( i18n("Details") )
375 .arg( i18n("Show!") ); 380 .arg( i18n("Show!") );
376 381
377 382
378 } 383 }
379 384
380 QString aRole = ""; 385 QString aRole = "";
381 QString aOrga = ""; 386 QString aOrga = "";
382 if ( true /*!mAddressee.role().isEmpty()*/ ) { 387 if ( true /*!mAddressee.role().isEmpty()*/ ) {
383 aRole = "<tr>" 388 aRole = "<tr>"
384 "<td align=\"left\">" + mAddressee.role() + "</td>" 389 "<td align=\"left\">" + mAddressee.role() + "</td>"
385 "</tr>"; 390 "</tr>";
386 } 391 }
387 if ( true /*!mAddressee.organization().isEmpty()*/ ) { 392 if ( true /*!mAddressee.organization().isEmpty()*/ ) {
388 aOrga = "<tr>" 393 aOrga = "<tr>"
389 "<td align=\"left\">" + mAddressee.organization() + "</td>" 394 "<td align=\"left\">" + mAddressee.organization() + "</td>"
390 "</tr>"; 395 "</tr>";
391 } 396 }
392 mText = ""; 397 mText = "";
393 QString picString = ""; 398 QString picString = "";
394 KABC::Picture picture = mAddressee.photo(); 399 KABC::Picture picture = mAddressee.photo();
395 if (picture.undefined() ) picture = mAddressee.logo(); 400 if (picture.undefined() ) picture = mAddressee.logo();
396 bool picAvailintern = false; 401 bool picAvailintern = false;
397 bool picAvailUrl = false; 402 bool picAvailUrl = false;
398 if (! picture.undefined() ) { 403 if (! picture.undefined() ) {
399 picAvailintern = (picture.isIntern() && !picture.data().isNull()); 404 picAvailintern = (picture.isIntern() && !picture.data().isNull());
400 picAvailUrl = !picture.isIntern() && QFile::exists(picture.url() ); 405 picAvailUrl = !picture.isIntern() && QFile::exists(picture.url() );
401 } 406 }
402 if ( picAvailUrl || picAvailintern || QApplication::desktop()->width() > 320 ) { 407 if ( picAvailUrl || picAvailintern || QApplication::desktop()->width() > 320 ) {
403 picString = "<img src=\"myimage\" width=\"50\" height=\"70\">"; 408 picString = "<img src=\"myimage\" width=\"50\" height=\"70\">";
404 if ( picAvailintern ) { 409 if ( picAvailintern ) {
405 QMimeSourceFactory::defaultFactory()->setImage( "myimage", picture.data() ); 410 Q3MimeSourceFactory::defaultFactory()->setImage( "myimage", picture.data() );
406 int wid = picture.data().width(); 411 int wid = picture.data().width();
407 int hei = picture.data().height(); 412 int hei = picture.data().height();
408 if ( wid > 128 || hei > 128 ) { 413 if ( wid > 128 || hei > 128 ) {
409 if ( wid > hei ) { 414 if ( wid > hei ) {
410 hei = (hei*128)/wid; 415 hei = (hei*128)/wid;
411 wid = 128; 416 wid = 128;
412 } else { 417 } else {
413 wid = (wid*128)/hei; 418 wid = (wid*128)/hei;
414 hei = 128; 419 hei = 128;
415 } 420 }
416 } 421 }
417 picString = QString("<img src=\"myimage\" width=\"%1\" height=\"%2\">").arg(wid).arg(hei); 422 picString = QString("<img src=\"myimage\" width=\"%1\" height=\"%2\">").arg(wid).arg(hei);
418 } else { 423 } else {
419 if ( picAvailUrl ) { 424 if ( picAvailUrl ) {
420 QPixmap picPix( picture.url() ); 425 QPixmap picPix( picture.url() );
421 QMimeSourceFactory::defaultFactory()->setPixmap( "myimage", picPix ); 426 Q3MimeSourceFactory::defaultFactory()->setPixmap( "myimage", picPix );
422 int wid = picPix.width(); 427 int wid = picPix.width();
423 int hei = picPix.height(); 428 int hei = picPix.height();
424 if ( wid > 128 || hei > 128 ) { 429 if ( wid > 128 || hei > 128 ) {
425 if ( wid > hei ) { 430 if ( wid > hei ) {
426 hei = (hei*128)/wid; 431 hei = (hei*128)/wid;
427 wid = 128; 432 wid = 128;
428 } else { 433 } else {
429 wid = (wid*128)/hei; 434 wid = (wid*128)/hei;
430 hei = 128; 435 hei = 128;
431 } 436 }
432 } 437 }
433 picString = QString("<img src=\"myimage\" width=\"%1\" height=\"%2\">").arg(wid).arg(hei); 438 picString = QString("<img src=\"myimage\" width=\"%1\" height=\"%2\">").arg(wid).arg(hei);
434 } else { 439 } else {
435 if ( !mAddressee.custom( "KADDRESSBOOK", "X-Children" ).isEmpty() ) { 440 if ( !mAddressee.custom( "KADDRESSBOOK", "X-Children" ).isEmpty() ) {
436 static bool setDefaultImageChildren = false; 441 static bool setDefaultImageChildren = false;
437 if ( !setDefaultImageChildren ) { 442 if ( !setDefaultImageChildren ) {
438 QMimeSourceFactory::defaultFactory()->setPixmap( "familyIcon", KGlobal::iconLoader()->loadIcon( "ic_kids", KIcon::Desktop, 128 ) ); 443 Q3MimeSourceFactory::defaultFactory()->setPixmap( "familyIcon", KGlobal::iconLoader()->loadIcon( "ic_kids", KIcon::Desktop, 128 ) );
439 setDefaultImageChildren = true; 444 setDefaultImageChildren = true;
440 } 445 }
441 picString = "<img src=\"familyIcon\" width=\"64\" height=\"64\">"; 446 picString = "<img src=\"familyIcon\" width=\"64\" height=\"64\">";
442 447
443 } else if ( !mAddressee.custom( "KADDRESSBOOK", "X-SpousesName" ).isEmpty() ) { 448 } else if ( !mAddressee.custom( "KADDRESSBOOK", "X-SpousesName" ).isEmpty() ) {
444 static bool setDefaultImagepouses = false; 449 static bool setDefaultImagepouses = false;
445 if ( !setDefaultImagepouses ) { 450 if ( !setDefaultImagepouses ) {
446 QMimeSourceFactory::defaultFactory()->setPixmap( "SpousesIcon", KGlobal::iconLoader()->loadIcon( "ic_family", KIcon::Desktop, 128 ) ); 451 Q3MimeSourceFactory::defaultFactory()->setPixmap( "SpousesIcon", KGlobal::iconLoader()->loadIcon( "ic_family", KIcon::Desktop, 128 ) );
447 setDefaultImagepouses = true; 452 setDefaultImagepouses = true;
448 } 453 }
449 picString = "<img src=\"SpousesIcon\" width=\"64\" height=\"64\">"; 454 picString = "<img src=\"SpousesIcon\" width=\"64\" height=\"64\">";
450 } else { 455 } else {
451 QString gen = mAddressee.custom( "KADDRESSBOOK", "X-Gender" ); 456 QString gen = mAddressee.custom( "KADDRESSBOOK", "X-Gender" );
452 if ( gen == "male" ) { 457 if ( gen == "male" ) {
453 static bool setDefaultImageMale = false; 458 static bool setDefaultImageMale = false;
454 if ( !setDefaultImageMale ) { 459 if ( !setDefaultImageMale ) {
455 QMimeSourceFactory::defaultFactory()->setPixmap( "MaleIcon", KGlobal::iconLoader()->loadIcon( "ic_male", KIcon::Desktop, 128 ) ); 460 Q3MimeSourceFactory::defaultFactory()->setPixmap( "MaleIcon", KGlobal::iconLoader()->loadIcon( "ic_male", KIcon::Desktop, 128 ) );
456 setDefaultImageMale = true; 461 setDefaultImageMale = true;
457 } 462 }
458 picString = "<img src=\"MaleIcon\" width=\"64\" height=\"64\">"; 463 picString = "<img src=\"MaleIcon\" width=\"64\" height=\"64\">";
459 464
460 } else if ( gen == "female" ) { 465 } else if ( gen == "female" ) {
461 static bool setDefaultImageFemale = false; 466 static bool setDefaultImageFemale = false;
462 if ( !setDefaultImageFemale ) { 467 if ( !setDefaultImageFemale ) {
463 QMimeSourceFactory::defaultFactory()->setPixmap( "FemaleIcon", KGlobal::iconLoader()->loadIcon( "ic_female", KIcon::Desktop, 128 ) ); 468 Q3MimeSourceFactory::defaultFactory()->setPixmap( "FemaleIcon", KGlobal::iconLoader()->loadIcon( "ic_female", KIcon::Desktop, 128 ) );
464 setDefaultImageFemale = true; 469 setDefaultImageFemale = true;
465 } 470 }
466 picString = "<img src=\"FemaleIcon\" width=\"64\" height=\"64\">"; 471 picString = "<img src=\"FemaleIcon\" width=\"64\" height=\"64\">";
467 472
468 } else { 473 } else {
469 static bool setDefaultImage = false; 474 static bool setDefaultImage = false;
470 if ( !setDefaultImage ) { 475 if ( !setDefaultImage ) {
471 //qDebug("Setting default pixmap "); 476 //qDebug("Setting default pixmap ");
472 QMimeSourceFactory::defaultFactory()->setPixmap( "defaultIcon", KGlobal::iconLoader()->loadIcon( "ic_penguin", KIcon::Desktop, 128 ) ); 477 Q3MimeSourceFactory::defaultFactory()->setPixmap( "defaultIcon", KGlobal::iconLoader()->loadIcon( "ic_penguin", KIcon::Desktop, 128 ) );
473 setDefaultImage = true; 478 setDefaultImage = true;
474 } 479 }
475 picString = "<img src=\"defaultIcon\" width=\"64\" height=\"64\">"; 480 picString = "<img src=\"defaultIcon\" width=\"64\" height=\"64\">";
476 } 481 }
477 } 482 }
478 } 483 }
479 } 484 }
480 mText = QString::fromLatin1( 485 mText = QString::fromLatin1(
481 "<html>" 486 "<html>"
482 "<body text=\"%1\" bgcolor=\"%2\">" // text and background color 487 "<body text=\"%1\" bgcolor=\"%2\">" // text and background color
483 "<table>" 488 "<table>"
484 "<tr>" 489 "<tr>"
485 "<td rowspan=\"3\" align=\"right\" valign=\"top\">" 490 "<td rowspan=\"3\" align=\"right\" valign=\"top\">"
486 "%3" 491 "%3"
487 "</td>" 492 "</td>"
488 "<td align=\"left\"><font size=\"+2\"><b>%4</b></font></td>" // name 493 "<td align=\"left\"><font size=\"+2\"><b>%4</b></font></td>" // name
489 "</tr>" 494 "</tr>"
490 "%5" // role 495 "%5" // role
491 "%6" // organization 496 "%6" // organization
492 "<td colspan=\"2\">&nbsp;</td>" 497 "<td colspan=\"2\">&nbsp;</td>"
493 "%7" // dynamic part 498 "%7" // dynamic part
494 "%8" // notes 499 "%8" // notes
495 "</table>" 500 "</table>"
496 "</body>" 501 "</body>"
497 "</html>") 502 "</html>")
498//US 503//US
499 .arg( /*KGlobalSettings::textColor().name()*/ "black" ) 504 .arg( /*KGlobalSettings::textColor().name()*/ "black" )
500//US 505//US
501 .arg( /*KGlobalSettings::baseColor().name()*/ "white" ) 506 .arg( /*KGlobalSettings::baseColor().name()*/ "white" )
502 .arg( picString ) 507 .arg( picString )
503 .arg( name ) 508 .arg( name )
504 .arg( aRole ) 509 .arg( aRole )
505 .arg( aOrga ) 510 .arg( aOrga )
506 .arg( dynamicPart ) 511 .arg( dynamicPart )
507 .arg( notes ); 512 .arg( notes );
508 513
509 } else { // no picture! 514 } else { // no picture!
510 515
511mText = "<table width=\"100%\">\n"; 516mText = "<table width=\"100%\">\n";
512 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>"; 517 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>";
513#ifdef DESKTOP_VERSION 518#ifdef DESKTOP_VERSION
514 mText += "<tr bgcolor=\"#5699CD\"><td align=\"left\"><h1>"; 519 mText += "<tr bgcolor=\"#5699CD\"><td align=\"left\"><h1>";
515 mText += "<font color=\"#FFFFFF\">" + name +"</font></h1>"; 520 mText += "<font color=\"#FFFFFF\">" + name +"</font></h1>";
516#else 521#else
517 mText += "<tr bgcolor=\"#5699CD\"><td align=\"left\"><h3>"; 522 mText += "<tr bgcolor=\"#5699CD\"><td align=\"left\"><h3>";
518 mText += "<font color=\"#FFFFFF\"> " + name +"</font></h3>"; 523 mText += "<font color=\"#FFFFFF\"> " + name +"</font></h3>";
519#endif 524#endif
520 525
521 mText += "</td></tr>\n<tr bgcolor=\"#EAF8FA\"><td>"; 526 mText += "</td></tr>\n<tr bgcolor=\"#EAF8FA\"><td>";
522 527
523 mText += "<table><td colspan=\"2\">&nbsp;</td>"; 528 mText += "<table><td colspan=\"2\">&nbsp;</td>";
524 /* 529 /*
525 mText += QString("<tr><td align=\"right\"><b2>%1</b2></td>" 530 mText += QString("<tr><td align=\"right\"><b2>%1</b2></td>"
526 "<td align=\"left\"><b>%2</b></td></tr>" ) 531 "<td align=\"left\"><b>%2</b></td></tr>" )
527 .arg( i18n(" ") ) 532 .arg( i18n(" ") )
528 .arg( name ); 533 .arg( name );
529 */ 534 */
530 if ( ! mAddressee.role().isEmpty() ) 535 if ( ! mAddressee.role().isEmpty() )
531 mText += QString("<tr><td align=\"right\"><b>%1</b></td>" 536 mText += QString("<tr><td align=\"right\"><b>%1</b></td>"
532 "<td align=\"left\">%2</td></tr>" ) 537 "<td align=\"left\">%2</td></tr>" )
533 .arg( i18n(" ") ) 538 .arg( i18n(" ") )
534 .arg( mAddressee.role()); 539 .arg( mAddressee.role());
535 if ( ! mAddressee.organization().isEmpty() ) 540 if ( ! mAddressee.organization().isEmpty() )
536 mText += QString("<tr><td align=\"right\"><b>%1</b></td>" 541 mText += QString("<tr><td align=\"right\"><b>%1</b></td>"
537 "<td align=\"left\">%2</td></tr>" ) 542 "<td align=\"left\">%2</td></tr>" )
538 .arg( i18n(" ") ) 543 .arg( i18n(" ") )
539 .arg( mAddressee.organization()); 544 .arg( mAddressee.organization());
540 mText += dynamicPart; 545 mText += dynamicPart;
541 mText += notes; 546 mText += notes;
542 mText += "</table>"; 547 mText += "</table>";
543 548
544 } 549 }
545 550
546 // at last display it... 551 // at last display it...
547 setText( mText ); 552 setText( mText );
548 553
549} 554}
550 555
551QString AddresseeView::getPhoneNumbers( KABC::PhoneNumber::List phones_unsorted ,bool preferred ) 556QString AddresseeView::getPhoneNumbers( KABC::PhoneNumber::List phones_unsorted ,bool preferred )
552{ 557{
553 ExternalAppHandler* eah = ExternalAppHandler::instance(); 558 ExternalAppHandler* eah = ExternalAppHandler::instance();
554 bool kphoneAvail = eah->isPhoneAppAvailable(); 559 bool kphoneAvail = eah->isPhoneAppAvailable();
555 bool kfaxAvail = eah->isFaxAppAvailable(); 560 bool kfaxAvail = eah->isFaxAppAvailable();
556 bool ksmsAvail = eah->isSMSAppAvailable(); 561 bool ksmsAvail = eah->isSMSAppAvailable();
557 bool kpagerAvail = eah->isPagerAppAvailable(); 562 bool kpagerAvail = eah->isPagerAppAvailable();
558 bool ksipAvail = eah->isSIPAppAvailable(); 563 bool ksipAvail = eah->isSIPAppAvailable();
559 QString dynamicPart; 564 QString dynamicPart;
560 KABC::PhoneNumber::List::ConstIterator phoneIt; 565 KABC::PhoneNumber::List::ConstIterator phoneIt;
561 QString extension; 566 QString extension;
562 int phonetype; 567 int phonetype;
563 QString sms; 568 QString sms;
564 569
565 KABC::PhoneNumber::List::Iterator it; 570 KABC::PhoneNumber::List::Iterator it;
566 KABC::PhoneNumber::List phones ; 571 KABC::PhoneNumber::List phones ;
567 572
568 PhoneNumber::TypeList tList = PhoneNumber::supportedTypeList(); 573 PhoneNumber::TypeList tList = PhoneNumber::supportedTypeList();
569 int i = 0; 574 int i = 0;
570 int max = tList.count(); 575 int max = tList.count();
571 while ( i < max-1 ) { 576 while ( i < max-1 ) {
572 for ( it = phones_unsorted.begin(); it != phones_unsorted.end(); ++it ) { 577 for ( it = phones_unsorted.begin(); it != phones_unsorted.end(); ++it ) {
573 if ( (*it).type() == tList[i] ) { 578 if ( (*it).type() == tList[i] ) {
574 phones.append( (*it ) ); 579 phones.append( (*it ) );
575 break; 580 break;
576 } 581 }
577 } 582 }
578 ++i; 583 ++i;
579 } 584 }
580 for ( it = phones_unsorted.begin(); it != phones_unsorted.end(); ++it ) { 585 for ( it = phones_unsorted.begin(); it != phones_unsorted.end(); ++it ) {
581 if ( (*it).type() == tList[ max-1 ] ) 586 if ( (*it).type() == tList[ max-1 ] )
582 phones.append( (*it ) ); 587 phones.append( (*it ) );
583 } 588 }
584 589
585 for ( phoneIt = phones.begin(); phoneIt != phones.end(); ++phoneIt ) { 590 for ( phoneIt = phones.begin(); phoneIt != phones.end(); ++phoneIt ) {
586 phonetype = (*phoneIt).type(); 591 phonetype = (*phoneIt).type();
587 bool con = false; 592 bool con = false;
588 if ( ((phonetype & KABC::PhoneNumber::Pref) == 0 ) == preferred ) con = true; 593 if ( ((phonetype & KABC::PhoneNumber::Pref) == 0 ) == preferred ) con = true;
589 if ((phonetype & KABC::PhoneNumber::Cell) == KABC::PhoneNumber::Cell ) con = !preferred;; 594 if ((phonetype & KABC::PhoneNumber::Cell) == KABC::PhoneNumber::Cell ) con = !preferred;;
590 if ( con ) 595 if ( con )
591 continue; 596 continue;
592 597
593 if (ksmsAvail && 598 if (ksmsAvail &&
594 ( 599 (
595 ((phonetype & KABC::PhoneNumber::Car) == KABC::PhoneNumber::Car) || 600 ((phonetype & KABC::PhoneNumber::Car) == KABC::PhoneNumber::Car) ||
596 ((phonetype & KABC::PhoneNumber::Cell) == KABC::PhoneNumber::Cell) 601 ((phonetype & KABC::PhoneNumber::Cell) == KABC::PhoneNumber::Cell)
597 ) 602 )
598 ) 603 )
599 { 604 {
600 sms = QString("<a href=\"smsto:%1 \">(sms)</a>" ) 605 sms = QString("<a href=\"smsto:%1 \">(sms)</a>" )
601 .arg( (*phoneIt).number() ); 606 .arg( (*phoneIt).number() );
602 607
603 } 608 }
604 else 609 else
605 sms = ""; 610 sms = "";
606 611
607 extension = QString::null; 612 extension = QString::null;
608 if ((phonetype & KABC::PhoneNumber::Fax) == KABC::PhoneNumber::Fax) { 613 if ((phonetype & KABC::PhoneNumber::Fax) == KABC::PhoneNumber::Fax) {
609 if (kfaxAvail) extension = "faxto:"; 614 if (kfaxAvail) extension = "faxto:";
610 } 615 }
611 else if ((phonetype & KABC::PhoneNumber::Pager) == KABC::PhoneNumber::Pager) { 616 else if ((phonetype & KABC::PhoneNumber::Pager) == KABC::PhoneNumber::Pager) {
612 if (kpagerAvail) extension = "pagerto:"; 617 if (kpagerAvail) extension = "pagerto:";
613 } 618 }
614#if 0 619#if 0
615 else if ((phonetype & KABC::PhoneNumber::Sip) == KABC::PhoneNumber::Sip) { 620 else if ((phonetype & KABC::PhoneNumber::Sip) == KABC::PhoneNumber::Sip) {
616 if (ksipAvail) extension = "sipto:"; 621 if (ksipAvail) extension = "sipto:";
617 } 622 }
618#endif 623#endif
619 else if (kphoneAvail) { 624 else if (kphoneAvail) {
620 extension = "phoneto:"; 625 extension = "phoneto:";
621 } 626 }
622 else 627 else
623 extension = QString::null; 628 extension = QString::null;
624 629
625 if ( !extension.isEmpty() ) { 630 if ( !extension.isEmpty() ) {
626 dynamicPart += QString( 631 dynamicPart += QString(
627 "<tr><td align=\"right\"><b>%1</b></td>" 632 "<tr><td align=\"right\"><b>%1</b></td>"
628 "<td align=\"left\"><a href=\"%2%3 \">%4</a> %5</td></tr>" ) 633 "<td align=\"left\"><a href=\"%2%3 \">%4</a> %5</td></tr>" )
629 .arg( KABC::PhoneNumber::typeLabel( phonetype ) ) 634 .arg( KABC::PhoneNumber::typeLabel( phonetype ) )
630 .arg( extension ) 635 .arg( extension )
631 .arg( (*phoneIt).number() ) 636 .arg( (*phoneIt).number() )
632 .arg( (*phoneIt).number() ) 637 .arg( (*phoneIt).number() )
633 .arg( sms ); 638 .arg( sms );
634 639
635 } else { 640 } else {
636 dynamicPart += QString( 641 dynamicPart += QString(
637 "<tr><td align=\"right\"><b>%1</b></td>" 642 "<tr><td align=\"right\"><b>%1</b></td>"
638 "<td align=\"left\">%2 %3</td></tr>" ) 643 "<td align=\"left\">%2 %3</td></tr>" )
639 .arg( KABC::PhoneNumber::typeLabel( phonetype ) ) 644 .arg( KABC::PhoneNumber::typeLabel( phonetype ) )
640 .arg( (*phoneIt).number() ) 645 .arg( (*phoneIt).number() )
641 .arg( sms ); 646 .arg( sms );
642 } 647 }
643 } 648 }
644 return dynamicPart; 649 return dynamicPart;
645} 650}
646/* 651/*
647KABC::Addressee AddresseeView::addressee() const 652KABC::Addressee AddresseeView::addressee() const
648{ 653{
649 return mAddressee; 654 return mAddressee;
650} 655}
651*/ 656*/
652void AddresseeView::addTag(const QString & tag,const QString & text) 657void AddresseeView::addTag(const QString & tag,const QString & text)
653{ 658{
654 if ( text.isEmpty() ) 659 if ( text.isEmpty() )
655 return; 660 return;
656 int number=text.contains("\n"); 661 int number=text.count("\n");
657 QString str = "<" + tag + ">"; 662 QString str = "<" + tag + ">";
658 QString tmpText=text; 663 QString tmpText=text;
659 QString tmpStr=str; 664 QString tmpStr=str;
660 if(number !=-1) 665 if(number !=-1)
661 { 666 {
662 if (number > 0) { 667 if (number > 0) {
663 int pos=0; 668 int pos=0;
664 QString tmp; 669 QString tmp;
665 for(int i=0;i<=number;i++) { 670 for(int i=0;i<=number;i++) {
666 pos=tmpText.find("\n"); 671 pos=tmpText.find("\n");
667 tmp=tmpText.left(pos); 672 tmp=tmpText.left(pos);
668 tmpText=tmpText.right(tmpText.length()-pos-1); 673 tmpText=tmpText.right(tmpText.length()-pos-1);
669 tmpStr+=tmp+"<br>"; 674 tmpStr+=tmp+"<br>";
670 } 675 }
671 } 676 }
672 else tmpStr += tmpText; 677 else tmpStr += tmpText;
673 tmpStr+="</" + tag + ">"; 678 tmpStr+="</" + tag + ">";
674 mText.append(tmpStr); 679 mText.append(tmpStr);
675 } 680 }
676 else 681 else
677 { 682 {
678 str += text + "</" + tag + ">"; 683 str += text + "</" + tag + ">";
679 mText.append(str); 684 mText.append(str);
680 } 685 }
681} 686}
682 687
683AddresseeChooser::AddresseeChooser( KABC::Addressee loc, KABC::Addressee rem, bool takeloc, QWidget *parent, const char *name ) : KDialogBase(parent,name, 688AddresseeChooser::AddresseeChooser( KABC::Addressee loc, KABC::Addressee rem, bool takeloc, QWidget *parent, const char *name ) : KDialogBase(parent,name,
684 true ,i18n("Conflict! Please choose Adressee!"),Ok|User1|Close,Close, false) 689 true ,i18n("Conflict! Please choose Adressee!"),Ok|User1|Close,Close, false)
685{ 690{
686 findButton( Close )->setText( i18n("Cancel Sync")); 691 findButton( Close )->setText( i18n("Cancel Sync"));
687 findButton( Ok )->setText( i18n("Remote")); 692 findButton( Ok )->setText( i18n("Remote"));
688 findButton( User1 )->setText( i18n("Local")); 693 findButton( User1 )->setText( i18n("Local"));
689 QWidget* topframe = new QWidget( this ); 694 QWidget* topframe = new QWidget( this );
690 setMainWidget( topframe ); 695 setMainWidget( topframe );
691 QBoxLayout* bl; 696 Q3BoxLayout* bl;
692 if ( QApplication::desktop()->width() < 640 ) { 697 if ( QApplication::desktop()->width() < 640 ) {
693 bl = new QVBoxLayout( topframe ); 698 bl = new Q3VBoxLayout( topframe );
694 } else { 699 } else {
695 bl = new QHBoxLayout( topframe ); 700 bl = new Q3HBoxLayout( topframe );
696 } 701 }
697 QVBox* subframe = new QVBox( topframe ); 702 Q3VBox* subframe = new Q3VBox( topframe );
698 bl->addWidget(subframe ); 703 bl->addWidget(subframe );
699 QLabel* lab = new QLabel( i18n("Local Addressee"), subframe ); 704 QLabel* lab = new QLabel( i18n("Local Addressee"), subframe );
700 if ( takeloc ) 705 if ( takeloc )
701 lab->setBackgroundColor(Qt::green.light() ); 706 lab->setBackgroundColor(QColor(Qt::green).light() );
702 AddresseeView * av = new AddresseeView( subframe ); 707 AddresseeView * av = new AddresseeView( subframe );
703 av->setAddressee( loc ); 708 av->setAddressee( loc );
704 subframe = new QVBox( topframe ); 709 subframe = new Q3VBox( topframe );
705 bl->addWidget(subframe ); 710 bl->addWidget(subframe );
706 lab = new QLabel( i18n("Remote Addressee"), subframe ); 711 lab = new QLabel( i18n("Remote Addressee"), subframe );
707 if ( !takeloc ) 712 if ( !takeloc )
708 lab->setBackgroundColor(Qt::green.light() ); 713 lab->setBackgroundColor(QColor(Qt::green).light() );
709 av = new AddresseeView( subframe ); 714 av = new AddresseeView( subframe );
710 av->setAddressee( rem ); 715 av->setAddressee( rem );
711 QObject::connect(findButton( Ok ),SIGNAL(clicked()),this, SLOT(slot_remote())); 716 QObject::connect(findButton( Ok ),SIGNAL(clicked()),this, SLOT(slot_remote()));
712 QObject::connect(this,SIGNAL(user1Clicked()),this, SLOT(slot_local())); 717 QObject::connect(this,SIGNAL(user1Clicked()),this, SLOT(slot_local()));
713#ifndef DESKTOP_VERSION 718#ifndef DESKTOP_VERSION
714 showMaximized(); 719 showMaximized();
715#else 720#else
716 resize ( 640, 400 ); 721 resize ( 640, 400 );
717#endif 722#endif
718} 723}
719 724
720int AddresseeChooser::executeD( bool local ) 725int AddresseeChooser::executeD( bool local )
721{ 726{
722 mSyncResult = 3; 727 mSyncResult = 3;
723 if ( local ) 728 if ( local )
724 findButton( User1 )->setFocus(); 729 findButton( User1 )->setFocus();
725 else 730 else
726 findButton( Ok )->setFocus(); 731 findButton( Ok )->setFocus();
727 exec(); 732 exec();
728 return mSyncResult; 733 return mSyncResult;
729} 734}
730void AddresseeChooser::slot_remote() 735void AddresseeChooser::slot_remote()
731{ 736{
732 mSyncResult = 2; 737 mSyncResult = 2;
733 accept(); 738 accept();
734} 739}
735void AddresseeChooser::slot_local() 740void AddresseeChooser::slot_local()
736{ 741{
737 mSyncResult = 1; 742 mSyncResult = 1;
738 accept(); 743 accept();
739} 744}
diff --git a/kabc/addresseeview.h b/kabc/addresseeview.h
index a4de085..f7ce2e0 100644
--- a/kabc/addresseeview.h
+++ b/kabc/addresseeview.h
@@ -1,82 +1,82 @@
1/* 1/*
2 This file is part of libkdepim. 2 This file is part of libkdepim.
3 3
4 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 4 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
5 5
6 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
10 10
11 This library is distributed in the hope that it will be useful, 11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details. 14 Library General Public License for more details.
15 15
16 You should have received a copy of the GNU Library General Public License 16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to 17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. 19 Boston, MA 02111-1307, USA.
20*/ 20*/
21 21
22#ifndef KPIM_ADDRESSEEVIEW_H 22#ifndef KPIM_ADDRESSEEVIEW_H
23#define KPIM_ADDRESSEEVIEW_H 23#define KPIM_ADDRESSEEVIEW_H
24 24
25#include <kabc/addressee.h> 25#include <kabc/addressee.h>
26#include <kdialogbase.h> 26#include <kdialogbase.h>
27 27
28//US #include <ktextbrowser.h> 28//US #include <ktextbrowser.h>
29#include <qtextbrowser.h> 29#include <q3textbrowser.h>
30 30
31namespace KABC { 31namespace KABC {
32 32
33//US class AddresseeView : public KTextBrowser 33//US class AddresseeView : public KTextBrowser
34class AddresseeView : public QTextBrowser 34class AddresseeView : public Q3TextBrowser
35{ 35{
36 36
37 public: 37 public:
38 AddresseeView( QWidget *parent = 0, const char *name = 0 ); 38 AddresseeView( QWidget *parent = 0, const char *name = 0 );
39 39
40 /** 40 /**
41 Sets the addressee object. The addressee is displayed immediately. 41 Sets the addressee object. The addressee is displayed immediately.
42 42
43 @param addr The addressee object. 43 @param addr The addressee object.
44 */ 44 */
45 void setAddressee( const KABC::Addressee& addr ); 45 void setAddressee( const KABC::Addressee& addr );
46 void setSource(const QString& n); 46 void setSource(const QString& n);
47 /** 47 /**
48 Returns the current addressee object. 48 Returns the current addressee object.
49 */ 49 */
50 //KABC::Addressee addressee() const; 50 //KABC::Addressee addressee() const;
51 void printMe(); 51 void printMe();
52 static bool sFullDetailsMode; 52 static bool sFullDetailsMode;
53 private: 53 private:
54 Addressee mCurrentContact; 54 Addressee mCurrentContact;
55 //KABC::Addressee mAddressee; 55 //KABC::Addressee mAddressee;
56 QString mText; 56 QString mText;
57 QString getPhoneNumbers( KABC::PhoneNumber::List phones, bool preferred ); 57 QString getPhoneNumbers( KABC::PhoneNumber::List phones, bool preferred );
58 void addTag(const QString & tag,const QString & text); 58 void addTag(const QString & tag,const QString & text);
59 //class AddresseeViewPrivate; 59 //class AddresseeViewPrivate;
60 //AddresseeViewPrivate *d; 60 //AddresseeViewPrivate *d;
61}; 61};
62class AddresseeChooser : public KDialogBase 62class AddresseeChooser : public KDialogBase
63{ 63{
64 Q_OBJECT 64 Q_OBJECT
65 65
66 public: 66 public:
67 AddresseeChooser( KABC::Addressee loc, KABC::Addressee rem, bool takeloc, QWidget *parent = 0, const char *name = 0 ); 67 AddresseeChooser( KABC::Addressee loc, KABC::Addressee rem, bool takeloc, QWidget *parent = 0, const char *name = 0 );
68 68
69 int executeD( bool local ); 69 int executeD( bool local );
70 70
71 private: 71 private:
72 int mSyncResult; 72 int mSyncResult;
73 73
74 private slots: 74 private slots:
75 void slot_remote(); 75 void slot_remote();
76 void slot_local(); 76 void slot_local();
77 77
78}; 78};
79 79
80} 80}
81 81
82#endif 82#endif
diff --git a/kabc/distributionlist.cpp b/kabc/distributionlist.cpp
index d34ba0b..cf5afa6 100644
--- a/kabc/distributionlist.cpp
+++ b/kabc/distributionlist.cpp
@@ -1,292 +1,294 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#include <ksimpleconfig.h> 21#include <ksimpleconfig.h>
22#include <kstandarddirs.h> 22#include <kstandarddirs.h>
23#include <kdebug.h> 23#include <kdebug.h>
24 24
25#include "distributionlist.h" 25#include "distributionlist.h"
26//Added by qt3to4:
27#include <Q3ValueList>
26 28
27using namespace KABC; 29using namespace KABC;
28 30
29DistributionList::DistributionList( DistributionListManager *manager, 31DistributionList::DistributionList( DistributionListManager *manager,
30 const QString &name ) : 32 const QString &name ) :
31 mManager( manager ), mName( name ) 33 mManager( manager ), mName( name )
32{ 34{
33 mManager->insert( this ); 35 mManager->insert( this );
34} 36}
35 37
36DistributionList::~DistributionList() 38DistributionList::~DistributionList()
37{ 39{
38 mManager->remove( this ); 40 mManager->remove( this );
39} 41}
40 42
41void DistributionList::setName( const QString &name ) 43void DistributionList::setName( const QString &name )
42{ 44{
43 mName = name; 45 mName = name;
44} 46}
45 47
46QString DistributionList::name() const 48QString DistributionList::name() const
47{ 49{
48 return mName; 50 return mName;
49} 51}
50 52
51void DistributionList::insertEntry( const Addressee &a, const QString &email ) 53void DistributionList::insertEntry( const Addressee &a, const QString &email )
52{ 54{
53 QString em = email; 55 QString em = email;
54 if (em.isNull() ) 56 if (em.isNull() )
55 em = a.preferredEmail(); 57 em = a.preferredEmail();
56 Entry e( a, em ); 58 Entry e( a, em );
57 QValueList<Entry>::Iterator it; 59 Q3ValueList<Entry>::Iterator it;
58 for( it = mEntries.begin(); it != mEntries.end(); ++it ) { 60 for( it = mEntries.begin(); it != mEntries.end(); ++it ) {
59 if ( (*it).addressee.uid() == a.uid() ) { 61 if ( (*it).addressee.uid() == a.uid() ) {
60 /** 62 /**
61 We have to check if both email addresses contains no data, 63 We have to check if both email addresses contains no data,
62 a simple 'email1 == email2' wont work here 64 a simple 'email1 == email2' wont work here
63 */ 65 */
64 if ( ( (*it).email.isNull() && em.isEmpty() ) || 66 if ( ( (*it).email.isNull() && em.isEmpty() ) ||
65 ( (*it).email.isEmpty() && em.isNull() ) || 67 ( (*it).email.isEmpty() && em.isNull() ) ||
66 ( (*it).email == em ) ) { 68 ( (*it).email == em ) ) {
67 //*it = e; 69 //*it = e;
68 return; 70 return;
69 } 71 }
70 } 72 }
71 } 73 }
72 mEntries.append( e ); 74 mEntries.append( e );
73} 75}
74 76
75void DistributionList::removeEntry( const Addressee &a, const QString &email ) 77void DistributionList::removeEntry( const Addressee &a, const QString &email )
76{ 78{
77 QValueList<Entry>::Iterator it; 79 Q3ValueList<Entry>::Iterator it;
78 for( it = mEntries.begin(); it != mEntries.end(); ++it ) { 80 for( it = mEntries.begin(); it != mEntries.end(); ++it ) {
79 if ( (*it).addressee.uid() == a.uid() && (*it).email == email ) { 81 if ( (*it).addressee.uid() == a.uid() && (*it).email == email ) {
80 mEntries.remove( it ); 82 mEntries.remove( it );
81 return; 83 return;
82 } 84 }
83 } 85 }
84} 86}
85 87
86QStringList DistributionList::emails() const 88QStringList DistributionList::emails() const
87{ 89{
88 QStringList emails; 90 QStringList emails;
89 91
90 Entry::List::ConstIterator it; 92 Entry::List::ConstIterator it;
91 for( it = mEntries.begin(); it != mEntries.end(); ++it ) { 93 for( it = mEntries.begin(); it != mEntries.end(); ++it ) {
92 Addressee a = (*it).addressee; 94 Addressee a = (*it).addressee;
93 QString email = (*it).email.isEmpty() ? a.fullEmail() : 95 QString email = (*it).email.isEmpty() ? a.fullEmail() :
94 a.fullEmail( (*it).email ); 96 a.fullEmail( (*it).email );
95 97
96 if ( !email.isEmpty() ) { 98 if ( !email.isEmpty() ) {
97 emails.append( email ); 99 emails.append( email );
98 } 100 }
99 } 101 }
100 102
101 return emails; 103 return emails;
102} 104}
103 105
104DistributionList::Entry::List DistributionList::entries() const 106DistributionList::Entry::List DistributionList::entries() const
105{ 107{
106 return mEntries; 108 return mEntries;
107} 109}
108 110
109 111
110DistributionListManager::DistributionListManager( AddressBook *ab ) : 112DistributionListManager::DistributionListManager( AddressBook *ab ) :
111 mAddressBook( ab ) 113 mAddressBook( ab )
112{ 114{
113} 115}
114 116
115DistributionListManager::~DistributionListManager() 117DistributionListManager::~DistributionListManager()
116{ 118{
117} 119}
118 120
119DistributionList *DistributionListManager::list( const QString &name ) 121DistributionList *DistributionListManager::list( const QString &name )
120{ 122{
121 DistributionList *list; 123 DistributionList *list;
122 for( list = mLists.first(); list; list = mLists.next() ) { 124 for( list = mLists.first(); list; list = mLists.next() ) {
123 if ( list->name() == name ) return list; 125 if ( list->name() == name ) return list;
124 } 126 }
125 127
126 return 0; 128 return 0;
127} 129}
128 130
129void DistributionListManager::insert( DistributionList *l ) 131void DistributionListManager::insert( DistributionList *l )
130{ 132{
131 DistributionList *list; 133 DistributionList *list;
132 for( list = mLists.first(); list; list = mLists.next() ) { 134 for( list = mLists.first(); list; list = mLists.next() ) {
133 if ( list->name() == l->name() ) { 135 if ( list->name() == l->name() ) {
134 mLists.remove( list ); 136 mLists.remove( list );
135 break; 137 break;
136 } 138 }
137 } 139 }
138 mLists.append( l ); 140 mLists.append( l );
139} 141}
140 142
141void DistributionListManager::remove( DistributionList *l ) 143void DistributionListManager::remove( DistributionList *l )
142{ 144{
143 DistributionList *list; 145 DistributionList *list;
144 for( list = mLists.first(); list; list = mLists.next() ) { 146 for( list = mLists.first(); list; list = mLists.next() ) {
145 if ( list->name() == l->name() ) { 147 if ( list->name() == l->name() ) {
146 mLists.remove( list ); 148 mLists.remove( list );
147 return; 149 return;
148 } 150 }
149 } 151 }
150} 152}
151 153
152QStringList DistributionListManager::listNames() 154QStringList DistributionListManager::listNames()
153{ 155{
154 QStringList names; 156 QStringList names;
155 157
156 DistributionList *list; 158 DistributionList *list;
157 for( list = mLists.first(); list; list = mLists.next() ) { 159 for( list = mLists.first(); list; list = mLists.next() ) {
158 names.append( list->name() ); 160 names.append( list->name() );
159 } 161 }
160 162
161 return names; 163 return names;
162} 164}
163 165
164bool DistributionListManager::load() 166bool DistributionListManager::load()
165{ 167{
166 KSimpleConfig cfg( locateLocal( "data", "kabc/distlists" ) ); 168 KSimpleConfig cfg( locateLocal( "data", "kabc/distlists" ) );
167 169
168/*US 170/*US
169 QMap<QString,QString> entryMap = cfg.entryMap( mAddressBook->identifier() ); 171 QMap<QString,QString> entryMap = cfg.entryMap( mAddressBook->identifier() );
170 if ( entryMap.isEmpty() ) { 172 if ( entryMap.isEmpty() ) {
171 kdDebug(5700) << "No distlists for '" << mAddressBook->identifier() << "'" << endl; 173 kdDebug(5700) << "No distlists for '" << mAddressBook->identifier() << "'" << endl;
172 return false; 174 return false;
173 } 175 }
174 176
175 cfg.setGroup( mAddressBook->identifier() ); 177 cfg.setGroup( mAddressBook->identifier() );
176 178
177 QMap<QString,QString>::ConstIterator it; 179 QMap<QString,QString>::ConstIterator it;
178 for( it = entryMap.begin(); it != entryMap.end(); ++it ) { 180 for( it = entryMap.begin(); it != entryMap.end(); ++it ) {
179 QString name = it.key(); 181 QString name = it.key();
180*/ 182*/
181 cfg.setGroup( mAddressBook->identifier() ); 183 cfg.setGroup( mAddressBook->identifier() );
182 //US we work in microkde with a list of distributionlists 184 //US we work in microkde with a list of distributionlists
183 QStringList distlists = cfg.readListEntry( "__Lists__List__" ); 185 QStringList distlists = cfg.readListEntry( "__Lists__List__" );
184 if ( distlists.isEmpty() ) { 186 if ( distlists.isEmpty() ) {
185 qDebug("no distlist for AB "); 187 qDebug("no distlist for AB ");
186 return false; 188 return false;
187 } 189 }
188 190
189 QStringList::ConstIterator it; 191 QStringList::ConstIterator it;
190 for( it = distlists.begin(); it != distlists.end(); ++it ) { 192 for( it = distlists.begin(); it != distlists.end(); ++it ) {
191 QString name = *it; 193 QString name = *it;
192 194
193 195
194 QStringList value = cfg.readListEntry( name ); 196 QStringList value = cfg.readListEntry( name );
195 197
196 198
197 199
198 DistributionList *list = new DistributionList( this, name ); 200 DistributionList *list = new DistributionList( this, name );
199 201
200 QStringList::ConstIterator it2 = value.begin(); 202 QStringList::ConstIterator it2 = value.begin();
201 while( it2 != value.end() ) { 203 while( it2 != value.end() ) {
202 QString id = *it2++; 204 QString id = *it2++;
203 QString email = *it2; 205 QString email = *it2;
204 206
205 207
206 208
207 Addressee a = mAddressBook->findByUid( id ); 209 Addressee a = mAddressBook->findByUid( id );
208 if ( !a.isEmpty() ) { 210 if ( !a.isEmpty() ) {
209 list->insertEntry( a, email ); 211 list->insertEntry( a, email );
210 } 212 }
211 213
212 if ( it2 == value.end() ) break; 214 if ( it2 == value.end() ) break;
213 ++it2; 215 ++it2;
214 } 216 }
215 } 217 }
216 218
217 return true; 219 return true;
218} 220}
219 221
220bool DistributionListManager::save() 222bool DistributionListManager::save()
221{ 223{
222 224
223 225
224 KSimpleConfig cfg( locateLocal( "data", "kabc/distlists" ) ); 226 KSimpleConfig cfg( locateLocal( "data", "kabc/distlists" ) );
225 227
226 cfg.deleteGroup( mAddressBook->identifier() ); 228 cfg.deleteGroup( mAddressBook->identifier() );
227 cfg.setGroup( mAddressBook->identifier() ); 229 cfg.setGroup( mAddressBook->identifier() );
228 230
229 DistributionList *list; 231 DistributionList *list;
230 for( list = mLists.first(); list; list = mLists.next() ) { 232 for( list = mLists.first(); list; list = mLists.next() ) {
231 kdDebug(5700) << " Saving '" << list->name() << "'" << endl; 233 kdDebug(5700) << " Saving '" << list->name() << "'" << endl;
232 QStringList value; 234 QStringList value;
233 DistributionList::Entry::List entries = list->entries(); 235 DistributionList::Entry::List entries = list->entries();
234 DistributionList::Entry::List::ConstIterator it; 236 DistributionList::Entry::List::ConstIterator it;
235 for( it = entries.begin(); it != entries.end(); ++it ) { 237 for( it = entries.begin(); it != entries.end(); ++it ) {
236 value.append( (*it).addressee.uid() ); 238 value.append( (*it).addressee.uid() );
237 if (( *it).email.isEmpty()) 239 if (( *it).email.isEmpty())
238 value.append( " " ); 240 value.append( " " );
239 else 241 else
240 value.append( (*it).email ); 242 value.append( (*it).email );
241 // qDebug("uid *%s* email *%s* ", (*it).addressee.uid().latin1(),(*it).email.latin1() ); 243 // qDebug("uid *%s* email *%s* ", (*it).addressee.uid().latin1(),(*it).email.latin1() );
242 } 244 }
243 cfg.writeEntry( list->name(), value ); 245 cfg.writeEntry( list->name(), value );
244 } 246 }
245 247
246//US for microKDE we have not yet sophisticated methods to load maps. 248//US for microKDE we have not yet sophisticated methods to load maps.
247// Because of that we store also a list of all distributionlists. 249// Because of that we store also a list of all distributionlists.
248 QStringList namelist; 250 QStringList namelist;
249 for( list = mLists.first(); list; list = mLists.next() ) { 251 for( list = mLists.first(); list; list = mLists.next() ) {
250 namelist.append( list->name() ); 252 namelist.append( list->name() );
251 } 253 }
252 cfg.writeEntry( "__Lists__List__", namelist ); 254 cfg.writeEntry( "__Lists__List__", namelist );
253 255
254 256
255 257
256 258
257 259
258 260
259 cfg.sync(); 261 cfg.sync();
260 262
261 return true; 263 return true;
262} 264}
263#if 0 265#if 0
264DistributionListWatcher* DistributionListWatcher::mSelf = 0; 266DistributionListWatcher* DistributionListWatcher::mSelf = 0;
265 267
266DistributionListWatcher::DistributionListWatcher() 268DistributionListWatcher::DistributionListWatcher()
267 : QObject( 0, "DistributionListWatcher" ) 269 : QObject( 0, "DistributionListWatcher" )
268{ 270{
269 271
270 mDirWatch = new KDirWatch; 272 mDirWatch = new KDirWatch;
271 mDirWatch->addFile( locateLocal( "data", "kabc/distlists" ) ); 273 mDirWatch->addFile( locateLocal( "data", "kabc/distlists" ) );
272 274
273 connect( mDirWatch, SIGNAL( dirty( const QString& ) ), SIGNAL( changed() ) ); 275 connect( mDirWatch, SIGNAL( dirty( const QString& ) ), SIGNAL( changed() ) );
274 mDirWatch->startScan(); 276 mDirWatch->startScan();
275} 277}
276 278
277DistributionListWatcher::~DistributionListWatcher() 279DistributionListWatcher::~DistributionListWatcher()
278{ 280{
279 delete mDirWatch; 281 delete mDirWatch;
280 mDirWatch = 0; 282 mDirWatch = 0;
281} 283}
282 284
283DistributionListWatcher *DistributionListWatcher::self() 285DistributionListWatcher *DistributionListWatcher::self()
284{ 286{
285 if ( !mSelf ) 287 if ( !mSelf )
286 mSelf = new DistributionListWatcher(); 288 mSelf = new DistributionListWatcher();
287 289
288 return mSelf; 290 return mSelf;
289} 291}
290#endif 292#endif
291//US #include "distributionlist.moc" 293//US #include "distributionlist.moc"
292 294
diff --git a/kabc/distributionlist.h b/kabc/distributionlist.h
index c81e543..8d21a17 100644
--- a/kabc/distributionlist.h
+++ b/kabc/distributionlist.h
@@ -1,212 +1,215 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#ifndef KABC_DISTRIBUTIONLIST_H 21#ifndef KABC_DISTRIBUTIONLIST_H
22#define KABC_DISTRIBUTIONLIST_H 22#define KABC_DISTRIBUTIONLIST_H
23 23
24//#include <kdirwatch.h> 24//#include <kdirwatch.h>
25 25
26#include "addressbook.h" 26#include "addressbook.h"
27//Added by qt3to4:
28#include <Q3ValueList>
29#include <Q3PtrList>
27 30
28namespace KABC { 31namespace KABC {
29 32
30class DistributionListManager; 33class DistributionListManager;
31 34
32/** 35/**
33 @short Distribution list of email addresses 36 @short Distribution list of email addresses
34 37
35 This class represents a list of email addresses. Each email address is 38 This class represents a list of email addresses. Each email address is
36 associated with an address book entry. If the address book entry changes, the 39 associated with an address book entry. If the address book entry changes, the
37 entry in the distribution list is automatically updated. 40 entry in the distribution list is automatically updated.
38*/ 41*/
39class DistributionList 42class DistributionList
40{ 43{
41 public: 44 public:
42 /** 45 /**
43 @short Distribution List Entry 46 @short Distribution List Entry
44 47
45 This class represents an entry of a distribution list. It consists of an 48 This class represents an entry of a distribution list. It consists of an
46 addressee and an email address. If the email address is null, the 49 addressee and an email address. If the email address is null, the
47 preferred email address of the addressee is used. 50 preferred email address of the addressee is used.
48 */ 51 */
49 struct Entry 52 struct Entry
50 { 53 {
51 typedef QValueList<Entry> List; 54 typedef Q3ValueList<Entry> List;
52 55
53 Entry() {} 56 Entry() {}
54 Entry( const Addressee &_addressee, const QString &_email ) : 57 Entry( const Addressee &_addressee, const QString &_email ) :
55 addressee( _addressee ), email( _email ) {} 58 addressee( _addressee ), email( _email ) {}
56 59
57 Addressee addressee; 60 Addressee addressee;
58 QString email; 61 QString email;
59 }; 62 };
60 63
61 /** 64 /**
62 Create distribution list object. 65 Create distribution list object.
63 66
64 @param manager Managing object of this list. 67 @param manager Managing object of this list.
65 @param name Name of this list. 68 @param name Name of this list.
66 */ 69 */
67 DistributionList( DistributionListManager *manager, const QString &name ); 70 DistributionList( DistributionListManager *manager, const QString &name );
68 71
69 /** 72 /**
70 Destructor. 73 Destructor.
71 */ 74 */
72 ~DistributionList(); 75 ~DistributionList();
73 76
74 /** 77 /**
75 Set name of this list. The name is used as key by the 78 Set name of this list. The name is used as key by the
76 DistributinListManager. 79 DistributinListManager.
77 */ 80 */
78 void setName( const QString & ); 81 void setName( const QString & );
79 82
80 /** 83 /**
81 Get name of this list. 84 Get name of this list.
82 */ 85 */
83 QString name() const; 86 QString name() const;
84 87
85 /** 88 /**
86 Insert an entry into this distribution list. If the entry already exists 89 Insert an entry into this distribution list. If the entry already exists
87 nothing happens. 90 nothing happens.
88 */ 91 */
89 void insertEntry( const Addressee &, const QString &email=QString::null ); 92 void insertEntry( const Addressee &, const QString &email=QString::null );
90 93
91 /** 94 /**
92 Remove an entry from this distribution list. If the entry doesn't exist 95 Remove an entry from this distribution list. If the entry doesn't exist
93 nothing happens. 96 nothing happens.
94 */ 97 */
95 void removeEntry( const Addressee &, const QString &email=QString::null ); 98 void removeEntry( const Addressee &, const QString &email=QString::null );
96 99
97 /** 100 /**
98 Return list of email addresses, which belong to this distributon list. 101 Return list of email addresses, which belong to this distributon list.
99 These addresses can be directly used by e.g. a mail client. 102 These addresses can be directly used by e.g. a mail client.
100 */ 103 */
101 QStringList emails() const; 104 QStringList emails() const;
102 105
103 /** 106 /**
104 Return list of entries belonging to this distribution list. This function 107 Return list of entries belonging to this distribution list. This function
105 is mainly useful for a distribution list editor. 108 is mainly useful for a distribution list editor.
106 */ 109 */
107 Entry::List entries() const; 110 Entry::List entries() const;
108 111
109 private: 112 private:
110 DistributionListManager *mManager; 113 DistributionListManager *mManager;
111 QString mName; 114 QString mName;
112 115
113 Entry::List mEntries; 116 Entry::List mEntries;
114}; 117};
115 118
116/** 119/**
117 @short Manager of distribution lists 120 @short Manager of distribution lists
118 121
119 This class represents a collection of distribution lists, which are associated 122 This class represents a collection of distribution lists, which are associated
120 with a given address book. 123 with a given address book.
121*/ 124*/
122class DistributionListManager 125class DistributionListManager
123{ 126{
124 public: 127 public:
125 /** 128 /**
126 Create manager for given address book. 129 Create manager for given address book.
127 */ 130 */
128 DistributionListManager( AddressBook * ); 131 DistributionListManager( AddressBook * );
129 132
130 /** 133 /**
131 Destructor. 134 Destructor.
132 */ 135 */
133 ~DistributionListManager(); 136 ~DistributionListManager();
134 137
135 /** 138 /**
136 Return distribution list with given name. 139 Return distribution list with given name.
137 */ 140 */
138 DistributionList *list( const QString &name ); 141 DistributionList *list( const QString &name );
139 142
140 /** 143 /**
141 Insert distribution list. If a list with this name already exists, nothing 144 Insert distribution list. If a list with this name already exists, nothing
142 happens. 145 happens.
143 */ 146 */
144 void insert( DistributionList * ); 147 void insert( DistributionList * );
145 148
146 /** 149 /**
147 Remove distribution list. If a list with this name doesn't exist, nothing 150 Remove distribution list. If a list with this name doesn't exist, nothing
148 happens. 151 happens.
149 */ 152 */
150 void remove( DistributionList * ); 153 void remove( DistributionList * );
151 154
152 /** 155 /**
153 Return names of all distribution lists managed by this manager. 156 Return names of all distribution lists managed by this manager.
154 */ 157 */
155 QStringList listNames(); 158 QStringList listNames();
156 159
157 /** 160 /**
158 Load distribution lists form disk. 161 Load distribution lists form disk.
159 */ 162 */
160 bool load(); 163 bool load();
161 164
162 /** 165 /**
163 Save distribution lists to disk. 166 Save distribution lists to disk.
164 */ 167 */
165 bool save(); 168 bool save();
166 169
167 private: 170 private:
168 AddressBook *mAddressBook; 171 AddressBook *mAddressBook;
169 172
170 QPtrList<DistributionList> mLists; 173 Q3PtrList<DistributionList> mLists;
171}; 174};
172 175
173/** 176/**
174 @short Watchdog for distribution lists 177 @short Watchdog for distribution lists
175 178
176 This class provides a @ref changed() signal that i emitted when the 179 This class provides a @ref changed() signal that i emitted when the
177 distribution lists has changed in some way. 180 distribution lists has changed in some way.
178 181
179 Exapmle: 182 Exapmle:
180 183
181 <pre> 184 <pre>
182 KABC::DistributionListWatcher *watchdog = KABC::DistributionListWatcher::self() 185 KABC::DistributionListWatcher *watchdog = KABC::DistributionListWatcher::self()
183 186
184 connect( watchdog, SIGNAL( changed() ), SLOT( doSomething() ) ); 187 connect( watchdog, SIGNAL( changed() ), SLOT( doSomething() ) );
185 </pre> 188 </pre>
186*/ 189*/
187 190
188/* 191/*
189class DistributionListWatcher : public QObject 192class DistributionListWatcher : public QObject
190{ 193{
191 Q_OBJECT_XX 194 Q_OBJECT_XX
192 195
193 public: 196 public:
194 197
195 static DistributionListWatcher *self(); 198 static DistributionListWatcher *self();
196 199
197 200
198 signals: 201 signals:
199 202
200 void changed(); 203 void changed();
201 204
202 protected: 205 protected:
203 DistributionListWatcher(); 206 DistributionListWatcher();
204 ~DistributionListWatcher(); 207 ~DistributionListWatcher();
205 208
206 private: 209 private:
207 static DistributionListWatcher* mSelf; 210 static DistributionListWatcher* mSelf;
208 KDirWatch *mDirWatch; 211 KDirWatch *mDirWatch;
209}; 212};
210*/ 213*/
211} 214}
212#endif 215#endif
diff --git a/kabc/distributionlistdialog.cpp b/kabc/distributionlistdialog.cpp
index d2e1144..82883e6 100644
--- a/kabc/distributionlistdialog.cpp
+++ b/kabc/distributionlistdialog.cpp
@@ -1,394 +1,400 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#include <qlistview.h> 21#include <q3listview.h>
22#include <qlayout.h> 22#include <qlayout.h>
23#include <qlabel.h> 23#include <qlabel.h>
24#include <qpushbutton.h> 24#include <qpushbutton.h>
25#include <qcombobox.h> 25#include <qcombobox.h>
26//Added by qt3to4:
27#include <Q3HBoxLayout>
28#include <Q3GridLayout>
29#include <Q3Frame>
30#include <Q3VBoxLayout>
26#include <klineeditdlg.h> 31#include <klineeditdlg.h>
27#include <qbuttongroup.h> 32#include <q3buttongroup.h>
33#include <Q3Button>
28#include <qradiobutton.h> 34#include <qradiobutton.h>
29 35
30#include <klocale.h> 36#include <klocale.h>
31#include <kdebug.h> 37#include <kdebug.h>
32#include <kmessagebox.h> 38#include <kmessagebox.h>
33 39
34#include "addressbook.h" 40#include "addressbook.h"
35#include "addresseedialog.h" 41#include "addresseedialog.h"
36#include "distributionlist.h" 42#include "distributionlist.h"
37 43
38#include "distributionlistdialog.h" 44#include "distributionlistdialog.h"
39 45
40//US #include "distributionlistdialog.moc" 46//US #include "distributionlistdialog.moc"
41 47
42using namespace KABC; 48using namespace KABC;
43 49
44DistributionListDialog::DistributionListDialog( AddressBook *addressBook, QWidget *parent) 50DistributionListDialog::DistributionListDialog( AddressBook *addressBook, QWidget *parent)
45 : KDialogBase( parent, "", true, i18n("Configure Distribution Lists"), Ok, Ok, true) 51 : KDialogBase( parent, "", true, i18n("Configure Distribution Lists"), Ok, Ok, true)
46{ 52{
47 mEditor = new DistributionListEditorWidget( addressBook, this ); 53 mEditor = new DistributionListEditorWidget( addressBook, this );
48 setMainWidget( mEditor ); 54 setMainWidget( mEditor );
49 55
50 connect( this, SIGNAL( okClicked() ), mEditor, SLOT( save() ) ); 56 connect( this, SIGNAL( okClicked() ), mEditor, SLOT( save() ) );
51} 57}
52 58
53DistributionListDialog::~DistributionListDialog() 59DistributionListDialog::~DistributionListDialog()
54{ 60{
55} 61}
56 62
57 63
58EmailSelector::EmailSelector( const QStringList &emails, const QString &current, 64EmailSelector::EmailSelector( const QStringList &emails, const QString &current,
59 QWidget *parent ) : 65 QWidget *parent ) :
60 KDialogBase( KDialogBase::Plain, i18n("Select Email Address"), Ok, Ok, 66 KDialogBase( KDialogBase::Plain, i18n("Select Email Address"), Ok, Ok,
61 parent ) 67 parent )
62{ 68{
63 QFrame *topFrame = plainPage(); 69 Q3Frame *topFrame = plainPage();
64 QBoxLayout *topLayout = new QVBoxLayout( topFrame ); 70 Q3BoxLayout *topLayout = new Q3VBoxLayout( topFrame );
65 71
66 mButtonGroup = new QButtonGroup( 1, Horizontal, i18n("Email Addresses"), 72 mButtonGroup = new Q3ButtonGroup( 1, Qt::Horizontal, i18n("Email Addresses"),
67 topFrame ); 73 topFrame );
68 topLayout->addWidget( mButtonGroup ); 74 topLayout->addWidget( mButtonGroup );
69 75
70 QStringList::ConstIterator it; 76 QStringList::ConstIterator it;
71 for( it = emails.begin(); it != emails.end(); ++it ) { 77 for( it = emails.begin(); it != emails.end(); ++it ) {
72 QRadioButton *button = new QRadioButton( *it, mButtonGroup ); 78 QRadioButton *button = new QRadioButton( *it, mButtonGroup );
73 if ( (*it) == current ) { 79 if ( (*it) == current ) {
74 button->setDown( true ); 80 button->setDown( true );
75 } 81 }
76 } 82 }
77} 83}
78 84
79QString EmailSelector::selected() 85QString EmailSelector::selected()
80{ 86{
81 QButton *button = mButtonGroup->selected(); 87 QAbstractButton *button = mButtonGroup->selected();
82 if ( button ) return button->text(); 88 if ( button ) return button->text();
83 return QString::null; 89 return QString::null;
84} 90}
85 91
86QString EmailSelector::getEmail( const QStringList &emails, const QString &current, 92QString EmailSelector::getEmail( const QStringList &emails, const QString &current,
87 QWidget *parent ) 93 QWidget *parent )
88{ 94{
89 EmailSelector *dlg = new EmailSelector( emails, current, parent ); 95 EmailSelector *dlg = new EmailSelector( emails, current, parent );
90 dlg->exec(); 96 dlg->exec();
91 97
92 QString result = dlg->selected(); 98 QString result = dlg->selected();
93 99
94 delete dlg; 100 delete dlg;
95 101
96 return result; 102 return result;
97} 103}
98 104
99class EntryItem : public QListViewItem 105class EntryItem : public Q3ListViewItem
100{ 106{
101 public: 107 public:
102 EntryItem( QListView *parent, const Addressee &addressee, 108 EntryItem( Q3ListView *parent, const Addressee &addressee,
103 const QString &email=QString::null ) : 109 const QString &email=QString::null ) :
104 QListViewItem( parent ), 110 Q3ListViewItem( parent ),
105 mAddressee( addressee ), 111 mAddressee( addressee ),
106 mEmail( email ) 112 mEmail( email )
107 { 113 {
108 setText( 0, addressee.realName() ); 114 setText( 0, addressee.realName() );
109 if( email.isEmpty() ) { 115 if( email.isEmpty() ) {
110 setText( 1, addressee.preferredEmail() ); 116 setText( 1, addressee.preferredEmail() );
111 setText( 2, i18n("Yes") ); 117 setText( 2, i18n("Yes") );
112 } else { 118 } else {
113 setText( 1, email ); 119 setText( 1, email );
114 setText( 2, i18n("No") ); 120 setText( 2, i18n("No") );
115 } 121 }
116 } 122 }
117 123
118 Addressee addressee() const 124 Addressee addressee() const
119 { 125 {
120 return mAddressee; 126 return mAddressee;
121 } 127 }
122 128
123 QString email() const 129 QString email() const
124 { 130 {
125 return mEmail; 131 return mEmail;
126 } 132 }
127 133
128 private: 134 private:
129 Addressee mAddressee; 135 Addressee mAddressee;
130 QString mEmail; 136 QString mEmail;
131}; 137};
132 138
133DistributionListEditorWidget::DistributionListEditorWidget( AddressBook *addressBook, QWidget *parent) : 139DistributionListEditorWidget::DistributionListEditorWidget( AddressBook *addressBook, QWidget *parent) :
134 QWidget( parent ), 140 QWidget( parent ),
135 mAddressBook( addressBook ) 141 mAddressBook( addressBook )
136{ 142{
137 kdDebug(5700) << "DistributionListEditor()" << endl; 143 kdDebug(5700) << "DistributionListEditor()" << endl;
138 144
139 QBoxLayout *topLayout = new QVBoxLayout( this ); 145 Q3BoxLayout *topLayout = new Q3VBoxLayout( this );
140 topLayout->setSpacing( KDialog::spacingHint() ); 146 topLayout->setSpacing( KDialog::spacingHint() );
141 147
142 QBoxLayout *nameLayout = new QHBoxLayout( topLayout) ; 148 Q3BoxLayout *nameLayout = new Q3HBoxLayout( topLayout) ;
143 149
144 mNameCombo = new QComboBox( this ); 150 mNameCombo = new QComboBox( this );
145 nameLayout->addWidget( mNameCombo ); 151 nameLayout->addWidget( mNameCombo );
146 connect( mNameCombo, SIGNAL( activated( int ) ), SLOT( updateEntryView() ) ); 152 connect( mNameCombo, SIGNAL( activated( int ) ), SLOT( updateEntryView() ) );
147 153
148 mNewButton = new QPushButton( i18n("New List..."), this ); 154 mNewButton = new QPushButton( i18n("New List..."), this );
149 nameLayout->addWidget( mNewButton ); 155 nameLayout->addWidget( mNewButton );
150 connect( mNewButton, SIGNAL( clicked() ), SLOT( newList() ) ); 156 connect( mNewButton, SIGNAL( clicked() ), SLOT( newList() ) );
151 157
152 mEditButton = new QPushButton( i18n("Rename List..."), this ); 158 mEditButton = new QPushButton( i18n("Rename List..."), this );
153 nameLayout->addWidget( mEditButton ); 159 nameLayout->addWidget( mEditButton );
154 connect( mEditButton, SIGNAL( clicked() ), SLOT( editList() ) ); 160 connect( mEditButton, SIGNAL( clicked() ), SLOT( editList() ) );
155 161
156 mRemoveButton = new QPushButton( i18n("Remove List"), this ); 162 mRemoveButton = new QPushButton( i18n("Remove List"), this );
157 nameLayout->addWidget( mRemoveButton ); 163 nameLayout->addWidget( mRemoveButton );
158 connect( mRemoveButton, SIGNAL( clicked() ), SLOT( removeList() ) ); 164 connect( mRemoveButton, SIGNAL( clicked() ), SLOT( removeList() ) );
159 165
160 QGridLayout *gridLayout = new QGridLayout( topLayout, 3, 3 ); 166 Q3GridLayout *gridLayout = new Q3GridLayout( topLayout, 3, 3 );
161 gridLayout->setColStretch(1, 1); 167 gridLayout->setColStretch(1, 1);
162 168
163 QLabel *listLabel = new QLabel( i18n("Available addresses:"), this ); 169 QLabel *listLabel = new QLabel( i18n("Available addresses:"), this );
164 gridLayout->addWidget( listLabel, 0, 0 ); 170 gridLayout->addWidget( listLabel, 0, 0 );
165 171
166 mListLabel = new QLabel( this ); 172 mListLabel = new QLabel( this );
167 gridLayout->addMultiCellWidget( mListLabel, 0, 0, 1, 2 ); 173 gridLayout->addMultiCellWidget( mListLabel, 0, 0, 1, 2 );
168 174
169 mAddresseeView = new QListView( this ); 175 mAddresseeView = new Q3ListView( this );
170 mAddresseeView->addColumn( i18n("Name") ); 176 mAddresseeView->addColumn( i18n("Name") );
171 mAddresseeView->addColumn( i18n("Preferred Email") ); 177 mAddresseeView->addColumn( i18n("Preferred Email") );
172 mAddresseeView->setAllColumnsShowFocus( true ); 178 mAddresseeView->setAllColumnsShowFocus( true );
173 gridLayout->addWidget( mAddresseeView, 1, 0 ); 179 gridLayout->addWidget( mAddresseeView, 1, 0 );
174 connect( mAddresseeView, SIGNAL( selectionChanged() ), 180 connect( mAddresseeView, SIGNAL( selectionChanged() ),
175 SLOT( slotSelectionAddresseeViewChanged() ) ); 181 SLOT( slotSelectionAddresseeViewChanged() ) );
176 connect( mAddresseeView, SIGNAL( doubleClicked( QListViewItem * ) ), 182 connect( mAddresseeView, SIGNAL( doubleClicked( Q3ListViewItem * ) ),
177 SLOT( addEntry() ) ); 183 SLOT( addEntry() ) );
178 184
179 mAddEntryButton = new QPushButton( i18n("Add Entry"), this ); 185 mAddEntryButton = new QPushButton( i18n("Add Entry"), this );
180 mAddEntryButton->setEnabled(false); 186 mAddEntryButton->setEnabled(false);
181 gridLayout->addWidget( mAddEntryButton, 2, 0 ); 187 gridLayout->addWidget( mAddEntryButton, 2, 0 );
182 connect( mAddEntryButton, SIGNAL( clicked() ), SLOT( addEntry() ) ); 188 connect( mAddEntryButton, SIGNAL( clicked() ), SLOT( addEntry() ) );
183 189
184 mEntryView = new QListView( this ); 190 mEntryView = new Q3ListView( this );
185 mEntryView->addColumn( i18n("Name") ); 191 mEntryView->addColumn( i18n("Name") );
186 mEntryView->addColumn( i18n("Email") ); 192 mEntryView->addColumn( i18n("Email") );
187 mEntryView->addColumn( i18n("Use Preferred") ); 193 mEntryView->addColumn( i18n("Use Preferred") );
188 mEntryView->setEnabled(false); 194 mEntryView->setEnabled(false);
189 mEntryView->setAllColumnsShowFocus( true ); 195 mEntryView->setAllColumnsShowFocus( true );
190 gridLayout->addMultiCellWidget( mEntryView, 1, 1, 1, 2 ); 196 gridLayout->addMultiCellWidget( mEntryView, 1, 1, 1, 2 );
191 connect( mEntryView, SIGNAL( selectionChanged() ), 197 connect( mEntryView, SIGNAL( selectionChanged() ),
192 SLOT( slotSelectionEntryViewChanged() ) ); 198 SLOT( slotSelectionEntryViewChanged() ) );
193 199
194 mChangeEmailButton = new QPushButton( i18n("Change Email..."), this ); 200 mChangeEmailButton = new QPushButton( i18n("Change Email..."), this );
195 gridLayout->addWidget( mChangeEmailButton, 2, 1 ); 201 gridLayout->addWidget( mChangeEmailButton, 2, 1 );
196 connect( mChangeEmailButton, SIGNAL( clicked() ), SLOT( changeEmail() ) ); 202 connect( mChangeEmailButton, SIGNAL( clicked() ), SLOT( changeEmail() ) );
197 203
198 mRemoveEntryButton = new QPushButton( i18n("Remove Entry"), this ); 204 mRemoveEntryButton = new QPushButton( i18n("Remove Entry"), this );
199 gridLayout->addWidget( mRemoveEntryButton, 2, 2 ); 205 gridLayout->addWidget( mRemoveEntryButton, 2, 2 );
200 connect( mRemoveEntryButton, SIGNAL( clicked() ), SLOT( removeEntry() ) ); 206 connect( mRemoveEntryButton, SIGNAL( clicked() ), SLOT( removeEntry() ) );
201 207
202 mManager = new DistributionListManager( mAddressBook ); 208 mManager = new DistributionListManager( mAddressBook );
203 mManager->load(); 209 mManager->load();
204 210
205 updateAddresseeView(); 211 updateAddresseeView();
206 updateNameCombo(); 212 updateNameCombo();
207} 213}
208 214
209DistributionListEditorWidget::~DistributionListEditorWidget() 215DistributionListEditorWidget::~DistributionListEditorWidget()
210{ 216{
211 kdDebug(5700) << "~DistributionListEditor()" << endl; 217 kdDebug(5700) << "~DistributionListEditor()" << endl;
212 218
213 delete mManager; 219 delete mManager;
214} 220}
215 221
216void DistributionListEditorWidget::save() 222void DistributionListEditorWidget::save()
217{ 223{
218 mManager->save(); 224 mManager->save();
219} 225}
220 226
221void DistributionListEditorWidget::slotSelectionEntryViewChanged() 227void DistributionListEditorWidget::slotSelectionEntryViewChanged()
222{ 228{
223 EntryItem *entryItem = static_cast<EntryItem *>( mEntryView->selectedItem() ); 229 EntryItem *entryItem = static_cast<EntryItem *>( mEntryView->selectedItem() );
224 bool state=entryItem; 230 bool state=entryItem;
225 231
226 mChangeEmailButton->setEnabled(state); 232 mChangeEmailButton->setEnabled(state);
227 mRemoveEntryButton->setEnabled(state); 233 mRemoveEntryButton->setEnabled(state);
228} 234}
229 235
230void DistributionListEditorWidget::newList() 236void DistributionListEditorWidget::newList()
231{ 237{
232 KLineEditDlg dlg(i18n("Please enter name:"), QString::null, this); 238 KLineEditDlg dlg(i18n("Please enter name:"), QString::null, this);
233 dlg.setCaption(i18n("New Distribution List")); 239 dlg.setCaption(i18n("New Distribution List"));
234 if (!dlg.exec()) return; 240 if (!dlg.exec()) return;
235 241
236 new DistributionList( mManager, dlg.text() ); 242 new DistributionList( mManager, dlg.text() );
237 243
238 mNameCombo->clear(); 244 mNameCombo->clear();
239 mNameCombo->insertStringList( mManager->listNames() ); 245 mNameCombo->insertStringList( mManager->listNames() );
240 mNameCombo->setCurrentItem( mNameCombo->count() - 1 ); 246 mNameCombo->setCurrentItem( mNameCombo->count() - 1 );
241 247
242 updateEntryView(); 248 updateEntryView();
243 slotSelectionAddresseeViewChanged(); 249 slotSelectionAddresseeViewChanged();
244} 250}
245 251
246void DistributionListEditorWidget::editList() 252void DistributionListEditorWidget::editList()
247{ 253{
248 QString oldName = mNameCombo->currentText(); 254 QString oldName = mNameCombo->currentText();
249 255
250 KLineEditDlg dlg(i18n("Please change name:"), oldName, this); 256 KLineEditDlg dlg(i18n("Please change name:"), oldName, this);
251 dlg.setCaption(i18n("Distribution List")); 257 dlg.setCaption(i18n("Distribution List"));
252 if (!dlg.exec()) return; 258 if (!dlg.exec()) return;
253 259
254 DistributionList *list = mManager->list( oldName ); 260 DistributionList *list = mManager->list( oldName );
255 list->setName( dlg.text() ); 261 list->setName( dlg.text() );
256 262
257 mNameCombo->clear(); 263 mNameCombo->clear();
258 mNameCombo->insertStringList( mManager->listNames() ); 264 mNameCombo->insertStringList( mManager->listNames() );
259 mNameCombo->setCurrentItem( mNameCombo->count() - 1 ); 265 mNameCombo->setCurrentItem( mNameCombo->count() - 1 );
260 266
261 updateEntryView(); 267 updateEntryView();
262 slotSelectionAddresseeViewChanged(); 268 slotSelectionAddresseeViewChanged();
263} 269}
264 270
265void DistributionListEditorWidget::removeList() 271void DistributionListEditorWidget::removeList()
266{ 272{
267 int result = KMessageBox::warningContinueCancel( this, 273 int result = KMessageBox::warningContinueCancel( this,
268 i18n("Delete distribution list '%1'?") .arg( mNameCombo->currentText() ), 274 i18n("Delete distribution list '%1'?") .arg( mNameCombo->currentText() ),
269 QString::null, i18n("Delete") ); 275 QString::null, i18n("Delete") );
270 276
271 if ( result != KMessageBox::Continue ) return; 277 if ( result != KMessageBox::Continue ) return;
272 278
273 delete mManager->list( mNameCombo->currentText() ); 279 delete mManager->list( mNameCombo->currentText() );
274 mNameCombo->removeItem( mNameCombo->currentItem() ); 280 mNameCombo->removeItem( mNameCombo->currentItem() );
275 281
276 updateEntryView(); 282 updateEntryView();
277 slotSelectionAddresseeViewChanged(); 283 slotSelectionAddresseeViewChanged();
278} 284}
279 285
280void DistributionListEditorWidget::addEntry() 286void DistributionListEditorWidget::addEntry()
281{ 287{
282 AddresseeItem *addresseeItem = 288 AddresseeItem *addresseeItem =
283 static_cast<AddresseeItem *>( mAddresseeView->selectedItem() ); 289 static_cast<AddresseeItem *>( mAddresseeView->selectedItem() );
284 290
285 if( !addresseeItem ) { 291 if( !addresseeItem ) {
286 kdDebug(5700) << "DLE::addEntry(): No addressee selected." << endl; 292 kdDebug(5700) << "DLE::addEntry(): No addressee selected." << endl;
287 return; 293 return;
288 } 294 }
289 295
290 DistributionList *list = mManager->list( mNameCombo->currentText() ); 296 DistributionList *list = mManager->list( mNameCombo->currentText() );
291 if ( !list ) { 297 if ( !list ) {
292 kdDebug(5700) << "DLE::addEntry(): No dist list '" << mNameCombo->currentText() << "'" << endl; 298 kdDebug(5700) << "DLE::addEntry(): No dist list '" << mNameCombo->currentText() << "'" << endl;
293 return; 299 return;
294 } 300 }
295 301
296 list->insertEntry( addresseeItem->addressee() ); 302 list->insertEntry( addresseeItem->addressee() );
297 updateEntryView(); 303 updateEntryView();
298 slotSelectionAddresseeViewChanged(); 304 slotSelectionAddresseeViewChanged();
299} 305}
300 306
301void DistributionListEditorWidget::removeEntry() 307void DistributionListEditorWidget::removeEntry()
302{ 308{
303 DistributionList *list = mManager->list( mNameCombo->currentText() ); 309 DistributionList *list = mManager->list( mNameCombo->currentText() );
304 if ( !list ) return; 310 if ( !list ) return;
305 311
306 EntryItem *entryItem = 312 EntryItem *entryItem =
307 static_cast<EntryItem *>( mEntryView->selectedItem() ); 313 static_cast<EntryItem *>( mEntryView->selectedItem() );
308 if ( !entryItem ) return; 314 if ( !entryItem ) return;
309 315
310 list->removeEntry( entryItem->addressee(), entryItem->email() ); 316 list->removeEntry( entryItem->addressee(), entryItem->email() );
311 delete entryItem; 317 delete entryItem;
312} 318}
313 319
314void DistributionListEditorWidget::changeEmail() 320void DistributionListEditorWidget::changeEmail()
315{ 321{
316 DistributionList *list = mManager->list( mNameCombo->currentText() ); 322 DistributionList *list = mManager->list( mNameCombo->currentText() );
317 if ( !list ) return; 323 if ( !list ) return;
318 324
319 EntryItem *entryItem = 325 EntryItem *entryItem =
320 static_cast<EntryItem *>( mEntryView->selectedItem() ); 326 static_cast<EntryItem *>( mEntryView->selectedItem() );
321 if ( !entryItem ) return; 327 if ( !entryItem ) return;
322 328
323 QString email = EmailSelector::getEmail( entryItem->addressee().emails(), 329 QString email = EmailSelector::getEmail( entryItem->addressee().emails(),
324 entryItem->email(), this ); 330 entryItem->email(), this );
325 list->removeEntry( entryItem->addressee(), entryItem->email() ); 331 list->removeEntry( entryItem->addressee(), entryItem->email() );
326 list->insertEntry( entryItem->addressee(), email ); 332 list->insertEntry( entryItem->addressee(), email );
327 333
328 updateEntryView(); 334 updateEntryView();
329} 335}
330 336
331void DistributionListEditorWidget::updateEntryView() 337void DistributionListEditorWidget::updateEntryView()
332{ 338{
333 if ( mNameCombo->currentText().isEmpty() ) { 339 if ( mNameCombo->currentText().isEmpty() ) {
334 mListLabel->setText( i18n("Selected addressees:") ); 340 mListLabel->setText( i18n("Selected addressees:") );
335 } else { 341 } else {
336 mListLabel->setText( i18n("Selected addresses in '%1':") 342 mListLabel->setText( i18n("Selected addresses in '%1':")
337 .arg( mNameCombo->currentText() ) ); 343 .arg( mNameCombo->currentText() ) );
338 } 344 }
339 345
340 mEntryView->clear(); 346 mEntryView->clear();
341 347
342 DistributionList *list = mManager->list( mNameCombo->currentText() ); 348 DistributionList *list = mManager->list( mNameCombo->currentText() );
343 if ( !list ) { 349 if ( !list ) {
344 mEditButton->setEnabled(false); 350 mEditButton->setEnabled(false);
345 mRemoveButton->setEnabled(false); 351 mRemoveButton->setEnabled(false);
346 mChangeEmailButton->setEnabled(false); 352 mChangeEmailButton->setEnabled(false);
347 mRemoveEntryButton->setEnabled(false); 353 mRemoveEntryButton->setEnabled(false);
348 mAddresseeView->setEnabled(false); 354 mAddresseeView->setEnabled(false);
349 mEntryView->setEnabled(false); 355 mEntryView->setEnabled(false);
350 return; 356 return;
351 } else { 357 } else {
352 mEditButton->setEnabled(true); 358 mEditButton->setEnabled(true);
353 mRemoveButton->setEnabled(true); 359 mRemoveButton->setEnabled(true);
354 mAddresseeView->setEnabled(true); 360 mAddresseeView->setEnabled(true);
355 mEntryView->setEnabled(true); 361 mEntryView->setEnabled(true);
356 } 362 }
357 363
358 DistributionList::Entry::List entries = list->entries(); 364 DistributionList::Entry::List entries = list->entries();
359 DistributionList::Entry::List::ConstIterator it; 365 DistributionList::Entry::List::ConstIterator it;
360 for( it = entries.begin(); it != entries.end(); ++it ) { 366 for( it = entries.begin(); it != entries.end(); ++it ) {
361 new EntryItem( mEntryView, (*it).addressee, (*it).email ); 367 new EntryItem( mEntryView, (*it).addressee, (*it).email );
362 } 368 }
363 369
364 EntryItem *entryItem = static_cast<EntryItem *>( mEntryView->selectedItem() ); 370 EntryItem *entryItem = static_cast<EntryItem *>( mEntryView->selectedItem() );
365 bool state=entryItem; 371 bool state=entryItem;
366 372
367 mChangeEmailButton->setEnabled(state); 373 mChangeEmailButton->setEnabled(state);
368 mRemoveEntryButton->setEnabled(state); 374 mRemoveEntryButton->setEnabled(state);
369} 375}
370 376
371void DistributionListEditorWidget::updateAddresseeView() 377void DistributionListEditorWidget::updateAddresseeView()
372{ 378{
373 mAddresseeView->clear(); 379 mAddresseeView->clear();
374 380
375 AddressBook::Iterator it; 381 AddressBook::Iterator it;
376 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 382 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
377 new AddresseeItem( mAddresseeView, *it ); 383 new AddresseeItem( mAddresseeView, *it );
378 } 384 }
379} 385}
380 386
381void DistributionListEditorWidget::updateNameCombo() 387void DistributionListEditorWidget::updateNameCombo()
382{ 388{
383 mNameCombo->insertStringList( mManager->listNames() ); 389 mNameCombo->insertStringList( mManager->listNames() );
384 390
385 updateEntryView(); 391 updateEntryView();
386} 392}
387 393
388void DistributionListEditorWidget::slotSelectionAddresseeViewChanged() 394void DistributionListEditorWidget::slotSelectionAddresseeViewChanged()
389{ 395{
390 AddresseeItem *addresseeItem = 396 AddresseeItem *addresseeItem =
391 static_cast<AddresseeItem *>( mAddresseeView->selectedItem() ); 397 static_cast<AddresseeItem *>( mAddresseeView->selectedItem() );
392 bool state=addresseeItem; 398 bool state=addresseeItem;
393 mAddEntryButton->setEnabled( state && !mNameCombo->currentText().isEmpty()); 399 mAddEntryButton->setEnabled( state && !mNameCombo->currentText().isEmpty());
394} 400}
diff --git a/kabc/distributionlistdialog.h b/kabc/distributionlistdialog.h
index b6d3c80..3627431 100644
--- a/kabc/distributionlistdialog.h
+++ b/kabc/distributionlistdialog.h
@@ -1,140 +1,142 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#ifndef KABC_DISTRIBUTIONLISTDIALOG_H 21#ifndef KABC_DISTRIBUTIONLISTDIALOG_H
22#define KABC_DISTRIBUTIONLISTDIALOG_H 22#define KABC_DISTRIBUTIONLISTDIALOG_H
23 23
24#include <qwidget.h> 24#include <qwidget.h>
25//Added by qt3to4:
26#include <QLabel>
25 27
26#include <kdialogbase.h> 28#include <kdialogbase.h>
27 29
28class QListView; 30class Q3ListView;
29class QLabel; 31class QLabel;
30class QComboBox; 32class QComboBox;
31class QButtonGroup; 33class Q3ButtonGroup;
32 34
33namespace KABC { 35namespace KABC {
34 36
35class AddressBook; 37class AddressBook;
36class DistributionListEditorWidget; 38class DistributionListEditorWidget;
37class DistributionListManager; 39class DistributionListManager;
38 40
39/** 41/**
40 @short Frontend to create distribution lists 42 @short Frontend to create distribution lists
41 43
42 Creating a new DistributionListDialog does automatically 44 Creating a new DistributionListDialog does automatically
43 load all addressees and distribution lists from the config 45 load all addressees and distribution lists from the config
44 files. The changes will be saved when clicking the 'OK' 46 files. The changes will be saved when clicking the 'OK'
45 button. 47 button.
46 48
47 Example: 49 Example:
48 50
49 <pre> 51 <pre>
50 KABC::DistributionListDialog *dlg = new 52 KABC::DistributionListDialog *dlg = new
51 KABC::DistributionListDialog( KABC::StdAddressBook::self(), this ); 53 KABC::DistributionListDialog( KABC::StdAddressBook::self(), this );
52 54
53 dlg->exec(); 55 dlg->exec();
54 </pre> 56 </pre>
55*/ 57*/
56class DistributionListDialog : public KDialogBase 58class DistributionListDialog : public KDialogBase
57{ 59{
58 Q_OBJECT 60 Q_OBJECT
59 61
60 public: 62 public:
61 /** 63 /**
62 Constructor. 64 Constructor.
63 65
64 @param ab The addressbook, the addressees should be used from 66 @param ab The addressbook, the addressees should be used from
65 @param parent The parent widget 67 @param parent The parent widget
66 */ 68 */
67 DistributionListDialog( AddressBook *ab, QWidget *parent ); 69 DistributionListDialog( AddressBook *ab, QWidget *parent );
68 70
69 /** 71 /**
70 Destructor. 72 Destructor.
71 */ 73 */
72 virtual ~DistributionListDialog(); 74 virtual ~DistributionListDialog();
73 75
74 private: 76 private:
75 DistributionListEditorWidget *mEditor; 77 DistributionListEditorWidget *mEditor;
76 78
77 struct Data; 79 struct Data;
78 Data *d; 80 Data *d;
79}; 81};
80 82
81/** 83/**
82 @short Helper class 84 @short Helper class
83*/ 85*/
84class EmailSelector : public KDialogBase 86class EmailSelector : public KDialogBase
85{ 87{
86 public: 88 public:
87 EmailSelector( const QStringList &emails, const QString &current, 89 EmailSelector( const QStringList &emails, const QString &current,
88 QWidget *parent ); 90 QWidget *parent );
89 91
90 QString selected(); 92 QString selected();
91 93
92 static QString getEmail( const QStringList &emails, const QString &current, 94 static QString getEmail( const QStringList &emails, const QString &current,
93 QWidget *parent ); 95 QWidget *parent );
94 96
95 private: 97 private:
96 QButtonGroup *mButtonGroup; 98 Q3ButtonGroup *mButtonGroup;
97}; 99};
98 100
99/** 101/**
100 @short Helper class 102 @short Helper class
101*/ 103*/
102class DistributionListEditorWidget : public QWidget 104class DistributionListEditorWidget : public QWidget
103{ 105{
104 Q_OBJECT 106 Q_OBJECT
105 107
106 public: 108 public:
107 DistributionListEditorWidget( AddressBook *, QWidget *parent ); 109 DistributionListEditorWidget( AddressBook *, QWidget *parent );
108 virtual ~DistributionListEditorWidget(); 110 virtual ~DistributionListEditorWidget();
109 111
110 private slots: 112 private slots:
111 void newList(); 113 void newList();
112 void editList(); 114 void editList();
113 void removeList(); 115 void removeList();
114 void addEntry(); 116 void addEntry();
115 void removeEntry(); 117 void removeEntry();
116 void changeEmail(); 118 void changeEmail();
117 void updateEntryView(); 119 void updateEntryView();
118 void updateAddresseeView(); 120 void updateAddresseeView();
119 void updateNameCombo(); 121 void updateNameCombo();
120 void slotSelectionEntryViewChanged(); 122 void slotSelectionEntryViewChanged();
121 void slotSelectionAddresseeViewChanged(); 123 void slotSelectionAddresseeViewChanged();
122 void save(); 124 void save();
123 125
124 private: 126 private:
125 QComboBox *mNameCombo; 127 QComboBox *mNameCombo;
126 QLabel *mListLabel; 128 QLabel *mListLabel;
127 QListView *mEntryView; 129 Q3ListView *mEntryView;
128 QListView *mAddresseeView; 130 Q3ListView *mAddresseeView;
129 131
130 AddressBook *mAddressBook; 132 AddressBook *mAddressBook;
131 DistributionListManager *mManager; 133 DistributionListManager *mManager;
132 QPushButton *mNewButton, *mEditButton, *mRemoveButton; 134 QPushButton *mNewButton, *mEditButton, *mRemoveButton;
133 QPushButton *mChangeEmailButton, *mRemoveEntryButton, *mAddEntryButton; 135 QPushButton *mChangeEmailButton, *mRemoveEntryButton, *mAddEntryButton;
134 136
135 struct Data; 137 struct Data;
136 Data *d; 138 Data *d;
137}; 139};
138 140
139} 141}
140#endif 142#endif
diff --git a/kabc/distributionlisteditor.cpp b/kabc/distributionlisteditor.cpp
index 9f5840b..ca5ecb7 100644
--- a/kabc/distributionlisteditor.cpp
+++ b/kabc/distributionlisteditor.cpp
@@ -1,322 +1,326 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#include <qlistview.h> 21#include <q3listview.h>
22#include <qlayout.h> 22#include <qlayout.h>
23#include <qpushbutton.h> 23#include <qpushbutton.h>
24#include <qcombobox.h> 24#include <qcombobox.h>
25#ifdef DESKTOP_VERSION 25#ifdef DESKTOP_VERSION
26#include <qinputdialog.h> 26#include <qinputdialog.h>
27#else 27#else
28#include <qtcompat/qinputdialog.h> 28#include <qtcompat/qinputdialog.h>
29#endif 29#endif
30#include <qbuttongroup.h> 30#include <q3buttongroup.h>
31#include <qradiobutton.h> 31#include <qradiobutton.h>
32//Added by qt3to4:
33#include <Q3HBoxLayout>
34#include <Q3Frame>
35#include <Q3VBoxLayout>
32 36
33#include <klocale.h> 37#include <klocale.h>
34#include <kdebug.h> 38#include <kdebug.h>
35 39
36#include "addressbook.h" 40#include "addressbook.h"
37#include "addresseedialog.h" 41#include "addresseedialog.h"
38#include "distributionlist.h" 42#include "distributionlist.h"
39 43
40#include "distributionlisteditor.h" 44#include "distributionlisteditor.h"
41 45
42//US #include "distributionlisteditor.moc" 46//US #include "distributionlisteditor.moc"
43 47
44using namespace KABC; 48using namespace KABC;
45 49
46EmailSelectDialog::EmailSelectDialog( const QStringList &emails, const QString &current, 50EmailSelectDialog::EmailSelectDialog( const QStringList &emails, const QString &current,
47 QWidget *parent ) : 51 QWidget *parent ) :
48 KDialogBase( KDialogBase::Plain, i18n("Select Email Address"), Ok, Ok, 52 KDialogBase( KDialogBase::Plain, i18n("Select Email Address"), Ok, Ok,
49 parent ) 53 parent )
50{ 54{
51 QFrame *topFrame = plainPage(); 55 Q3Frame *topFrame = plainPage();
52 QBoxLayout *topLayout = new QVBoxLayout( topFrame ); 56 Q3BoxLayout *topLayout = new Q3VBoxLayout( topFrame );
53 57
54 mButtonGroup = new QButtonGroup( 1, Horizontal, i18n("Email Addresses"), 58 mButtonGroup = new Q3ButtonGroup( 1, Qt::Horizontal, i18n("Email Addresses"),
55 topFrame ); 59 topFrame );
56 topLayout->addWidget( mButtonGroup ); 60 topLayout->addWidget( mButtonGroup );
57 61
58 QStringList::ConstIterator it; 62 QStringList::ConstIterator it;
59 for( it = emails.begin(); it != emails.end(); ++it ) { 63 for( it = emails.begin(); it != emails.end(); ++it ) {
60 QRadioButton *button = new QRadioButton( *it, mButtonGroup ); 64 QRadioButton *button = new QRadioButton( *it, mButtonGroup );
61 if ( (*it) == current ) { 65 if ( (*it) == current ) {
62 button->setDown( true ); 66 button->setDown( true );
63 } 67 }
64 } 68 }
65} 69}
66 70
67QString EmailSelectDialog::selected() 71QString EmailSelectDialog::selected()
68{ 72{
69 QButton *button = mButtonGroup->selected(); 73 QAbstractButton *button = mButtonGroup->selected();
70 if ( button ) return button->text(); 74 if ( button ) return button->text();
71 return QString::null; 75 return QString::null;
72} 76}
73 77
74QString EmailSelectDialog::getEmail( const QStringList &emails, const QString &current, 78QString EmailSelectDialog::getEmail( const QStringList &emails, const QString &current,
75 QWidget *parent ) 79 QWidget *parent )
76{ 80{
77 81
78 EmailSelectDialog *dlg = new EmailSelectDialog( emails, current, parent ); 82 EmailSelectDialog *dlg = new EmailSelectDialog( emails, current, parent );
79 dlg->exec(); 83 dlg->exec();
80 84
81 QString result = dlg->selected(); 85 QString result = dlg->selected();
82 86
83 delete dlg; 87 delete dlg;
84 88
85 return result; 89 return result;
86} 90}
87 91
88class EditEntryItem : public QListViewItem 92class EditEntryItem : public Q3ListViewItem
89{ 93{
90 public: 94 public:
91 EditEntryItem( QListView *parent, const Addressee &addressee, 95 EditEntryItem( Q3ListView *parent, const Addressee &addressee,
92 const QString &email=QString::null ) : 96 const QString &email=QString::null ) :
93 QListViewItem( parent ), 97 Q3ListViewItem( parent ),
94 mAddressee( addressee ), 98 mAddressee( addressee ),
95 mEmail( email ) 99 mEmail( email )
96 { 100 {
97 setText( 0, addressee.realName() ); 101 setText( 0, addressee.realName() );
98 if( email.isEmpty() ) { 102 if( email.isEmpty() ) {
99 setText( 1, addressee.preferredEmail() ); 103 setText( 1, addressee.preferredEmail() );
100 setText( 2, i18n("Yes") ); 104 setText( 2, i18n("Yes") );
101 } else { 105 } else {
102 setText( 1, email ); 106 setText( 1, email );
103 setText( 2, i18n("No") ); 107 setText( 2, i18n("No") );
104 } 108 }
105 } 109 }
106 110
107 Addressee addressee() const 111 Addressee addressee() const
108 { 112 {
109 return mAddressee; 113 return mAddressee;
110 } 114 }
111 115
112 QString email() const 116 QString email() const
113 { 117 {
114 return mEmail; 118 return mEmail;
115 } 119 }
116 120
117 private: 121 private:
118 Addressee mAddressee; 122 Addressee mAddressee;
119 QString mEmail; 123 QString mEmail;
120}; 124};
121 125
122DistributionListEditor::DistributionListEditor( AddressBook *addressBook, QWidget *parent) : 126DistributionListEditor::DistributionListEditor( AddressBook *addressBook, QWidget *parent) :
123 QWidget( parent ), 127 QWidget( parent ),
124 mAddressBook( addressBook ) 128 mAddressBook( addressBook )
125{ 129{
126 kdDebug(5700) << "DistributionListEditor()" << endl; 130 kdDebug(5700) << "DistributionListEditor()" << endl;
127 131
128 QBoxLayout *topLayout = new QVBoxLayout( this ); 132 Q3BoxLayout *topLayout = new Q3VBoxLayout( this );
129 topLayout->setMargin( KDialog::marginHint() ); 133 topLayout->setMargin( KDialog::marginHint() );
130 topLayout->setSpacing( KDialog::spacingHint() ); 134 topLayout->setSpacing( KDialog::spacingHint() );
131 135
132 QBoxLayout *nameLayout = new QHBoxLayout( topLayout) ; 136 Q3BoxLayout *nameLayout = new Q3HBoxLayout( topLayout) ;
133 137
134 mNameCombo = new QComboBox( this ); 138 mNameCombo = new QComboBox( this );
135 nameLayout->addWidget( mNameCombo ); 139 nameLayout->addWidget( mNameCombo );
136 connect( mNameCombo, SIGNAL( activated( int ) ), SLOT( updateEntryView() ) ); 140 connect( mNameCombo, SIGNAL( activated( int ) ), SLOT( updateEntryView() ) );
137 141
138 newButton = new QPushButton( i18n("New List"), this ); 142 newButton = new QPushButton( i18n("New List"), this );
139 nameLayout->addWidget( newButton ); 143 nameLayout->addWidget( newButton );
140 connect( newButton, SIGNAL( clicked() ), SLOT( newList() ) ); 144 connect( newButton, SIGNAL( clicked() ), SLOT( newList() ) );
141 145
142 removeButton = new QPushButton( i18n("Remove List"), this ); 146 removeButton = new QPushButton( i18n("Remove List"), this );
143 nameLayout->addWidget( removeButton ); 147 nameLayout->addWidget( removeButton );
144 connect( removeButton, SIGNAL( clicked() ), SLOT( removeList() ) ); 148 connect( removeButton, SIGNAL( clicked() ), SLOT( removeList() ) );
145 149
146 mEntryView = new QListView( this ); 150 mEntryView = new Q3ListView( this );
147 mEntryView->addColumn( i18n("Name") ); 151 mEntryView->addColumn( i18n("Name") );
148 mEntryView->addColumn( i18n("Email") ); 152 mEntryView->addColumn( i18n("Email") );
149 mEntryView->addColumn( i18n("Use Preferred") ); 153 mEntryView->addColumn( i18n("Use Preferred") );
150 topLayout->addWidget( mEntryView ); 154 topLayout->addWidget( mEntryView );
151 connect(mEntryView,SIGNAL(selectionChanged ()),this, SLOT(slotSelectionEntryViewChanged())); 155 connect(mEntryView,SIGNAL(selectionChanged ()),this, SLOT(slotSelectionEntryViewChanged()));
152 156
153 changeEmailButton = new QPushButton( i18n("Change Email"), this ); 157 changeEmailButton = new QPushButton( i18n("Change Email"), this );
154 topLayout->addWidget( changeEmailButton ); 158 topLayout->addWidget( changeEmailButton );
155 connect( changeEmailButton, SIGNAL( clicked() ), SLOT( changeEmail() ) ); 159 connect( changeEmailButton, SIGNAL( clicked() ), SLOT( changeEmail() ) );
156 160
157 removeEntryButton = new QPushButton( i18n("Remove Entry"), this ); 161 removeEntryButton = new QPushButton( i18n("Remove Entry"), this );
158 topLayout->addWidget( removeEntryButton ); 162 topLayout->addWidget( removeEntryButton );
159 connect( removeEntryButton, SIGNAL( clicked() ), SLOT( removeEntry() ) ); 163 connect( removeEntryButton, SIGNAL( clicked() ), SLOT( removeEntry() ) );
160 164
161 addEntryButton = new QPushButton( i18n("Add Entry"), this ); 165 addEntryButton = new QPushButton( i18n("Add Entry"), this );
162 topLayout->addWidget( addEntryButton ); 166 topLayout->addWidget( addEntryButton );
163 connect( addEntryButton, SIGNAL( clicked() ), SLOT( addEntry() ) ); 167 connect( addEntryButton, SIGNAL( clicked() ), SLOT( addEntry() ) );
164 168
165 mAddresseeView = new QListView( this ); 169 mAddresseeView = new Q3ListView( this );
166 mAddresseeView->addColumn( i18n("Name") ); 170 mAddresseeView->addColumn( i18n("Name") );
167 mAddresseeView->addColumn( i18n("Preferred Email") ); 171 mAddresseeView->addColumn( i18n("Preferred Email") );
168 topLayout->addWidget( mAddresseeView ); 172 topLayout->addWidget( mAddresseeView );
169 173
170 174
171 connect(mAddresseeView,SIGNAL(selectionChanged ()),this, SLOT(slotSelectionAddresseeViewChanged())); 175 connect(mAddresseeView,SIGNAL(selectionChanged ()),this, SLOT(slotSelectionAddresseeViewChanged()));
172 176
173 mManager = new DistributionListManager( mAddressBook ); 177 mManager = new DistributionListManager( mAddressBook );
174 mManager->load(); 178 mManager->load();
175 179
176 updateAddresseeView(); 180 updateAddresseeView();
177 updateNameCombo(); 181 updateNameCombo();
178 removeButton->setEnabled(!mManager->listNames().isEmpty()); 182 removeButton->setEnabled(!mManager->listNames().isEmpty());
179} 183}
180 184
181DistributionListEditor::~DistributionListEditor() 185DistributionListEditor::~DistributionListEditor()
182{ 186{
183 kdDebug(5700) << "~DistributionListEditor()" << endl; 187 kdDebug(5700) << "~DistributionListEditor()" << endl;
184 188
185 mManager->save(); 189 mManager->save();
186 delete mManager; 190 delete mManager;
187} 191}
188 192
189void DistributionListEditor::slotSelectionEntryViewChanged() 193void DistributionListEditor::slotSelectionEntryViewChanged()
190{ 194{
191//US EditEntryItem *entryItem = dynamic_cast<EditEntryItem *>( mEntryView->selectedItem() ); 195//US EditEntryItem *entryItem = dynamic_cast<EditEntryItem *>( mEntryView->selectedItem() );
192 EditEntryItem *entryItem = (EditEntryItem *)( mEntryView->selectedItem() ); 196 EditEntryItem *entryItem = (EditEntryItem *)( mEntryView->selectedItem() );
193 bool state = (entryItem != 0L); 197 bool state = (entryItem != 0L);
194 198
195 changeEmailButton->setEnabled(state); 199 changeEmailButton->setEnabled(state);
196 removeEntryButton->setEnabled(state); 200 removeEntryButton->setEnabled(state);
197} 201}
198 202
199void DistributionListEditor::newList() 203void DistributionListEditor::newList()
200{ 204{
201 bool ok = false; 205 bool ok = false;
202 QString name = QInputDialog::getText( i18n("New Distribution List"), 206 QString name = QInputDialog::getText( i18n("New Distribution List"),
203 i18n("Please enter name:"), 207 i18n("Please enter name:"),
204 QLineEdit::Normal, QString::null, &ok, 208 QLineEdit::Normal, QString::null, &ok,
205 this ); 209 this );
206 if ( !ok || name.isEmpty() ) return; 210 if ( !ok || name.isEmpty() ) return;
207 211
208 new DistributionList( mManager, name ); 212 new DistributionList( mManager, name );
209 213
210 mNameCombo->insertItem( name ); 214 mNameCombo->insertItem( name );
211 removeButton->setEnabled(true); 215 removeButton->setEnabled(true);
212 updateEntryView(); 216 updateEntryView();
213} 217}
214 218
215void DistributionListEditor::removeList() 219void DistributionListEditor::removeList()
216{ 220{
217 delete mManager->list( mNameCombo->currentText() ); 221 delete mManager->list( mNameCombo->currentText() );
218 mNameCombo->removeItem( mNameCombo->currentItem() ); 222 mNameCombo->removeItem( mNameCombo->currentItem() );
219 removeButton->setEnabled(!mManager->listNames().isEmpty()); 223 removeButton->setEnabled(!mManager->listNames().isEmpty());
220 addEntryButton->setEnabled( !mNameCombo->currentText().isEmpty()); 224 addEntryButton->setEnabled( !mNameCombo->currentText().isEmpty());
221 updateEntryView(); 225 updateEntryView();
222} 226}
223 227
224void DistributionListEditor::addEntry() 228void DistributionListEditor::addEntry()
225{ 229{
226/*US 230/*US
227 AddresseeItem *addresseeItem = 231 AddresseeItem *addresseeItem =
228 dynamic_cast<AddresseeItem *>( mAddresseeView->selectedItem() ); 232 dynamic_cast<AddresseeItem *>( mAddresseeView->selectedItem() );
229*/ 233*/
230 AddresseeItem *addresseeItem = 234 AddresseeItem *addresseeItem =
231 (AddresseeItem *)( mAddresseeView->selectedItem() ); 235 (AddresseeItem *)( mAddresseeView->selectedItem() );
232 236
233 237
234 if( !addresseeItem ) { 238 if( !addresseeItem ) {
235 kdDebug(5700) << "DLE::addEntry(): No addressee selected." << endl; 239 kdDebug(5700) << "DLE::addEntry(): No addressee selected." << endl;
236 return; 240 return;
237 } 241 }
238 242
239 DistributionList *list = mManager->list( mNameCombo->currentText() ); 243 DistributionList *list = mManager->list( mNameCombo->currentText() );
240 if ( !list ) { 244 if ( !list ) {
241 kdDebug(5700) << "DLE::addEntry(): No dist list '" << mNameCombo->currentText() << "'" << endl; 245 kdDebug(5700) << "DLE::addEntry(): No dist list '" << mNameCombo->currentText() << "'" << endl;
242 return; 246 return;
243 } 247 }
244 248
245 list->insertEntry( addresseeItem->addressee() ); 249 list->insertEntry( addresseeItem->addressee() );
246 updateEntryView(); 250 updateEntryView();
247 slotSelectionAddresseeViewChanged(); 251 slotSelectionAddresseeViewChanged();
248} 252}
249 253
250void DistributionListEditor::removeEntry() 254void DistributionListEditor::removeEntry()
251{ 255{
252 DistributionList *list = mManager->list( mNameCombo->currentText() ); 256 DistributionList *list = mManager->list( mNameCombo->currentText() );
253 if ( !list ) return; 257 if ( !list ) return;
254 258
255//US EditEntryItem *entryItem = dynamic_cast<EditEntryItem *>( mEntryView->selectedItem() ); 259//US EditEntryItem *entryItem = dynamic_cast<EditEntryItem *>( mEntryView->selectedItem() );
256 EditEntryItem *entryItem = (EditEntryItem *)( mEntryView->selectedItem() ); 260 EditEntryItem *entryItem = (EditEntryItem *)( mEntryView->selectedItem() );
257 if ( !entryItem ) return; 261 if ( !entryItem ) return;
258 262
259 list->removeEntry( entryItem->addressee(), entryItem->email() ); 263 list->removeEntry( entryItem->addressee(), entryItem->email() );
260 delete entryItem; 264 delete entryItem;
261} 265}
262 266
263void DistributionListEditor::changeEmail() 267void DistributionListEditor::changeEmail()
264{ 268{
265 DistributionList *list = mManager->list( mNameCombo->currentText() ); 269 DistributionList *list = mManager->list( mNameCombo->currentText() );
266 if ( !list ) return; 270 if ( !list ) return;
267 271
268//US EditEntryItem *entryItem = dynamic_cast<EditEntryItem *>( mEntryView->selectedItem() ); 272//US EditEntryItem *entryItem = dynamic_cast<EditEntryItem *>( mEntryView->selectedItem() );
269 EditEntryItem *entryItem = (EditEntryItem *)( mEntryView->selectedItem() ); 273 EditEntryItem *entryItem = (EditEntryItem *)( mEntryView->selectedItem() );
270 if ( !entryItem ) return; 274 if ( !entryItem ) return;
271 275
272 QString email = EmailSelectDialog::getEmail( entryItem->addressee().emails(), 276 QString email = EmailSelectDialog::getEmail( entryItem->addressee().emails(),
273 entryItem->email(), this ); 277 entryItem->email(), this );
274 list->removeEntry( entryItem->addressee(), entryItem->email() ); 278 list->removeEntry( entryItem->addressee(), entryItem->email() );
275 list->insertEntry( entryItem->addressee(), email ); 279 list->insertEntry( entryItem->addressee(), email );
276 280
277 updateEntryView(); 281 updateEntryView();
278} 282}
279 283
280void DistributionListEditor::updateEntryView() 284void DistributionListEditor::updateEntryView()
281{ 285{
282 DistributionList *list = mManager->list( mNameCombo->currentText() ); 286 DistributionList *list = mManager->list( mNameCombo->currentText() );
283 if ( !list ) return; 287 if ( !list ) return;
284 288
285 mEntryView->clear(); 289 mEntryView->clear();
286 DistributionList::Entry::List entries = list->entries(); 290 DistributionList::Entry::List entries = list->entries();
287 DistributionList::Entry::List::ConstIterator it; 291 DistributionList::Entry::List::ConstIterator it;
288 for( it = entries.begin(); it != entries.end(); ++it ) { 292 for( it = entries.begin(); it != entries.end(); ++it ) {
289 new EditEntryItem( mEntryView, (*it).addressee, (*it).email ); 293 new EditEntryItem( mEntryView, (*it).addressee, (*it).email );
290 } 294 }
291//US EditEntryItem *entryItem = dynamic_cast<EditEntryItem *>( mEntryView->selectedItem() ); 295//US EditEntryItem *entryItem = dynamic_cast<EditEntryItem *>( mEntryView->selectedItem() );
292 EditEntryItem *entryItem = (EditEntryItem *)( mEntryView->selectedItem() ); 296 EditEntryItem *entryItem = (EditEntryItem *)( mEntryView->selectedItem() );
293 bool state = (entryItem != 0L); 297 bool state = (entryItem != 0L);
294 298
295 changeEmailButton->setEnabled(state); 299 changeEmailButton->setEnabled(state);
296 removeEntryButton->setEnabled(state); 300 removeEntryButton->setEnabled(state);
297} 301}
298 302
299void DistributionListEditor::updateAddresseeView() 303void DistributionListEditor::updateAddresseeView()
300{ 304{
301 mAddresseeView->clear(); 305 mAddresseeView->clear();
302 306
303 AddressBook::Iterator it; 307 AddressBook::Iterator it;
304 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 308 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
305 new AddresseeItem( mAddresseeView, *it ); 309 new AddresseeItem( mAddresseeView, *it );
306 } 310 }
307} 311}
308 312
309void DistributionListEditor::updateNameCombo() 313void DistributionListEditor::updateNameCombo()
310{ 314{
311 mNameCombo->insertStringList( mManager->listNames() ); 315 mNameCombo->insertStringList( mManager->listNames() );
312 316
313 updateEntryView(); 317 updateEntryView();
314} 318}
315 319
316void DistributionListEditor::slotSelectionAddresseeViewChanged() 320void DistributionListEditor::slotSelectionAddresseeViewChanged()
317{ 321{
318//US AddresseeItem *addresseeItem = dynamic_cast<AddresseeItem *>( mAddresseeView->selectedItem() ); 322//US AddresseeItem *addresseeItem = dynamic_cast<AddresseeItem *>( mAddresseeView->selectedItem() );
319 AddresseeItem *addresseeItem = (AddresseeItem *)( mAddresseeView->selectedItem() ); 323 AddresseeItem *addresseeItem = (AddresseeItem *)( mAddresseeView->selectedItem() );
320 bool state = (addresseeItem != 0L); 324 bool state = (addresseeItem != 0L);
321 addEntryButton->setEnabled( state && !mNameCombo->currentText().isEmpty()); 325 addEntryButton->setEnabled( state && !mNameCombo->currentText().isEmpty());
322} 326}
diff --git a/kabc/distributionlisteditor.h b/kabc/distributionlisteditor.h
index e0b4221..e672a14 100644
--- a/kabc/distributionlisteditor.h
+++ b/kabc/distributionlisteditor.h
@@ -1,86 +1,86 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20#ifndef KABC_DISTRIBUTIONLISTEDITOR_H 20#ifndef KABC_DISTRIBUTIONLISTEDITOR_H
21#define KABC_DISTRIBUTIONLISTEDITOR_H 21#define KABC_DISTRIBUTIONLISTEDITOR_H
22 22
23#include <qwidget.h> 23#include <qwidget.h>
24 24
25#include <kdialogbase.h> 25#include <kdialogbase.h>
26 26
27class QListView; 27class Q3ListView;
28class QComboBox; 28class QComboBox;
29class QButtonGroup; 29class Q3ButtonGroup;
30 30
31namespace KABC { 31namespace KABC {
32 32
33class AddressBook; 33class AddressBook;
34class DistributionListManager; 34class DistributionListManager;
35 35
36class EmailSelectDialog : public KDialogBase 36class EmailSelectDialog : public KDialogBase
37{ 37{
38 public: 38 public:
39 EmailSelectDialog( const QStringList &emails, const QString &current, 39 EmailSelectDialog( const QStringList &emails, const QString &current,
40 QWidget *parent ); 40 QWidget *parent );
41 41
42 QString selected(); 42 QString selected();
43 43
44 static QString getEmail( const QStringList &emails, const QString &current, 44 static QString getEmail( const QStringList &emails, const QString &current,
45 QWidget *parent ); 45 QWidget *parent );
46 46
47 private: 47 private:
48 QButtonGroup *mButtonGroup; 48 Q3ButtonGroup *mButtonGroup;
49}; 49};
50 50
51/** 51/**
52 @obsolete 52 @obsolete
53*/ 53*/
54class DistributionListEditor : public QWidget 54class DistributionListEditor : public QWidget
55{ 55{
56 Q_OBJECT 56 Q_OBJECT
57 public: 57 public:
58 DistributionListEditor( AddressBook *, QWidget *parent ); 58 DistributionListEditor( AddressBook *, QWidget *parent );
59 virtual ~DistributionListEditor(); 59 virtual ~DistributionListEditor();
60 60
61 private slots: 61 private slots:
62 void newList(); 62 void newList();
63 void removeList(); 63 void removeList();
64 void addEntry(); 64 void addEntry();
65 void removeEntry(); 65 void removeEntry();
66 void changeEmail(); 66 void changeEmail();
67 void updateEntryView(); 67 void updateEntryView();
68 void updateAddresseeView(); 68 void updateAddresseeView();
69 void updateNameCombo(); 69 void updateNameCombo();
70 void slotSelectionEntryViewChanged(); 70 void slotSelectionEntryViewChanged();
71 void slotSelectionAddresseeViewChanged(); 71 void slotSelectionAddresseeViewChanged();
72 72
73 private: 73 private:
74 QComboBox *mNameCombo; 74 QComboBox *mNameCombo;
75 QListView *mEntryView; 75 Q3ListView *mEntryView;
76 QListView *mAddresseeView; 76 Q3ListView *mAddresseeView;
77 77
78 AddressBook *mAddressBook; 78 AddressBook *mAddressBook;
79 DistributionListManager *mManager; 79 DistributionListManager *mManager;
80 QPushButton *newButton, *removeButton; 80 QPushButton *newButton, *removeButton;
81 QPushButton *changeEmailButton,*removeEntryButton,*addEntryButton; 81 QPushButton *changeEmailButton,*removeEntryButton,*addEntryButton;
82}; 82};
83 83
84} 84}
85 85
86#endif 86#endif
diff --git a/kabc/field.cpp b/kabc/field.cpp
index 7c6d7a9..203f696 100644
--- a/kabc/field.cpp
+++ b/kabc/field.cpp
@@ -1,584 +1,586 @@
1/*** Warning! This file has been generated by the script makeaddressee ***/ 1/*** Warning! This file has been generated by the script makeaddressee ***/
2/* 2/*
3 This file is part of libkabc. 3 This file is part of libkabc.
4 Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org> 4 Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org>
5 5
6 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
10 10
11 This library is distributed in the hope that it will be useful, 11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details. 14 Library General Public License for more details.
15 15
16 You should have received a copy of the GNU Library General Public License 16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to 17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. 19 Boston, MA 02111-1307, USA.
20*/ 20*/
21 21
22/* 22/*
23Enhanced Version of the file for platform independent KDE tools. 23Enhanced Version of the file for platform independent KDE tools.
24Copyright (c) 2004 Ulf Schenk 24Copyright (c) 2004 Ulf Schenk
25 25
26$Id$ 26$Id$
27*/ 27*/
28 28
29#include <klocale.h> 29#include <klocale.h>
30#include <kconfig.h> 30#include <kconfig.h>
31#include <kconfigbase.h> 31#include <kconfigbase.h>
32#include <kglobal.h> 32#include <kglobal.h>
33 33
34#include "field.h" 34#include "field.h"
35#include "resource.h" 35#include "resource.h"
36//Added by qt3to4:
37#include <Q3ValueList>
36 38
37using namespace KABC; 39using namespace KABC;
38 40
39class Field::FieldImpl 41class Field::FieldImpl
40{ 42{
41 public: 43 public:
42 FieldImpl( int fieldId, int category = 0, 44 FieldImpl( int fieldId, int category = 0,
43 const QString &label = QString::null, 45 const QString &label = QString::null,
44 const QString &key = QString::null, 46 const QString &key = QString::null,
45 const QString &app = QString::null ) 47 const QString &app = QString::null )
46 : mFieldId( fieldId ), mCategory( category ), mLabel( label ), 48 : mFieldId( fieldId ), mCategory( category ), mLabel( label ),
47 mKey( key ), mApp( app ) {} 49 mKey( key ), mApp( app ) {}
48 50
49 enum FieldId 51 enum FieldId
50 { 52 {
51 CustomField, 53 CustomField,
52 FormattedName, 54 FormattedName,
53 FamilyName, 55 FamilyName,
54 GivenName, 56 GivenName,
55 AdditionalName, 57 AdditionalName,
56 Prefix, 58 Prefix,
57 Suffix, 59 Suffix,
58 NickName, 60 NickName,
59 Birthday, 61 Birthday,
60 Category, 62 Category,
61 HomeAddressStreet, 63 HomeAddressStreet,
62 HomeAddressLocality, 64 HomeAddressLocality,
63 HomeAddressRegion, 65 HomeAddressRegion,
64 HomeAddressPostalCode, 66 HomeAddressPostalCode,
65 HomeAddressCountry, 67 HomeAddressCountry,
66 HomeAddressLabel, 68 HomeAddressLabel,
67 BusinessAddressStreet, 69 BusinessAddressStreet,
68 BusinessAddressLocality, 70 BusinessAddressLocality,
69 BusinessAddressRegion, 71 BusinessAddressRegion,
70 BusinessAddressPostalCode, 72 BusinessAddressPostalCode,
71 BusinessAddressCountry, 73 BusinessAddressCountry,
72 BusinessAddressLabel, 74 BusinessAddressLabel,
73 HomePhone, 75 HomePhone,
74 BusinessPhone, 76 BusinessPhone,
75 MobilePhone, 77 MobilePhone,
76 HomeFax, 78 HomeFax,
77 BusinessFax, 79 BusinessFax,
78 Isdn, 80 Isdn,
79 Pager, 81 Pager,
80 Email, 82 Email,
81 Mailer, 83 Mailer,
82 Title, 84 Title,
83 Role, 85 Role,
84 Organization, 86 Organization,
85 Note, 87 Note,
86 Url, 88 Url,
87 Resource, 89 Resource,
88 Sip, 90 Sip,
89 MobileWorkPhone, 91 MobileWorkPhone,
90 OtherPhone 92 OtherPhone
91 }; 93 };
92 94
93 int fieldId() { return mFieldId; } 95 int fieldId() { return mFieldId; }
94 int category() { return mCategory; } 96 int category() { return mCategory; }
95 97
96 QString label() { return mLabel; } 98 QString label() { return mLabel; }
97 QString key() { return mKey; } 99 QString key() { return mKey; }
98 QString app() { return mApp; } 100 QString app() { return mApp; }
99 101
100 private: 102 private:
101 int mFieldId; 103 int mFieldId;
102 int mCategory; 104 int mCategory;
103 105
104 QString mLabel; 106 QString mLabel;
105 QString mKey; 107 QString mKey;
106 QString mApp; 108 QString mApp;
107}; 109};
108 110
109 111
110Field::List Field::mAllFields; 112Field::List Field::mAllFields;
111Field::List Field::mDefaultFields; 113Field::List Field::mDefaultFields;
112Field::List Field::mCustomFields; 114Field::List Field::mCustomFields;
113 115
114 116
115Field::Field( FieldImpl *impl ) 117Field::Field( FieldImpl *impl )
116{ 118{
117 mImpl = impl; 119 mImpl = impl;
118} 120}
119 121
120Field::~Field() 122Field::~Field()
121{ 123{
122 delete mImpl; 124 delete mImpl;
123} 125}
124 126
125QString Field::label() 127QString Field::label()
126{ 128{
127 switch ( mImpl->fieldId() ) { 129 switch ( mImpl->fieldId() ) {
128 case FieldImpl::FormattedName: 130 case FieldImpl::FormattedName:
129 return Addressee::formattedNameLabel(); 131 return Addressee::formattedNameLabel();
130 case FieldImpl::FamilyName: 132 case FieldImpl::FamilyName:
131 return Addressee::familyNameLabel(); 133 return Addressee::familyNameLabel();
132 case FieldImpl::GivenName: 134 case FieldImpl::GivenName:
133 return Addressee::givenNameLabel(); 135 return Addressee::givenNameLabel();
134 case FieldImpl::AdditionalName: 136 case FieldImpl::AdditionalName:
135 return Addressee::additionalNameLabel(); 137 return Addressee::additionalNameLabel();
136 case FieldImpl::Prefix: 138 case FieldImpl::Prefix:
137 return Addressee::prefixLabel(); 139 return Addressee::prefixLabel();
138 case FieldImpl::Suffix: 140 case FieldImpl::Suffix:
139 return Addressee::suffixLabel(); 141 return Addressee::suffixLabel();
140 case FieldImpl::NickName: 142 case FieldImpl::NickName:
141 return Addressee::nickNameLabel(); 143 return Addressee::nickNameLabel();
142 case FieldImpl::Birthday: 144 case FieldImpl::Birthday:
143 return Addressee::birthdayLabel(); 145 return Addressee::birthdayLabel();
144 case FieldImpl::HomeAddressStreet: 146 case FieldImpl::HomeAddressStreet:
145 return Addressee::homeAddressStreetLabel(); 147 return Addressee::homeAddressStreetLabel();
146 case FieldImpl::HomeAddressLocality: 148 case FieldImpl::HomeAddressLocality:
147 return Addressee::homeAddressLocalityLabel(); 149 return Addressee::homeAddressLocalityLabel();
148 case FieldImpl::HomeAddressRegion: 150 case FieldImpl::HomeAddressRegion:
149 return Addressee::homeAddressRegionLabel(); 151 return Addressee::homeAddressRegionLabel();
150 case FieldImpl::HomeAddressPostalCode: 152 case FieldImpl::HomeAddressPostalCode:
151 return Addressee::homeAddressPostalCodeLabel(); 153 return Addressee::homeAddressPostalCodeLabel();
152 case FieldImpl::HomeAddressCountry: 154 case FieldImpl::HomeAddressCountry:
153 return Addressee::homeAddressCountryLabel(); 155 return Addressee::homeAddressCountryLabel();
154 case FieldImpl::HomeAddressLabel: 156 case FieldImpl::HomeAddressLabel:
155 return Addressee::homeAddressLabelLabel(); 157 return Addressee::homeAddressLabelLabel();
156 case FieldImpl::BusinessAddressStreet: 158 case FieldImpl::BusinessAddressStreet:
157 return Addressee::businessAddressStreetLabel(); 159 return Addressee::businessAddressStreetLabel();
158 case FieldImpl::BusinessAddressLocality: 160 case FieldImpl::BusinessAddressLocality:
159 return Addressee::businessAddressLocalityLabel(); 161 return Addressee::businessAddressLocalityLabel();
160 case FieldImpl::BusinessAddressRegion: 162 case FieldImpl::BusinessAddressRegion:
161 return Addressee::businessAddressRegionLabel(); 163 return Addressee::businessAddressRegionLabel();
162 case FieldImpl::BusinessAddressPostalCode: 164 case FieldImpl::BusinessAddressPostalCode:
163 return Addressee::businessAddressPostalCodeLabel(); 165 return Addressee::businessAddressPostalCodeLabel();
164 case FieldImpl::BusinessAddressCountry: 166 case FieldImpl::BusinessAddressCountry:
165 return Addressee::businessAddressCountryLabel(); 167 return Addressee::businessAddressCountryLabel();
166 case FieldImpl::BusinessAddressLabel: 168 case FieldImpl::BusinessAddressLabel:
167 return Addressee::businessAddressLabelLabel(); 169 return Addressee::businessAddressLabelLabel();
168 case FieldImpl::HomePhone: 170 case FieldImpl::HomePhone:
169 return Addressee::homePhoneLabel(); 171 return Addressee::homePhoneLabel();
170 case FieldImpl::BusinessPhone: 172 case FieldImpl::BusinessPhone:
171 return Addressee::businessPhoneLabel(); 173 return Addressee::businessPhoneLabel();
172 case FieldImpl::MobilePhone: 174 case FieldImpl::MobilePhone:
173 return Addressee::mobilePhoneLabel(); 175 return Addressee::mobilePhoneLabel();
174 case FieldImpl::MobileWorkPhone: 176 case FieldImpl::MobileWorkPhone:
175 return Addressee::mobileWorkPhoneLabel(); 177 return Addressee::mobileWorkPhoneLabel();
176 case FieldImpl::HomeFax: 178 case FieldImpl::HomeFax:
177 return Addressee::homeFaxLabel(); 179 return Addressee::homeFaxLabel();
178 case FieldImpl::BusinessFax: 180 case FieldImpl::BusinessFax:
179 return Addressee::businessFaxLabel(); 181 return Addressee::businessFaxLabel();
180 case FieldImpl::Isdn: 182 case FieldImpl::Isdn:
181 return Addressee::isdnLabel(); 183 return Addressee::isdnLabel();
182 case FieldImpl::Pager: 184 case FieldImpl::Pager:
183 return Addressee::pagerLabel(); 185 return Addressee::pagerLabel();
184 case FieldImpl::Email: 186 case FieldImpl::Email:
185 return Addressee::emailLabel(); 187 return Addressee::emailLabel();
186 case FieldImpl::Mailer: 188 case FieldImpl::Mailer:
187 return Addressee::mailerLabel(); 189 return Addressee::mailerLabel();
188 case FieldImpl::Title: 190 case FieldImpl::Title:
189 return Addressee::titleLabel(); 191 return Addressee::titleLabel();
190 case FieldImpl::Role: 192 case FieldImpl::Role:
191 return Addressee::roleLabel(); 193 return Addressee::roleLabel();
192 case FieldImpl::Organization: 194 case FieldImpl::Organization:
193 return Addressee::organizationLabel(); 195 return Addressee::organizationLabel();
194 case FieldImpl::Note: 196 case FieldImpl::Note:
195 return Addressee::noteLabel(); 197 return Addressee::noteLabel();
196 case FieldImpl::Url: 198 case FieldImpl::Url:
197 return Addressee::urlLabel(); 199 return Addressee::urlLabel();
198 case FieldImpl::Resource: 200 case FieldImpl::Resource:
199 return Addressee::resourceLabel(); 201 return Addressee::resourceLabel();
200 case FieldImpl::Category: 202 case FieldImpl::Category:
201 return Addressee::categoryLabel(); 203 return Addressee::categoryLabel();
202 case FieldImpl::Sip: 204 case FieldImpl::Sip:
203 return Addressee::sipLabel(); 205 return Addressee::sipLabel();
204 case FieldImpl::OtherPhone: 206 case FieldImpl::OtherPhone:
205 return Addressee::otherPhoneLabel(); 207 return Addressee::otherPhoneLabel();
206 case FieldImpl::CustomField: 208 case FieldImpl::CustomField:
207 return mImpl->label(); 209 return mImpl->label();
208 default: 210 default:
209 return i18n("Unknown Field"); 211 return i18n("Unknown Field");
210 } 212 }
211} 213}
212 214
213int Field::category() 215int Field::category()
214{ 216{
215 return mImpl->category(); 217 return mImpl->category();
216} 218}
217 219
218QString Field::categoryLabel( int category ) 220QString Field::categoryLabel( int category )
219{ 221{
220 switch ( category ) { 222 switch ( category ) {
221 case All: 223 case All:
222 return i18n("All"); 224 return i18n("All");
223 case Frequent: 225 case Frequent:
224 return i18n("Frequent"); 226 return i18n("Frequent");
225 case Address: 227 case Address:
226 return i18n("Address"); 228 return i18n("Address");
227 case Email: 229 case Email:
228 return i18n("Email"); 230 return i18n("Email");
229 case Personal: 231 case Personal:
230 return i18n("Personal"); 232 return i18n("Personal");
231 case Organization: 233 case Organization:
232 return i18n("Organization"); 234 return i18n("Organization");
233 case CustomCategory: 235 case CustomCategory:
234 return i18n("Custom"); 236 return i18n("Custom");
235 default: 237 default:
236 return i18n("Undefined"); 238 return i18n("Undefined");
237 } 239 }
238} 240}
239 241
240QString Field::value( const KABC::Addressee &a ) 242QString Field::value( const KABC::Addressee &a )
241{ 243{
242 switch ( mImpl->fieldId() ) { 244 switch ( mImpl->fieldId() ) {
243 case FieldImpl::FormattedName: 245 case FieldImpl::FormattedName:
244 return a.formattedName(); 246 return a.formattedName();
245 case FieldImpl::FamilyName: 247 case FieldImpl::FamilyName:
246 return a.familyName(); 248 return a.familyName();
247 case FieldImpl::GivenName: 249 case FieldImpl::GivenName:
248 return a.givenName(); 250 return a.givenName();
249 case FieldImpl::AdditionalName: 251 case FieldImpl::AdditionalName:
250 return a.additionalName(); 252 return a.additionalName();
251 case FieldImpl::Prefix: 253 case FieldImpl::Prefix:
252 return a.prefix(); 254 return a.prefix();
253 case FieldImpl::Suffix: 255 case FieldImpl::Suffix:
254 return a.suffix(); 256 return a.suffix();
255 case FieldImpl::NickName: 257 case FieldImpl::NickName:
256 return a.nickName(); 258 return a.nickName();
257 case FieldImpl::Mailer: 259 case FieldImpl::Mailer:
258 return a.mailer(); 260 return a.mailer();
259 case FieldImpl::Title: 261 case FieldImpl::Title:
260 return a.title(); 262 return a.title();
261 case FieldImpl::Role: 263 case FieldImpl::Role:
262 return a.role(); 264 return a.role();
263 case FieldImpl::Organization: 265 case FieldImpl::Organization:
264 return a.organization(); 266 return a.organization();
265 case FieldImpl::Note: 267 case FieldImpl::Note:
266 return a.note(); 268 return a.note();
267 case FieldImpl::Email: 269 case FieldImpl::Email:
268 return a.preferredEmail(); 270 return a.preferredEmail();
269 case FieldImpl::Birthday: 271 case FieldImpl::Birthday:
270 if ( a.birthday().isValid() ) { 272 if ( a.birthday().isValid() ) {
271//the generated code had the following format: return a.birthday().date().toString( Qt::ISODate ); 273//the generated code had the following format: return a.birthday().date().toString( Qt::ISODate );
272// But Qt::IsoDate was not specified. 274// But Qt::IsoDate was not specified.
273// QString _oldFormat = KGlobal::locale()->dateFormat(); 275// QString _oldFormat = KGlobal::locale()->dateFormat();
274// KGlobal::locale()->setDateFormat("%Y-%m-%d"); // = Qt::ISODate 276// KGlobal::locale()->setDateFormat("%Y-%m-%d"); // = Qt::ISODate
275 QString dt = KGlobal::locale()->formatDate(a.birthday().date(), false, KLocale::ISODate); 277 QString dt = KGlobal::locale()->formatDate(a.birthday().date(), false, KLocale::ISODate);
276// KGlobal::locale()->setDateFormat(_oldFormat); 278// KGlobal::locale()->setDateFormat(_oldFormat);
277 return dt; 279 return dt;
278 } 280 }
279 else 281 else
280 return QString::null; 282 return QString::null;
281 case FieldImpl::Url: 283 case FieldImpl::Url:
282 return a.url().prettyURL(); 284 return a.url().prettyURL();
283//US 285//US
284 case FieldImpl::Resource: 286 case FieldImpl::Resource:
285 return a.resource()->resourceName(); 287 return a.resource()->resourceName();
286 case FieldImpl::Category: 288 case FieldImpl::Category:
287 return a.categories().join(","); 289 return a.categories().join(",");
288 case FieldImpl::HomePhone: 290 case FieldImpl::HomePhone:
289 return a.phoneNumber( PhoneNumber::Home| PhoneNumber::Pref ).number(); 291 return a.phoneNumber( PhoneNumber::Home| PhoneNumber::Pref ).number();
290 case FieldImpl::BusinessPhone: 292 case FieldImpl::BusinessPhone:
291 return a.phoneNumber( PhoneNumber::Work| PhoneNumber::Pref ).number(); 293 return a.phoneNumber( PhoneNumber::Work| PhoneNumber::Pref ).number();
292 case FieldImpl::MobilePhone: 294 case FieldImpl::MobilePhone:
293 return a.phoneNumber( PhoneNumber::Cell ).number(); 295 return a.phoneNumber( PhoneNumber::Cell ).number();
294 case FieldImpl::MobileWorkPhone: 296 case FieldImpl::MobileWorkPhone:
295 return a.phoneNumber( PhoneNumber::Car ).number(); 297 return a.phoneNumber( PhoneNumber::Car ).number();
296 case FieldImpl::HomeFax: 298 case FieldImpl::HomeFax:
297 return a.phoneNumber( PhoneNumber::Home | PhoneNumber::Fax ).number(); 299 return a.phoneNumber( PhoneNumber::Home | PhoneNumber::Fax ).number();
298 case FieldImpl::BusinessFax: 300 case FieldImpl::BusinessFax:
299 return a.phoneNumber( PhoneNumber::Work | PhoneNumber::Fax ).number(); 301 return a.phoneNumber( PhoneNumber::Work | PhoneNumber::Fax ).number();
300 case FieldImpl::Isdn: 302 case FieldImpl::Isdn:
301 return a.phoneNumber( PhoneNumber::Isdn ).number(); 303 return a.phoneNumber( PhoneNumber::Isdn ).number();
302 case FieldImpl::Pager: 304 case FieldImpl::Pager:
303 return a.phoneNumber( PhoneNumber::Pager ).number(); 305 return a.phoneNumber( PhoneNumber::Pager ).number();
304 case FieldImpl::Sip: 306 case FieldImpl::Sip:
305 return a.phoneNumber( PhoneNumber::Pcs | PhoneNumber::Pref ).number(); 307 return a.phoneNumber( PhoneNumber::Pcs | PhoneNumber::Pref ).number();
306 case FieldImpl::OtherPhone: 308 case FieldImpl::OtherPhone:
307 return a.phoneNumber( PhoneNumber::Voice ).number(); 309 return a.phoneNumber( PhoneNumber::Voice ).number();
308 case FieldImpl::HomeAddressStreet: 310 case FieldImpl::HomeAddressStreet:
309 return a.address( Address::Home ).street(); 311 return a.address( Address::Home ).street();
310 case FieldImpl::HomeAddressLocality: 312 case FieldImpl::HomeAddressLocality:
311 return a.address( Address::Home ).locality(); 313 return a.address( Address::Home ).locality();
312 case FieldImpl::HomeAddressRegion: 314 case FieldImpl::HomeAddressRegion:
313 return a.address( Address::Home ).region(); 315 return a.address( Address::Home ).region();
314 case FieldImpl::HomeAddressPostalCode: 316 case FieldImpl::HomeAddressPostalCode:
315 return a.address( Address::Home ).postalCode(); 317 return a.address( Address::Home ).postalCode();
316 case FieldImpl::HomeAddressCountry: 318 case FieldImpl::HomeAddressCountry:
317 return a.address( Address::Home ).country(); 319 return a.address( Address::Home ).country();
318 case FieldImpl::BusinessAddressStreet: 320 case FieldImpl::BusinessAddressStreet:
319 return a.address( Address::Work ).street(); 321 return a.address( Address::Work ).street();
320 case FieldImpl::BusinessAddressLocality: 322 case FieldImpl::BusinessAddressLocality:
321 return a.address( Address::Work ).locality(); 323 return a.address( Address::Work ).locality();
322 case FieldImpl::BusinessAddressRegion: 324 case FieldImpl::BusinessAddressRegion:
323 return a.address( Address::Work ).region(); 325 return a.address( Address::Work ).region();
324 case FieldImpl::BusinessAddressPostalCode: 326 case FieldImpl::BusinessAddressPostalCode:
325 return a.address( Address::Work ).postalCode(); 327 return a.address( Address::Work ).postalCode();
326 case FieldImpl::BusinessAddressCountry: 328 case FieldImpl::BusinessAddressCountry:
327 return a.address( Address::Work ).country(); 329 return a.address( Address::Work ).country();
328 case FieldImpl::CustomField: 330 case FieldImpl::CustomField:
329 return a.custom( mImpl->app(), mImpl->key() ); 331 return a.custom( mImpl->app(), mImpl->key() );
330 default: 332 default:
331 return QString::null; 333 return QString::null;
332 } 334 }
333} 335}
334 336
335bool Field::setValue( KABC::Addressee &a, const QString &value ) 337bool Field::setValue( KABC::Addressee &a, const QString &value )
336{ 338{
337 switch ( mImpl->fieldId() ) { 339 switch ( mImpl->fieldId() ) {
338 case FieldImpl::FormattedName: 340 case FieldImpl::FormattedName:
339 a.setFormattedName( value ); 341 a.setFormattedName( value );
340 return true; 342 return true;
341 case FieldImpl::FamilyName: 343 case FieldImpl::FamilyName:
342 a.setFamilyName( value ); 344 a.setFamilyName( value );
343 return true; 345 return true;
344 case FieldImpl::GivenName: 346 case FieldImpl::GivenName:
345 a.setGivenName( value ); 347 a.setGivenName( value );
346 return true; 348 return true;
347 case FieldImpl::AdditionalName: 349 case FieldImpl::AdditionalName:
348 a.setAdditionalName( value ); 350 a.setAdditionalName( value );
349 return true; 351 return true;
350 case FieldImpl::Prefix: 352 case FieldImpl::Prefix:
351 a.setPrefix( value ); 353 a.setPrefix( value );
352 return true; 354 return true;
353 case FieldImpl::Suffix: 355 case FieldImpl::Suffix:
354 a.setSuffix( value ); 356 a.setSuffix( value );
355 return true; 357 return true;
356 case FieldImpl::NickName: 358 case FieldImpl::NickName:
357 a.setNickName( value ); 359 a.setNickName( value );
358 return true; 360 return true;
359 case FieldImpl::Mailer: 361 case FieldImpl::Mailer:
360 a.setMailer( value ); 362 a.setMailer( value );
361 return true; 363 return true;
362 case FieldImpl::Title: 364 case FieldImpl::Title:
363 a.setTitle( value ); 365 a.setTitle( value );
364 return true; 366 return true;
365 case FieldImpl::Role: 367 case FieldImpl::Role:
366 a.setRole( value ); 368 a.setRole( value );
367 return true; 369 return true;
368 case FieldImpl::Organization: 370 case FieldImpl::Organization:
369 a.setOrganization( value ); 371 a.setOrganization( value );
370 return true; 372 return true;
371 case FieldImpl::Note: 373 case FieldImpl::Note:
372 a.setNote( value ); 374 a.setNote( value );
373 return true; 375 return true;
374 case FieldImpl::Birthday: 376 case FieldImpl::Birthday:
375//US 377//US
376//the generated code had the following format: return a.setBirthday( QDate::fromString( value, Qt::ISODate ) ); 378//the generated code had the following format: return a.setBirthday( QDate::fromString( value, Qt::ISODate ) );
377// But Qt::IsoDate and QDate::fromString was not specified. Do I have the wrong QT version ? 379// But Qt::IsoDate and QDate::fromString was not specified. Do I have the wrong QT version ?
378 { 380 {
379 QDate dt = KGlobal::locale()->readDate( value, "%Y-%m-%d"); // = Qt::ISODate 381 QDate dt = KGlobal::locale()->readDate( value, "%Y-%m-%d"); // = Qt::ISODate
380 a.setBirthday(dt); 382 a.setBirthday((QDateTime)dt);
381 } 383 }
382 return true; 384 return true;
383 case FieldImpl::CustomField: 385 case FieldImpl::CustomField:
384 a.insertCustom( mImpl->app(), mImpl->key(), value ); 386 a.insertCustom( mImpl->app(), mImpl->key(), value );
385//US never copy the resourcename back to the adressee. 387//US never copy the resourcename back to the adressee.
386 case FieldImpl::Resource: 388 case FieldImpl::Resource:
387 default: 389 default:
388 return false; 390 return false;
389 } 391 }
390} 392}
391 393
392bool Field::isCustom() 394bool Field::isCustom()
393{ 395{
394 return mImpl->fieldId() == FieldImpl::CustomField; 396 return mImpl->fieldId() == FieldImpl::CustomField;
395} 397}
396 398
397Field::List Field::allFields() 399Field::List Field::allFields()
398{ 400{
399 if ( mAllFields.isEmpty() ) { 401 if ( mAllFields.isEmpty() ) {
400 createField( FieldImpl::FormattedName, Frequent ); 402 createField( FieldImpl::FormattedName, Frequent );
401 createField( FieldImpl::FamilyName, Frequent ); 403 createField( FieldImpl::FamilyName, Frequent );
402 createField( FieldImpl::GivenName, Frequent ); 404 createField( FieldImpl::GivenName, Frequent );
403 createField( FieldImpl::AdditionalName ); 405 createField( FieldImpl::AdditionalName );
404 createField( FieldImpl::Prefix ); 406 createField( FieldImpl::Prefix );
405 createField( FieldImpl::Suffix ); 407 createField( FieldImpl::Suffix );
406 createField( FieldImpl::NickName, Personal ); 408 createField( FieldImpl::NickName, Personal );
407 createField( FieldImpl::Birthday, Personal ); 409 createField( FieldImpl::Birthday, Personal );
408 createField( FieldImpl::Category ); 410 createField( FieldImpl::Category );
409 createField( FieldImpl::HomeAddressStreet, Address|Personal ); 411 createField( FieldImpl::HomeAddressStreet, Address|Personal );
410 createField( FieldImpl::HomeAddressLocality, Address|Personal ); 412 createField( FieldImpl::HomeAddressLocality, Address|Personal );
411 createField( FieldImpl::HomeAddressRegion, Address|Personal ); 413 createField( FieldImpl::HomeAddressRegion, Address|Personal );
412 createField( FieldImpl::HomeAddressPostalCode, Address|Personal ); 414 createField( FieldImpl::HomeAddressPostalCode, Address|Personal );
413 createField( FieldImpl::HomeAddressCountry, Address|Personal ); 415 createField( FieldImpl::HomeAddressCountry, Address|Personal );
414 createField( FieldImpl::HomeAddressLabel, Address|Personal ); 416 createField( FieldImpl::HomeAddressLabel, Address|Personal );
415 createField( FieldImpl::BusinessAddressStreet, Address|Organization ); 417 createField( FieldImpl::BusinessAddressStreet, Address|Organization );
416 createField( FieldImpl::BusinessAddressLocality, Address|Organization ); 418 createField( FieldImpl::BusinessAddressLocality, Address|Organization );
417 createField( FieldImpl::BusinessAddressRegion, Address|Organization ); 419 createField( FieldImpl::BusinessAddressRegion, Address|Organization );
418 createField( FieldImpl::BusinessAddressPostalCode, Address|Organization ); 420 createField( FieldImpl::BusinessAddressPostalCode, Address|Organization );
419 createField( FieldImpl::BusinessAddressCountry, Address|Organization ); 421 createField( FieldImpl::BusinessAddressCountry, Address|Organization );
420 createField( FieldImpl::BusinessAddressLabel, Address|Organization ); 422 createField( FieldImpl::BusinessAddressLabel, Address|Organization );
421 createField( FieldImpl::HomePhone, Personal|Frequent ); 423 createField( FieldImpl::HomePhone, Personal|Frequent );
422 createField( FieldImpl::BusinessPhone, Organization|Frequent ); 424 createField( FieldImpl::BusinessPhone, Organization|Frequent );
423 createField( FieldImpl::MobilePhone, Frequent ); 425 createField( FieldImpl::MobilePhone, Frequent );
424 createField( FieldImpl::MobileWorkPhone, Frequent ); 426 createField( FieldImpl::MobileWorkPhone, Frequent );
425 createField( FieldImpl::HomeFax ); 427 createField( FieldImpl::HomeFax );
426 createField( FieldImpl::BusinessFax ); 428 createField( FieldImpl::BusinessFax );
427 createField( FieldImpl::Isdn ); 429 createField( FieldImpl::Isdn );
428 createField( FieldImpl::Pager ); 430 createField( FieldImpl::Pager );
429 createField( FieldImpl::Email, Email|Frequent ); 431 createField( FieldImpl::Email, Email|Frequent );
430 createField( FieldImpl::Mailer, Email ); 432 createField( FieldImpl::Mailer, Email );
431 createField( FieldImpl::Title, Organization ); 433 createField( FieldImpl::Title, Organization );
432 createField( FieldImpl::Role, Organization ); 434 createField( FieldImpl::Role, Organization );
433 createField( FieldImpl::Organization, Organization ); 435 createField( FieldImpl::Organization, Organization );
434 createField( FieldImpl::Note ); 436 createField( FieldImpl::Note );
435 createField( FieldImpl::Url ); 437 createField( FieldImpl::Url );
436 createField( FieldImpl::Resource ); 438 createField( FieldImpl::Resource );
437 createField( FieldImpl::Sip ); 439 createField( FieldImpl::Sip );
438 createField( FieldImpl::OtherPhone ); 440 createField( FieldImpl::OtherPhone );
439 } 441 }
440 442
441 return mAllFields; 443 return mAllFields;
442} 444}
443 445
444Field::List Field::defaultFields() 446Field::List Field::defaultFields()
445{ 447{
446 if ( mDefaultFields.isEmpty() ) { 448 if ( mDefaultFields.isEmpty() ) {
447 createDefaultField( FieldImpl::GivenName ); 449 createDefaultField( FieldImpl::GivenName );
448 createDefaultField( FieldImpl::FamilyName ); 450 createDefaultField( FieldImpl::FamilyName );
449 createDefaultField( FieldImpl::Email ); 451 createDefaultField( FieldImpl::Email );
450 } 452 }
451 453
452 return mDefaultFields; 454 return mDefaultFields;
453} 455}
454 456
455void Field::createField( int id, int category ) 457void Field::createField( int id, int category )
456{ 458{
457 mAllFields.append( new Field( new FieldImpl( id, category ) ) ); 459 mAllFields.append( new Field( new FieldImpl( id, category ) ) );
458} 460}
459 461
460void Field::createDefaultField( int id, int category ) 462void Field::createDefaultField( int id, int category )
461{ 463{
462 mDefaultFields.append( new Field( new FieldImpl( id, category ) ) ); 464 mDefaultFields.append( new Field( new FieldImpl( id, category ) ) );
463} 465}
464 466
465void Field::deleteFields() 467void Field::deleteFields()
466{ 468{
467 Field::List::ConstIterator it; 469 Field::List::ConstIterator it;
468 470
469 for( it = mAllFields.begin(); it != mAllFields.end(); ++it ) { 471 for( it = mAllFields.begin(); it != mAllFields.end(); ++it ) {
470 delete (*it); 472 delete (*it);
471 } 473 }
472 mAllFields.clear(); 474 mAllFields.clear();
473 475
474 for( it = mDefaultFields.begin(); it != mDefaultFields.end(); ++it ) { 476 for( it = mDefaultFields.begin(); it != mDefaultFields.end(); ++it ) {
475 delete (*it); 477 delete (*it);
476 } 478 }
477 mDefaultFields.clear(); 479 mDefaultFields.clear();
478 480
479 for( it = mCustomFields.begin(); it != mCustomFields.end(); ++it ) { 481 for( it = mCustomFields.begin(); it != mCustomFields.end(); ++it ) {
480 delete (*it); 482 delete (*it);
481 } 483 }
482 mCustomFields.clear(); 484 mCustomFields.clear();
483} 485}
484 486
485void Field::saveFields( const QString &identifier, 487void Field::saveFields( const QString &identifier,
486 const Field::List &fields ) 488 const Field::List &fields )
487{ 489{
488 KConfig *cfg = KGlobal::config(); 490 KConfig *cfg = KGlobal::config();
489 KConfigGroupSaver( cfg, "KABCFields" ); 491 KConfigGroupSaver( cfg, "KABCFields" );
490 saveFields( cfg, identifier, fields ); 492 saveFields( cfg, identifier, fields );
491} 493}
492 494
493void Field::saveFields( KConfig *cfg, const QString &identifier, 495void Field::saveFields( KConfig *cfg, const QString &identifier,
494 const Field::List &fields ) 496 const Field::List &fields )
495{ 497{
496 QValueList<int> fieldIds; 498 Q3ValueList<int> fieldIds;
497 499
498//US 500//US
499// qDebug("Field::saveFields to %s %s", cfg->getFileName().latin1(), identifier.latin1()); 501// qDebug("Field::saveFields to %s %s", cfg->getFileName().latin1(), identifier.latin1());
500 502
501 int custom = 0; 503 int custom = 0;
502 Field::List::ConstIterator it; 504 Field::List::ConstIterator it;
503 for( it = fields.begin(); it != fields.end(); ++it ) { 505 for( it = fields.begin(); it != fields.end(); ++it ) {
504//US 506//US
505// qDebug("Field::saveFields field:%i", (*it)->mImpl->fieldId()); 507// qDebug("Field::saveFields field:%i", (*it)->mImpl->fieldId());
506 508
507 fieldIds.append( (*it)->mImpl->fieldId() ); 509 fieldIds.append( (*it)->mImpl->fieldId() );
508 if( (*it)->isCustom() ) { 510 if( (*it)->isCustom() ) {
509 QStringList customEntry; 511 QStringList customEntry;
510 customEntry << (*it)->mImpl->label(); 512 customEntry << (*it)->mImpl->label();
511 customEntry << (*it)->mImpl->key(); 513 customEntry << (*it)->mImpl->key();
512 customEntry << (*it)->mImpl->app(); 514 customEntry << (*it)->mImpl->app();
513 cfg->writeEntry( "KABC_CustomEntry_" + identifier + "_" + 515 cfg->writeEntry( "KABC_CustomEntry_" + identifier + "_" +
514 QString::number( custom++ ), customEntry ); 516 QString::number( custom++ ), customEntry );
515 } 517 }
516 } 518 }
517 cfg->writeEntry( identifier, fieldIds ); 519 cfg->writeEntry( identifier, fieldIds );
518} 520}
519 521
520Field::List Field::restoreFields( const QString &identifier ) 522Field::List Field::restoreFields( const QString &identifier )
521{ 523{
522//US 524//US
523// qDebug("Field::restoreFields, identifier: %s", identifier.latin1()); 525// qDebug("Field::restoreFields, identifier: %s", identifier.latin1());
524 526
525 KConfig *cfg = KGlobal::config(); 527 KConfig *cfg = KGlobal::config();
526 KConfigGroupSaver( cfg, "KABCFields" ); 528 KConfigGroupSaver( cfg, "KABCFields" );
527 cfg->setGroup( "KABCFields" ); 529 cfg->setGroup( "KABCFields" );
528 530
529 Field::List l = restoreFields( cfg, identifier ); 531 Field::List l = restoreFields( cfg, identifier );
530 532
531 return l; 533 return l;
532} 534}
533 535
534Field::List Field::restoreFields( KConfig *cfg, const QString &identifier ) 536Field::List Field::restoreFields( KConfig *cfg, const QString &identifier )
535{ 537{
536 QValueList<int> fieldIds = cfg->readIntListEntry( identifier); 538 Q3ValueList<int> fieldIds = cfg->readIntListEntry( identifier);
537//US 539//US
538// qDebug("Field::restoreFields from %s, identifier: %s", cfg->getFileName().latin1(), identifier.latin1()); 540// qDebug("Field::restoreFields from %s, identifier: %s", cfg->getFileName().latin1(), identifier.latin1());
539 541
540 Field::List fields; 542 Field::List fields;
541 543
542 int custom = 0; 544 int custom = 0;
543 QValueList<int>::ConstIterator it; 545 Q3ValueList<int>::ConstIterator it;
544 for( it = fieldIds.begin(); it != fieldIds.end(); ++it ) { 546 for( it = fieldIds.begin(); it != fieldIds.end(); ++it ) {
545 FieldImpl *f = 0; 547 FieldImpl *f = 0;
546 if ( (*it) == FieldImpl::CustomField ) { 548 if ( (*it) == FieldImpl::CustomField ) {
547 QStringList customEntry = cfg->readListEntry( "KABC_CustomEntry_" + 549 QStringList customEntry = cfg->readListEntry( "KABC_CustomEntry_" +
548 identifier + "_" + 550 identifier + "_" +
549 QString::number( custom++ ) ); 551 QString::number( custom++ ) );
550 f = new FieldImpl( *it, CustomCategory, customEntry[ 0 ], 552 f = new FieldImpl( *it, CustomCategory, customEntry[ 0 ],
551 customEntry[ 1 ], customEntry[ 2 ] ); 553 customEntry[ 1 ], customEntry[ 2 ] );
552 } else { 554 } else {
553 f = new FieldImpl( *it ); 555 f = new FieldImpl( *it );
554 } 556 }
555 fields.append( new Field( f ) ); 557 fields.append( new Field( f ) );
556 } 558 }
557 559
558 return fields; 560 return fields;
559} 561}
560 562
561bool Field::equals( Field *field ) 563bool Field::equals( Field *field )
562{ 564{
563 bool sameId = ( mImpl->fieldId() == field->mImpl->fieldId() ); 565 bool sameId = ( mImpl->fieldId() == field->mImpl->fieldId() );
564 566
565 if ( !sameId ) return false; 567 if ( !sameId ) return false;
566 568
567 if ( mImpl->fieldId() != FieldImpl::CustomField ) return true; 569 if ( mImpl->fieldId() != FieldImpl::CustomField ) return true;
568 570
569 return mImpl->key() == field->mImpl->key(); 571 return mImpl->key() == field->mImpl->key();
570} 572}
571 573
572Field *Field::createCustomField( const QString &label, int category, 574Field *Field::createCustomField( const QString &label, int category,
573 const QString &key, const QString &app ) 575 const QString &key, const QString &app )
574{ 576{
575 Field *field = new Field( new FieldImpl( FieldImpl::CustomField, 577 Field *field = new Field( new FieldImpl( FieldImpl::CustomField,
576 category | CustomCategory, 578 category | CustomCategory,
577 label, key, app ) ); 579 label, key, app ) );
578//US 580//US
579// qDebug("Field::createCustomField label %s", label.latin1() ); 581// qDebug("Field::createCustomField label %s", label.latin1() );
580 582
581 mCustomFields.append( field ); 583 mCustomFields.append( field );
582 584
583 return field; 585 return field;
584} 586}
diff --git a/kabc/field.h b/kabc/field.h
index 9e06597..55cc705 100644
--- a/kabc/field.h
+++ b/kabc/field.h
@@ -1,178 +1,178 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28#ifndef KABC_FIELD_H 28#ifndef KABC_FIELD_H
29#define KABC_FIELD_H 29#define KABC_FIELD_H
30 30
31#include <qstring.h> 31#include <qstring.h>
32#include <qvaluelist.h> 32#include <q3valuelist.h>
33 33
34#include "addressee.h" 34#include "addressee.h"
35 35
36class KConfig; 36class KConfig;
37 37
38namespace KABC { 38namespace KABC {
39 39
40class Field 40class Field
41{ 41{
42 class FieldImpl; 42 class FieldImpl;
43 friend class FieldImpl; 43 friend class FieldImpl;
44 44
45public: 45public:
46 typedef QValueList<Field *> List; 46 typedef Q3ValueList<Field *> List;
47 47
48 /** 48 /**
49 * @li @p All - 49 * @li @p All -
50 * @li @p Frequent - 50 * @li @p Frequent -
51 * @li @p Address - 51 * @li @p Address -
52 * @li @p Email - 52 * @li @p Email -
53 * @li @p Personal - 53 * @li @p Personal -
54 * @li @p Organization - 54 * @li @p Organization -
55 * @li @p CustomCategory - 55 * @li @p CustomCategory -
56 */ 56 */
57 enum FieldCategory 57 enum FieldCategory
58 { 58 {
59 All = 0x0, 59 All = 0x0,
60 Frequent = 0x01, 60 Frequent = 0x01,
61 Address = 0x02, 61 Address = 0x02,
62 Email = 0x04, 62 Email = 0x04,
63 Personal = 0x08, 63 Personal = 0x08,
64 Organization = 0x10, 64 Organization = 0x10,
65 CustomCategory = 0x20 65 CustomCategory = 0x20
66 }; 66 };
67 67
68 /** 68 /**
69 * Returns the translated label for this field. 69 * Returns the translated label for this field.
70 */ 70 */
71 virtual QString label(); 71 virtual QString label();
72 72
73 /** 73 /**
74 * Returns the ored categories the field belongs to. 74 * Returns the ored categories the field belongs to.
75 */ 75 */
76 virtual int category(); 76 virtual int category();
77 77
78 /** 78 /**
79 * Returns the translated label for field category. 79 * Returns the translated label for field category.
80 */ 80 */
81 static QString categoryLabel( int category ); 81 static QString categoryLabel( int category );
82 82
83 /** 83 /**
84 * Returns a string representation of the value the field has in the given 84 * Returns a string representation of the value the field has in the given
85 * Addressee. Returns QString::null, if it is not possible to convert the 85 * Addressee. Returns QString::null, if it is not possible to convert the
86 * value to a string. 86 * value to a string.
87 */ 87 */
88 virtual QString value( const KABC::Addressee & ); 88 virtual QString value( const KABC::Addressee & );
89 89
90 /** 90 /**
91 * Sets the value of the field in the given Addressee. Returns true on success 91 * Sets the value of the field in the given Addressee. Returns true on success
92 * or false, if the given string couldn't be converted to a valid value. 92 * or false, if the given string couldn't be converted to a valid value.
93 */ 93 */
94 virtual bool setValue( KABC::Addressee &, const QString & ); 94 virtual bool setValue( KABC::Addressee &, const QString & );
95 95
96 /** 96 /**
97 * Returns, if the field is a user-defined field. 97 * Returns, if the field is a user-defined field.
98 */ 98 */
99 virtual bool isCustom(); 99 virtual bool isCustom();
100 100
101 /** 101 /**
102 * Returns, if the field is equal with @param field. 102 * Returns, if the field is equal with @param field.
103 */ 103 */
104 virtual bool equals( Field *field ); 104 virtual bool equals( Field *field );
105 105
106 /** 106 /**
107 * Returns a list of all fields. 107 * Returns a list of all fields.
108 */ 108 */
109 static Field::List allFields(); 109 static Field::List allFields();
110 110
111 /** 111 /**
112 * Returns a list of the default fields. 112 * Returns a list of the default fields.
113 */ 113 */
114 static Field::List defaultFields(); 114 static Field::List defaultFields();
115 115
116 /** 116 /**
117 * Creates a custom field. 117 * Creates a custom field.
118 * 118 *
119 * @param label The label for this field 119 * @param label The label for this field
120 * @param category The category of this field 120 * @param category The category of this field
121 * @param key Unique key for this field 121 * @param key Unique key for this field
122 * @param app Unique app name for this field 122 * @param app Unique app name for this field
123 */ 123 */
124 static Field *createCustomField( const QString &label, int category, 124 static Field *createCustomField( const QString &label, int category,
125 const QString &key, const QString &app ); 125 const QString &key, const QString &app );
126 126
127 /** 127 /**
128 * Delete all fields from list. 128 * Delete all fields from list.
129 */ 129 */
130 static void deleteFields(); 130 static void deleteFields();
131 131
132 /** 132 /**
133 * Save the field settings to a config file. 133 * Save the field settings to a config file.
134 * 134 *
135 * @param cfg The config file object 135 * @param cfg The config file object
136 * @param identifier The unique identifier 136 * @param identifier The unique identifier
137 * @param fields The list of the fields 137 * @param fields The list of the fields
138 */ 138 */
139 static void saveFields( KConfig *cfg, const QString &identifier, 139 static void saveFields( KConfig *cfg, const QString &identifier,
140 const Field::List &fields ); 140 const Field::List &fields );
141 /** 141 /**
142 * This is the same as above, with the difference, that 142 * This is the same as above, with the difference, that
143 * the list is stored in KGlobal::config() in group "KABCFields". 143 * the list is stored in KGlobal::config() in group "KABCFields".
144 */ 144 */
145 static void saveFields( const QString &identifier, 145 static void saveFields( const QString &identifier,
146 const Field::List &fields ); 146 const Field::List &fields );
147 147
148 /** 148 /**
149 * Load the field settings from a config file. 149 * Load the field settings from a config file.
150 * 150 *
151 * @param cfg The config file object 151 * @param cfg The config file object
152 * @param identifier The unique identifier 152 * @param identifier The unique identifier
153 */ 153 */
154 static Field::List restoreFields( KConfig *cfg, const QString &identifier ); 154 static Field::List restoreFields( KConfig *cfg, const QString &identifier );
155 155
156 /** 156 /**
157 * This is the same as above, with the difference, that 157 * This is the same as above, with the difference, that
158 * the list is loaded from KGlobal::config() from group "KABCFields". 158 * the list is loaded from KGlobal::config() from group "KABCFields".
159 */ 159 */
160 static Field::List restoreFields( const QString &identifier ); 160 static Field::List restoreFields( const QString &identifier );
161 161
162protected: 162protected:
163 static void createField( int id, int category = 0 ); 163 static void createField( int id, int category = 0 );
164 static void createDefaultField( int id, int category = 0 ); 164 static void createDefaultField( int id, int category = 0 );
165 165
166private: 166private:
167 Field( FieldImpl * ); 167 Field( FieldImpl * );
168 virtual ~Field(); 168 virtual ~Field();
169 169
170 FieldImpl *mImpl; 170 FieldImpl *mImpl;
171 171
172 static Field::List mAllFields; 172 static Field::List mAllFields;
173 static Field::List mDefaultFields; 173 static Field::List mDefaultFields;
174 static Field::List mCustomFields; 174 static Field::List mCustomFields;
175}; 175};
176 176
177} 177}
178#endif 178#endif
diff --git a/kabc/formatfactory.cpp b/kabc/formatfactory.cpp
index 3ae1c27..cbb97a2 100644
--- a/kabc/formatfactory.cpp
+++ b/kabc/formatfactory.cpp
@@ -1,181 +1,181 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#include <kdebug.h> 21#include <kdebug.h>
22#include <klocale.h> 22#include <klocale.h>
23#include <ksimpleconfig.h> 23#include <ksimpleconfig.h>
24#include <kstandarddirs.h> 24#include <kstandarddirs.h>
25#include <kstaticdeleter.h> 25#include <kstaticdeleter.h>
26 26
27#include <qfile.h> 27#include <qfile.h>
28#include <qstringlist.h> 28#include <qstringlist.h>
29 29
30#include "vcardformatplugin.h" 30#include "vcardformatplugin.h"
31 31
32#include "formatfactory.h" 32#include "formatfactory.h"
33 33
34using namespace KABC; 34using namespace KABC;
35 35
36FormatFactory *FormatFactory::mSelf = 0; 36FormatFactory *FormatFactory::mSelf = 0;
37static KStaticDeleter<FormatFactory> factoryDeleter; 37static KStaticDeleter<FormatFactory> factoryDeleter;
38 38
39FormatFactory *FormatFactory::self() 39FormatFactory *FormatFactory::self()
40{ 40{
41 if ( !mSelf ) { 41 if ( !mSelf ) {
42//US factoryDeleter.setObject( mSelf, new FormatFactory ); 42//US factoryDeleter.setObject( mSelf, new FormatFactory );
43 mSelf = factoryDeleter.setObject( new FormatFactory ); 43 mSelf = factoryDeleter.setObject( new FormatFactory );
44 } 44 }
45 return mSelf; 45 return mSelf;
46} 46}
47 47
48FormatFactory::FormatFactory() 48FormatFactory::FormatFactory()
49{ 49{
50 mFormatList.setAutoDelete( true ); 50 mFormatList.setAutoDelete( true );
51 51
52 // dummy entry for default format 52 // dummy entry for default format
53 FormatInfo *info = new FormatInfo; 53 FormatInfo *info = new FormatInfo;
54 info->library = "<NoLibrary>"; 54 info->library = "<NoLibrary>";
55 info->nameLabel = i18n( "vCard" ); 55 info->nameLabel = i18n( "vCard" );
56 info->descriptionLabel = i18n( "vCard Format" ); 56 info->descriptionLabel = i18n( "vCard Format" );
57 mFormatList.insert( "vcard", info ); 57 mFormatList.insert( "vcard", info );
58 58
59#if 0 59#if 0
60US lets enter all resources directly instead of using teh desktopfiles. 60US lets enter all resources directly instead of using teh desktopfiles.
61 61
62 QStringList list = KGlobal::dirs()->findAllResources( "data" ,"kabc/formats/*.desktop", true, true ); 62 QStringList list = KGlobal::dirs()->findAllResources( "data" ,"kabc/formats/*.desktop", true, true );
63 for ( QStringList::ConstIterator it = list.begin(); it != list.end(); ++it ) 63 for ( QStringList::ConstIterator it = list.begin(); it != list.end(); ++it )
64 { 64 {
65//US KSimpleConfig config( *it, true ); 65//US KSimpleConfig config( *it, true );
66 KConfig config( *it ); 66 KConfig config( *it );
67 67
68 if ( !config.hasGroup( "Misc" ) || !config.hasGroup( "Plugin" ) ) 68 if ( !config.hasGroup( "Misc" ) || !config.hasGroup( "Plugin" ) )
69 continue; 69 continue;
70 70
71 info = new FormatInfo; 71 info = new FormatInfo;
72 72
73 config.setGroup( "Plugin" ); 73 config.setGroup( "Plugin" );
74 QString type = config.readEntry( "Type" ); 74 QString type = config.readEntry( "Type" );
75 info->library = config.readEntry( "X-KDE-Library" ); 75 info->library = config.readEntry( "X-KDE-Library" );
76 76
77 config.setGroup( "Misc" ); 77 config.setGroup( "Misc" );
78 info->nameLabel = config.readEntry( "Name" ); 78 info->nameLabel = config.readEntry( "Name" );
79 info->descriptionLabel = config.readEntry( "Comment", i18n( "No description available." ) ); 79 info->descriptionLabel = config.readEntry( "Comment", i18n( "No description available." ) );
80 80
81 mFormatList.insert( type, info ); 81 mFormatList.insert( type, info );
82 } 82 }
83#endif 83#endif
84 //US we already have vcard as default format. 84 //US we already have vcard as default format.
85 info = new FormatInfo; 85 info = new FormatInfo;
86 info->library = i18n("microkabcformat_binary"); 86 info->library = i18n("microkabcformat_binary");
87 info->nameLabel = i18n( "Binary" ); 87 info->nameLabel = i18n( "Binary" );
88 info->descriptionLabel = i18n( "No description available." ); 88 info->descriptionLabel = i18n( "No description available." );
89 mFormatList.insert( "binary", info ); 89 mFormatList.insert( "binary", info );
90 90
91} 91}
92 92
93FormatFactory::~FormatFactory() 93FormatFactory::~FormatFactory()
94{ 94{
95 mFormatList.clear(); 95 mFormatList.clear();
96} 96}
97 97
98QStringList FormatFactory::formats() 98QStringList FormatFactory::formats()
99{ 99{
100 QStringList retval; 100 QStringList retval;
101 101
102 // make sure 'vcard' is the first entry 102 // make sure 'vcard' is the first entry
103 retval << "vcard"; 103 retval << "vcard";
104 104
105 QDictIterator<FormatInfo> it( mFormatList ); 105 Q3DictIterator<FormatInfo> it( mFormatList );
106 for ( ; it.current(); ++it ) 106 for ( ; it.current(); ++it )
107 if ( it.currentKey() != "vcard" ) 107 if ( it.currentKey() != "vcard" )
108 retval << it.currentKey(); 108 retval << it.currentKey();
109 109
110 return retval; 110 return retval;
111} 111}
112 112
113FormatInfo *FormatFactory::info( const QString &type ) 113FormatInfo *FormatFactory::info( const QString &type )
114{ 114{
115 if ( type.isEmpty() ) 115 if ( type.isEmpty() )
116 return 0; 116 return 0;
117 else 117 else
118 return mFormatList[ type ]; 118 return mFormatList[ type ];
119} 119}
120 120
121FormatPlugin *FormatFactory::format( const QString& type ) 121FormatPlugin *FormatFactory::format( const QString& type )
122{ 122{
123 FormatPlugin *format = 0; 123 FormatPlugin *format = 0;
124 124
125 if ( type.isEmpty() ) 125 if ( type.isEmpty() )
126 return 0; 126 return 0;
127 127
128 if ( type == "vcard" ) { 128 if ( type == "vcard" ) {
129 format = new VCardFormatPlugin; 129 format = new VCardFormatPlugin;
130 format->setType( type ); 130 format->setType( type );
131 format->setNameLabel( i18n( "vCard" ) ); 131 format->setNameLabel( i18n( "vCard" ) );
132 format->setDescriptionLabel( i18n( "vCard Format" ) ); 132 format->setDescriptionLabel( i18n( "vCard Format" ) );
133 return format; 133 return format;
134 } 134 }
135 135
136 FormatInfo *fi = mFormatList[ type ]; 136 FormatInfo *fi = mFormatList[ type ];
137 if (!fi) 137 if (!fi)
138 return 0; 138 return 0;
139 QString libName = fi->library; 139 QString libName = fi->library;
140#ifndef DESKTOP_VERSION 140#ifndef DESKTOP_VERSION
141 KLibrary *library = openLibrary( libName ); 141 KLibrary *library = openLibrary( libName );
142 if ( !library ) 142 if ( !library )
143 return 0; 143 return 0;
144 144
145 void *format_func = library->symbol( "format"); 145 void *format_func = library->symbol( "format");
146 146
147 if ( format_func ) { 147 if ( format_func ) {
148 format = ((FormatPlugin* (*)())format_func)(); 148 format = ((FormatPlugin* (*)())format_func)();
149 format->setType( type ); 149 format->setType( type );
150 format->setNameLabel( fi->nameLabel ); 150 format->setNameLabel( fi->nameLabel );
151 format->setDescriptionLabel( fi->descriptionLabel ); 151 format->setDescriptionLabel( fi->descriptionLabel );
152 } else { 152 } else {
153 kdDebug( 5700 ) << "'" << libName << "' is not a format plugin." << endl; 153 kdDebug( 5700 ) << "'" << libName << "' is not a format plugin." << endl;
154 return 0; 154 return 0;
155 } 155 }
156#endif 156#endif
157 return format; 157 return format;
158} 158}
159 159
160#ifndef DESKTOP_VERSION 160#ifndef DESKTOP_VERSION
161KLibrary *FormatFactory::openLibrary( const QString& libName ) 161KLibrary *FormatFactory::openLibrary( const QString& libName )
162{ 162{
163 KLibrary *library = 0; 163 KLibrary *library = 0;
164 164
165 QString path = KLibLoader::findLibrary( QFile::encodeName( libName ) ); 165 QString path = KLibLoader::findLibrary( QFile::encodeName( libName ) );
166 166
167 if ( path.isEmpty() ) { 167 if ( path.isEmpty() ) {
168 kdDebug( 5700 ) << "No format plugin library was found!" << endl; 168 kdDebug( 5700 ) << "No format plugin library was found!" << endl;
169 return 0; 169 return 0;
170 } 170 }
171 171
172 library = KLibLoader::self()->library( QFile::encodeName( path ) ); 172 library = KLibLoader::self()->library( QFile::encodeName( path ) );
173 173
174 if ( !library ) { 174 if ( !library ) {
175 kdDebug( 5700 ) << "Could not load library '" << libName << "'" << endl; 175 kdDebug( 5700 ) << "Could not load library '" << libName << "'" << endl;
176 return 0; 176 return 0;
177 } 177 }
178 178
179 return library; 179 return library;
180} 180}
181#endif 181#endif
diff --git a/kabc/formatfactory.h b/kabc/formatfactory.h
index 9612374..de15b17 100644
--- a/kabc/formatfactory.h
+++ b/kabc/formatfactory.h
@@ -1,104 +1,104 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#ifndef KABC_FORMATFACTORY_H 21#ifndef KABC_FORMATFACTORY_H
22#define KABC_FORMATFACTORY_H 22#define KABC_FORMATFACTORY_H
23 23
24#include <qdict.h> 24#include <q3dict.h>
25#include <qstring.h> 25#include <qstring.h>
26 26
27#include <kconfig.h> 27#include <kconfig.h>
28#ifndef DESKTOP_VERSION 28#ifndef DESKTOP_VERSION
29#include <klibloader.h> 29#include <klibloader.h>
30#endif 30#endif
31 31
32#include "formatplugin.h" 32#include "formatplugin.h"
33 33
34namespace KABC { 34namespace KABC {
35 35
36struct FormatInfo 36struct FormatInfo
37{ 37{
38 QString library; 38 QString library;
39 QString nameLabel; 39 QString nameLabel;
40 QString descriptionLabel; 40 QString descriptionLabel;
41}; 41};
42 42
43/** 43/**
44 * Class for loading format plugins. 44 * Class for loading format plugins.
45 * 45 *
46 * Example: 46 * Example:
47 * 47 *
48 * <pre> 48 * <pre>
49 * KABC::FormatFactory *factory = KABC::FormatFactory::self(); 49 * KABC::FormatFactory *factory = KABC::FormatFactory::self();
50 * 50 *
51 * QStringList list = factory->formats(); 51 * QStringList list = factory->formats();
52 * QStringList::Iterator it; 52 * QStringList::Iterator it;
53 * for ( it = list.begin(); it != list.end(); ++it ) { 53 * for ( it = list.begin(); it != list.end(); ++it ) {
54 * KABC::FormatPlugin *format = factory->format( (*it) ); 54 * KABC::FormatPlugin *format = factory->format( (*it) );
55 * // do something with format 55 * // do something with format
56 * } 56 * }
57 * </pre> 57 * </pre>
58 */ 58 */
59class FormatFactory 59class FormatFactory
60{ 60{
61 public: 61 public:
62 62
63 /** 63 /**
64 Destructor. 64 Destructor.
65 */ 65 */
66 ~FormatFactory(); 66 ~FormatFactory();
67 67
68 /** 68 /**
69 * Returns the global format factory. 69 * Returns the global format factory.
70 */ 70 */
71 static FormatFactory *self(); 71 static FormatFactory *self();
72 72
73 /** 73 /**
74 * Returns a pointer to a format object or a null pointer 74 * Returns a pointer to a format object or a null pointer
75 * if format type doesn't exist. 75 * if format type doesn't exist.
76 * 76 *
77 * @param type The type of the format, returned by @ref formats() 77 * @param type The type of the format, returned by @ref formats()
78 */ 78 */
79 FormatPlugin *format( const QString &type ); 79 FormatPlugin *format( const QString &type );
80 80
81 /** 81 /**
82 * Returns a list of all available format types. 82 * Returns a list of all available format types.
83 */ 83 */
84 QStringList formats(); 84 QStringList formats();
85 85
86 /** 86 /**
87 * Returns the info structure for a special type. 87 * Returns the info structure for a special type.
88 */ 88 */
89 FormatInfo *info( const QString &type ); 89 FormatInfo *info( const QString &type );
90 90
91 protected: 91 protected:
92 FormatFactory(); 92 FormatFactory();
93 93
94 private: 94 private:
95#ifndef DESKTOP_VERSION 95#ifndef DESKTOP_VERSION
96 KLibrary *openLibrary( const QString& libName ); 96 KLibrary *openLibrary( const QString& libName );
97#endif 97#endif
98 static FormatFactory *mSelf; 98 static FormatFactory *mSelf;
99 99
100 QDict<FormatInfo> mFormatList; 100 Q3Dict<FormatInfo> mFormatList;
101}; 101};
102 102
103} 103}
104#endif 104#endif
diff --git a/kabc/formats/binary/kabcformat_binaryE.pro b/kabc/formats/binary/kabcformat_binaryE.pro
index 2d9594d..c71197e 100644
--- a/kabc/formats/binary/kabcformat_binaryE.pro
+++ b/kabc/formats/binary/kabcformat_binaryE.pro
@@ -1,21 +1,21 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2CONFIG += qt warn_on release 2CONFIG += qt warn_on release
3#release debug 3#release debug
4 4
5TARGET = microkabcformat_binary 5TARGET = microkabcformat_binary
6#INCLUDEPATH += . ./vcard/include ./vcard/include/generated ../microkde ../microkde/kdecore ../microkde/kdeui ../microkde/kio/kfile ../qtcompat 6#INCLUDEPATH += . ./vcard/include ./vcard/include/generated ../microkde ../microkde/kdecore ../microkde/kdeui ../microkde/kio/kfile ../qtcompat
7INCLUDEPATH += ../.. ../../../microkde ../../../microkde/kdecore ../../../qtcompat 7INCLUDEPATH += ../.. ../../../microkde ../../../microkde/kdecore ../../../qtcompat
8OBJECTS_DIR = obj/$(PLATFORM) 8OBJECTS_DIR = obj/$(PLATFORM)
9MOC_DIR = moc 9MOC_DIR = moc
10DESTDIR = $(QPEDIR)/lib 10DESTDIR = $(QPEDIR)/lib
11LIBS += -lmicrokde -lmicrokabc 11LIBS += -lxmicrokde -lxmicrokabc
12LIBS += -L$(QPEDIR)/lib 12LIBS += -L$(QPEDIR)/lib
13DEFINES += KAB_EMBEDDED 13DEFINES += KAB_EMBEDDED
14 14
15INTERFACES = \ 15INTERFACES = \
16 16
17HEADERS = \ 17HEADERS = \
18 binaryformat.h 18 binaryformat.h
19 19
20SOURCES = \ 20SOURCES = \
21 binaryformat.cpp 21 binaryformat.cpp
diff --git a/kabc/formats/vcardformatplugin2.cpp b/kabc/formats/vcardformatplugin2.cpp
index 41b0c9a..fbebe92 100644
--- a/kabc/formats/vcardformatplugin2.cpp
+++ b/kabc/formats/vcardformatplugin2.cpp
@@ -1,124 +1,124 @@
1/* 1/*
2Enhanced Version of the file for platform independent KDE tools. 2Enhanced Version of the file for platform independent KDE tools.
3Copyright (c) 2004 Ulf Schenk 3Copyright (c) 2004 Ulf Schenk
4 4
5$Id$ 5$Id$
6*/ 6*/
7 7
8#include "vcardformatplugin2.h" 8#include "vcardformatplugin2.h"
9 9
10#include "address.h" 10#include "address.h"
11#include "addressee.h" 11#include "addressee.h"
12#include "vcardparser/vcardtool.h" 12#include "vcardparser/vcardtool.h"
13 13
14#include <qtextstream.h> 14#include <q3textstream.h>
15#include <qfile.h> 15#include <qfile.h>
16 16
17using namespace KABC; 17using namespace KABC;
18 18
19extern "C" 19extern "C"
20{ 20{
21 FormatPlugin *format() 21 FormatPlugin *format()
22 { 22 {
23 return new VCardFormatPlugin2(); 23 return new VCardFormatPlugin2();
24 } 24 }
25} 25}
26 26
27VCardFormatPlugin2::VCardFormatPlugin2() 27VCardFormatPlugin2::VCardFormatPlugin2()
28{ 28{
29} 29}
30 30
31VCardFormatPlugin2::~VCardFormatPlugin2() 31VCardFormatPlugin2::~VCardFormatPlugin2()
32{ 32{
33} 33}
34 34
35bool VCardFormatPlugin2::load( Addressee &addressee, QFile *file ) 35bool VCardFormatPlugin2::load( Addressee &addressee, QFile *file )
36{ 36{
37 qDebug("VCardFormatPlugin2::load"); 37 qDebug("VCardFormatPlugin2::load");
38 QString data; 38 QString data;
39 39
40 QTextStream t( file ); 40 Q3TextStream t( file );
41 t.setEncoding( QTextStream::UnicodeUTF8 ); 41 t.setEncoding( Q3TextStream::UnicodeUTF8 );
42 data = t.read(); 42 data = t.read();
43 43
44 VCardTool tool; 44 VCardTool tool;
45 45
46 Addressee::List l = tool.parseVCards( data ); 46 Addressee::List l = tool.parseVCards( data );
47 47
48 if ( ! l.first().isEmpty() ) { 48 if ( ! l.first().isEmpty() ) {
49 addressee = l.first(); 49 addressee = l.first();
50 return true; 50 return true;
51 } 51 }
52 52
53 return false; 53 return false;
54} 54}
55 55
56bool VCardFormatPlugin2::loadAll( AddressBook *addressBook, Resource *resource, QFile *file ) 56bool VCardFormatPlugin2::loadAll( AddressBook *addressBook, Resource *resource, QFile *file )
57{ 57{
58 qDebug("VCardFormatPlugin2::loadAll"); 58 qDebug("VCardFormatPlugin2::loadAll");
59 QString data; 59 QString data;
60 60
61 QTextStream t( file ); 61 Q3TextStream t( file );
62 t.setEncoding( QTextStream::UnicodeUTF8 ); 62 t.setEncoding( Q3TextStream::UnicodeUTF8 );
63 data = t.read(); 63 data = t.read();
64 64
65 VCardTool tool; 65 VCardTool tool;
66 66
67 Addressee::List l = tool.parseVCards( data ); 67 Addressee::List l = tool.parseVCards( data );
68 68
69 Addressee::List::Iterator itr; 69 Addressee::List::Iterator itr;
70 70
71 for ( itr = l.begin(); itr != l.end(); ++itr) { 71 for ( itr = l.begin(); itr != l.end(); ++itr) {
72 Addressee addressee = *itr; 72 Addressee addressee = *itr;
73 addressee.setResource( resource ); 73 addressee.setResource( resource );
74 addressBook->insertAddressee( addressee ); 74 addressBook->insertAddressee( addressee );
75 } 75 }
76 76
77 return true; 77 return true;
78} 78}
79 79
80void VCardFormatPlugin2::save( const Addressee &addressee, QFile *file ) 80void VCardFormatPlugin2::save( const Addressee &addressee, QFile *file )
81{ 81{
82 qDebug("VCardFormatPlugin2::save"); 82 qDebug("VCardFormatPlugin2::save");
83 VCardTool tool; 83 VCardTool tool;
84 Addressee::List vcardlist; 84 Addressee::List vcardlist;
85 85
86 86
87 vcardlist.append( addressee ); 87 vcardlist.append( addressee );
88 88
89 QTextStream t( file ); 89 Q3TextStream t( file );
90 t.setEncoding( QTextStream::UnicodeUTF8 ); 90 t.setEncoding( Q3TextStream::UnicodeUTF8 );
91 t << tool.createVCards( vcardlist ); 91 t << tool.createVCards( vcardlist );
92} 92}
93 93
94void VCardFormatPlugin2::saveAll( AddressBook *ab, Resource *resource, QFile *file ) 94void VCardFormatPlugin2::saveAll( AddressBook *ab, Resource *resource, QFile *file )
95{ 95{
96 qDebug("VCardFormatPlugin2::saveAll"); 96 qDebug("VCardFormatPlugin2::saveAll");
97 VCardTool tool; 97 VCardTool tool;
98 Addressee::List vcardlist; 98 Addressee::List vcardlist;
99 99
100 AddressBook::Iterator it; 100 AddressBook::Iterator it;
101 for ( it = ab->begin(); it != ab->end(); ++it ) { 101 for ( it = ab->begin(); it != ab->end(); ++it ) {
102 if ( (*it).resource() == resource ) { 102 if ( (*it).resource() == resource ) {
103 (*it).setChanged( false ); 103 (*it).setChanged( false );
104 vcardlist.append( *it ); 104 vcardlist.append( *it );
105 } 105 }
106 } 106 }
107 107
108 QTextStream t( file ); 108 Q3TextStream t( file );
109 t.setEncoding( QTextStream::UnicodeUTF8 ); 109 t.setEncoding( Q3TextStream::UnicodeUTF8 );
110 t << tool.createVCards( vcardlist ); 110 t << tool.createVCards( vcardlist );
111} 111}
112 112
113bool VCardFormatPlugin2::checkFormat( QFile *file ) const 113bool VCardFormatPlugin2::checkFormat( QFile *file ) const
114{ 114{
115 QString line; 115 QString line;
116 116
117 file->readLine( line, 1024 ); 117 char tmp[1024]; file->readLine( tmp, 1024 ); line = tmp;
118 line = line.stripWhiteSpace(); 118 line = line.stripWhiteSpace();
119 if ( line == "BEGIN:VCARD" ) 119 if ( line == "BEGIN:VCARD" )
120 return true; 120 return true;
121 else 121 else
122 return false; 122 return false;
123} 123}
124 124
diff --git a/kabc/kabc.pro b/kabc/kabc.pro
index 17ebff8..846ed8a 100644
--- a/kabc/kabc.pro
+++ b/kabc/kabc.pro
@@ -1,218 +1,222 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2CONFIG += qt warn_on 2CONFIG += qt warn_on
3#release debug 3#release debug
4DESTDIR=../bin 4DESTDIR=../bin
5 5
6TARGET = microkabc 6TARGET = xmicrokabc
7 7
8include( ../variables.pri ) 8include( ../variables.pri )
9 9
10INCLUDEPATH += . ./vcard/include ./vcard/include/generated ../microkde ../microkde/kdecore ../microkde/kio/kfile ../microkde/kio/kio ../libkdepim ../qtcompat ../microkde/kdeui .. 10INCLUDEPATH += . ./vcard/include ./vcard/include/generated ../microkde ../microkde/kdecore ../microkde/kio/kfile ../microkde/kio/kio ../libkdepim ../qtcompat ../microkde/kdeui ..
11 11
12#LIBS += -lmicrokde -lldap 12#LIBS += -lxmicrokde -lldap
13LIBS += -L$(QPEDIR)/lib 13LIBS += -L$(QPEDIR)/lib
14DEFINES += KAB_EMBEDDED DESKTOP_VERSION 14DEFINES += KAB_EMBEDDED DESKTOP_VERSION
15unix : { 15unix : {
16 16
17OBJECTS_DIR = obj/unix 17OBJECTS_DIR = obj/unix
18MOC_DIR = moc/unix 18MOC_DIR = moc/unix
19} 19}
20win32: { 20win32: {
21DEFINES += _WIN32_ 21DEFINES += _WIN32_
22OBJECTS_DIR = obj/win 22OBJECTS_DIR = obj/win
23MOC_DIR = moc/win 23MOC_DIR = moc/win
24} 24}
25INTERFACES = \ 25INTERFACES = \
26 26
27 27
28HEADERS = \ 28HEADERS = \
29 resource.h \ 29 resource.h \
30 stdaddressbook.h \ 30 stdaddressbook.h \
31 agent.h \ 31 agent.h \
32 geo.h \ 32 geo.h \
33 key.h \ 33 key.h \
34 field.h \ 34 field.h \
35 plugin.h \ 35 plugin.h \
36 address.h \ 36 address.h \
37 addresseelist.h \ 37 addresseelist.h \
38 addresseeview.h \ 38 addresseeview.h \
39formatfactory.h \ 39formatfactory.h \
40 formatplugin.h \ 40 formatplugin.h \
41 phonenumber.h \ 41 phonenumber.h \
42distributionlist.h \ 42distributionlist.h \
43distributionlistdialog.h \ 43distributionlistdialog.h \
44distributionlisteditor.h \ 44distributionlisteditor.h \
45vcardformatplugin.h \ 45vcardformatplugin.h \
46formats/vcardformatplugin2.h \ 46formats/vcardformatplugin2.h \
47 picture.h \ 47 picture.h \
48 secrecy.h \ 48 secrecy.h \
49 sound.h \ 49 sound.h \
50 addressbook.h \ 50 addressbook.h \
51 timezone.h \ 51 timezone.h \
52 tmpaddressbook.h \ 52 tmpaddressbook.h \
53 addressee.h \ 53 addressee.h \
54 addresseedialog.h \ 54 addresseedialog.h \
55 vcardconverter.h \ 55 vcardconverter.h \
56 vcard21parser.h \ 56 vcard21parser.h \
57 vcardformatimpl.h \ 57 vcardformatimpl.h \
58 plugins/file/resourcefile.h \ 58 plugins/file/resourcefile.h \
59 plugins/file/resourcefileconfig.h \ 59 plugins/file/resourcefileconfig.h \
60 plugins/dir/resourcedir.h \ 60 plugins/dir/resourcedir.h \
61 plugins/dir/resourcedirconfig.h \ 61 plugins/dir/resourcedirconfig.h \
62 vcardparser/vcardline.h \ 62 vcardparser/vcardline.h \
63 vcardparser/vcard.h \ 63 vcardparser/vcard.h \
64 vcardparser/vcardtool.h \ 64 vcardparser/vcardtool.h \
65 vcardparser/vcardparser.h \ 65 vcardparser/vcardparser.h \
66vcard/include/VCardAdrParam.h \ 66vcard/include/VCardAdrParam.h \
67vcard/include/VCardAdrValue.h \ 67vcard/include/VCardAdrValue.h \
68vcard/include/VCardAgentParam.h \ 68vcard/include/VCardAgentParam.h \
69vcard/include/VCardContentLine.h \ 69vcard/include/VCardContentLine.h \
70vcard/include/VCardDateParam.h \ 70vcard/include/VCardDateParam.h \
71vcard/include/VCardDateValue.h \ 71vcard/include/VCardDateValue.h \
72vcard/include/VCardEmailParam.h \ 72vcard/include/VCardEmailParam.h \
73vcard/include/VCardGeoValue.h \ 73vcard/include/VCardGeoValue.h \
74vcard/include/VCardGroup.h \ 74vcard/include/VCardGroup.h \
75vcard/include/VCardImageParam.h \ 75vcard/include/VCardImageParam.h \
76vcard/include/VCardImageValue.h \ 76vcard/include/VCardImageValue.h \
77vcard/include/VCardLangValue.h \ 77vcard/include/VCardLangValue.h \
78vcard/include/VCardNValue.h \ 78vcard/include/VCardNValue.h \
79vcard/include/VCardParam.h \ 79vcard/include/VCardParam.h \
80vcard/include/VCardPhoneNumberValue.h \ 80vcard/include/VCardPhoneNumberValue.h \
81vcard/include/VCardSourceParam.h \ 81vcard/include/VCardSourceParam.h \
82vcard/include/VCardTelParam.h \ 82vcard/include/VCardTelParam.h \
83vcard/include/VCardTextParam.h \ 83vcard/include/VCardTextParam.h \
84vcard/include/VCardTextValue.h \ 84vcard/include/VCardTextValue.h \
85vcard/include/VCardTextBinParam.h \ 85vcard/include/VCardTextBinParam.h \
86vcard/include/VCardURIValue.h \ 86vcard/include/VCardURIValue.h \
87vcard/include/VCardVCard.h \ 87vcard/include/VCardVCard.h \
88vcard/include/VCardEntity.h \ 88vcard/include/VCardEntity.h \
89vcard/include/VCardValue.h \ 89vcard/include/VCardValue.h \
90vcard/include/VCardSoundValue.h \ 90vcard/include/VCardSoundValue.h \
91vcard/include/VCardAgentValue.h \ 91vcard/include/VCardAgentValue.h \
92vcard/include/VCardTelValue.h \ 92vcard/include/VCardTelValue.h \
93vcard/include/VCardTextBinValue.h \ 93vcard/include/VCardTextBinValue.h \
94vcard/include/VCardOrgValue.h \ 94vcard/include/VCardOrgValue.h \
95vcard/include/VCardUTCValue.h \ 95vcard/include/VCardUTCValue.h \
96vcard/include/VCardClassValue.h \ 96vcard/include/VCardClassValue.h \
97vcard/include/VCardFloatValue.h \ 97vcard/include/VCardFloatValue.h \
98vcard/include/VCardTextListValue.h \ 98vcard/include/VCardTextListValue.h \
99vcard/include/generated/AdrParam-generated.h \ 99vcard/include/generated/AdrParam-generated.h \
100vcard/include/generated/AdrValue-generated.h \ 100vcard/include/generated/AdrValue-generated.h \
101vcard/include/generated/AgentParam-generated.h \ 101vcard/include/generated/AgentParam-generated.h \
102vcard/include/generated/ContentLine-generated.h \ 102vcard/include/generated/ContentLine-generated.h \
103vcard/include/generated/DateParam-generated.h \ 103vcard/include/generated/DateParam-generated.h \
104vcard/include/generated/DateValue-generated.h \ 104vcard/include/generated/DateValue-generated.h \
105vcard/include/generated/EmailParam-generated.h \ 105vcard/include/generated/EmailParam-generated.h \
106vcard/include/generated/GeoValue-generated.h \ 106vcard/include/generated/GeoValue-generated.h \
107vcard/include/generated/Group-generated.h \ 107vcard/include/generated/Group-generated.h \
108vcard/include/generated/ImageParam-generated.h \ 108vcard/include/generated/ImageParam-generated.h \
109vcard/include/generated/ImageValue-generated.h \ 109vcard/include/generated/ImageValue-generated.h \
110vcard/include/generated/LangValue-generated.h \ 110vcard/include/generated/LangValue-generated.h \
111vcard/include/generated/NValue-generated.h \ 111vcard/include/generated/NValue-generated.h \
112vcard/include/generated/Param-generated.h \ 112vcard/include/generated/Param-generated.h \
113vcard/include/generated/PhoneNumberValue-generated.h \ 113vcard/include/generated/PhoneNumberValue-generated.h \
114vcard/include/generated/SourceParam-generated.h \ 114vcard/include/generated/SourceParam-generated.h \
115vcard/include/generated/TelParam-generated.h \ 115vcard/include/generated/TelParam-generated.h \
116vcard/include/generated/TextParam-generated.h \ 116vcard/include/generated/TextParam-generated.h \
117vcard/include/generated/TextNSParam-generated.h \ 117vcard/include/generated/TextNSParam-generated.h \
118vcard/include/generated/TextValue-generated.h \ 118vcard/include/generated/TextValue-generated.h \
119vcard/include/generated/TextBinParam-generated.h \ 119vcard/include/generated/TextBinParam-generated.h \
120vcard/include/generated/URIValue-generated.h \ 120vcard/include/generated/URIValue-generated.h \
121vcard/include/generated/VCard-generated.h \ 121vcard/include/generated/VCard-generated.h \
122vcard/include/generated/VCardEntity-generated.h \ 122vcard/include/generated/VCardEntity-generated.h \
123vcard/include/generated/Value-generated.h \ 123vcard/include/generated/Value-generated.h \
124vcard/include/generated/SoundValue-generated.h \ 124vcard/include/generated/SoundValue-generated.h \
125vcard/include/generated/AgentValue-generated.h \ 125vcard/include/generated/AgentValue-generated.h \
126vcard/include/generated/TelValue-generated.h \ 126vcard/include/generated/TelValue-generated.h \
127vcard/include/generated/TextBinValue-generated.h \ 127vcard/include/generated/TextBinValue-generated.h \
128vcard/include/generated/OrgValue-generated.h \ 128vcard/include/generated/OrgValue-generated.h \
129vcard/include/generated/UTCValue-generated.h \ 129vcard/include/generated/UTCValue-generated.h \
130vcard/include/generated/ClassValue-generated.h \ 130vcard/include/generated/ClassValue-generated.h \
131vcard/include/generated/FloatValue-generated.h \ 131vcard/include/generated/FloatValue-generated.h \
132vcard/include/generated/TextListValue-generated.h 132vcard/include/generated/TextListValue-generated.h
133 133
134 134
135# plugins/ldap/resourceldap.h \ 135# plugins/ldap/resourceldap.h \
136# plugins/ldap/resourceldapconfig.h \ 136# plugins/ldap/resourceldapconfig.h \
137#formats/binary/binaryformat.h \ 137#formats/binary/binaryformat.h \
138 138
139#vcard/include/VCardTextNSParam.h \ 139#vcard/include/VCardTextNSParam.h \
140 140
141SOURCES = \ 141SOURCES = \
142distributionlist.cpp \ 142distributionlist.cpp \
143distributionlistdialog.cpp \ 143distributionlistdialog.cpp \
144distributionlisteditor.cpp \ 144distributionlisteditor.cpp \
145vcardformatplugin.cpp \ 145vcardformatplugin.cpp \
146formats/vcardformatplugin2.cpp \ 146formats/vcardformatplugin2.cpp \
147formatfactory.cpp \ 147formatfactory.cpp \
148 resource.cpp \ 148 resource.cpp \
149 stdaddressbook.cpp \ 149 stdaddressbook.cpp \
150 plugin.cpp \ 150 plugin.cpp \
151 agent.cpp \ 151 agent.cpp \
152 geo.cpp \ 152 geo.cpp \
153 key.cpp \ 153 key.cpp \
154 field.cpp \ 154 field.cpp \
155 addresseeview.cpp \ 155 addresseeview.cpp \
156 address.cpp \ 156 address.cpp \
157 phonenumber.cpp \ 157 phonenumber.cpp \
158 picture.cpp \ 158 picture.cpp \
159 secrecy.cpp \ 159 secrecy.cpp \
160 sound.cpp \ 160 sound.cpp \
161 addressbook.cpp \ 161 addressbook.cpp \
162 timezone.cpp \ 162 timezone.cpp \
163 tmpaddressbook.cpp \ 163 tmpaddressbook.cpp \
164 addressee.cpp \ 164 addressee.cpp \
165 addresseelist.cpp \ 165 addresseelist.cpp \
166 addresseedialog.cpp \ 166 addresseedialog.cpp \
167 vcardconverter.cpp \ 167 vcardconverter.cpp \
168 vcard21parser.cpp \ 168 vcard21parser.cpp \
169 vcardformatimpl.cpp \ 169 vcardformatimpl.cpp \
170 plugins/file/resourcefile.cpp \ 170 plugins/file/resourcefile.cpp \
171 plugins/file/resourcefileconfig.cpp \ 171 plugins/file/resourcefileconfig.cpp \
172 plugins/dir/resourcedir.cpp \ 172 plugins/dir/resourcedir.cpp \
173 plugins/dir/resourcedirconfig.cpp \ 173 plugins/dir/resourcedirconfig.cpp \
174 vcardparser/vcardline.cpp \ 174 vcardparser/vcardline.cpp \
175 vcardparser/vcard.cpp \ 175 vcardparser/vcard.cpp \
176 vcardparser/vcardtool.cpp \ 176 vcardparser/vcardtool.cpp \
177 vcardparser/vcardparser.cpp \ 177 vcardparser/vcardparser.cpp \
178vcard/AdrParam.cpp \ 178vcard/AdrParam.cpp \
179vcard/AdrValue.cpp \ 179vcard/AdrValue.cpp \
180vcard/AgentParam.cpp \ 180vcard/AgentParam.cpp \
181vcard/ContentLine.cpp \ 181vcard/ContentLine.cpp \
182vcard/DateParam.cpp \ 182vcard/DateParam.cpp \
183vcard/DateValue.cpp \ 183vcard/DateValue.cpp \
184vcard/EmailParam.cpp \ 184vcard/EmailParam.cpp \
185vcard/Entity.cpp \ 185vcard/Entity.cpp \
186vcard/Enum.cpp \ 186vcard/Enum.cpp \
187vcard/GeoValue.cpp \ 187vcard/GeoValue.cpp \
188vcard/ImageParam.cpp \ 188vcard/ImageParam.cpp \
189vcard/ImageValue.cpp \ 189vcard/ImageValue.cpp \
190vcard/LangValue.cpp \ 190vcard/LangValue.cpp \
191vcard/NValue.cpp \ 191vcard/NValue.cpp \
192vcard/Param.cpp \ 192vcard/Param.cpp \
193vcard/PhoneNumberValue.cpp \ 193vcard/PhoneNumberValue.cpp \
194vcard/RToken.cpp \ 194vcard/RToken.cpp \
195vcard/SourceParam.cpp \ 195vcard/SourceParam.cpp \
196vcard/TelParam.cpp \ 196vcard/TelParam.cpp \
197vcard/TextParam.cpp \ 197vcard/TextParam.cpp \
198vcard/TextValue.cpp \ 198vcard/TextValue.cpp \
199vcard/TextBinParam.cpp \ 199vcard/TextBinParam.cpp \
200vcard/URIValue.cpp \ 200vcard/URIValue.cpp \
201vcard/VCardv.cpp \ 201vcard/VCardv.cpp \
202vcard/VCardEntity.cpp \ 202vcard/VCardEntity.cpp \
203vcard/Value.cpp \ 203vcard/Value.cpp \
204vcard/SoundValue.cpp \ 204vcard/SoundValue.cpp \
205vcard/AgentValue.cpp \ 205vcard/AgentValue.cpp \
206vcard/TelValue.cpp \ 206vcard/TelValue.cpp \
207vcard/TextBinValue.cpp \ 207vcard/TextBinValue.cpp \
208vcard/OrgValue.cpp \ 208vcard/OrgValue.cpp \
209vcard/UTCValue.cpp \ 209vcard/UTCValue.cpp \
210vcard/ClassValue.cpp \ 210vcard/ClassValue.cpp \
211vcard/FloatValue.cpp \ 211vcard/FloatValue.cpp \
212vcard/TextListValue.cpp 212vcard/TextListValue.cpp
213 213
214 214
215# plugins/ldap/resourceldap.cpp \ 215# plugins/ldap/resourceldap.cpp \
216# plugins/ldap/resourceldapconfig.cpp \ 216# plugins/ldap/resourceldapconfig.cpp \
217 217
218#formats/binary/binaryformat.cpp \ 218#formats/binary/binaryformat.cpp \
219#The following line was inserted by qt3to4
220QT += xml qt3support
221#The following line was inserted by qt3to4
222QT +=
diff --git a/kabc/kabcE.pro b/kabc/kabcE.pro
index 1d28a4d..6045b68 100644
--- a/kabc/kabcE.pro
+++ b/kabc/kabcE.pro
@@ -1,196 +1,198 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2CONFIG += qt warn_on 2CONFIG += qt warn_on
3TARGET = microkabc 3TARGET = xmicrokabc
4 4
5 5
6INCLUDEPATH += . $(KDEPIMDIR) vcard/include vcard/include/generated $(KDEPIMDIR)/microkde $(KDEPIMDIR)/microkde/kdecore $(KDEPIMDIR)/microkde/kdeui $(KDEPIMDIR)/microkde/kio/kfile $(KDEPIMDIR)/microkde/kio/kio $(KDEPIMDIR)/libkdepim $(KDEPIMDIR)/qtcompat $(QPEDIR)/include 6INCLUDEPATH += . $(KDEPIMDIR) vcard/include vcard/include/generated $(KDEPIMDIR)/microkde $(KDEPIMDIR)/microkde/kdecore $(KDEPIMDIR)/microkde/kdeui $(KDEPIMDIR)/microkde/kio/kfile $(KDEPIMDIR)/microkde/kio/kio $(KDEPIMDIR)/libkdepim $(KDEPIMDIR)/qtcompat $(QPEDIR)/include
7OBJECTS_DIR = obj/$(PLATFORM) 7OBJECTS_DIR = obj/$(PLATFORM)
8MOC_DIR = moc/$(PLATFORM) 8MOC_DIR = moc/$(PLATFORM)
9DESTDIR = $(QPEDIR)/lib 9DESTDIR = $(QPEDIR)/lib
10LIBS += -lmicrokde 10LIBS += -lxmicrokde
11LIBS += -lmicrokdepim 11LIBS += -lxmicrokdepim
12#LIBS += -lldap 12#LIBS += -lldap
13LIBS += -L$(QPEDIR)/lib 13LIBS += -L$(QPEDIR)/lib
14DEFINES += KAB_EMBEDDED 14DEFINES += KAB_EMBEDDED
15 15
16#enable the following line if you want to get debugoutput while loading adresses 16#enable the following line if you want to get debugoutput while loading adresses
17#DEFINES += VCARD_DEBUG 17#DEFINES += VCARD_DEBUG
18 18
19INTERFACES = \ 19INTERFACES = \
20 20
21HEADERS = \ 21HEADERS = \
22 address.h \ 22 address.h \
23 addressbook.h \ 23 addressbook.h \
24 addressee.h \ 24 addressee.h \
25 addresseedialog.h \ 25 addresseedialog.h \
26 addresseelist.h \ 26 addresseelist.h \
27 addresseeview.h \ 27 addresseeview.h \
28 agent.h \ 28 agent.h \
29 distributionlist.h \ 29 distributionlist.h \
30 distributionlistdialog.h \ 30 distributionlistdialog.h \
31 distributionlisteditor.h \ 31 distributionlisteditor.h \
32 field.h \ 32 field.h \
33 formatfactory.h \ 33 formatfactory.h \
34 formatplugin.h \ 34 formatplugin.h \
35 geo.h \ 35 geo.h \
36 key.h \ 36 key.h \
37 phonenumber.h \ 37 phonenumber.h \
38 picture.h \ 38 picture.h \
39 plugin.h \ 39 plugin.h \
40 resource.h \ 40 resource.h \
41 secrecy.h \ 41 secrecy.h \
42 sound.h \ 42 sound.h \
43 stdaddressbook.h \ 43 stdaddressbook.h \
44 timezone.h \ 44 timezone.h \
45 tmpaddressbook.h \ 45 tmpaddressbook.h \
46 vcardconverter.h \ 46 vcardconverter.h \
47 vcard21parser.h \ 47 vcard21parser.h \
48 vcardformatimpl.h \ 48 vcardformatimpl.h \
49 vcardformatplugin.h \ 49 vcardformatplugin.h \
50 vcardparser/vcardline.h \ 50 vcardparser/vcardline.h \
51 vcardparser/vcard.h \ 51 vcardparser/vcard.h \
52 vcardparser/vcardtool.h \ 52 vcardparser/vcardtool.h \
53 vcardparser/vcardparser.h \ 53 vcardparser/vcardparser.h \
54 vcard/include/VCardAdrParam.h \ 54 vcard/include/VCardAdrParam.h \
55 vcard/include/VCardAdrValue.h \ 55 vcard/include/VCardAdrValue.h \
56 vcard/include/VCardAgentParam.h \ 56 vcard/include/VCardAgentParam.h \
57 vcard/include/VCardContentLine.h \ 57 vcard/include/VCardContentLine.h \
58 vcard/include/VCardDateParam.h \ 58 vcard/include/VCardDateParam.h \
59 vcard/include/VCardDateValue.h \ 59 vcard/include/VCardDateValue.h \
60 vcard/include/VCardEmailParam.h \ 60 vcard/include/VCardEmailParam.h \
61 vcard/include/VCardGeoValue.h \ 61 vcard/include/VCardGeoValue.h \
62 vcard/include/VCardGroup.h \ 62 vcard/include/VCardGroup.h \
63 vcard/include/VCardImageParam.h \ 63 vcard/include/VCardImageParam.h \
64 vcard/include/VCardImageValue.h \ 64 vcard/include/VCardImageValue.h \
65 vcard/include/VCardLangValue.h \ 65 vcard/include/VCardLangValue.h \
66 vcard/include/VCardNValue.h \ 66 vcard/include/VCardNValue.h \
67 vcard/include/VCardParam.h \ 67 vcard/include/VCardParam.h \
68 vcard/include/VCardPhoneNumberValue.h \ 68 vcard/include/VCardPhoneNumberValue.h \
69 vcard/include/VCardSourceParam.h \ 69 vcard/include/VCardSourceParam.h \
70 vcard/include/VCardTelParam.h \ 70 vcard/include/VCardTelParam.h \
71 vcard/include/VCardTextParam.h \ 71 vcard/include/VCardTextParam.h \
72 vcard/include/VCardTextNSParam.h \ 72 vcard/include/VCardTextNSParam.h \
73 vcard/include/VCardTextValue.h \ 73 vcard/include/VCardTextValue.h \
74 vcard/include/VCardTextBinParam.h \ 74 vcard/include/VCardTextBinParam.h \
75 vcard/include/VCardURIValue.h \ 75 vcard/include/VCardURIValue.h \
76 vcard/include/VCardVCard.h \ 76 vcard/include/VCardVCard.h \
77 vcard/include/VCardEntity.h \ 77 vcard/include/VCardEntity.h \
78 vcard/include/VCardValue.h \ 78 vcard/include/VCardValue.h \
79 vcard/include/VCardSoundValue.h \ 79 vcard/include/VCardSoundValue.h \
80 vcard/include/VCardAgentValue.h \ 80 vcard/include/VCardAgentValue.h \
81 vcard/include/VCardTelValue.h \ 81 vcard/include/VCardTelValue.h \
82 vcard/include/VCardTextBinValue.h \ 82 vcard/include/VCardTextBinValue.h \
83 vcard/include/VCardOrgValue.h \ 83 vcard/include/VCardOrgValue.h \
84 vcard/include/VCardUTCValue.h \ 84 vcard/include/VCardUTCValue.h \
85 vcard/include/VCardClassValue.h \ 85 vcard/include/VCardClassValue.h \
86 vcard/include/VCardFloatValue.h \ 86 vcard/include/VCardFloatValue.h \
87 vcard/include/VCardTextListValue.h \ 87 vcard/include/VCardTextListValue.h \
88 vcard/include/generated/AdrParam-generated.h \ 88 vcard/include/generated/AdrParam-generated.h \
89 vcard/include/generated/AdrValue-generated.h \ 89 vcard/include/generated/AdrValue-generated.h \
90 vcard/include/generated/AgentParam-generated.h \ 90 vcard/include/generated/AgentParam-generated.h \
91 vcard/include/generated/ContentLine-generated.h \ 91 vcard/include/generated/ContentLine-generated.h \
92 vcard/include/generated/DateParam-generated.h \ 92 vcard/include/generated/DateParam-generated.h \
93 vcard/include/generated/DateValue-generated.h \ 93 vcard/include/generated/DateValue-generated.h \
94 vcard/include/generated/EmailParam-generated.h \ 94 vcard/include/generated/EmailParam-generated.h \
95 vcard/include/generated/GeoValue-generated.h \ 95 vcard/include/generated/GeoValue-generated.h \
96 vcard/include/generated/Group-generated.h \ 96 vcard/include/generated/Group-generated.h \
97 vcard/include/generated/ImageParam-generated.h \ 97 vcard/include/generated/ImageParam-generated.h \
98 vcard/include/generated/ImageValue-generated.h \ 98 vcard/include/generated/ImageValue-generated.h \
99 vcard/include/generated/LangValue-generated.h \ 99 vcard/include/generated/LangValue-generated.h \
100 vcard/include/generated/NValue-generated.h \ 100 vcard/include/generated/NValue-generated.h \
101 vcard/include/generated/Param-generated.h \ 101 vcard/include/generated/Param-generated.h \
102 vcard/include/generated/PhoneNumberValue-generated.h \ 102 vcard/include/generated/PhoneNumberValue-generated.h \
103 vcard/include/generated/SourceParam-generated.h \ 103 vcard/include/generated/SourceParam-generated.h \
104 vcard/include/generated/TelParam-generated.h \ 104 vcard/include/generated/TelParam-generated.h \
105 vcard/include/generated/TextParam-generated.h \ 105 vcard/include/generated/TextParam-generated.h \
106 vcard/include/generated/TextNSParam-generated.h \ 106 vcard/include/generated/TextNSParam-generated.h \
107 vcard/include/generated/TextValue-generated.h \ 107 vcard/include/generated/TextValue-generated.h \
108 vcard/include/generated/TextBinParam-generated.h \ 108 vcard/include/generated/TextBinParam-generated.h \
109 vcard/include/generated/URIValue-generated.h \ 109 vcard/include/generated/URIValue-generated.h \
110 vcard/include/generated/VCard-generated.h \ 110 vcard/include/generated/VCard-generated.h \
111 vcard/include/generated/VCardEntity-generated.h \ 111 vcard/include/generated/VCardEntity-generated.h \
112 vcard/include/generated/Value-generated.h \ 112 vcard/include/generated/Value-generated.h \
113 vcard/include/generated/SoundValue-generated.h \ 113 vcard/include/generated/SoundValue-generated.h \
114 vcard/include/generated/AgentValue-generated.h \ 114 vcard/include/generated/AgentValue-generated.h \
115 vcard/include/generated/TelValue-generated.h \ 115 vcard/include/generated/TelValue-generated.h \
116 vcard/include/generated/TextBinValue-generated.h \ 116 vcard/include/generated/TextBinValue-generated.h \
117 vcard/include/generated/OrgValue-generated.h \ 117 vcard/include/generated/OrgValue-generated.h \
118 vcard/include/generated/UTCValue-generated.h \ 118 vcard/include/generated/UTCValue-generated.h \
119 vcard/include/generated/ClassValue-generated.h \ 119 vcard/include/generated/ClassValue-generated.h \
120 vcard/include/generated/FloatValue-generated.h \ 120 vcard/include/generated/FloatValue-generated.h \
121 vcard/include/generated/TextListValue-generated.h 121 vcard/include/generated/TextListValue-generated.h
122 122
123 123
124 124
125 125
126SOURCES = \ 126SOURCES = \
127 address.cpp \ 127 address.cpp \
128 addressbook.cpp \ 128 addressbook.cpp \
129 addressee.cpp \ 129 addressee.cpp \
130 addresseedialog.cpp \ 130 addresseedialog.cpp \
131 addresseelist.cpp \ 131 addresseelist.cpp \
132 addresseeview.cpp \ 132 addresseeview.cpp \
133 agent.cpp \ 133 agent.cpp \
134 distributionlist.cpp \ 134 distributionlist.cpp \
135 distributionlistdialog.cpp \ 135 distributionlistdialog.cpp \
136 distributionlisteditor.cpp \ 136 distributionlisteditor.cpp \
137 field.cpp \ 137 field.cpp \
138 formatfactory.cpp \ 138 formatfactory.cpp \
139 geo.cpp \ 139 geo.cpp \
140 key.cpp \ 140 key.cpp \
141 phonenumber.cpp \ 141 phonenumber.cpp \
142 picture.cpp \ 142 picture.cpp \
143 plugin.cpp \ 143 plugin.cpp \
144 resource.cpp \ 144 resource.cpp \
145 secrecy.cpp \ 145 secrecy.cpp \
146 sound.cpp \ 146 sound.cpp \
147 stdaddressbook.cpp \ 147 stdaddressbook.cpp \
148 timezone.cpp \ 148 timezone.cpp \
149 tmpaddressbook.cpp \ 149 tmpaddressbook.cpp \
150 vcardconverter.cpp \ 150 vcardconverter.cpp \
151 vcard21parser.cpp \ 151 vcard21parser.cpp \
152 vcardformatimpl.cpp \ 152 vcardformatimpl.cpp \
153 vcardformatplugin.cpp \ 153 vcardformatplugin.cpp \
154 vcardparser/vcardline.cpp \ 154 vcardparser/vcardline.cpp \
155 vcardparser/vcard.cpp \ 155 vcardparser/vcard.cpp \
156 vcardparser/vcardtool.cpp \ 156 vcardparser/vcardtool.cpp \
157 vcardparser/vcardparser.cpp \ 157 vcardparser/vcardparser.cpp \
158vcard/AdrParam.cpp \ 158vcard/AdrParam.cpp \
159vcard/AdrValue.cpp \ 159vcard/AdrValue.cpp \
160vcard/AgentParam.cpp \ 160vcard/AgentParam.cpp \
161vcard/ContentLine.cpp \ 161vcard/ContentLine.cpp \
162vcard/DateParam.cpp \ 162vcard/DateParam.cpp \
163vcard/DateValue.cpp \ 163vcard/DateValue.cpp \
164vcard/EmailParam.cpp \ 164vcard/EmailParam.cpp \
165vcard/Entity.cpp \ 165vcard/Entity.cpp \
166vcard/Enum.cpp \ 166vcard/Enum.cpp \
167vcard/GeoValue.cpp \ 167vcard/GeoValue.cpp \
168vcard/ImageParam.cpp \ 168vcard/ImageParam.cpp \
169vcard/ImageValue.cpp \ 169vcard/ImageValue.cpp \
170vcard/LangValue.cpp \ 170vcard/LangValue.cpp \
171vcard/NValue.cpp \ 171vcard/NValue.cpp \
172vcard/Param.cpp \ 172vcard/Param.cpp \
173vcard/PhoneNumberValue.cpp \ 173vcard/PhoneNumberValue.cpp \
174vcard/RToken.cpp \ 174vcard/RToken.cpp \
175vcard/SourceParam.cpp \ 175vcard/SourceParam.cpp \
176vcard/TelParam.cpp \ 176vcard/TelParam.cpp \
177vcard/TextParam.cpp \ 177vcard/TextParam.cpp \
178vcard/TextValue.cpp \ 178vcard/TextValue.cpp \
179vcard/TextBinParam.cpp \ 179vcard/TextBinParam.cpp \
180vcard/URIValue.cpp \ 180vcard/URIValue.cpp \
181vcard/VCardv.cpp \ 181vcard/VCardv.cpp \
182vcard/VCardEntity.cpp \ 182vcard/VCardEntity.cpp \
183vcard/Value.cpp \ 183vcard/Value.cpp \
184vcard/SoundValue.cpp \ 184vcard/SoundValue.cpp \
185vcard/AgentValue.cpp \ 185vcard/AgentValue.cpp \
186vcard/TelValue.cpp \ 186vcard/TelValue.cpp \
187vcard/TextBinValue.cpp \ 187vcard/TextBinValue.cpp \
188vcard/OrgValue.cpp \ 188vcard/OrgValue.cpp \
189vcard/UTCValue.cpp \ 189vcard/UTCValue.cpp \
190vcard/ClassValue.cpp \ 190vcard/ClassValue.cpp \
191vcard/FloatValue.cpp \ 191vcard/FloatValue.cpp \
192vcard/TextListValue.cpp 192vcard/TextListValue.cpp
193 193
194 194
195# plugins/ldap/resourceldap.cpp \ 195# plugins/ldap/resourceldap.cpp \
196# plugins/ldap/resourceldapconfig.cpp \ 196# plugins/ldap/resourceldapconfig.cpp \
197#The following line was inserted by qt3to4
198QT += qt3support
diff --git a/kabc/key.h b/kabc/key.h
index 6ea5b47..313eb7d 100644
--- a/kabc/key.h
+++ b/kabc/key.h
@@ -1,155 +1,155 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28#ifndef KABC_KEY_H 28#ifndef KABC_KEY_H
29#define KABC_KEY_H 29#define KABC_KEY_H
30 30
31#include <qvaluelist.h> 31#include <q3valuelist.h>
32 32
33namespace KABC { 33namespace KABC {
34 34
35/** 35/**
36 * @short A class to store an encryption key. 36 * @short A class to store an encryption key.
37 */ 37 */
38class Key 38class Key
39{ 39{
40 friend QDataStream &operator<<( QDataStream &, const Key & ); 40 friend QDataStream &operator<<( QDataStream &, const Key & );
41 friend QDataStream &operator>>( QDataStream &, Key & ); 41 friend QDataStream &operator>>( QDataStream &, Key & );
42 42
43public: 43public:
44 typedef QValueList<Key> List; 44 typedef Q3ValueList<Key> List;
45 typedef QValueList<int> TypeList; 45 typedef Q3ValueList<int> TypeList;
46 46
47 /** 47 /**
48 * Key types 48 * Key types
49 * 49 *
50 * @li X509 - X509 key 50 * @li X509 - X509 key
51 * @li PGP - Pretty Good Privacy key 51 * @li PGP - Pretty Good Privacy key
52 * @li Custom - Custom or IANA conform key 52 * @li Custom - Custom or IANA conform key
53 */ 53 */
54 enum Types { 54 enum Types {
55 X509, 55 X509,
56 PGP, 56 PGP,
57 Custom 57 Custom
58 }; 58 };
59 59
60 /** 60 /**
61 * Constructor. 61 * Constructor.
62 * 62 *
63 * @param text The text data. 63 * @param text The text data.
64 * @param type The key type, @see Types. 64 * @param type The key type, @see Types.
65 */ 65 */
66 Key( const QString &text = QString::null, int type = PGP ); 66 Key( const QString &text = QString::null, int type = PGP );
67 67
68 /** 68 /**
69 * Destructor. 69 * Destructor.
70 */ 70 */
71 ~Key(); 71 ~Key();
72 72
73 bool operator==( const Key & ) const; 73 bool operator==( const Key & ) const;
74 bool operator!=( const Key & ) const; 74 bool operator!=( const Key & ) const;
75 75
76 /** 76 /**
77 * Sets the unique identifier. 77 * Sets the unique identifier.
78 */ 78 */
79 void setId( const QString &id ); 79 void setId( const QString &id );
80 80
81 /** 81 /**
82 * Returns the unique identifier. 82 * Returns the unique identifier.
83 */ 83 */
84 QString id() const; 84 QString id() const;
85 85
86 /** 86 /**
87 * Sets binary data. 87 * Sets binary data.
88 */ 88 */
89 void setBinaryData( const QByteArray &binary ); 89 void setBinaryData( const QByteArray &binary );
90 90
91 /** 91 /**
92 * Returns the binary data. 92 * Returns the binary data.
93 */ 93 */
94 QByteArray binaryData() const; 94 QByteArray binaryData() const;
95 95
96 /** 96 /**
97 * Sets text data. 97 * Sets text data.
98 */ 98 */
99 void setTextData( const QString &text ); 99 void setTextData( const QString &text );
100 100
101 /** 101 /**
102 * Returns the text data. 102 * Returns the text data.
103 */ 103 */
104 QString textData() const; 104 QString textData() const;
105 105
106 /** 106 /**
107 * Returns whether the key contains binary or text data. 107 * Returns whether the key contains binary or text data.
108 */ 108 */
109 bool isBinary() const; 109 bool isBinary() const;
110 110
111 /** 111 /**
112 * Sets the type, @see Type. 112 * Sets the type, @see Type.
113 */ 113 */
114 void setType( int type ); 114 void setType( int type );
115 115
116 /** 116 /**
117 * Sets custom type string. 117 * Sets custom type string.
118 */ 118 */
119 void setCustomTypeString( const QString &custom ); 119 void setCustomTypeString( const QString &custom );
120 120
121 /** 121 /**
122 * Returns the type, @see Type. 122 * Returns the type, @see Type.
123 */ 123 */
124 int type() const; 124 int type() const;
125 125
126 /** 126 /**
127 * Returns the custom type string. 127 * Returns the custom type string.
128 */ 128 */
129 QString customTypeString() const; 129 QString customTypeString() const;
130 130
131 /** 131 /**
132 * Returns a list of all available key types. 132 * Returns a list of all available key types.
133 */ 133 */
134 static TypeList typeList(); 134 static TypeList typeList();
135 135
136 /** 136 /**
137 * Returns a translated label for a given key type. 137 * Returns a translated label for a given key type.
138 */ 138 */
139 static QString typeLabel( int type ); 139 static QString typeLabel( int type );
140 140
141private: 141private:
142 QByteArray mBinaryData; 142 QByteArray mBinaryData;
143 QString mId; 143 QString mId;
144 QString mTextData; 144 QString mTextData;
145 QString mCustomTypeString; 145 QString mCustomTypeString;
146 146
147 int mIsBinary; 147 int mIsBinary;
148 int mType; 148 int mType;
149}; 149};
150 150
151QDataStream &operator<<( QDataStream &, const Key & ); 151QDataStream &operator<<( QDataStream &, const Key & );
152QDataStream &operator>>( QDataStream &, Key & ); 152QDataStream &operator>>( QDataStream &, Key & );
153 153
154} 154}
155#endif 155#endif
diff --git a/kabc/phonenumber.h b/kabc/phonenumber.h
index feeba6c..6bc89d3 100644
--- a/kabc/phonenumber.h
+++ b/kabc/phonenumber.h
@@ -1,173 +1,173 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28#ifndef KABC_PHONENUMBER_H 28#ifndef KABC_PHONENUMBER_H
29#define KABC_PHONENUMBER_H 29#define KABC_PHONENUMBER_H
30 30
31#include <qvaluelist.h> 31#include <q3valuelist.h>
32#include <qstring.h> 32#include <qstring.h>
33 33
34namespace KABC { 34namespace KABC {
35 35
36/** 36/**
37 @short Phonenumber information. 37 @short Phonenumber information.
38 38
39 This class provides phone number information. A phone number is classified by 39 This class provides phone number information. A phone number is classified by
40 a type. The following types are available, it's possible to use multiple types 40 a type. The following types are available, it's possible to use multiple types
41 @ref Types for a number by combining them through a logical or. 41 @ref Types for a number by combining them through a logical or.
42*/ 42*/
43class PhoneNumber 43class PhoneNumber
44{ 44{
45 friend QDataStream &operator<<( QDataStream &, const PhoneNumber & ); 45 friend QDataStream &operator<<( QDataStream &, const PhoneNumber & );
46 friend QDataStream &operator>>( QDataStream &, PhoneNumber & ); 46 friend QDataStream &operator>>( QDataStream &, PhoneNumber & );
47 47
48 public: 48 public:
49 typedef QValueList<PhoneNumber> List; 49 typedef Q3ValueList<PhoneNumber> List;
50 typedef QValueList<int> TypeList; 50 typedef Q3ValueList<int> TypeList;
51 51
52 /** 52 /**
53 @li @p Home - Home number 53 @li @p Home - Home number
54 @li @p Work - Office number 54 @li @p Work - Office number
55 @li @p Msg - Messaging 55 @li @p Msg - Messaging
56 @li @p Pref - Preferred number 56 @li @p Pref - Preferred number
57 @li @p Voice - Voice 57 @li @p Voice - Voice
58 @li @p Fax - Fax machine 58 @li @p Fax - Fax machine
59 @li @p Cell - Cell phone 59 @li @p Cell - Cell phone
60 @li @p Video - Video phone 60 @li @p Video - Video phone
61 @li @p Bbs - Mailbox 61 @li @p Bbs - Mailbox
62 @li @p Modem - Modem 62 @li @p Modem - Modem
63 @li @p Car - Car phone 63 @li @p Car - Car phone
64 @li @p Isdn - ISDN connection 64 @li @p Isdn - ISDN connection
65 @li @p Pcs - Personal Communication Service 65 @li @p Pcs - Personal Communication Service
66 @li @p Pager - Pager 66 @li @p Pager - Pager
67 */ 67 */
68 enum Types { Home = 1, Work = 2, Msg = 4, Pref = 8, Voice = 16, Fax = 32, 68 enum Types { Home = 1, Work = 2, Msg = 4, Pref = 8, Voice = 16, Fax = 32,
69 Cell = 64, Video = 128, Bbs = 256, Modem = 512, Car = 1024, 69 Cell = 64, Video = 128, Bbs = 256, Modem = 512, Car = 1024,
70 Isdn = 2048, Pcs = 4096, Pager = 8192 }; 70 Isdn = 2048, Pcs = 4096, Pager = 8192 };
71 71
72 /** 72 /**
73 Create an empty phone number object. 73 Create an empty phone number object.
74 */ 74 */
75 PhoneNumber(); 75 PhoneNumber();
76 76
77 /** 77 /**
78 Create a phonenumber object. 78 Create a phonenumber object.
79 79
80 @param number Number 80 @param number Number
81 @param type Type as defined in enum. Multiple types can be 81 @param type Type as defined in enum. Multiple types can be
82 specified by combining them by a logical or. 82 specified by combining them by a logical or.
83 */ 83 */
84 PhoneNumber( const QString &number, int type = Home ); 84 PhoneNumber( const QString &number, int type = Home );
85 85
86 /** 86 /**
87 Destructor. 87 Destructor.
88 */ 88 */
89 ~PhoneNumber(); 89 ~PhoneNumber();
90 90
91 bool operator==( const PhoneNumber & ) const; 91 bool operator==( const PhoneNumber & ) const;
92 bool operator!=( const PhoneNumber & ) const; 92 bool operator!=( const PhoneNumber & ) const;
93 93
94 bool contains( const PhoneNumber &p ); 94 bool contains( const PhoneNumber &p );
95 /** 95 /**
96 Sets the unique identifier. 96 Sets the unique identifier.
97 */ 97 */
98 void setId( const QString &id ); 98 void setId( const QString &id );
99 99
100 /** 100 /**
101 Returns the unique identifier. 101 Returns the unique identifier.
102 */ 102 */
103 QString id() const; 103 QString id() const;
104 104
105 /** 105 /**
106 Sets the number. 106 Sets the number.
107 */ 107 */
108 void setNumber( const QString & ); 108 void setNumber( const QString & );
109 109
110 /** 110 /**
111 Returns the number. 111 Returns the number.
112 */ 112 */
113 QString number() const; 113 QString number() const;
114 114
115 /** 115 /**
116 Sets the type. Multiple types can be specified by combining them by 116 Sets the type. Multiple types can be specified by combining them by
117 a logical or. 117 a logical or.
118 */ 118 */
119 void setType( int ); 119 void setType( int );
120 120
121 /** 121 /**
122 Returns the type. Can be a multiple types combined by a logical or. 122 Returns the type. Can be a multiple types combined by a logical or.
123 */ 123 */
124 int type() const; 124 int type() const;
125 125
126 /** 126 /**
127 Returns a translated string of all types the address has. 127 Returns a translated string of all types the address has.
128 */ 128 */
129 QString typeLabel() const; 129 QString typeLabel() const;
130 130
131 /** 131 /**
132 Returns the translated label for phone number depending on its type. 132 Returns the translated label for phone number depending on its type.
133 */ 133 */
134 QString label() const; 134 QString label() const;
135 135
136 /** 136 /**
137 Returns a list of all available types 137 Returns a list of all available types
138 */ 138 */
139 static TypeList typeList(); 139 static TypeList typeList();
140 140
141 /** 141 /**
142 Returns the translated label for phone number type. 142 Returns the translated label for phone number type.
143 */ 143 */
144 static QString typeLabel( int type ); 144 static QString typeLabel( int type );
145 145
146 /** 146 /**
147 Returns the translated label for phone number type. 147 Returns the translated label for phone number type.
148 @obsolete 148 @obsolete
149 */ 149 */
150 static QString label( int type ); 150 static QString label( int type );
151 static TypeList supportedTypeList(); 151 static TypeList supportedTypeList();
152 static QStringList supportedTypeListNames(); 152 static QStringList supportedTypeListNames();
153 static int typeListIndex4Type(int type ); 153 static int typeListIndex4Type(int type );
154 bool simplifyNumber(); 154 bool simplifyNumber();
155 void simplifyType(); 155 void simplifyType();
156 void makeCompat(); 156 void makeCompat();
157 int getCompatType( int type ); 157 int getCompatType( int type );
158 158
159 private: 159 private:
160 void init(); 160 void init();
161 161
162 QString mId; 162 QString mId;
163 163
164 int mType; 164 int mType;
165 QString mNumber; 165 QString mNumber;
166}; 166};
167 167
168QDataStream &operator<<( QDataStream &, const PhoneNumber & ); 168QDataStream &operator<<( QDataStream &, const PhoneNumber & );
169QDataStream &operator>>( QDataStream &, PhoneNumber & ); 169QDataStream &operator>>( QDataStream &, PhoneNumber & );
170 170
171} 171}
172 172
173#endif 173#endif
diff --git a/kabc/picture.cpp b/kabc/picture.cpp
index 57aa297..0c59937 100644
--- a/kabc/picture.cpp
+++ b/kabc/picture.cpp
@@ -1,167 +1,169 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28#include "picture.h" 28#include "picture.h"
29//Added by qt3to4:
30#include <QPixmap>
29 31
30using namespace KABC; 32using namespace KABC;
31 33
32Picture::Picture() 34Picture::Picture()
33 : mIntern( false ) 35 : mIntern( false )
34{ 36{
35 mUndefined = true; 37 mUndefined = true;
36} 38}
37 39
38Picture::Picture( const QString &url ) 40Picture::Picture( const QString &url )
39 : mUrl( url ), mIntern( false ) 41 : mUrl( url ), mIntern( false )
40{ 42{
41 mUndefined = false; 43 mUndefined = false;
42} 44}
43 45
44Picture::Picture( const QImage &data ) 46Picture::Picture( const QImage &data )
45 : mData( data ), mIntern( true ) 47 : mData( data ), mIntern( true )
46{ 48{
47 mUndefined = false; 49 mUndefined = false;
48} 50}
49 51
50Picture::~Picture() 52Picture::~Picture()
51{ 53{
52} 54}
53 55
54bool Picture::operator==( const Picture &p ) const 56bool Picture::operator==( const Picture &p ) const
55{ 57{
56 //qDebug("compare PIC "); 58 //qDebug("compare PIC ");
57 if ( mUndefined && p.mUndefined ) { 59 if ( mUndefined && p.mUndefined ) {
58 //qDebug("compare PIC true 1 "); 60 //qDebug("compare PIC true 1 ");
59 return true; 61 return true;
60 } 62 }
61 if ( mUndefined || p.mUndefined ) { 63 if ( mUndefined || p.mUndefined ) {
62 //qDebug("compare PIC false 1"); 64 //qDebug("compare PIC false 1");
63 return false; 65 return false;
64 } 66 }
65 // now we should deal with two defined pics! 67 // now we should deal with two defined pics!
66 if ( mIntern != p.mIntern ) { 68 if ( mIntern != p.mIntern ) {
67 //qDebug("compare PIC false 2"); 69 //qDebug("compare PIC false 2");
68 return false; 70 return false;
69 } 71 }
70 if ( mIntern ) { 72 if ( mIntern ) {
71 //qDebug("mIntern "); 73 //qDebug("mIntern ");
72 if ( mData.isNull() && p.mData.isNull() ) { 74 if ( mData.isNull() && p.mData.isNull() ) {
73 //qDebug("compare PIC true 2 "); 75 //qDebug("compare PIC true 2 ");
74 return true; 76 return true;
75 } 77 }
76 if ( mData.isNull() || p.mData.isNull() ){ 78 if ( mData.isNull() || p.mData.isNull() ){
77 //qDebug("compare PIC false 3-1"); 79 //qDebug("compare PIC false 3-1");
78 80
79 return false; 81 return false;
80 } 82 }
81 if ( mData != p.mData ) { 83 if ( mData != p.mData ) {
82 //qDebug("compare PIC false 3"); 84 //qDebug("compare PIC false 3");
83 return false; 85 return false;
84 } 86 }
85 } else { 87 } else {
86 if ( mUrl != p.mUrl ) { 88 if ( mUrl != p.mUrl ) {
87 //qDebug("compare PIC false 4"); 89 //qDebug("compare PIC false 4");
88 return false; 90 return false;
89 } 91 }
90 } 92 }
91 //qDebug("compare PIC true "); 93 //qDebug("compare PIC true ");
92 return true; 94 return true;
93} 95}
94 96
95bool Picture::operator!=( const Picture &p ) const 97bool Picture::operator!=( const Picture &p ) const
96{ 98{
97 return !( p == *this ); 99 return !( p == *this );
98} 100}
99 101
100void Picture::setUrl( const QString &url ) 102void Picture::setUrl( const QString &url )
101{ 103{
102 mUrl = url; 104 mUrl = url;
103 mIntern = false; 105 mIntern = false;
104 mUndefined = false; 106 mUndefined = false;
105} 107}
106 108
107void Picture::setData( const QImage &data ) 109void Picture::setData( const QImage &data )
108{ 110{
109 mData = data; 111 mData = data;
110 mIntern = true; 112 mIntern = true;
111 mUndefined = false; 113 mUndefined = false;
112} 114}
113 115
114void Picture::setType( const QString &type ) 116void Picture::setType( const QString &type )
115{ 117{
116 mType = type; 118 mType = type;
117} 119}
118 120
119bool Picture::isIntern() const 121bool Picture::isIntern() const
120{ 122{
121 return mIntern; 123 return mIntern;
122} 124}
123 125
124QString Picture::url() const 126QString Picture::url() const
125{ 127{
126 return mUrl; 128 return mUrl;
127} 129}
128 130
129QImage Picture::data() const 131QImage Picture::data() const
130{ 132{
131 return mData; 133 return mData;
132} 134}
133QPixmap Picture::pixmap() const 135QPixmap Picture::pixmap() const
134{ 136{
135 QPixmap p; 137 QPixmap p;
136 p.convertFromImage ( mData ); 138 p.convertFromImage ( mData );
137 return p; 139 return p;
138} 140}
139 141
140QString Picture::type() const 142QString Picture::type() const
141{ 143{
142 return mType; 144 return mType;
143} 145}
144bool Picture::undefined() const 146bool Picture::undefined() const
145{ 147{
146 return mUndefined; 148 return mUndefined;
147} 149}
148 150
149 151
150QString Picture::asString() const 152QString Picture::asString() const
151{ 153{
152 if ( mIntern ) 154 if ( mIntern )
153 return "intern picture"; 155 return "intern picture";
154 else 156 else
155 return mUrl; 157 return mUrl;
156} 158}
157 159
158QDataStream &KABC::operator<<( QDataStream &s, const Picture &picture ) 160QDataStream &KABC::operator<<( QDataStream &s, const Picture &picture )
159{ 161{
160 return s << picture.mIntern << picture.mUrl << picture.mType << picture.mData; 162 return s << picture.mIntern << picture.mUrl << picture.mType << picture.mData;
161} 163}
162 164
163QDataStream &KABC::operator>>( QDataStream &s, Picture &picture ) 165QDataStream &KABC::operator>>( QDataStream &s, Picture &picture )
164{ 166{
165 s >> picture.mIntern >> picture.mUrl >> picture.mType >> picture.mData; 167 s >> picture.mIntern >> picture.mUrl >> picture.mType >> picture.mData;
166 return s; 168 return s;
167} 169}
diff --git a/kabc/picture.h b/kabc/picture.h
index 714d1e2..1b63610 100644
--- a/kabc/picture.h
+++ b/kabc/picture.h
@@ -1,134 +1,136 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28#ifndef KABC_PICTURE_H 28#ifndef KABC_PICTURE_H
29#define KABC_PICTURE_H 29#define KABC_PICTURE_H
30 30
31#include <qimage.h> 31#include <qimage.h>
32//Added by qt3to4:
33#include <QPixmap>
32 34
33namespace KABC { 35namespace KABC {
34 36
35class Picture 37class Picture
36{ 38{
37 friend QDataStream &operator<<( QDataStream &, const Picture & ); 39 friend QDataStream &operator<<( QDataStream &, const Picture & );
38 friend QDataStream &operator>>( QDataStream &, Picture & ); 40 friend QDataStream &operator>>( QDataStream &, Picture & );
39 41
40public: 42public:
41 43
42 /** 44 /**
43 * Consturctor. Creates an empty object. 45 * Consturctor. Creates an empty object.
44 */ 46 */
45 Picture(); 47 Picture();
46 48
47 /** 49 /**
48 * Consturctor. 50 * Consturctor.
49 * 51 *
50 * @param url A URL that describes the position of the picture file. 52 * @param url A URL that describes the position of the picture file.
51 */ 53 */
52 Picture( const QString &url ); 54 Picture( const QString &url );
53 55
54 /** 56 /**
55 * Consturctor. 57 * Consturctor.
56 * 58 *
57 * @param data The raw data of the picture. 59 * @param data The raw data of the picture.
58 */ 60 */
59 Picture( const QImage &data ); 61 Picture( const QImage &data );
60 62
61 /** 63 /**
62 * Destructor. 64 * Destructor.
63 */ 65 */
64 ~Picture(); 66 ~Picture();
65 67
66 bool undefined() const; 68 bool undefined() const;
67 bool operator==( const Picture & ) const; 69 bool operator==( const Picture & ) const;
68 bool operator!=( const Picture & ) const; 70 bool operator!=( const Picture & ) const;
69 71
70 /** 72 /**
71 * Sets a URL for the location of the picture file. When using this 73 * Sets a URL for the location of the picture file. When using this
72 * function, @ref isIntern() will return 'false' until you use 74 * function, @ref isIntern() will return 'false' until you use
73 * @ref setData(). 75 * @ref setData().
74 * 76 *
75 * @param url The location URL of the picture file. 77 * @param url The location URL of the picture file.
76 */ 78 */
77 void setUrl( const QString &url ); 79 void setUrl( const QString &url );
78 80
79 /** 81 /**
80 * Sets the raw data of the picture. When using this function, 82 * Sets the raw data of the picture. When using this function,
81 * @ref isIntern() will return 'true' until you use @ref setUrl(). 83 * @ref isIntern() will return 'true' until you use @ref setUrl().
82 * 84 *
83 * @param data The raw data of the picture. 85 * @param data The raw data of the picture.
84 */ 86 */
85 void setData( const QImage &data ); 87 void setData( const QImage &data );
86 88
87 /** 89 /**
88 * Sets the type of the picture. 90 * Sets the type of the picture.
89 */ 91 */
90 void setType( const QString &type ); 92 void setType( const QString &type );
91 93
92 /** 94 /**
93 * Returns whether the picture is described by a URL (extern) or 95 * Returns whether the picture is described by a URL (extern) or
94 * by the raw data (intern). 96 * by the raw data (intern).
95 * When this method returns 'true' you can use @ref data() to 97 * When this method returns 'true' you can use @ref data() to
96 * get the raw data. Otherwise you can request the URL of this 98 * get the raw data. Otherwise you can request the URL of this
97 * picture by @ref url() and load the raw data from that location. 99 * picture by @ref url() and load the raw data from that location.
98 */ 100 */
99 bool isIntern() const; 101 bool isIntern() const;
100 102
101 /** 103 /**
102 * Returns the location URL of this picture. 104 * Returns the location URL of this picture.
103 */ 105 */
104 QString url() const; 106 QString url() const;
105 107
106 /** 108 /**
107 * Returns the raw data of this picture. 109 * Returns the raw data of this picture.
108 */ 110 */
109 QImage data() const; 111 QImage data() const;
110 QPixmap pixmap() const; 112 QPixmap pixmap() const;
111 /** 113 /**
112 * Returns the type of this picture. 114 * Returns the type of this picture.
113 */ 115 */
114 QString type() const; 116 QString type() const;
115 117
116 /** 118 /**
117 * Returns string representation of the picture. 119 * Returns string representation of the picture.
118 */ 120 */
119 QString asString() const; 121 QString asString() const;
120 122
121private: 123private:
122 QString mUrl; 124 QString mUrl;
123 QString mType; 125 QString mType;
124 QImage mData; 126 QImage mData;
125 bool mUndefined; 127 bool mUndefined;
126 128
127 int mIntern; 129 int mIntern;
128}; 130};
129 131
130QDataStream &operator<<( QDataStream &, const Picture & ); 132QDataStream &operator<<( QDataStream &, const Picture & );
131QDataStream &operator>>( QDataStream &, Picture & ); 133QDataStream &operator>>( QDataStream &, Picture & );
132 134
133} 135}
134#endif 136#endif
diff --git a/kabc/plugins/dir/dir.pro b/kabc/plugins/dir/dir.pro
index 3e18594..9b3b894 100644
--- a/kabc/plugins/dir/dir.pro
+++ b/kabc/plugins/dir/dir.pro
@@ -1,36 +1,40 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2CONFIG += qt warn_on release 2CONFIG += qt warn_on release
3#release debug 3#release debug
4 4
5include( ../../../variables.pri ) 5include( ../../../variables.pri )
6 6
7TARGET = microkabc_dir 7TARGET = xmicrokabc_dir
8INCLUDEPATH += ../.. ../../../microkde ../../../microkde/kdecore ../../../microkde/kio/kfile ../../../microkde/kio/kio ../../../microkde/kresources ../../../qtcompat 8INCLUDEPATH += ../.. ../../../microkde ../../../microkde/kdecore ../../../microkde/kio/kfile ../../../microkde/kio/kio ../../../microkde/kresources ../../../qtcompat
9DESTDIR = ../../../bin 9DESTDIR = ../../../bin
10#LIBS += -lmicrokde -lmicrokabc 10#LIBS += -lxmicrokde -lxmicrokabc
11#LIBS += -L$(QPEDIR)/lib 11#LIBS += -L$(QPEDIR)/lib
12 12
13INTERFACES = \ 13INTERFACES = \
14 14
15HEADERS = \ 15HEADERS = \
16 resourcedir.h \ 16 resourcedir.h \
17 resourcedirconfig.h 17 resourcedirconfig.h
18 18
19SOURCES = \ 19SOURCES = \
20 resourcedir.cpp \ 20 resourcedir.cpp \
21 resourcedirconfig.cpp 21 resourcedirconfig.cpp
22 22
23unix : { 23unix : {
24OBJECTS_DIR = obj/unix 24OBJECTS_DIR = obj/unix
25MOC_DIR = moc/unix 25MOC_DIR = moc/unix
26} 26}
27win32: { 27win32: {
28CONFIG += dll 28CONFIG += dll
29DEFINES += _WIN32_ 29DEFINES += _WIN32_
30OBJECTS_DIR = obj/win 30OBJECTS_DIR = obj/win
31MOC_DIR = moc/win 31MOC_DIR = moc/win
32LIBS += ../../../bin/microkdepim.lib 32LIBS += ../../../bin/xmicrokdepim.lib
33LIBS += ../../../bin/microkcal.lib 33LIBS += ../../../bin/xmicrokcal.lib
34LIBS += ../../../bin/microkde.lib 34LIBS += ../../../bin/xmicrokde.lib
35LIBS += ../../../bin/microkabc.lib 35LIBS += ../../../bin/microkabc.lib
36} 36}
37#The following line was inserted by qt3to4
38QT += qt3support
39#The following line was inserted by qt3to4
40QT += xml
diff --git a/kabc/plugins/dir/dirE.pro b/kabc/plugins/dir/dirE.pro
index cda4e2f..75332a0 100644
--- a/kabc/plugins/dir/dirE.pro
+++ b/kabc/plugins/dir/dirE.pro
@@ -1,21 +1,21 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2CONFIG += qt warn_on release 2CONFIG += qt warn_on release
3#release debug 3#release debug
4 4
5TARGET = microkabc_dir 5TARGET = xmicrokabc_dir
6INCLUDEPATH += $(KDEPIMDIR)/kabc $(KDEPIMDIR)/microkde $(KDEPIMDIR)/microkde/kdecore $(KDEPIMDIR)/microkde/kio/kfile $(KDEPIMDIR)/microkde/kio/kio $(KDEPIMDIR)/microkde/kresources $(KDEPIMDIR)/qtcompat 6INCLUDEPATH += $(KDEPIMDIR)/kabc $(KDEPIMDIR)/microkde $(KDEPIMDIR)/microkde/kdecore $(KDEPIMDIR)/microkde/kio/kfile $(KDEPIMDIR)/microkde/kio/kio $(KDEPIMDIR)/microkde/kresources $(KDEPIMDIR)/qtcompat
7OBJECTS_DIR = obj/$(PLATFORM) 7OBJECTS_DIR = obj/$(PLATFORM)
8MOC_DIR = moc/$(PLATFORM) 8MOC_DIR = moc/$(PLATFORM)
9DESTDIR = $(QPEDIR)/lib 9DESTDIR = $(QPEDIR)/lib
10LIBS += -lmicrokde -lmicrokabc 10LIBS += -lxmicrokde -lxmicrokabc
11LIBS += -L$(QPEDIR)/lib 11LIBS += -L$(QPEDIR)/lib
12 12
13INTERFACES = \ 13INTERFACES = \
14 14
15HEADERS = \ 15HEADERS = \
16 resourcedir.h \ 16 resourcedir.h \
17 resourcedirconfig.h 17 resourcedirconfig.h
18 18
19SOURCES = \ 19SOURCES = \
20 resourcedir.cpp \ 20 resourcedir.cpp \
21 resourcedirconfig.cpp 21 resourcedirconfig.cpp
diff --git a/kabc/plugins/dir/resourcedir.cpp b/kabc/plugins/dir/resourcedir.cpp
index c61664b..cc4afee 100644
--- a/kabc/plugins/dir/resourcedir.cpp
+++ b/kabc/plugins/dir/resourcedir.cpp
@@ -1,381 +1,381 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28 28
29#include <sys/types.h> 29#include <sys/types.h>
30#include <sys/stat.h> 30#include <sys/stat.h>
31#ifndef _WIN32_ 31#ifndef _WIN32_
32#include <unistd.h> 32#include <unistd.h>
33#endif 33#endif
34 34
35#include <qregexp.h> 35#include <qregexp.h>
36#include <qtimer.h> 36#include <qtimer.h>
37#include <qwidget.h> 37#include <qwidget.h>
38 38
39#include <kapplication.h> 39#include <kapplication.h>
40#include <kconfig.h> 40#include <kconfig.h>
41#include <kdebug.h> 41#include <kdebug.h>
42//US #include <kgenericfactory.h> 42//US #include <kgenericfactory.h>
43#include <kglobal.h> 43#include <kglobal.h>
44#include <klocale.h> 44#include <klocale.h>
45#include <kstandarddirs.h> 45#include <kstandarddirs.h>
46#include <kurlrequester.h> 46#include <kurlrequester.h>
47#include <kmessagebox.h> 47#include <kmessagebox.h>
48 48
49#include "addressbook.h" 49#include "addressbook.h"
50 50
51#include "formatfactory.h" 51#include "formatfactory.h"
52 52
53#include "resourcedirconfig.h" 53#include "resourcedirconfig.h"
54#include "stdaddressbook.h" 54#include "stdaddressbook.h"
55 55
56//US 56//US
57#include <qdir.h> 57#include <qdir.h>
58 58
59#define NO_DIRWATCH 59#define NO_DIRWATCH
60#include "resourcedir.h" 60#include "resourcedir.h"
61 61
62//#define ALLOW_LOCKING 62//#define ALLOW_LOCKING
63 63
64using namespace KABC; 64using namespace KABC;
65 65
66extern "C" 66extern "C"
67#ifdef _WIN32_ 67#ifdef _WIN32_
68__declspec(dllexport) 68__declspec(dllexport)
69#else 69#else
70{ 70{
71#endif 71#endif
72 72
73//US void *init_kabc_dir() 73//US void *init_kabc_dir()
74 void *init_microkabc_dir() 74 void *init_microkabc_dir()
75 { 75 {
76 return new KRES::PluginFactory<ResourceDir,ResourceDirConfig>(); 76 return new KRES::PluginFactory<ResourceDir,ResourceDirConfig>();
77 } 77 }
78#ifndef _WIN32_ 78#ifndef _WIN32_
79} 79}
80#endif 80#endif
81 81
82ResourceDir::ResourceDir( const KConfig *config ) 82ResourceDir::ResourceDir( const KConfig *config )
83 : Resource( config ) 83 : Resource( config )
84{ 84{
85 QString path; 85 QString path;
86 86
87 KConfig *cfg = (KConfig *)config; 87 KConfig *cfg = (KConfig *)config;
88 if ( cfg ) { 88 if ( cfg ) {
89#ifdef _WIN32_ 89#ifdef _WIN32_
90 // we use plugins on win32. the group is stored in a static variable 90 // we use plugins on win32. the group is stored in a static variable
91 // such that group info not available on win32 plugins 91 // such that group info not available on win32 plugins
92 // to fix that, it would be a looooot of work 92 // to fix that, it would be a looooot of work
93 if ( !cfg->tempGroup().isEmpty() ) 93 if ( !cfg->tempGroup().isEmpty() )
94 cfg->setGroup( cfg->tempGroup() ); 94 cfg->setGroup( cfg->tempGroup() );
95#endif 95#endif
96//US path = config->readEntry( "FilePath" ); 96//US path = config->readEntry( "FilePath" );
97 path = cfg->readEntry( "FilePath", StdAddressBook::directoryName() ); 97 path = cfg->readEntry( "FilePath", StdAddressBook::directoryName() );
98//US mFormatName = config->readEntry( "FileFormat" ); 98//US mFormatName = config->readEntry( "FileFormat" );
99 mFormatName = cfg->readEntry( "FileFormat", "vcard" ); 99 mFormatName = cfg->readEntry( "FileFormat", "vcard" );
100 } else { 100 } else {
101 path = StdAddressBook::directoryName(); 101 path = StdAddressBook::directoryName();
102 mFormatName = "vcard"; 102 mFormatName = "vcard";
103 } 103 }
104 104
105 105
106 FormatFactory *factory = FormatFactory::self(); 106 FormatFactory *factory = FormatFactory::self();
107 mFormat = factory->format( mFormatName ); 107 mFormat = factory->format( mFormatName );
108 108
109 if ( !mFormat ) { 109 if ( !mFormat ) {
110 mFormatName = "vcard"; 110 mFormatName = "vcard";
111 mFormat = factory->format( mFormatName ); 111 mFormat = factory->format( mFormatName );
112 } 112 }
113 113
114/*US 114/*US
115//US qDebug("ResourceDir::ResourceDir initialized with format %s ", mFormatName.latin1()); 115//US qDebug("ResourceDir::ResourceDir initialized with format %s ", mFormatName.latin1());
116 if (mFormatName == "vcard") 116 if (mFormatName == "vcard")
117 mFormat = new VCardFormatPlugin2(); 117 mFormat = new VCardFormatPlugin2();
118 else if (mFormatName == "binary") 118 else if (mFormatName == "binary")
119 mFormat = new BinaryFormat(); 119 mFormat = new BinaryFormat();
120 else 120 else
121 qDebug("ResourceFile::init format unknown !!! %s ", mFormatName.latin1()); 121 qDebug("ResourceFile::init format unknown !!! %s ", mFormatName.latin1());
122*/ 122*/
123#ifndef NO_DIRWATCH 123#ifndef NO_DIRWATCH
124 connect( &mDirWatch, SIGNAL( dirty(const QString&) ), SLOT( pathChanged() ) ); 124 connect( &mDirWatch, SIGNAL( dirty(const QString&) ), SLOT( pathChanged() ) );
125 connect( &mDirWatch, SIGNAL( created(const QString&) ), SLOT( pathChanged() ) ); 125 connect( &mDirWatch, SIGNAL( created(const QString&) ), SLOT( pathChanged() ) );
126 connect( &mDirWatch, SIGNAL( deleted(const QString&) ), SLOT( pathChanged() ) ); 126 connect( &mDirWatch, SIGNAL( deleted(const QString&) ), SLOT( pathChanged() ) );
127#endif 127#endif
128 setPath( path ); 128 setPath( path );
129} 129}
130 130
131ResourceDir::~ResourceDir() 131ResourceDir::~ResourceDir()
132{ 132{
133 delete mFormat; 133 delete mFormat;
134 mFormat = 0; 134 mFormat = 0;
135} 135}
136 136
137void ResourceDir::writeConfig( KConfig *config ) 137void ResourceDir::writeConfig( KConfig *config )
138{ 138{
139 config->setGroup( "Resource_" + identifier() ); 139 config->setGroup( "Resource_" + identifier() );
140 Resource::writeConfig( config ); 140 Resource::writeConfig( config );
141 141
142 config->writeEntry( "FilePath", mPath ); 142 config->writeEntry( "FilePath", mPath );
143 config->writeEntry( "FileFormat", mFormatName ); 143 config->writeEntry( "FileFormat", mFormatName );
144} 144}
145 145
146Ticket *ResourceDir::requestSaveTicket() 146Ticket *ResourceDir::requestSaveTicket()
147{ 147{
148 148
149 149
150 if ( !addressBook() ) return 0; 150 if ( !addressBook() ) return 0;
151#ifdef ALLOW_LOCKING 151#ifdef ALLOW_LOCKING
152 if ( !lock( mPath ) ) { 152 if ( !lock( mPath ) ) {
153 153
154 return 0; 154 return 0;
155 } 155 }
156#endif 156#endif
157 return createTicket( this ); 157 return createTicket( this );
158 158
159} 159}
160 160
161 161
162bool ResourceDir::doOpen() 162bool ResourceDir::doOpen()
163{ 163{
164 QDir dir( mPath ); 164 QDir dir( mPath );
165 if ( !dir.exists() ) { // no directory available 165 if ( !dir.exists() ) { // no directory available
166 return dir.mkdir( dir.path() ); 166 return dir.mkdir( dir.path() );
167 } else { 167 } else {
168 QString testName = dir.entryList( QDir::Files )[0]; 168 QString testName = dir.entryList( QDir::Files )[0];
169 if ( testName.isNull() || testName.isEmpty() ) // no file in directory 169 if ( testName.isNull() || testName.isEmpty() ) // no file in directory
170 return true; 170 return true;
171 171
172 QFile file( mPath + "/" + testName ); 172 QFile file( mPath + "/" + testName );
173 if ( file.open( IO_ReadOnly ) ) 173 if ( file.open( QIODevice::ReadOnly ) )
174 return true; 174 return true;
175 175
176 if ( file.size() == 0 ) 176 if ( file.size() == 0 )
177 return true; 177 return true;
178 178
179 bool ok = mFormat->checkFormat( &file ); 179 bool ok = mFormat->checkFormat( &file );
180 file.close(); 180 file.close();
181 return ok; 181 return ok;
182 } 182 }
183} 183}
184 184
185void ResourceDir::doClose() 185void ResourceDir::doClose()
186{ 186{
187} 187}
188 188
189bool ResourceDir::load() 189bool ResourceDir::load()
190{ 190{
191 QDir dir( mPath ); 191 QDir dir( mPath );
192 QStringList files = dir.entryList( QDir::Files ); 192 QStringList files = dir.entryList( QDir::Files );
193 193
194 QStringList::Iterator it; 194 QStringList::Iterator it;
195 bool ok = true; 195 bool ok = true;
196 for ( it = files.begin(); it != files.end(); ++it ) { 196 for ( it = files.begin(); it != files.end(); ++it ) {
197 QFile file( mPath + "/" + (*it) ); 197 QFile file( mPath + "/" + (*it) );
198 198
199 if ( !file.open( IO_ReadOnly ) ) { 199 if ( !file.open( QIODevice::ReadOnly ) ) {
200 addressBook()->error( i18n( "Unable to open file '%1' for reading" ).arg( file.name() ) ); 200 addressBook()->error( i18n( "Unable to open file '%1' for reading" ).arg( file.name() ) );
201 ok = false; 201 ok = false;
202 continue; 202 continue;
203 } 203 }
204 204
205 if ( !mFormat->loadAll( addressBook(), this, &file ) ) 205 if ( !mFormat->loadAll( addressBook(), this, &file ) )
206 ok = false; 206 ok = false;
207 207
208 file.close(); 208 file.close();
209 } 209 }
210 210
211 return ok; 211 return ok;
212} 212}
213 213
214bool ResourceDir::save( Ticket *ticket ) 214bool ResourceDir::save( Ticket *ticket )
215{ 215{
216 AddressBook::Iterator it; 216 AddressBook::Iterator it;
217 bool ok = true; 217 bool ok = true;
218#ifndef NO_DIRWATCH 218#ifndef NO_DIRWATCH
219 mDirWatch.stopScan(); 219 mDirWatch.stopScan();
220#endif 220#endif
221 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) { 221 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) {
222 if ( (*it).resource() != this || !(*it).changed() ) 222 if ( (*it).resource() != this || !(*it).changed() )
223 continue; 223 continue;
224 224
225 QFile file( mPath + "/" + (*it).uid() ); 225 QFile file( mPath + "/" + (*it).uid() );
226 if ( !file.open( IO_WriteOnly ) ) { 226 if ( !file.open( QIODevice::WriteOnly ) ) {
227 addressBook()->error( i18n( "Unable to open file '%1' for writing" ).arg( file.name() ) ); 227 addressBook()->error( i18n( "Unable to open file '%1' for writing" ).arg( file.name() ) );
228 continue; 228 continue;
229 } 229 }
230 230
231 mFormat->save( *it, &file ); 231 mFormat->save( *it, &file );
232 232
233 // mark as unchanged 233 // mark as unchanged
234 (*it).setChanged( false ); 234 (*it).setChanged( false );
235 235
236 file.close(); 236 file.close();
237 } 237 }
238#ifndef NO_DIRWATCH 238#ifndef NO_DIRWATCH
239 mDirWatch.startScan(); 239 mDirWatch.startScan();
240#endif 240#endif
241 delete ticket; 241 delete ticket;
242#ifdef ALLOW_LOCKING 242#ifdef ALLOW_LOCKING
243 unlock( mPath ); 243 unlock( mPath );
244#endif 244#endif
245 return ok; 245 return ok;
246} 246}
247 247
248bool ResourceDir::lock( const QString &path ) 248bool ResourceDir::lock( const QString &path )
249{ 249{
250#ifdef ALLOW_LOCKING 250#ifdef ALLOW_LOCKING
251 QString p = path; 251 QString p = path;
252//US change the implementation how the lockfilename is getting created 252//US change the implementation how the lockfilename is getting created
253//US p.replace( QRegExp("/"), "_" ); 253//US p.replace( QRegExp("/"), "_" );
254//US QString lockName = locateLocal( "data", "kabc/lock/" + p + ".lock" ); 254//US QString lockName = locateLocal( "data", "kabc/lock/" + p + ".lock" );
255 KURL url(p); 255 KURL url(p);
256 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" ); 256 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
257 257
258 258
259 if ( QFile::exists( lockName ) ) return false; 259 if ( QFile::exists( lockName ) ) return false;
260 260
261 QString lockUniqueName; 261 QString lockUniqueName;
262 lockUniqueName = p + KApplication::randomString( 8 ); 262 lockUniqueName = p + KApplication::randomString( 8 );
263 263
264 url = lockUniqueName; 264 url = lockUniqueName;
265//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName ); 265//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName );
266 mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() ); 266 mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() );
267 267
268 // Create unique file 268 // Create unique file
269 QFile file( mLockUniqueName ); 269 QFile file( mLockUniqueName );
270 file.open( IO_WriteOnly ); 270 file.open( QIODevice::WriteOnly );
271 file.close(); 271 file.close();
272 272
273 // Create lock file 273 // Create lock file
274 int result = 0; 274 int result = 0;
275#ifndef _WIN32_ 275#ifndef _WIN32_
276 result = ::link( QFile::encodeName( mLockUniqueName ), 276 result = ::link( QFile::encodeName( mLockUniqueName ),
277 QFile::encodeName( lockName ) ); 277 QFile::encodeName( lockName ) );
278#endif 278#endif
279 if ( result == 0 ) { 279 if ( result == 0 ) {
280 addressBook()->emitAddressBookLocked(); 280 addressBook()->emitAddressBookLocked();
281 return true; 281 return true;
282 } 282 }
283 283
284 // TODO: check stat 284 // TODO: check stat
285 285
286 return false; 286 return false;
287#else 287#else
288 return true; 288 return true;
289#endif 289#endif
290} 290}
291 291
292void ResourceDir::unlock( const QString &path ) 292void ResourceDir::unlock( const QString &path )
293{ 293{
294#ifdef ALLOW_LOCKING 294#ifdef ALLOW_LOCKING
295 QString p = path; 295 QString p = path;
296//US change the implementation how the lockfilename is getting created 296//US change the implementation how the lockfilename is getting created
297//US p.replace( QRegExp( "/" ), "_" ); 297//US p.replace( QRegExp( "/" ), "_" );
298//US QString lockName = locate( "data", "kabc/lock/" + p + ".lock" ); 298//US QString lockName = locate( "data", "kabc/lock/" + p + ".lock" );
299 KURL url(p); 299 KURL url(p);
300 QString lockName = locate( "data", "kabc/lock/" + url.fileName() + ".lock" ); 300 QString lockName = locate( "data", "kabc/lock/" + url.fileName() + ".lock" );
301 301
302 ::unlink( QFile::encodeName( lockName ) ); 302 ::unlink( QFile::encodeName( lockName ) );
303 QFile::remove( mLockUniqueName ); 303 QFile::remove( mLockUniqueName );
304 addressBook()->emitAddressBookUnlocked(); 304 addressBook()->emitAddressBookUnlocked();
305#else 305#else
306 return; 306 return;
307#endif 307#endif
308} 308}
309 309
310void ResourceDir::setPath( const QString &path ) 310void ResourceDir::setPath( const QString &path )
311{ 311{
312#ifndef NO_DIRWATCH 312#ifndef NO_DIRWATCH
313 mDirWatch.stopScan(); 313 mDirWatch.stopScan();
314 mDirWatch.removeDir( mPath ); 314 mDirWatch.removeDir( mPath );
315 315
316 mPath = path; 316 mPath = path;
317 317
318 mDirWatch.addDir( mPath, true ); 318 mDirWatch.addDir( mPath, true );
319 mDirWatch.startScan(); 319 mDirWatch.startScan();
320#else 320#else
321 mPath = path; 321 mPath = path;
322#endif 322#endif
323//US simulate KDirWatch event 323//US simulate KDirWatch event
324//US pathChanged(); 324//US pathChanged();
325 325
326} 326}
327 327
328QString ResourceDir::path() const 328QString ResourceDir::path() const
329{ 329{
330 return mPath; 330 return mPath;
331} 331}
332 332
333void ResourceDir::setFormat( const QString &format ) 333void ResourceDir::setFormat( const QString &format )
334{ 334{
335 mFormatName = format; 335 mFormatName = format;
336 336
337 if ( mFormat ) 337 if ( mFormat )
338 delete mFormat; 338 delete mFormat;
339 339
340 FormatFactory *factory = FormatFactory::self(); 340 FormatFactory *factory = FormatFactory::self();
341 mFormat = factory->format( mFormatName ); 341 mFormat = factory->format( mFormatName );
342/*US 342/*US
343qDebug("ResourceDir::setFormat initialized with format %s ", format.latin1()); 343qDebug("ResourceDir::setFormat initialized with format %s ", format.latin1());
344 if (mFormatName == "vcard") 344 if (mFormatName == "vcard")
345 mFormat = new VCardFormatPlugin2(); 345 mFormat = new VCardFormatPlugin2();
346 else if (mFormatName == "binary") 346 else if (mFormatName == "binary")
347 mFormat = new BinaryFormat(); 347 mFormat = new BinaryFormat();
348 else 348 else
349 qDebug("ResourceDir::setFormat format unknown !!! %s ", format.latin1()); 349 qDebug("ResourceDir::setFormat format unknown !!! %s ", format.latin1());
350*/ 350*/
351 351
352} 352}
353 353
354QString ResourceDir::format() const 354QString ResourceDir::format() const
355{ 355{
356 return mFormatName; 356 return mFormatName;
357} 357}
358 358
359void ResourceDir::pathChanged() 359void ResourceDir::pathChanged()
360{ 360{
361 if ( !addressBook() ) 361 if ( !addressBook() )
362 return; 362 return;
363 363
364 QString text( i18n( "Dir resource '%1'<br> has been changed by third party.<br>Do you want to reload?").arg( mPath ) ); 364 QString text( i18n( "Dir resource '%1'<br> has been changed by third party.<br>Do you want to reload?").arg( mPath ) );
365 if ( readOnly() || KMessageBox::questionYesNo( 0, text ) == KMessageBox::Yes ) { 365 if ( readOnly() || KMessageBox::questionYesNo( 0, text ) == KMessageBox::Yes ) {
366 load(); 366 load();
367 addressBook()->emitAddressBookChanged(); 367 addressBook()->emitAddressBookChanged();
368 } 368 }
369} 369}
370 370
371void ResourceDir::removeAddressee( const Addressee& addr ) 371void ResourceDir::removeAddressee( const Addressee& addr )
372{ 372{
373 QFile::remove( mPath + "/" + addr.uid() ); 373 QFile::remove( mPath + "/" + addr.uid() );
374} 374}
375 375
376void ResourceDir::cleanUp() 376void ResourceDir::cleanUp()
377{ 377{
378 unlock( mPath ); 378 unlock( mPath );
379} 379}
380 380
381//US #include "resourcedir.moc" 381//US #include "resourcedir.moc"
diff --git a/kabc/plugins/dir/resourcedirconfig.cpp b/kabc/plugins/dir/resourcedirconfig.cpp
index 98d18fe..8fa48d0 100644
--- a/kabc/plugins/dir/resourcedirconfig.cpp
+++ b/kabc/plugins/dir/resourcedirconfig.cpp
@@ -1,123 +1,125 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28#include <qlabel.h> 28#include <qlabel.h>
29#include <qlayout.h> 29#include <qlayout.h>
30//Added by qt3to4:
31#include <Q3GridLayout>
30 32
31#include <kdebug.h> 33#include <kdebug.h>
32#include <klocale.h> 34#include <klocale.h>
33#include <kstandarddirs.h> 35#include <kstandarddirs.h>
34#include <kdialog.h> 36#include <kdialog.h>
35 37
36//US #include "formatfactory.h" 38//US #include "formatfactory.h"
37#include "resourcedir.h" 39#include "resourcedir.h"
38#include "stdaddressbook.h" 40#include "stdaddressbook.h"
39 41
40#include "resourcedirconfig.h" 42#include "resourcedirconfig.h"
41 43
42using namespace KABC; 44using namespace KABC;
43 45
44ResourceDirConfig::ResourceDirConfig( QWidget* parent, const char* name ) 46ResourceDirConfig::ResourceDirConfig( QWidget* parent, const char* name )
45 : KRES::ConfigWidget( parent, name ) 47 : KRES::ConfigWidget( parent, name )
46{ 48{
47 QGridLayout *mainLayout = new QGridLayout( this, 2, 2, 0, 49 Q3GridLayout *mainLayout = new Q3GridLayout( this, 2, 2, 0,
48 KDialog::spacingHint() ); 50 KDialog::spacingHint() );
49 51
50 QLabel *label = new QLabel( i18n( "Format:" ), this ); 52 QLabel *label = new QLabel( i18n( "Format:" ), this );
51 mFormatBox = new KComboBox( this ); 53 mFormatBox = new KComboBox( this );
52 54
53 mainLayout->addWidget( label, 0, 0 ); 55 mainLayout->addWidget( label, 0, 0 );
54 mainLayout->addWidget( mFormatBox, 0, 1 ); 56 mainLayout->addWidget( mFormatBox, 0, 1 );
55 57
56 label = new QLabel( i18n( "Location:" ), this ); 58 label = new QLabel( i18n( "Location:" ), this );
57 mFileNameEdit = new KURLRequester( this ); 59 mFileNameEdit = new KURLRequester( this );
58//US mFileNameEdit->setMode( KFile::Directory ); 60//US mFileNameEdit->setMode( KFile::Directory );
59 61
60 mainLayout->addWidget( label, 1, 0 ); 62 mainLayout->addWidget( label, 1, 0 );
61 mainLayout->addWidget( mFileNameEdit, 1, 1 ); 63 mainLayout->addWidget( mFileNameEdit, 1, 1 );
62 64
63/*US lets hardcode the formats instead of using a factory 65/*US lets hardcode the formats instead of using a factory
64 FormatFactory *factory = FormatFactory::self(); 66 FormatFactory *factory = FormatFactory::self();
65 QStringList formats = factory->formats(); 67 QStringList formats = factory->formats();
66 QStringList::Iterator it; 68 QStringList::Iterator it;
67 for ( it = formats.begin(); it != formats.end(); ++it ) { 69 for ( it = formats.begin(); it != formats.end(); ++it ) {
68 FormatInfo *info = factory->info( *it ); 70 FormatInfo *info = factory->info( *it );
69 if ( info ) { 71 if ( info ) {
70 mFormatTypes << (*it); 72 mFormatTypes << (*it);
71 mFormatBox->insertItem( info->nameLabel ); 73 mFormatBox->insertItem( info->nameLabel );
72 } 74 }
73 } 75 }
74*/ 76*/
75 mFormatTypes << "vcard"; 77 mFormatTypes << "vcard";
76 mFormatTypes << "binary"; 78 mFormatTypes << "binary";
77 mFormatBox->insertItem( "vcard" ); 79 mFormatBox->insertItem( "vcard" );
78 mFormatBox->insertItem( "binary" ); 80 mFormatBox->insertItem( "binary" );
79 81
80 82
81 mInEditMode = false; 83 mInEditMode = false;
82} 84}
83 85
84void ResourceDirConfig::setEditMode( bool value ) 86void ResourceDirConfig::setEditMode( bool value )
85{ 87{
86 mFormatBox->setEnabled( !value ); 88 mFormatBox->setEnabled( !value );
87 mInEditMode = value; 89 mInEditMode = value;
88} 90}
89 91
90void ResourceDirConfig::loadSettings( KRES::Resource *res ) 92void ResourceDirConfig::loadSettings( KRES::Resource *res )
91{ 93{
92//US ResourceDir *resource = dynamic_cast<ResourceDir*>( res ); 94//US ResourceDir *resource = dynamic_cast<ResourceDir*>( res );
93 ResourceDir *resource = (ResourceDir*)( res ); 95 ResourceDir *resource = (ResourceDir*)( res );
94 96
95 if ( !resource ) { 97 if ( !resource ) {
96 kdDebug(5700) << "ResourceDirConfig::loadSettings(): cast failed" << endl; 98 kdDebug(5700) << "ResourceDirConfig::loadSettings(): cast failed" << endl;
97 return; 99 return;
98 } 100 }
99 101
100 mFormatBox->setCurrentItem( mFormatTypes.findIndex( resource->format() ) ); 102 mFormatBox->setCurrentItem( mFormatTypes.findIndex( resource->format() ) );
101 103
102 mFileNameEdit->setURL( resource->path() ); 104 mFileNameEdit->setURL( resource->path() );
103 if ( mFileNameEdit->url().isEmpty() ) 105 if ( mFileNameEdit->url().isEmpty() )
104 mFileNameEdit->setURL( KABC::StdAddressBook::directoryName() ); 106 mFileNameEdit->setURL( KABC::StdAddressBook::directoryName() );
105} 107}
106 108
107void ResourceDirConfig::saveSettings( KRES::Resource *res ) 109void ResourceDirConfig::saveSettings( KRES::Resource *res )
108{ 110{
109//US ResourceDir *resource = dynamic_cast<ResourceDir*>( res ); 111//US ResourceDir *resource = dynamic_cast<ResourceDir*>( res );
110 ResourceDir *resource = (ResourceDir*)( res ); 112 ResourceDir *resource = (ResourceDir*)( res );
111 113
112 if ( !resource ) { 114 if ( !resource ) {
113 kdDebug(5700) << "ResourceDirConfig::loadSettings(): cast failed" << endl; 115 kdDebug(5700) << "ResourceDirConfig::loadSettings(): cast failed" << endl;
114 return; 116 return;
115 } 117 }
116 118
117 if ( mInEditMode ) 119 if ( mInEditMode )
118 resource->setFormat( mFormatTypes[ mFormatBox->currentItem() ] ); 120 resource->setFormat( mFormatTypes[ mFormatBox->currentItem() ] );
119 121
120 resource->setPath( mFileNameEdit->url() ); 122 resource->setPath( mFileNameEdit->url() );
121} 123}
122 124
123//US #include "resourcedirconfig.moc" 125//US #include "resourcedirconfig.moc"
diff --git a/kabc/plugins/file/file.pro b/kabc/plugins/file/file.pro
index 2d17313..e4f1270 100644
--- a/kabc/plugins/file/file.pro
+++ b/kabc/plugins/file/file.pro
@@ -1,37 +1,41 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2CONFIG += qt warn_on release 2CONFIG += qt warn_on release
3#release debug 3#release debug
4 4
5include( ../../../variables.pri ) 5include( ../../../variables.pri )
6 6
7TARGET = microkabc_file 7TARGET = xmicrokabc_file
8INCLUDEPATH += ../.. ../../../microkde ../../../microkde/kdecore ../../../microkde/kio/kfile ../../../microkde/kio/kio ../../../microkde/kresources ../../../qtcompat 8INCLUDEPATH += ../.. ../../../microkde ../../../microkde/kdecore ../../../microkde/kio/kfile ../../../microkde/kio/kio ../../../microkde/kresources ../../../qtcompat
9 9
10DESTDIR = ../../../bin 10DESTDIR = ../../../bin
11#LIBS += -lmicrokde -lmicrokabc 11#LIBS += -lxmicrokde -lxmicrokabc
12#LIBS += -L$(QPEDIR)/lib 12#LIBS += -L$(QPEDIR)/lib
13 13
14INTERFACES = \ 14INTERFACES = \
15 15
16HEADERS = \ 16HEADERS = \
17 resourcefile.h \ 17 resourcefile.h \
18 resourcefileconfig.h 18 resourcefileconfig.h
19 19
20SOURCES = \ 20SOURCES = \
21 resourcefile.cpp \ 21 resourcefile.cpp \
22 resourcefileconfig.cpp 22 resourcefileconfig.cpp
23 23
24unix : { 24unix : {
25OBJECTS_DIR = obj/unix 25OBJECTS_DIR = obj/unix
26MOC_DIR = moc/unix 26MOC_DIR = moc/unix
27} 27}
28win32: { 28win32: {
29CONFIG += dll 29CONFIG += dll
30DEFINES += _WIN32_ 30DEFINES += _WIN32_
31OBJECTS_DIR = obj/win 31OBJECTS_DIR = obj/win
32MOC_DIR = moc/win 32MOC_DIR = moc/win
33LIBS += ../../../bin/microkdepim.lib 33LIBS += ../../../bin/xmicrokdepim.lib
34LIBS += ../../../bin/microkcal.lib 34LIBS += ../../../bin/xmicrokcal.lib
35LIBS += ../../../bin/microkde.lib 35LIBS += ../../../bin/xmicrokde.lib
36LIBS += ../../../bin/microkabc.lib 36LIBS += ../../../bin/microkabc.lib
37} 37}
38#The following line was inserted by qt3to4
39QT += qt3support
40#The following line was inserted by qt3to4
41QT += xml
diff --git a/kabc/plugins/file/fileE.pro b/kabc/plugins/file/fileE.pro
index 16707e5..5044cd9 100644
--- a/kabc/plugins/file/fileE.pro
+++ b/kabc/plugins/file/fileE.pro
@@ -1,21 +1,21 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2CONFIG += qt warn_on release 2CONFIG += qt warn_on release
3#release debug 3#release debug
4 4
5TARGET = microkabc_file 5TARGET = xmicrokabc_file
6INCLUDEPATH += $(KDEPIMDIR)/kabc $(KDEPIMDIR)/microkde $(KDEPIMDIR)/microkde/kdecore $(KDEPIMDIR)/microkde/kio/kfile $(KDEPIMDIR)/microkde/kio/kio $(KDEPIMDIR)/microkde/kresources $(KDEPIMDIR)/qtcompat 6INCLUDEPATH += $(KDEPIMDIR)/kabc $(KDEPIMDIR)/microkde $(KDEPIMDIR)/microkde/kdecore $(KDEPIMDIR)/microkde/kio/kfile $(KDEPIMDIR)/microkde/kio/kio $(KDEPIMDIR)/microkde/kresources $(KDEPIMDIR)/qtcompat
7OBJECTS_DIR = obj/$(PLATFORM) 7OBJECTS_DIR = obj/$(PLATFORM)
8MOC_DIR = moc/$(PLATFORM) 8MOC_DIR = moc/$(PLATFORM)
9DESTDIR = $(QPEDIR)/lib 9DESTDIR = $(QPEDIR)/lib
10LIBS += -lmicrokde -lmicrokabc 10LIBS += -lxmicrokde -lxmicrokabc
11LIBS += -L$(QPEDIR)/lib 11LIBS += -L$(QPEDIR)/lib
12 12
13INTERFACES = \ 13INTERFACES = \
14 14
15HEADERS = \ 15HEADERS = \
16 resourcefile.h \ 16 resourcefile.h \
17 resourcefileconfig.h 17 resourcefileconfig.h
18 18
19SOURCES = \ 19SOURCES = \
20 resourcefile.cpp \ 20 resourcefile.cpp \
21 resourcefileconfig.cpp 21 resourcefileconfig.cpp
diff --git a/kabc/plugins/file/resourcefile.cpp b/kabc/plugins/file/resourcefile.cpp
index dad4571..3ed850c 100644
--- a/kabc/plugins/file/resourcefile.cpp
+++ b/kabc/plugins/file/resourcefile.cpp
@@ -1,485 +1,485 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28#include <sys/types.h> 28#include <sys/types.h>
29#include <sys/stat.h> 29#include <sys/stat.h>
30#ifndef _WIN32_ 30#ifndef _WIN32_
31#include <unistd.h> 31#include <unistd.h>
32#endif 32#endif
33 33
34#include <qfile.h> 34#include <qfile.h>
35#include <qfileinfo.h> 35#include <qfileinfo.h>
36#include <qregexp.h> 36#include <qregexp.h>
37#include <qtimer.h> 37#include <qtimer.h>
38 38
39#include <kapplication.h> 39#include <kapplication.h>
40#include <kconfig.h> 40#include <kconfig.h>
41#include <kdebug.h> 41#include <kdebug.h>
42#include <klocale.h> 42#include <klocale.h>
43//US #include <ksavefile.h> 43//US #include <ksavefile.h>
44#include <kstandarddirs.h> 44#include <kstandarddirs.h>
45#include <kmessagebox.h> 45#include <kmessagebox.h>
46#include <kglobalsettings.h> 46#include <kglobalsettings.h>
47 47
48#include "formatfactory.h" 48#include "formatfactory.h"
49 49
50#include "resource.h" 50#include "resource.h"
51#include "resourcefileconfig.h" 51#include "resourcefileconfig.h"
52#include "stdaddressbook.h" 52#include "stdaddressbook.h"
53#define NO_DIRWATCH 53#define NO_DIRWATCH
54#include "resourcefile.h" 54#include "resourcefile.h"
55 55
56//#define ALLOW_LOCKING 56//#define ALLOW_LOCKING
57 57
58 58
59using namespace KABC; 59using namespace KABC;
60 60
61extern "C" 61extern "C"
62#ifdef _WIN32_ 62#ifdef _WIN32_
63__declspec(dllexport) 63__declspec(dllexport)
64#else 64#else
65{ 65{
66#endif 66#endif
67 67
68//US void *init_kabc_file() 68//US void *init_kabc_file()
69 void *init_microkabc_file() 69 void *init_microkabc_file()
70 { 70 {
71 return new KRES::PluginFactory<ResourceFile,ResourceFileConfig>(); 71 return new KRES::PluginFactory<ResourceFile,ResourceFileConfig>();
72 } 72 }
73#ifndef _WIN32_ 73#ifndef _WIN32_
74} 74}
75#endif 75#endif
76 76
77ResourceFile::ResourceFile( const KConfig *config ) 77ResourceFile::ResourceFile( const KConfig *config )
78 : Resource( config ) , mFormat( 0 ) 78 : Resource( config ) , mFormat( 0 )
79{ 79{
80 QString fileName, formatName, default_fileName; 80 QString fileName, formatName, default_fileName;
81 81
82 default_fileName = StdAddressBook::fileName(); 82 default_fileName = StdAddressBook::fileName();
83 mLastBackupDate = -1; 83 mLastBackupDate = -1;
84 KConfig *cfg = (KConfig *)config; 84 KConfig *cfg = (KConfig *)config;
85 if ( cfg ) { 85 if ( cfg ) {
86#ifdef _WIN32_ 86#ifdef _WIN32_
87 // we use plugins on win32. the group is stored in a static variable 87 // we use plugins on win32. the group is stored in a static variable
88 // such that group info not available on win32 plugins 88 // such that group info not available on win32 plugins
89 // to fix that, it would be a looooot of work 89 // to fix that, it would be a looooot of work
90 if ( !cfg->tempGroup().isEmpty() ) 90 if ( !cfg->tempGroup().isEmpty() )
91 cfg->setGroup( cfg->tempGroup() ); 91 cfg->setGroup( cfg->tempGroup() );
92#endif 92#endif
93 fileName = cfg->readEntry( "FileName", default_fileName ); 93 fileName = cfg->readEntry( "FileName", default_fileName );
94 formatName = cfg->readEntry( "FileFormat", "vcard" ); 94 formatName = cfg->readEntry( "FileFormat", "vcard" );
95 mFamily = cfg->readEntry( "ResourceName", "std" ); 95 mFamily = cfg->readEntry( "ResourceName", "std" );
96 mLastBackupDate = cfg->readNumEntry( "LastBackupDate", 0 ); 96 mLastBackupDate = cfg->readNumEntry( "LastBackupDate", 0 );
97 } else { 97 } else {
98 fileName = default_fileName; 98 fileName = default_fileName;
99 formatName = "vcard"; 99 formatName = "vcard";
100 } 100 }
101 101
102 init( fileName, formatName ); 102 init( fileName, formatName );
103} 103}
104 104
105ResourceFile::ResourceFile( const QString &fileName , 105ResourceFile::ResourceFile( const QString &fileName ,
106 const QString &formatName ) 106 const QString &formatName )
107 : Resource( 0 ) 107 : Resource( 0 )
108{ 108{
109// qDebug("ResourceFile::ResourceFile : 3 %s, %s", fileName.latin1(), formatName.latin1()); 109// qDebug("ResourceFile::ResourceFile : 3 %s, %s", fileName.latin1(), formatName.latin1());
110 110
111 111
112 mLastBackupDate = -1; 112 mLastBackupDate = -1;
113 init( fileName, formatName ); 113 init( fileName, formatName );
114} 114}
115 115
116void ResourceFile::init( const QString &fileName, const QString &formatName ) 116void ResourceFile::init( const QString &fileName, const QString &formatName )
117{ 117{
118 mFormatName = formatName; 118 mFormatName = formatName;
119 119
120 FormatFactory *factory = FormatFactory::self(); 120 FormatFactory *factory = FormatFactory::self();
121 mFormat = factory->format( mFormatName ); 121 mFormat = factory->format( mFormatName );
122 122
123 if ( !mFormat ) { 123 if ( !mFormat ) {
124 mFormatName = "vcard"; 124 mFormatName = "vcard";
125 mFormat = factory->format( mFormatName ); 125 mFormat = factory->format( mFormatName );
126 } 126 }
127 127
128#ifndef NO_DIRWATCH 128#ifndef NO_DIRWATCH
129 connect( &mDirWatch, SIGNAL( dirty(const QString&) ), SLOT( fileChanged() ) ); 129 connect( &mDirWatch, SIGNAL( dirty(const QString&) ), SLOT( fileChanged() ) );
130 connect( &mDirWatch, SIGNAL( created(const QString&) ), SLOT( fileChanged() ) ); 130 connect( &mDirWatch, SIGNAL( created(const QString&) ), SLOT( fileChanged() ) );
131 connect( &mDirWatch, SIGNAL( deleted(const QString&) ), SLOT( fileChanged() ) ); 131 connect( &mDirWatch, SIGNAL( deleted(const QString&) ), SLOT( fileChanged() ) );
132#endif 132#endif
133 133
134 QString localKdeDir; 134 QString localKdeDir;
135 localKdeDir = readEnvPath("LOCALMICROKDEHOME"); 135 localKdeDir = readEnvPath("LOCALMICROKDEHOME");
136 if ( ! localKdeDir.isEmpty() ) { 136 if ( ! localKdeDir.isEmpty() ) {
137 qDebug("LOCALMICROKDEHOME is set to: %s",localKdeDir.latin1() ); 137 qDebug("LOCALMICROKDEHOME is set to: %s",localKdeDir.latin1() );
138 QFileInfo fi ( fileName ); 138 QFileInfo fi ( fileName );
139 QString localname = localKdeDir + "/apps/kabc/" + fi.fileName (); 139 QString localname = localKdeDir + "/apps/kabc/" + fi.fileName ();
140 QFileInfo fi2 ( localname ); 140 QFileInfo fi2 ( localname );
141 if ( ! fi2.exists() || mFamily == "sync_res" ) { 141 if ( ! fi2.exists() || mFamily == "sync_res" ) {
142 if ( fi.exists() && mFamily == "sync_res") { 142 if ( fi.exists() && mFamily == "sync_res") {
143 qDebug("LOCAL mode SYNC mode using absolute file path "); 143 qDebug("LOCAL mode SYNC mode using absolute file path ");
144 setFileName( fileName ); 144 setFileName( fileName );
145 return; 145 return;
146 } else { 146 } else {
147 KMessageBox::error(0,i18n("Addressbook resource file not found:\n '%1'.\nIn LOCAL mode only resource files in\n'%2'\nare supported.\n(i.e. in the dir ./apps/kabc/ relative to the kapi(.exe) binary.)\n\nIf you are starting KA/Pi for the very first time\nyou will get this error message as well.\nIt will create the missing file automatically for you.").arg(localname).arg(localKdeDir+"/apps/kabc/") ); 147 KMessageBox::error(0,i18n("Addressbook resource file not found:\n '%1'.\nIn LOCAL mode only resource files in\n'%2'\nare supported.\n(i.e. in the dir ./apps/kabc/ relative to the kapi(.exe) binary.)\n\nIf you are starting KA/Pi for the very first time\nyou will get this error message as well.\nIt will create the missing file automatically for you.").arg(localname).arg(localKdeDir+"/apps/kabc/") );
148 setFileName( localname ); 148 setFileName( localname );
149 return; 149 return;
150 } 150 }
151 151
152 } else { 152 } else {
153 qDebug("Local resource file found. Changing filename to: %s",localname.latin1() ); 153 qDebug("Local resource file found. Changing filename to: %s",localname.latin1() );
154 setFileName( localname ); 154 setFileName( localname );
155 return; 155 return;
156 } 156 }
157 157
158 } 158 }
159 setFileName( fileName ); 159 setFileName( fileName );
160} 160}
161 161
162ResourceFile::~ResourceFile() 162ResourceFile::~ResourceFile()
163{ 163{
164 delete mFormat; 164 delete mFormat;
165 mFormat = 0; 165 mFormat = 0;
166} 166}
167 167
168void ResourceFile::writeConfig( KConfig *config ) 168void ResourceFile::writeConfig( KConfig *config )
169{ 169{
170 170
171 config->setGroup( "Resource_" + identifier() ); 171 config->setGroup( "Resource_" + identifier() );
172 Resource::writeConfig( config ); 172 Resource::writeConfig( config );
173 173
174 config->writeEntry( "FileName", fileName() ); 174 config->writeEntry( "FileName", fileName() );
175 config->writeEntry( "FileFormat", mFormatName ); 175 config->writeEntry( "FileFormat", mFormatName );
176 176
177// qDebug("ResourceFile::writeConfig format %s, %s", mFileName.latin1(), mFormatName.latin1()); 177// qDebug("ResourceFile::writeConfig format %s, %s", mFileName.latin1(), mFormatName.latin1());
178 178
179} 179}
180 180
181Ticket *ResourceFile::requestSaveTicket() 181Ticket *ResourceFile::requestSaveTicket()
182{ 182{
183 kdDebug(5700) << "ResourceFile::requestSaveTicket()" << endl; 183 kdDebug(5700) << "ResourceFile::requestSaveTicket()" << endl;
184 184
185 if ( !addressBook() ) return 0; 185 if ( !addressBook() ) return 0;
186 186
187#ifdef ALLOW_LOCKING 187#ifdef ALLOW_LOCKING
188 if ( !lock( mFileName ) ) { 188 if ( !lock( mFileName ) ) {
189 qDebug("unablt to lock file "); 189 qDebug("unablt to lock file ");
190 return 0; 190 return 0;
191 } 191 }
192#endif 192#endif
193 return createTicket( this ); 193 return createTicket( this );
194} 194}
195 195
196 196
197bool ResourceFile::doOpen() 197bool ResourceFile::doOpen()
198{ 198{
199 QFile file( fileName() ); 199 QFile file( fileName() );
200 qDebug("ResourceFile::openfile %s ", fileName().latin1()); 200 qDebug("ResourceFile::openfile %s ", fileName().latin1());
201 201
202 if ( !file.exists() ) { 202 if ( !file.exists() ) {
203 // try to create the file 203 // try to create the file
204 bool ok = file.open( IO_WriteOnly ); 204 bool ok = file.open( QIODevice::WriteOnly );
205 if ( ok ) 205 if ( ok )
206 file.close(); 206 file.close();
207 207
208 return ok; 208 return ok;
209 } else { 209 } else {
210 if ( !file.open( IO_ReadWrite ) ) 210 if ( !file.open( QIODevice::ReadWrite ) )
211 return false; 211 return false;
212 212
213 if ( file.size() < 10 ) { 213 if ( file.size() < 10 ) {
214 file.close(); 214 file.close();
215 return true; 215 return true;
216 } 216 }
217 217
218 bool ok = mFormat->checkFormat( &file ); 218 bool ok = mFormat->checkFormat( &file );
219 file.close(); 219 file.close();
220 220
221 return ok; 221 return ok;
222 } 222 }
223} 223}
224 224
225void ResourceFile::doClose() 225void ResourceFile::doClose()
226{ 226{
227} 227}
228 228
229bool ResourceFile::load() 229bool ResourceFile::load()
230{ 230{
231 231
232 QFile file( fileName() ); 232 QFile file( fileName() );
233 if ( !file.open( IO_ReadOnly ) ) { 233 if ( !file.open( QIODevice::ReadOnly ) ) {
234 addressBook()->error( i18n( "Unable to open file '%1'." ).arg( fileName() ) ); 234 addressBook()->error( i18n( "Unable to open file '%1'." ).arg( fileName() ) );
235 return false; 235 return false;
236 } 236 }
237 237
238// qDebug("ResourceFile::load format %s, %s", mFileName.latin1(), mFormatName.latin1()); 238// qDebug("ResourceFile::load format %s, %s", mFileName.latin1(), mFormatName.latin1());
239 239
240 return mFormat->loadAll( addressBook(), this, &file ); 240 return mFormat->loadAll( addressBook(), this, &file );
241} 241}
242 242
243bool ResourceFile::save( Ticket *ticket ) 243bool ResourceFile::save( Ticket *ticket )
244{ 244{
245// qDebug("ResourceFile::save format %s, %s", mFileName.latin1(), mFormatName.latin1()); 245// qDebug("ResourceFile::save format %s, %s", mFileName.latin1(), mFormatName.latin1());
246 246
247 247
248 // create backup file 248 // create backup file
249 QString extension = "_" + QString::number( QDate::currentDate().dayOfWeek() ); 249 QString extension = "_" + QString::number( QDate::currentDate().dayOfWeek() );
250 250
251/*US we use a simpler method to create a backupfile 251/*US we use a simpler method to create a backupfile
252 252
253 (void) KSaveFile::backupFile( mFileName, QString::null 253 (void) KSaveFile::backupFile( mFileName, QString::null
254 ,extension ); 254 ,extension );
255 255
256 KSaveFile saveFile( mFileName ); 256 KSaveFile saveFile( mFileName );
257 bool ok = false; 257 bool ok = false;
258 if ( saveFile.status() == 0 && saveFile.file() ) 258 if ( saveFile.status() == 0 && saveFile.file() )
259 { 259 {
260 mFormat->saveAll( addressBook(), this, saveFile.file() ); 260 mFormat->saveAll( addressBook(), this, saveFile.file() );
261 ok = saveFile.close(); 261 ok = saveFile.close();
262 } 262 }
263*/ 263*/
264 264
265//US ToDo: write backupfile 265//US ToDo: write backupfile
266#ifndef NO_DIRWATCH 266#ifndef NO_DIRWATCH
267 mDirWatch.stopScan(); 267 mDirWatch.stopScan();
268#endif 268#endif
269 if ( mLastBackupDate >= 0 && mFamily != "sync_res") { 269 if ( mLastBackupDate >= 0 && mFamily != "sync_res") {
270 KConfig conf (locateLocal("config","microkdeglobalrc")); 270 KConfig conf (locateLocal("config","microkdeglobalrc"));
271 conf.setGroup( "BackupSettings" ); 271 conf.setGroup( "BackupSettings" );
272 bool b_enabled = conf.readBoolEntry( "BackupEnabled" ); 272 bool b_enabled = conf.readBoolEntry( "BackupEnabled" );
273 if ( b_enabled ) { 273 if ( b_enabled ) {
274 int num = conf.readNumEntry( "BackupNumbers" ); 274 int num = conf.readNumEntry( "BackupNumbers" );
275 int d_count = conf.readNumEntry( "BackupDayCount" ); 275 int d_count = conf.readNumEntry( "BackupDayCount" );
276 bool stdDir = conf.readBoolEntry( "BackupUseDefaultDir" ); 276 bool stdDir = conf.readBoolEntry( "BackupUseDefaultDir" );
277 QString bupDir = conf.readEntry( "BackupDatadir" ); 277 QString bupDir = conf.readEntry( "BackupDatadir" );
278 QDate reference ( 2000,1,1 ); 278 QDate reference ( 2000,1,1 );
279 int daysTo = reference.daysTo ( QDate::currentDate() ); 279 int daysTo = reference.daysTo ( QDate::currentDate() );
280 bool saveDate = false; 280 bool saveDate = false;
281 if ( daysTo - d_count >= mLastBackupDate ) { 281 if ( daysTo - d_count >= mLastBackupDate ) {
282 qDebug("KA: Last backup was %d days ago ", daysTo - mLastBackupDate ); 282 qDebug("KA: Last backup was %d days ago ", daysTo - mLastBackupDate );
283 if ( stdDir ) 283 if ( stdDir )
284 bupDir = KGlobalSettings::backupDataDir(); 284 bupDir = KGlobalSettings::backupDataDir();
285 int retval = KApplication::createBackup( fileName(), bupDir, num ); 285 int retval = KApplication::createBackup( fileName(), bupDir, num );
286 if ( retval == 0 ) { 286 if ( retval == 0 ) {
287 qDebug("KO: Backup cancelled. Will try again tomorrow "); 287 qDebug("KO: Backup cancelled. Will try again tomorrow ");
288 // retval == 0 : backup skipped for today, try again tomorrow 288 // retval == 0 : backup skipped for today, try again tomorrow
289 mLastBackupDate = daysTo - d_count+1; 289 mLastBackupDate = daysTo - d_count+1;
290 saveDate = true; 290 saveDate = true;
291 } else if ( retval == 1 ){ 291 } else if ( retval == 1 ){
292 qDebug("KO: Backup created."); 292 qDebug("KO: Backup created.");
293 // backup ok 293 // backup ok
294 mLastBackupDate = daysTo; 294 mLastBackupDate = daysTo;
295 saveDate = true; 295 saveDate = true;
296 } else if ( retval == 2 ){ 296 } else if ( retval == 2 ){
297 qDebug("KO: Backup globally cancelled."); 297 qDebug("KO: Backup globally cancelled.");
298 // backup globally cancelled 298 // backup globally cancelled
299 b_enabled = false; 299 b_enabled = false;
300 } 300 }
301 if ( !b_enabled ) { 301 if ( !b_enabled ) {
302 conf.writeEntry( "mBackupEnabled", false ); 302 conf.writeEntry( "mBackupEnabled", false );
303 } 303 }
304 if ( saveDate ) { 304 if ( saveDate ) {
305 KConfig config ( locateLocal("config","kabcrc") ); 305 KConfig config ( locateLocal("config","kabcrc") );
306 config.setGroup( "Resource_" + identifier() ); 306 config.setGroup( "Resource_" + identifier() );
307 config.writeEntry( "LastBackupDate", mLastBackupDate ); 307 config.writeEntry( "LastBackupDate", mLastBackupDate );
308 } 308 }
309 } 309 }
310 } 310 }
311 } 311 }
312 QFile info; 312 QFile info;
313 info.setName( fileName() ); 313 info.setName( fileName() );
314 bool ok = info.open( IO_WriteOnly ); 314 bool ok = info.open( QIODevice::WriteOnly );
315 if ( ok ) { 315 if ( ok ) {
316 mFormat->saveAll( addressBook(), this, &info ); 316 mFormat->saveAll( addressBook(), this, &info );
317 317
318 info.close(); 318 info.close();
319 ok = true; 319 ok = true;
320 } 320 }
321 else { 321 else {
322 322
323 } 323 }
324 324
325 if ( !ok ) 325 if ( !ok )
326 addressBook()->error( i18n( "Unable to save file '%1'." ).arg( fileName() ) ); 326 addressBook()->error( i18n( "Unable to save file '%1'." ).arg( fileName() ) );
327#ifndef NO_DIRWATCH 327#ifndef NO_DIRWATCH
328 mDirWatch.startScan(); 328 mDirWatch.startScan();
329#endif 329#endif
330 delete ticket; 330 delete ticket;
331#ifdef ALLOW_LOCKING 331#ifdef ALLOW_LOCKING
332 unlock( mFileName ); 332 unlock( mFileName );
333#endif 333#endif
334 334
335 return ok; 335 return ok;
336} 336}
337 337
338bool ResourceFile::lock( const QString &fileName ) 338bool ResourceFile::lock( const QString &fileName )
339{ 339{
340#ifdef ALLOW_LOCKING 340#ifdef ALLOW_LOCKING
341 341
342 342
343 QString fn = fileName; 343 QString fn = fileName;
344 344
345//US change the implementation how the lockfilename is getting created 345//US change the implementation how the lockfilename is getting created
346//US fn.replace( QRegExp("/"), "_" ); 346//US fn.replace( QRegExp("/"), "_" );
347//US QString lockName = locateLocal( "data", "kabc/lock/" + fn + ".lock" ); 347//US QString lockName = locateLocal( "data", "kabc/lock/" + fn + ".lock" );
348 348
349 KURL url(fn); 349 KURL url(fn);
350 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" ); 350 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
351 351
352 352
353 353
354 if (QFile::exists( lockName )) return false; 354 if (QFile::exists( lockName )) return false;
355 355
356 QString lockUniqueName; 356 QString lockUniqueName;
357 lockUniqueName = fn + KApplication::randomString( 8 ); 357 lockUniqueName = fn + KApplication::randomString( 8 );
358 358
359 url = lockUniqueName; 359 url = lockUniqueName;
360//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName ); 360//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName );
361 mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() ); 361 mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() );
362 kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl; 362 kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl;
363 363
364 // Create unique file 364 // Create unique file
365 QFile file( mLockUniqueName ); 365 QFile file( mLockUniqueName );
366 file.open( IO_WriteOnly ); 366 file.open( QIODevice::WriteOnly );
367 file.close(); 367 file.close();
368 368
369 // Create lock file 369 // Create lock file
370 int result = 0; 370 int result = 0;
371#ifndef _WIN32_ 371#ifndef _WIN32_
372 result = ::link( QFile::encodeName( mLockUniqueName ), 372 result = ::link( QFile::encodeName( mLockUniqueName ),
373 QFile::encodeName( lockName ) ); 373 QFile::encodeName( lockName ) );
374#endif 374#endif
375 if ( result == 0 ) { 375 if ( result == 0 ) {
376 addressBook()->emitAddressBookLocked(); 376 addressBook()->emitAddressBookLocked();
377 return true; 377 return true;
378 } 378 }
379 379
380 // TODO: check stat 380 // TODO: check stat
381 381
382 return false; 382 return false;
383#else 383#else
384 return true; 384 return true;
385#endif 385#endif
386} 386}
387 387
388void ResourceFile::unlock( const QString &fileName ) 388void ResourceFile::unlock( const QString &fileName )
389{ 389{
390#ifdef ALLOW_LOCKING 390#ifdef ALLOW_LOCKING
391 QString fn = fileName; 391 QString fn = fileName;
392//US change the implementation how the lockfilename is getting created 392//US change the implementation how the lockfilename is getting created
393//US fn.replace( QRegExp( "/" ), "_" ); 393//US fn.replace( QRegExp( "/" ), "_" );
394//US QString lockName = locateLocal( "data", "kabc/lock/" + fn + ".lock" ); 394//US QString lockName = locateLocal( "data", "kabc/lock/" + fn + ".lock" );
395//US QString lockName = fn + ".lock"; 395//US QString lockName = fn + ".lock";
396 KURL url(fn); 396 KURL url(fn);
397 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" ); 397 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
398 398
399 QFile::remove( lockName ); 399 QFile::remove( lockName );
400 QFile::remove( mLockUniqueName ); 400 QFile::remove( mLockUniqueName );
401 addressBook()->emitAddressBookUnlocked(); 401 addressBook()->emitAddressBookUnlocked();
402#else 402#else
403 return; 403 return;
404#endif 404#endif
405} 405}
406 406
407void ResourceFile::setFileName( const QString &fileName ) 407void ResourceFile::setFileName( const QString &fileName )
408{ 408{
409#ifndef NO_DIRWATCH 409#ifndef NO_DIRWATCH
410 mDirWatch.stopScan(); 410 mDirWatch.stopScan();
411 mDirWatch.removeFile( mFileName ); 411 mDirWatch.removeFile( mFileName );
412 mFileName = fileName; 412 mFileName = fileName;
413 413
414 414
415 mDirWatch.addFile( mFileName ); 415 mDirWatch.addFile( mFileName );
416 mDirWatch.startScan(); 416 mDirWatch.startScan();
417#else 417#else
418 mFileName2 = fileName; 418 mFileName2 = fileName;
419#endif 419#endif
420 420
421//US simulate KDirWatch event 421//US simulate KDirWatch event
422//US fileChanged(); 422//US fileChanged();
423} 423}
424 424
425QString ResourceFile::fileName() const 425QString ResourceFile::fileName() const
426{ 426{
427 return mFileName2; 427 return mFileName2;
428} 428}
429 429
430void ResourceFile::setFormat( const QString &format ) 430void ResourceFile::setFormat( const QString &format )
431{ 431{
432 mFormatName = format; 432 mFormatName = format;
433 delete mFormat; 433 delete mFormat;
434 434
435 FormatFactory *factory = FormatFactory::self(); 435 FormatFactory *factory = FormatFactory::self();
436 mFormat = factory->format( mFormatName ); 436 mFormat = factory->format( mFormatName );
437/*US 437/*US
438//qDebug("ResourceFile::setFormat initialized with format %s ", format.latin1()); 438//qDebug("ResourceFile::setFormat initialized with format %s ", format.latin1());
439 if (mFormatName == "vcard") { 439 if (mFormatName == "vcard") {
440 mFormat = new VCardFormatPlugin2(); 440 mFormat = new VCardFormatPlugin2();
441// qDebug("ResourceFile::setFormat format %s", mFormatName.latin1()); 441// qDebug("ResourceFile::setFormat format %s", mFormatName.latin1());
442 } 442 }
443 else if (mFormatName == "binary") { 443 else if (mFormatName == "binary") {
444 mFormat = new BinaryFormat(); 444 mFormat = new BinaryFormat();
445// qDebug("ResourceFile::setFormat format %s", mFormatName.latin1()); 445// qDebug("ResourceFile::setFormat format %s", mFormatName.latin1());
446 } 446 }
447 else 447 else
448 qDebug("ResourceFile::setFormat format unknown !!! %s ", format.latin1()); 448 qDebug("ResourceFile::setFormat format unknown !!! %s ", format.latin1());
449*/ 449*/
450 450
451} 451}
452 452
453QString ResourceFile::format() const 453QString ResourceFile::format() const
454{ 454{
455 return mFormatName; 455 return mFormatName;
456} 456}
457 457
458void ResourceFile::fileChanged() 458void ResourceFile::fileChanged()
459{ 459{
460 // There is a small theoretical chance that KDirWatch calls us before 460 // There is a small theoretical chance that KDirWatch calls us before
461 // we are fully constructed 461 // we are fully constructed
462 if (!addressBook()) 462 if (!addressBook())
463 return; 463 return;
464 464
465 465
466 QString text( i18n( "File resource '%1'<br> has been changed by third party.<br>Do you want to reload?").arg( fileName() ) ); 466 QString text( i18n( "File resource '%1'<br> has been changed by third party.<br>Do you want to reload?").arg( fileName() ) );
467 if ( readOnly() || KMessageBox::questionYesNo( 0, text ) == KMessageBox::Yes ) { 467 if ( readOnly() || KMessageBox::questionYesNo( 0, text ) == KMessageBox::Yes ) {
468 load(); 468 load();
469 addressBook()->emitAddressBookChanged(); 469 addressBook()->emitAddressBookChanged();
470 } 470 }
471} 471}
472 472
473void ResourceFile::removeAddressee( const Addressee &addr ) 473void ResourceFile::removeAddressee( const Addressee &addr )
474{ 474{
475 QFile::remove( QFile::encodeName( locateLocal( "data", "kabc/photos/" ) + addr.uid() ) ); 475 QFile::remove( QFile::encodeName( locateLocal( "data", "kabc/photos/" ) + addr.uid() ) );
476 QFile::remove( QFile::encodeName( locateLocal( "data", "kabc/logos/" ) + addr.uid() ) ); 476 QFile::remove( QFile::encodeName( locateLocal( "data", "kabc/logos/" ) + addr.uid() ) );
477 QFile::remove( QFile::encodeName( locateLocal( "data", "kabc/sounds/" ) + addr.uid() ) ); 477 QFile::remove( QFile::encodeName( locateLocal( "data", "kabc/sounds/" ) + addr.uid() ) );
478} 478}
479 479
480void ResourceFile::cleanUp() 480void ResourceFile::cleanUp()
481{ 481{
482 unlock( fileName() ); 482 unlock( fileName() );
483} 483}
484 484
485//US #include "resourcefile.moc" 485//US #include "resourcefile.moc"
diff --git a/kabc/plugins/file/resourcefileconfig.cpp b/kabc/plugins/file/resourcefileconfig.cpp
index b63775d..70b0bac 100644
--- a/kabc/plugins/file/resourcefileconfig.cpp
+++ b/kabc/plugins/file/resourcefileconfig.cpp
@@ -1,144 +1,146 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28#include <qlabel.h> 28#include <qlabel.h>
29#include <qlayout.h> 29#include <qlayout.h>
30#include <qfileinfo.h> 30#include <qfileinfo.h>
31//Added by qt3to4:
32#include <Q3GridLayout>
31 33
32#include <kdebug.h> 34#include <kdebug.h>
33#include <klocale.h> 35#include <klocale.h>
34#include <kstandarddirs.h> 36#include <kstandarddirs.h>
35#include <kdialog.h> 37#include <kdialog.h>
36#ifndef _WIN32_ 38#ifndef _WIN32_
37#include <unistd.h> 39#include <unistd.h>
38#endif 40#endif
39//US #include "formatfactory.h" 41//US #include "formatfactory.h"
40#include <qfile.h> 42#include <qfile.h>
41#include "resourcefile.h" 43#include "resourcefile.h"
42#include "stdaddressbook.h" 44#include "stdaddressbook.h"
43 45
44#include "resourcefileconfig.h" 46#include "resourcefileconfig.h"
45 47
46using namespace KABC; 48using namespace KABC;
47 49
48ResourceFileConfig::ResourceFileConfig( QWidget* parent, const char* name ) 50ResourceFileConfig::ResourceFileConfig( QWidget* parent, const char* name )
49 : ConfigWidget( parent, name ) 51 : ConfigWidget( parent, name )
50{ 52{
51//qDebug("ResourceFileConfig::ResourceFileConfig"); 53//qDebug("ResourceFileConfig::ResourceFileConfig");
52 54
53 QGridLayout *mainLayout = new QGridLayout( this, 2, 2, 0, 55 Q3GridLayout *mainLayout = new Q3GridLayout( this, 2, 2, 0,
54 KDialog::spacingHint() ); 56 KDialog::spacingHint() );
55 57
56 QLabel *label = new QLabel( i18n( "Format:" ), this ); 58 QLabel *label = new QLabel( i18n( "Format:" ), this );
57 mFormatBox = new KComboBox( this ); 59 mFormatBox = new KComboBox( this );
58 60
59 mainLayout->addWidget( label, 0, 0 ); 61 mainLayout->addWidget( label, 0, 0 );
60 mainLayout->addWidget( mFormatBox, 0, 1 ); 62 mainLayout->addWidget( mFormatBox, 0, 1 );
61 63
62 label = new QLabel( i18n( "Location:" ), this ); 64 label = new QLabel( i18n( "Location:" ), this );
63 mFileNameEdit = new KURLRequester( this ); 65 mFileNameEdit = new KURLRequester( this );
64 66
65 connect( mFileNameEdit, SIGNAL( textChanged( const QString & ) ), 67 connect( mFileNameEdit, SIGNAL( textChanged( const QString & ) ),
66 SLOT( checkFilePermissions( const QString & ) ) ); 68 SLOT( checkFilePermissions( const QString & ) ) );
67 69
68 mainLayout->addWidget( label, 1, 0 ); 70 mainLayout->addWidget( label, 1, 0 );
69 mainLayout->addWidget( mFileNameEdit, 1, 1 ); 71 mainLayout->addWidget( mFileNameEdit, 1, 1 );
70 72
71 73
72/*US lets hardcode the formats instead of using a factory 74/*US lets hardcode the formats instead of using a factory
73 FormatFactory *factory = FormatFactory::self(); 75 FormatFactory *factory = FormatFactory::self();
74 QStringList formats = factory->formats(); 76 QStringList formats = factory->formats();
75 QStringList::Iterator it; 77 QStringList::Iterator it;
76 78
77 for ( it = formats.begin(); it != formats.end(); ++it ) { 79 for ( it = formats.begin(); it != formats.end(); ++it ) {
78 FormatInfo *info = factory->info( *it ); 80 FormatInfo *info = factory->info( *it );
79 if ( info ) { 81 if ( info ) {
80 mFormatTypes << (*it); 82 mFormatTypes << (*it);
81 mFormatBox->insertItem( info->nameLabel ); 83 mFormatBox->insertItem( info->nameLabel );
82 } 84 }
83 } 85 }
84*/ 86*/
85 mFormatTypes << "vcard"; 87 mFormatTypes << "vcard";
86 mFormatTypes << "binary"; 88 mFormatTypes << "binary";
87 mFormatBox->insertItem( "vcard" ); 89 mFormatBox->insertItem( "vcard" );
88 mFormatBox->insertItem( "binary" ); 90 mFormatBox->insertItem( "binary" );
89 91
90 mInEditMode = false; 92 mInEditMode = false;
91} 93}
92 94
93void ResourceFileConfig::setEditMode( bool value ) 95void ResourceFileConfig::setEditMode( bool value )
94{ 96{
95 mFormatBox->setEnabled( !value ); 97 mFormatBox->setEnabled( !value );
96 mInEditMode = value; 98 mInEditMode = value;
97} 99}
98 100
99void ResourceFileConfig::loadSettings( KRES::Resource *res ) 101void ResourceFileConfig::loadSettings( KRES::Resource *res )
100{ 102{
101//US ResourceFile *resource = dynamic_cast<ResourceFile*>( res ); 103//US ResourceFile *resource = dynamic_cast<ResourceFile*>( res );
102 ResourceFile *resource = (ResourceFile*)( res ); 104 ResourceFile *resource = (ResourceFile*)( res );
103 105
104 if ( !resource ) { 106 if ( !resource ) {
105 kdDebug(5700) << "ResourceFileConfig::loadSettings(): cast failed" << endl; 107 kdDebug(5700) << "ResourceFileConfig::loadSettings(): cast failed" << endl;
106 return; 108 return;
107 } 109 }
108 110
109 mFormatBox->setCurrentItem( mFormatTypes.findIndex( resource->format() ) ); 111 mFormatBox->setCurrentItem( mFormatTypes.findIndex( resource->format() ) );
110 112
111 mFileNameEdit->setURL( resource->fileName() ); 113 mFileNameEdit->setURL( resource->fileName() );
112 if ( mFileNameEdit->url().isEmpty() ) 114 if ( mFileNameEdit->url().isEmpty() )
113 mFileNameEdit->setURL( KABC::StdAddressBook::fileName() ); 115 mFileNameEdit->setURL( KABC::StdAddressBook::fileName() );
114} 116}
115 117
116void ResourceFileConfig::saveSettings( KRES::Resource *res ) 118void ResourceFileConfig::saveSettings( KRES::Resource *res )
117{ 119{
118//US ResourceFile *resource = dynamic_cast<ResourceFile*>( res ); 120//US ResourceFile *resource = dynamic_cast<ResourceFile*>( res );
119 ResourceFile *resource = (ResourceFile*)( res ); 121 ResourceFile *resource = (ResourceFile*)( res );
120 122
121 if ( !resource ) { 123 if ( !resource ) {
122 kdDebug(5700) << "ResourceFileConfig::saveSettings(): cast failed" << endl; 124 kdDebug(5700) << "ResourceFileConfig::saveSettings(): cast failed" << endl;
123 return; 125 return;
124 } 126 }
125 127
126 if ( !mInEditMode ) 128 if ( !mInEditMode )
127 resource->setFormat( mFormatTypes[ mFormatBox->currentItem() ] ); 129 resource->setFormat( mFormatTypes[ mFormatBox->currentItem() ] );
128 130
129 resource->setFileName( mFileNameEdit->url() ); 131 resource->setFileName( mFileNameEdit->url() );
130} 132}
131void ResourceFileConfig::checkFilePermissions( const QString& fileName ) 133void ResourceFileConfig::checkFilePermissions( const QString& fileName )
132{ 134{
133 // If file exist but is not writeable... 135 // If file exist but is not writeable...
134#ifdef _WIN32_ 136#ifdef _WIN32_
135 QFileInfo fi ( QFile::encodeName( fileName ) ); 137 QFileInfo fi ( QFile::encodeName( fileName ) );
136 if ( fi.exists() ) 138 if ( fi.exists() )
137 emit setReadOnly(!fi.isReadable() ); 139 emit setReadOnly(!fi.isReadable() );
138#else 140#else
139 if ( access( QFile::encodeName( fileName ), F_OK ) == 0 ) 141 if ( access( QFile::encodeName( fileName ), F_OK ) == 0 )
140 emit setReadOnly( access( QFile::encodeName( fileName ), W_OK ) < 0 ); 142 emit setReadOnly( access( QFile::encodeName( fileName ), W_OK ) < 0 );
141#endif 143#endif
142} 144}
143 145
144//US #include "resourcefileconfig.moc" 146//US #include "resourcefileconfig.moc"
diff --git a/kabc/plugins/ldap/ldapE.pro b/kabc/plugins/ldap/ldapE.pro
index 57b6f84..c56d24d 100644
--- a/kabc/plugins/ldap/ldapE.pro
+++ b/kabc/plugins/ldap/ldapE.pro
@@ -1,21 +1,21 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2CONFIG += qt warn_on release 2CONFIG += qt warn_on release
3#release debug 3#release debug
4 4
5TARGET = microkabc_ldap 5TARGET = xmicrokabc_ldap
6INCLUDEPATH += $(KDEPIMDIR)/kabc $(KDEPIMDIR)/microkde $(KDEPIMDIR)/microkde/kdecore $(KDEPIMDIR)/microkde/kio/kfile $(KDEPIMDIR)/microkde/kresources $(KDEPIMDIR)/qtcompat $(QPEDIR)/include 6INCLUDEPATH += $(KDEPIMDIR)/kabc $(KDEPIMDIR)/microkde $(KDEPIMDIR)/microkde/kdecore $(KDEPIMDIR)/microkde/kio/kfile $(KDEPIMDIR)/microkde/kresources $(KDEPIMDIR)/qtcompat $(QPEDIR)/include
7OBJECTS_DIR = obj/$(PLATFORM) 7OBJECTS_DIR = obj/$(PLATFORM)
8MOC_DIR = moc/$(PLATFORM) 8MOC_DIR = moc/$(PLATFORM)
9DESTDIR = $(QPEDIR)/lib 9DESTDIR = $(QPEDIR)/lib
10LIBS += -lmicrokde -lmicrokabc 10LIBS += -lxmicrokde -lxmicrokabc
11LIBS += -L$(QPEDIR)/lib 11LIBS += -L$(QPEDIR)/lib
12 12
13INTERFACES = \ 13INTERFACES = \
14 14
15HEADERS = \ 15HEADERS = \
16 resourceldap.h \ 16 resourceldap.h \
17 resourceldapconfig.h 17 resourceldapconfig.h
18 18
19SOURCES = \ 19SOURCES = \
20 resourceldap.cpp \ 20 resourceldap.cpp \
21 resourceldapconfig.cpp 21 resourceldapconfig.cpp
diff --git a/kabc/plugins/olaccess/olaccess.pro b/kabc/plugins/olaccess/olaccess.pro
index 9b95015..ad7e1ef 100644
--- a/kabc/plugins/olaccess/olaccess.pro
+++ b/kabc/plugins/olaccess/olaccess.pro
@@ -1,35 +1,35 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2CONFIG += qt warn_on 2CONFIG += qt warn_on
3TARGET = microkabc_olaccess 3TARGET = xmicrokabc_olaccess
4 4
5include( ../../../variables.pri ) 5include( ../../../variables.pri )
6 6
7INCLUDEPATH += ../../.. ../.. ../../../microkde ../../../microkde/kdecore ../../../microkde/kio/kfile ../../../microkde/kio/kio ../../../microkde/kresources ../../../qtcompat 7INCLUDEPATH += ../../.. ../.. ../../../microkde ../../../microkde/kdecore ../../../microkde/kio/kfile ../../../microkde/kio/kio ../../../microkde/kresources ../../../qtcompat
8 8
9INTERFACES = \ 9INTERFACES = \
10 10
11DESTDIR = ../../../bin 11DESTDIR = ../../../bin
12HEADERS = \ 12HEADERS = \
13 resourceolaccess.h \ 13 resourceolaccess.h \
14 resourceolaccessconfig.h \ 14 resourceolaccessconfig.h \
15 olaccessconverter.h 15 olaccessconverter.h
16 16
17SOURCES = \ 17SOURCES = \
18 resourceolaccess.cpp \ 18 resourceolaccess.cpp \
19 resourceolaccessconfig.cpp \ 19 resourceolaccessconfig.cpp \
20 olaccessconverter.cpp 20 olaccessconverter.cpp
21 21
22unix : { 22unix : {
23OBJECTS_DIR = obj/unix 23OBJECTS_DIR = obj/unix
24MOC_DIR = moc/unix 24MOC_DIR = moc/unix
25} 25}
26win32: { 26win32: {
27CONFIG += dll 27CONFIG += dll
28DEFINES += _WIN32_ 28DEFINES += _WIN32_
29OBJECTS_DIR = obj/win 29OBJECTS_DIR = obj/win
30MOC_DIR = moc/win 30MOC_DIR = moc/win
31LIBS += ../../../bin/microkdepim.lib 31LIBS += ../../../bin/xmicrokdepim.lib
32LIBS += ../../../bin/microkcal.lib 32LIBS += ../../../bin/xmicrokcal.lib
33LIBS += ../../../bin/microkde.lib 33LIBS += ../../../bin/xmicrokde.lib
34LIBS += ../../../bin/microkabc.lib 34LIBS += ../../../bin/microkabc.lib
35} 35}
diff --git a/kabc/plugins/opie/opieE.pro b/kabc/plugins/opie/opieE.pro
index b7ecbc0..aa6b8ea 100644
--- a/kabc/plugins/opie/opieE.pro
+++ b/kabc/plugins/opie/opieE.pro
@@ -1,31 +1,31 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2CONFIG += qt warn_on 2CONFIG += qt warn_on
3#release debug 3#release debug
4TARGET = microkabc_opie 4TARGET = xmicrokabc_opie
5 5
6INCLUDEPATH += $(KDEPIMDIR)/kabc $(KDEPIMDIR)/microkde $(KDEPIMDIR)/microkde/kdecore $(KDEPIMDIR)/microkde/kio/kfile $(KDEPIMDIR)/microkde/kio/kio $(KDEPIMDIR)/microkde/kresources $(KDEPIMDIR)/qtcompat $(QPEDIR)/include $(OPIEDIR)/include 6INCLUDEPATH += $(KDEPIMDIR)/kabc $(KDEPIMDIR)/microkde $(KDEPIMDIR)/microkde/kdecore $(KDEPIMDIR)/microkde/kio/kfile $(KDEPIMDIR)/microkde/kio/kio $(KDEPIMDIR)/microkde/kresources $(KDEPIMDIR)/qtcompat $(QPEDIR)/include $(OPIEDIR)/include
7 7
8 8
9OBJECTS_DIR = obj/$(PLATFORM) 9OBJECTS_DIR = obj/$(PLATFORM)
10MOC_DIR = moc/$(PLATFORM) 10MOC_DIR = moc/$(PLATFORM)
11DESTDIR = $(QPEDIR)/lib 11DESTDIR = $(QPEDIR)/lib
12LIBS += -lmicrokde 12LIBS += -lxmicrokde
13LIBS += -lmicrokabc 13LIBS += -lxmicrokabc
14LIBS += -L$(QPEDIR)/lib 14LIBS += -L$(QPEDIR)/lib
15LIBS += -L$(OPIEDIR)/lib 15LIBS += -L$(OPIEDIR)/lib
16LIBS += -lopie 16LIBS += -lopie
17LIBS += -lqpe 17LIBS += -lqpe
18LIBS += -lqte 18LIBS += -lqte
19 19
20INTERFACES = \ 20INTERFACES = \
21 21
22HEADERS = \ 22HEADERS = \
23 resourceopie.h \ 23 resourceopie.h \
24 resourceopieconfig.h \ 24 resourceopieconfig.h \
25 opieconverter.h \ 25 opieconverter.h \
26 26
27SOURCES = \ 27SOURCES = \
28 resourceopie.cpp \ 28 resourceopie.cpp \
29 resourceopieconfig.cpp \ 29 resourceopieconfig.cpp \
30 opieconverter.cpp \ 30 opieconverter.cpp \
31 31
diff --git a/kabc/plugins/qtopia/qtopia.pro b/kabc/plugins/qtopia/qtopia.pro
index 64d1abc..d91a2e3 100644
--- a/kabc/plugins/qtopia/qtopia.pro
+++ b/kabc/plugins/qtopia/qtopia.pro
@@ -1,43 +1,47 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2CONFIG += qt warn_on release 2CONFIG += qt warn_on release
3 3
4include( ../../../variables.pri ) 4include( ../../../variables.pri )
5 5
6TARGET = microkabc_qtopia 6TARGET = xmicrokabc_qtopia
7 7
8INCLUDEPATH += ../.. ../../.. ../../../kabc ../../../microkde ../../../microkde/kdecore ../../../microkde/kio/kfile ../../../microkde/kio/kio ../../../microkde/kresources 8INCLUDEPATH += ../.. ../../.. ../../../kabc ../../../microkde ../../../microkde/kdecore ../../../microkde/kio/kfile ../../../microkde/kio/kio ../../../microkde/kresources
9 9
10DESTDIR = ../../../bin 10DESTDIR = ../../../bin
11#LIBS += -lmicrokde 11#LIBS += -lxmicrokde
12#LIBS += -lkamicrokabc 12#LIBS += -lxkamicrokabc
13 13
14DEFINES += KAB_EMBEDDED DESKTOP_VERSION 14DEFINES += KAB_EMBEDDED DESKTOP_VERSION
15 15
16INTERFACES = \ 16INTERFACES = \
17 17
18HEADERS = \ 18HEADERS = \
19 resourceqtopia.h \ 19 resourceqtopia.h \
20 resourceqtopiaconfig.h \ 20 resourceqtopiaconfig.h \
21 qtopiaconverter.h 21 qtopiaconverter.h
22 22
23SOURCES = \ 23SOURCES = \
24 resourceqtopia.cpp \ 24 resourceqtopia.cpp \
25 resourceqtopiaconfig.cpp \ 25 resourceqtopiaconfig.cpp \
26 qtopiaconverter.cpp 26 qtopiaconverter.cpp
27 27
28 28
29 29
30unix : { 30unix : {
31OBJECTS_DIR = obj/unix 31OBJECTS_DIR = obj/unix
32MOC_DIR = moc/unix 32MOC_DIR = moc/unix
33} 33}
34win32: { 34win32: {
35CONFIG += dll 35CONFIG += dll
36DEFINES += _WIN32_ 36DEFINES += _WIN32_
37OBJECTS_DIR = obj/win 37OBJECTS_DIR = obj/win
38MOC_DIR = moc/win 38MOC_DIR = moc/win
39LIBS += ../../../bin/microkdepim.lib 39LIBS += ../../../bin/xmicrokdepim.lib
40LIBS += ../../../bin/microkcal.lib 40LIBS += ../../../bin/xmicrokcal.lib
41LIBS += ../../../bin/microkde.lib 41LIBS += ../../../bin/xmicrokde.lib
42LIBS += ../../../bin/microkabc.lib 42LIBS += ../../../bin/microkabc.lib
43} 43}
44#The following line was inserted by qt3to4
45QT += xml qt3support
46#The following line was inserted by qt3to4
47QT +=
diff --git a/kabc/plugins/qtopia/qtopiaE.pro b/kabc/plugins/qtopia/qtopiaE.pro
index 700057b..4b174b2 100644
--- a/kabc/plugins/qtopia/qtopiaE.pro
+++ b/kabc/plugins/qtopia/qtopiaE.pro
@@ -1,26 +1,26 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2CONFIG += qt warn_on 2CONFIG += qt warn_on
3 3
4TARGET = microkabc_qtopia 4TARGET = xmicrokabc_qtopia
5 5
6INCLUDEPATH += $(KDEPIMDIR) $(KDEPIMDIR)/kabc $(KDEPIMDIR)/microkde $(KDEPIMDIR)/microkde/kdecore $(KDEPIMDIR)/microkde/kio/kfile $(KDEPIMDIR)/microkde/kio/kio $(KDEPIMDIR)/microkde/kresources $(KDEPIMDIR)/qtcompat $(QPEDIR)/include 6INCLUDEPATH += $(KDEPIMDIR) $(KDEPIMDIR)/kabc $(KDEPIMDIR)/microkde $(KDEPIMDIR)/microkde/kdecore $(KDEPIMDIR)/microkde/kio/kfile $(KDEPIMDIR)/microkde/kio/kio $(KDEPIMDIR)/microkde/kresources $(KDEPIMDIR)/qtcompat $(QPEDIR)/include
7 7
8OBJECTS_DIR = obj/$(PLATFORM) 8OBJECTS_DIR = obj/$(PLATFORM)
9MOC_DIR = moc/$(PLATFORM) 9MOC_DIR = moc/$(PLATFORM)
10DESTDIR = $(QPEDIR)/lib 10DESTDIR = $(QPEDIR)/lib
11LIBS += -lmicrokde 11LIBS += -lxmicrokde
12LIBS += -lmicrokabc 12LIBS += -lxmicrokabc
13LIBS += -L$(QPEDIR)/lib 13LIBS += -L$(QPEDIR)/lib
14LIBS += -lqpe 14LIBS += -lqpe
15 15
16INTERFACES = \ 16INTERFACES = \
17 17
18HEADERS = \ 18HEADERS = \
19 resourceqtopia.h \ 19 resourceqtopia.h \
20 resourceqtopiaconfig.h \ 20 resourceqtopiaconfig.h \
21 qtopiaconverter.h 21 qtopiaconverter.h
22 22
23SOURCES = \ 23SOURCES = \
24 resourceqtopia.cpp \ 24 resourceqtopia.cpp \
25 resourceqtopiaconfig.cpp \ 25 resourceqtopiaconfig.cpp \
26 qtopiaconverter.cpp 26 qtopiaconverter.cpp
diff --git a/kabc/plugins/qtopia/qtopiaconverter.cpp b/kabc/plugins/qtopia/qtopiaconverter.cpp
index 9693a68..9b3903b 100644
--- a/kabc/plugins/qtopia/qtopiaconverter.cpp
+++ b/kabc/plugins/qtopia/qtopiaconverter.cpp
@@ -1,673 +1,675 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28//US 28//US
29#include "kglobal.h" 29#include "kglobal.h"
30#include "klocale.h" 30#include "klocale.h"
31 31
32 32
33#include "qtopiaconverter.h" 33#include "qtopiaconverter.h"
34 34
35#include <qfile.h> 35#include <qfile.h>
36#include <qdir.h> 36#include <qdir.h>
37#include <qtextstream.h> 37#include <q3textstream.h>
38//Added by qt3to4:
39#include <Q3ValueList>
38//#include <.h> 40//#include <.h>
39 41
40#include <libkdepim/ksyncprofile.h> 42#include <libkdepim/ksyncprofile.h>
41 43
42 44
43using namespace KABC; 45using namespace KABC;
44 46
45QtopiaConverter::QtopiaConverter() 47QtopiaConverter::QtopiaConverter()
46{ 48{
47 m_edit = 0; 49 m_edit = 0;
48} 50}
49 51
50QtopiaConverter::~QtopiaConverter() 52QtopiaConverter::~QtopiaConverter()
51{ 53{
52 deinit(); 54 deinit();
53} 55}
54 56
55bool QtopiaConverter::init() 57bool QtopiaConverter::init()
56{ 58{
57 QString fn = QDir::homeDirPath() +"/Settings/Categories.xml"; 59 QString fn = QDir::homeDirPath() +"/Settings/Categories.xml";
58 m_edit = new CategoryEdit( fn); 60 m_edit = new CategoryEdit( fn);
59 return true; 61 return true;
60} 62}
61 63
62void QtopiaConverter::deinit() 64void QtopiaConverter::deinit()
63{ 65{
64 if (m_edit) 66 if (m_edit)
65 { 67 {
66 delete m_edit; 68 delete m_edit;
67 m_edit = 0; 69 m_edit = 0;
68 } 70 }
69} 71}
70QString QtopiaConverter::categoriesToNumber( const QStringList &list, const QString &app ) 72QString QtopiaConverter::categoriesToNumber( const QStringList &list, const QString &app )
71{ 73{
72 startover: 74 startover:
73 QStringList dummy; 75 QStringList dummy;
74 QValueList<OpieCategories>::ConstIterator catIt; 76 Q3ValueList<OpieCategories>::ConstIterator catIt;
75 QValueList<OpieCategories> categories = m_edit->categories(); 77 Q3ValueList<OpieCategories> categories = m_edit->categories();
76 bool found = false; 78 bool found = false;
77 for ( QStringList::ConstIterator listIt = list.begin(); listIt != list.end(); ++listIt ) { 79 for ( QStringList::ConstIterator listIt = list.begin(); listIt != list.end(); ++listIt ) {
78 /* skip empty category name */ 80 /* skip empty category name */
79 if ( (*listIt).isEmpty() ) continue; 81 if ( (*listIt).isEmpty() ) continue;
80 82
81 found = false; 83 found = false;
82 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) { 84 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) {
83 /* 85 /*
84 * We currently do not take app into account 86 * We currently do not take app into account
85 * if name matches and the id isn't already in dummy we'll add it 87 * if name matches and the id isn't already in dummy we'll add it
86 */ 88 */
87 if ( (*catIt).name() == (*listIt) && !dummy.contains(( *catIt).id() ) ) { // the same name 89 if ( (*catIt).name() == (*listIt) && !dummy.contains(( *catIt).id() ) ) { // the same name
88 found= true; 90 found= true;
89 dummy << (*catIt).id(); 91 dummy << (*catIt).id();
90 } 92 }
91 } 93 }
92 /* if not found and the category is not empty 94 /* if not found and the category is not empty
93 * 95 *
94 * generate a new category and start over again 96 * generate a new category and start over again
95 * ugly goto to reiterate 97 * ugly goto to reiterate
96 */ 98 */
97 99
98 if ( !found && !(*listIt).isEmpty() ){ 100 if ( !found && !(*listIt).isEmpty() ){
99 m_edit->addCategory( app, (*listIt) ); // generate a new category 101 m_edit->addCategory( app, (*listIt) ); // generate a new category
100 goto startover; 102 goto startover;
101 } 103 }
102 } 104 }
103 105
104 return dummy.join(";"); 106 return dummy.join(";");
105} 107}
106 108
107 109
108// FROM TT timeconversion.cpp GPLed 110// FROM TT timeconversion.cpp GPLed
109QDate QtopiaConverter::fromString( const QString &datestr ) 111QDate QtopiaConverter::fromString( const QString &datestr )
110{ 112{
111 if (datestr.isEmpty() ) 113 if (datestr.isEmpty() )
112 return QDate(); 114 return QDate();
113 115
114 int monthPos = datestr.find('.'); 116 int monthPos = datestr.find('.');
115 int yearPos = datestr.find('.', monthPos+1 ); 117 int yearPos = datestr.find('.', monthPos+1 );
116 if ( monthPos == -1 || yearPos == -1 ) { 118 if ( monthPos == -1 || yearPos == -1 ) {
117 return QDate(); 119 return QDate();
118 } 120 }
119 int d = datestr.left( monthPos ).toInt(); 121 int d = datestr.left( monthPos ).toInt();
120 int m = datestr.mid( monthPos+1, yearPos - monthPos - 1 ).toInt(); 122 int m = datestr.mid( monthPos+1, yearPos - monthPos - 1 ).toInt();
121 int y = datestr.mid( yearPos+1 ).toInt(); 123 int y = datestr.mid( yearPos+1 ).toInt();
122 QDate date ( y,m,d ); 124 QDate date ( y,m,d );
123 125
124 126
125 return date; 127 return date;
126} 128}
127 129
128QDate QtopiaConverter::dateFromString( const QString& s ) 130QDate QtopiaConverter::dateFromString( const QString& s )
129{ 131{
130 QDate date; 132 QDate date;
131 133
132 if ( s.isEmpty() ) 134 if ( s.isEmpty() )
133 return date; 135 return date;
134 136
135 // Be backward compatible to old Opie format: 137 // Be backward compatible to old Opie format:
136 // Try to load old format. If it fails, try new ISO-Format! 138 // Try to load old format. If it fails, try new ISO-Format!
137 date = fromString ( s ); 139 date = fromString ( s );
138 if ( date.isValid() ) 140 if ( date.isValid() )
139 return date; 141 return date;
140 142
141 // Read ISO-Format (YYYYMMDD) 143 // Read ISO-Format (YYYYMMDD)
142 int year = s.mid(0, 4).toInt(); 144 int year = s.mid(0, 4).toInt();
143 int month = s.mid(4,2).toInt(); 145 int month = s.mid(4,2).toInt();
144 int day = s.mid(6,2).toInt(); 146 int day = s.mid(6,2).toInt();
145 147
146 // do some quick sanity checking 148 // do some quick sanity checking
147 if ( year < 1900 || year > 3000 ) 149 if ( year < 1900 || year > 3000 )
148 return date; 150 return date;
149 151
150 if ( month < 0 || month > 12 ) 152 if ( month < 0 || month > 12 )
151 return date; 153 return date;
152 154
153 if ( day < 0 || day > 31 ) 155 if ( day < 0 || day > 31 )
154 return date; 156 return date;
155 157
156 158
157 date.setYMD( year, month, day ); 159 date.setYMD( year, month, day );
158 160
159 if ( !date.isValid() ) 161 if ( !date.isValid() )
160 return QDate(); 162 return QDate();
161 163
162 164
163 return date; 165 return date;
164} 166}
165QString QtopiaConverter::dateToString( const QDate &d ) 167QString QtopiaConverter::dateToString( const QDate &d )
166{ 168{
167 if ( d.isNull() || !d.isValid() ) 169 if ( d.isNull() || !d.isValid() )
168 return QString::null; 170 return QString::null;
169 171
170 // ISO format in year, month, day (YYYYMMDD); e.g. 20021231 172 // ISO format in year, month, day (YYYYMMDD); e.g. 20021231
171 QString year = QString::number( d.year() ); 173 QString year = QString::number( d.year() );
172 QString month = QString::number( d.month() ); 174 QString month = QString::number( d.month() );
173 month = month.rightJustify( 2, '0' ); 175 month = month.rightJustify( 2, '0' );
174 QString day = QString::number( d.day() ); 176 QString day = QString::number( d.day() );
175 day = day.rightJustify( 2, '0' ); 177 day = day.rightJustify( 2, '0' );
176 178
177 QString str = year + month + day; 179 QString str = year + month + day;
178 180
179 return str; 181 return str;
180} 182}
181 183
182bool QtopiaConverter::qtopiaToAddressee( const QDomElement& el, Addressee &adr ) 184bool QtopiaConverter::qtopiaToAddressee( const QDomElement& el, Addressee &adr )
183{ 185{
184 { //LR 186 { //LR
185 187
186 adr.setUid( el.attribute("Uid" ) ); 188 adr.setUid( el.attribute("Uid" ) );
187 adr.setFamilyName( el.attribute( "LastName" ) ); 189 adr.setFamilyName( el.attribute( "LastName" ) );
188 adr.setGivenName( el.attribute( "FirstName" ) ); 190 adr.setGivenName( el.attribute( "FirstName" ) );
189 adr.setAdditionalName( el.attribute( "MiddleName" ) ); 191 adr.setAdditionalName( el.attribute( "MiddleName" ) );
190 adr.setSuffix( el.attribute( "Suffix" ) ); 192 adr.setSuffix( el.attribute( "Suffix" ) );
191 adr.setNickName( el.attribute( "Nickname" ) ); 193 adr.setNickName( el.attribute( "Nickname" ) );
192 194
193 QDate date = dateFromString( el.attribute( "Birthday" ) ); 195 QDate date = dateFromString( el.attribute( "Birthday" ) );
194 if ( date.isValid() ) 196 if ( date.isValid() )
195 adr.setBirthday( date ); 197 adr.setBirthday( (QDateTime)date );
196 198
197 adr.setRole( el.attribute( "JobTitle" ) ); 199 adr.setRole( el.attribute( "JobTitle" ) );
198 if ( !el.attribute( "FileAs" ).isEmpty() ) 200 if ( !el.attribute( "FileAs" ).isEmpty() )
199 adr.setFormattedName( el.attribute( "FileAs" ) ); 201 adr.setFormattedName( el.attribute( "FileAs" ) );
200 202
201 adr.setOrganization( el.attribute( "Company" ) ); 203 adr.setOrganization( el.attribute( "Company" ) );
202 204
203 KABC::PhoneNumber businessPhoneNum( el.attribute( "BusinessPhone" ), 205 KABC::PhoneNumber businessPhoneNum( el.attribute( "BusinessPhone" ),
204 KABC::PhoneNumber::Work | KABC::PhoneNumber::Pref ); 206 KABC::PhoneNumber::Work | KABC::PhoneNumber::Pref );
205 KABC::PhoneNumber businessFaxNum( el.attribute( "BusinessFax" ), 207 KABC::PhoneNumber businessFaxNum( el.attribute( "BusinessFax" ),
206 KABC::PhoneNumber::Work | KABC::PhoneNumber::Fax ); 208 KABC::PhoneNumber::Work | KABC::PhoneNumber::Fax );
207 KABC::PhoneNumber businessMobile( el.attribute( "BusinessMobile" ), 209 KABC::PhoneNumber businessMobile( el.attribute( "BusinessMobile" ),
208 KABC::PhoneNumber::Car ); 210 KABC::PhoneNumber::Car );
209 KABC::PhoneNumber businessPager( el.attribute( "BusinessPager" ), 211 KABC::PhoneNumber businessPager( el.attribute( "BusinessPager" ),
210 KABC::PhoneNumber::Pager ); 212 KABC::PhoneNumber::Pager );
211 if ( !businessPhoneNum.number().isEmpty() ) 213 if ( !businessPhoneNum.number().isEmpty() )
212 adr.insertPhoneNumber( businessPhoneNum ); 214 adr.insertPhoneNumber( businessPhoneNum );
213 if ( !businessFaxNum.number().isEmpty() ) 215 if ( !businessFaxNum.number().isEmpty() )
214 adr.insertPhoneNumber( businessFaxNum ); 216 adr.insertPhoneNumber( businessFaxNum );
215 if ( !businessMobile.number().isEmpty() ) 217 if ( !businessMobile.number().isEmpty() )
216 adr.insertPhoneNumber( businessMobile ); 218 adr.insertPhoneNumber( businessMobile );
217 if ( !businessPager.number().isEmpty() ) 219 if ( !businessPager.number().isEmpty() )
218 adr.insertPhoneNumber( businessPager ); 220 adr.insertPhoneNumber( businessPager );
219 221
220 // Handle multiple mail addresses 222 // Handle multiple mail addresses
221 QString DefaultEmail = el.attribute( "DefaultEmail" ); 223 QString DefaultEmail = el.attribute( "DefaultEmail" );
222 if ( !DefaultEmail.isEmpty() ) 224 if ( !DefaultEmail.isEmpty() )
223 adr.insertEmail( DefaultEmail, true ); // preferred 225 adr.insertEmail( DefaultEmail, true ); // preferred
224 226
225 QStringList Emails = QStringList::split(" ",el.attribute("Emails")); 227 QStringList Emails = QStringList::split(" ",el.attribute("Emails"));
226 int i; 228 int i;
227 for (i = 0;i < Emails.count();++i) { 229 for (i = 0;i < Emails.count();++i) {
228 if ( Emails[i] != DefaultEmail ) 230 if ( Emails[i] != DefaultEmail )
229 adr.insertEmail( Emails[i], false ); 231 adr.insertEmail( Emails[i], false );
230 } 232 }
231 233
232 KABC::PhoneNumber homePhoneNum( el.attribute( "HomePhone" ), 234 KABC::PhoneNumber homePhoneNum( el.attribute( "HomePhone" ),
233 KABC::PhoneNumber::Home | KABC::PhoneNumber::Pref); 235 KABC::PhoneNumber::Home | KABC::PhoneNumber::Pref);
234 KABC::PhoneNumber homeFax( el.attribute( "HomeFax" ), 236 KABC::PhoneNumber homeFax( el.attribute( "HomeFax" ),
235 KABC::PhoneNumber::Home | KABC::PhoneNumber::Fax ); 237 KABC::PhoneNumber::Home | KABC::PhoneNumber::Fax );
236 238
237 KABC::PhoneNumber homeMobile( el.attribute( "HomeMobile" ), 239 KABC::PhoneNumber homeMobile( el.attribute( "HomeMobile" ),
238 KABC::PhoneNumber::Cell ); 240 KABC::PhoneNumber::Cell );
239 241
240 if ( !homePhoneNum.number().isEmpty() ) 242 if ( !homePhoneNum.number().isEmpty() )
241 adr.insertPhoneNumber( homePhoneNum ); 243 adr.insertPhoneNumber( homePhoneNum );
242 if ( !homeFax.number().isEmpty() ) 244 if ( !homeFax.number().isEmpty() )
243 adr.insertPhoneNumber( homeFax ); 245 adr.insertPhoneNumber( homeFax );
244 if ( !homeMobile.number().isEmpty() ) 246 if ( !homeMobile.number().isEmpty() )
245 adr.insertPhoneNumber( homeMobile ); 247 adr.insertPhoneNumber( homeMobile );
246 248
247 KABC::Address business( KABC::Address::Work ); 249 KABC::Address business( KABC::Address::Work );
248 business.setStreet( el.attribute( "BusinessStreet" ) ); 250 business.setStreet( el.attribute( "BusinessStreet" ) );
249 business.setLocality( el.attribute( "BusinessCity" ) ); 251 business.setLocality( el.attribute( "BusinessCity" ) );
250 business.setRegion( el.attribute( "BusinessState" ) ); 252 business.setRegion( el.attribute( "BusinessState" ) );
251 business.setPostalCode( el.attribute( "BusinessZip" ) ); 253 business.setPostalCode( el.attribute( "BusinessZip" ) );
252 business.setCountry( el.attribute( "BusinessCountry" ) ); 254 business.setCountry( el.attribute( "BusinessCountry" ) );
253 255
254 if ( !business.isEmpty() ) 256 if ( !business.isEmpty() )
255 adr.insertAddress( business ); 257 adr.insertAddress( business );
256 258
257 KABC::Address home( KABC::Address::Home ); 259 KABC::Address home( KABC::Address::Home );
258 home.setStreet( el.attribute( "HomeStreet" ) ); 260 home.setStreet( el.attribute( "HomeStreet" ) );
259 home.setLocality( el.attribute( "HomeCity" ) ); 261 home.setLocality( el.attribute( "HomeCity" ) );
260 home.setRegion( el.attribute( "HomeState" ) ); 262 home.setRegion( el.attribute( "HomeState" ) );
261 home.setPostalCode( el.attribute( "HomeZip" ) ); 263 home.setPostalCode( el.attribute( "HomeZip" ) );
262 home.setCountry( el.attribute( "HomeCountry" ) ); 264 home.setCountry( el.attribute( "HomeCountry" ) );
263 265
264 if ( !home.isEmpty() ) 266 if ( !home.isEmpty() )
265 adr.insertAddress( home ); 267 adr.insertAddress( home );
266 268
267 adr.setNickName( el.attribute( "Nickname" ) ); 269 adr.setNickName( el.attribute( "Nickname" ) );
268 adr.setNote( el.attribute( "Notes" ) ); 270 adr.setNote( el.attribute( "Notes" ) );
269 271
270 { 272 {
271 QStringList categories = QStringList::split(";", el.attribute("Categories" ) ); 273 QStringList categories = QStringList::split(";", el.attribute("Categories" ) );
272 QString cat; 274 QString cat;
273 QStringList added; 275 QStringList added;
274 for ( uint i = 0; i < categories.count(); i++ ) { 276 for ( uint i = 0; i < categories.count(); i++ ) {
275 cat = m_edit->categoryById( categories[ i ], "Contacts" ); 277 cat = m_edit->categoryById( categories[ i ], "Contacts" );
276 278
277 // if name is not empty and we did not add the 279 // if name is not empty and we did not add the
278 // cat try to repair broken files 280 // cat try to repair broken files
279 if ( !cat.isEmpty() && !added.contains( cat ) ) { 281 if ( !cat.isEmpty() && !added.contains( cat ) ) {
280 adr.insertCategory( cat ); 282 adr.insertCategory( cat );
281 added << cat; 283 added << cat;
282 } 284 }
283 } 285 }
284 } 286 }
285 287
286 if ( !el.attribute( "Department" ).isEmpty() ) 288 if ( !el.attribute( "Department" ).isEmpty() )
287 adr.insertCustom( "KADDRESSBOOK", "X-Department", el.attribute( "Department" ) ); 289 adr.insertCustom( "KADDRESSBOOK", "X-Department", el.attribute( "Department" ) );
288 if ( !el.attribute( "HomeWebPage" ).isEmpty() ) 290 if ( !el.attribute( "HomeWebPage" ).isEmpty() )
289 adr.insertCustom( "opie", "HomeWebPage", el.attribute( "HomeWebPage" ) ); 291 adr.insertCustom( "opie", "HomeWebPage", el.attribute( "HomeWebPage" ) );
290 if ( !el.attribute( "Spouse" ).isEmpty() ) 292 if ( !el.attribute( "Spouse" ).isEmpty() )
291 adr.insertCustom( "KADDRESSBOOK", "X-SpousesName", el.attribute( "Spouse" ) ); 293 adr.insertCustom( "KADDRESSBOOK", "X-SpousesName", el.attribute( "Spouse" ) );
292 if ( !el.attribute( "Gender" ).isEmpty() ) { 294 if ( !el.attribute( "Gender" ).isEmpty() ) {
293 if ( el.attribute( "Gender" ) == "1" ) 295 if ( el.attribute( "Gender" ) == "1" )
294 adr.insertCustom( "KADDRESSBOOK", "X-Gender", "male" ); 296 adr.insertCustom( "KADDRESSBOOK", "X-Gender", "male" );
295 else if ( el.attribute( "Gender" ) == "2" ) 297 else if ( el.attribute( "Gender" ) == "2" )
296 adr.insertCustom( "KADDRESSBOOK", "X-Gender", "female" ); 298 adr.insertCustom( "KADDRESSBOOK", "X-Gender", "female" );
297 } 299 }
298 QDate ann = dateFromString( el.attribute( "Anniversary" ) ); 300 QDate ann = dateFromString( el.attribute( "Anniversary" ) );
299 if ( ann.isValid() ) { 301 if ( ann.isValid() ) {
300 QString dt = KGlobal::locale()->formatDate(ann, true, KLocale::ISODate); 302 QString dt = KGlobal::locale()->formatDate(ann, true, KLocale::ISODate);
301 adr.insertCustom( "KADDRESSBOOK", "X-Anniversary", dt ); 303 adr.insertCustom( "KADDRESSBOOK", "X-Anniversary", dt );
302 } 304 }
303 305
304 if ( !el.attribute( "Children" ).isEmpty() ) 306 if ( !el.attribute( "Children" ).isEmpty() )
305 adr.insertCustom("KADDRESSBOOK", "X-Children", el.attribute("Children") ); 307 adr.insertCustom("KADDRESSBOOK", "X-Children", el.attribute("Children") );
306 if ( !el.attribute( "Office" ).isEmpty() ) 308 if ( !el.attribute( "Office" ).isEmpty() )
307 adr.insertCustom("KADDRESSBOOK", "X-Office", el.attribute("Office") ); 309 adr.insertCustom("KADDRESSBOOK", "X-Office", el.attribute("Office") );
308 if ( !el.attribute( "Profession" ).isEmpty() ) 310 if ( !el.attribute( "Profession" ).isEmpty() )
309 adr.insertCustom("KADDRESSBOOK", "X-Profession", el.attribute("Profession") ); 311 adr.insertCustom("KADDRESSBOOK", "X-Profession", el.attribute("Profession") );
310 if ( !el.attribute( "Assistant" ).isEmpty() ) 312 if ( !el.attribute( "Assistant" ).isEmpty() )
311 adr.insertCustom("KADDRESSBOOK", "X-AssistantsName", el.attribute("Assistant") ); 313 adr.insertCustom("KADDRESSBOOK", "X-AssistantsName", el.attribute("Assistant") );
312 if ( !el.attribute( "Manager" ).isEmpty() ) 314 if ( !el.attribute( "Manager" ).isEmpty() )
313 adr.insertCustom("KADDRESSBOOK", "X-ManagersName", el.attribute("Manager") ); 315 adr.insertCustom("KADDRESSBOOK", "X-ManagersName", el.attribute("Manager") );
314 316
315 317
316 } 318 }
317 return true; 319 return true;
318} 320}
319 321
320bool QtopiaConverter::addresseeToQtopia( const Addressee &ab, QTextStream *stream ) 322bool QtopiaConverter::addresseeToQtopia( const Addressee &ab, Q3TextStream *stream )
321{ 323{
322 *stream << "<Contact "; 324 *stream << "<Contact ";
323 *stream << "FirstName=\"" << escape(ab.givenName()) << "\" "; 325 *stream << "FirstName=\"" << escape(ab.givenName()) << "\" ";
324 *stream << "MiddleName=\"" << escape(ab.additionalName()) << "\" "; 326 *stream << "MiddleName=\"" << escape(ab.additionalName()) << "\" ";
325 *stream << "LastName=\"" << escape(ab.familyName()) << "\" "; 327 *stream << "LastName=\"" << escape(ab.familyName()) << "\" ";
326 *stream << "Suffix=\"" << escape(ab.suffix()) << "\" "; 328 *stream << "Suffix=\"" << escape(ab.suffix()) << "\" ";
327 329
328 QString sortStr; 330 QString sortStr;
329 sortStr = ab.formattedName(); 331 sortStr = ab.formattedName();
330 /* is formattedName is empty we use the assembled name as fallback */ 332 /* is formattedName is empty we use the assembled name as fallback */
331 if (sortStr.isEmpty() ) 333 if (sortStr.isEmpty() )
332 sortStr = ab.assembledName(); 334 sortStr = ab.assembledName();
333 *stream << "FileAs=\"" << escape(sortStr) << "\" "; 335 *stream << "FileAs=\"" << escape(sortStr) << "\" ";
334 336
335 *stream << "JobTitle=\"" << escape(ab.role()) << "\" "; 337 *stream << "JobTitle=\"" << escape(ab.role()) << "\" ";
336 *stream << "Department=\"" << escape(ab.custom( "KADDRESSBOOK", "X-Department" )) << "\" "; 338 *stream << "Department=\"" << escape(ab.custom( "KADDRESSBOOK", "X-Department" )) << "\" ";
337 *stream << "Company=\"" << escape(ab.organization()) << "\" "; 339 *stream << "Company=\"" << escape(ab.organization()) << "\" ";
338 340
339 KABC::PhoneNumber businessPhoneNum = ab.phoneNumber(KABC::PhoneNumber::Work ); 341 KABC::PhoneNumber businessPhoneNum = ab.phoneNumber(KABC::PhoneNumber::Work );
340 *stream << "BusinessPhone=\"" << escape( businessPhoneNum.number() ) << "\" "; 342 *stream << "BusinessPhone=\"" << escape( businessPhoneNum.number() ) << "\" ";
341 343
342 KABC::PhoneNumber businessFaxNum = ab.phoneNumber(KABC::PhoneNumber::Work | KABC::PhoneNumber::Fax ); 344 KABC::PhoneNumber businessFaxNum = ab.phoneNumber(KABC::PhoneNumber::Work | KABC::PhoneNumber::Fax );
343 *stream << "BusinessFax=\"" << escape( businessFaxNum.number() )<< "\" "; 345 *stream << "BusinessFax=\"" << escape( businessFaxNum.number() )<< "\" ";
344 346
345 KABC::PhoneNumber businessMobile = ab.phoneNumber(KABC::PhoneNumber::Work | KABC::PhoneNumber::Cell ); 347 KABC::PhoneNumber businessMobile = ab.phoneNumber(KABC::PhoneNumber::Work | KABC::PhoneNumber::Cell );
346 *stream << "BusinessMobile=\"" << escape( businessMobile.number() ) << "\" "; 348 *stream << "BusinessMobile=\"" << escape( businessMobile.number() ) << "\" ";
347 349
348 *stream << "DefaultEmail=\"" << escape( ab.preferredEmail() ) << "\" "; 350 *stream << "DefaultEmail=\"" << escape( ab.preferredEmail() ) << "\" ";
349 QStringList list = ab.emails(); 351 QStringList list = ab.emails();
350 if ( list.count() > 0 ) { 352 if ( list.count() > 0 ) {
351 QStringList::Iterator it = list.begin(); 353 QStringList::Iterator it = list.begin();
352 *stream << "Emails=\"" << escape( *it ); 354 *stream << "Emails=\"" << escape( *it );
353 while (++it != list.end()) 355 while (++it != list.end())
354 *stream << ' ' << escape( *it ); 356 *stream << ' ' << escape( *it );
355 *stream << "\" "; 357 *stream << "\" ";
356 } 358 }
357 359
358 KABC::PhoneNumber homePhoneNum = ab.phoneNumber(KABC::PhoneNumber::Home ); 360 KABC::PhoneNumber homePhoneNum = ab.phoneNumber(KABC::PhoneNumber::Home );
359 *stream << "HomePhone=\"" << escape( homePhoneNum.number() ) << "\" "; 361 *stream << "HomePhone=\"" << escape( homePhoneNum.number() ) << "\" ";
360 362
361 KABC::PhoneNumber homeFax = ab.phoneNumber( KABC::PhoneNumber::Home | KABC::PhoneNumber::Fax ); 363 KABC::PhoneNumber homeFax = ab.phoneNumber( KABC::PhoneNumber::Home | KABC::PhoneNumber::Fax );
362 *stream << "HomeFax=\"" << escape( homeFax.number() ) << "\" "; 364 *stream << "HomeFax=\"" << escape( homeFax.number() ) << "\" ";
363 365
364 KABC::PhoneNumber homeMobile = ab.phoneNumber( KABC::PhoneNumber::Cell ); 366 KABC::PhoneNumber homeMobile = ab.phoneNumber( KABC::PhoneNumber::Cell );
365 *stream << "HomeMobile=\"" << escape( homeMobile.number() ) << "\" "; 367 *stream << "HomeMobile=\"" << escape( homeMobile.number() ) << "\" ";
366 368
367 KABC::Address business = ab.address(KABC::Address::Work ); 369 KABC::Address business = ab.address(KABC::Address::Work );
368 *stream << "BusinessStreet=\"" << escape( business.street() ) << "\" "; 370 *stream << "BusinessStreet=\"" << escape( business.street() ) << "\" ";
369 *stream << "BusinessCity=\"" << escape( business.locality() ) << "\" "; 371 *stream << "BusinessCity=\"" << escape( business.locality() ) << "\" ";
370 *stream << "BusinessZip=\"" << escape( business.postalCode() ) << "\" "; 372 *stream << "BusinessZip=\"" << escape( business.postalCode() ) << "\" ";
371 *stream << "BusinessCountry=\"" << escape( business.country() ) << "\" "; 373 *stream << "BusinessCountry=\"" << escape( business.country() ) << "\" ";
372 *stream << "BusinessState=\"" << escape( business.region() ) << "\" "; 374 *stream << "BusinessState=\"" << escape( business.region() ) << "\" ";
373 //stream << "BusinessPager=\"" << << "\" "; 375 //stream << "BusinessPager=\"" << << "\" ";
374 *stream << "Office=\"" << escape( ab.custom( "KADDRESSBOOK", "X-Office" ) ) << "\" "; 376 *stream << "Office=\"" << escape( ab.custom( "KADDRESSBOOK", "X-Office" ) ) << "\" ";
375 *stream << "Profession=\"" << escape( ab.custom( "KADDRESSBOOK", "X-Profession" ) ) << "\" "; 377 *stream << "Profession=\"" << escape( ab.custom( "KADDRESSBOOK", "X-Profession" ) ) << "\" ";
376 *stream << "Assistant=\"" << escape( ab.custom( "KADDRESSBOOK", "X-AssistantsName") ) << "\" "; 378 *stream << "Assistant=\"" << escape( ab.custom( "KADDRESSBOOK", "X-AssistantsName") ) << "\" ";
377 *stream << "Manager=\"" << escape( ab.custom( "KADDRESSBOOK", "X-ManagersName" ) ) << "\" "; 379 *stream << "Manager=\"" << escape( ab.custom( "KADDRESSBOOK", "X-ManagersName" ) ) << "\" ";
378 380
379 KABC::Address home = ab.address( KABC::Address::Home ); 381 KABC::Address home = ab.address( KABC::Address::Home );
380 *stream << "HomeStreet=\"" << escape( home.street() ) << "\" "; 382 *stream << "HomeStreet=\"" << escape( home.street() ) << "\" ";
381 *stream << "HomeCity=\"" << escape( home.locality() ) << "\" "; 383 *stream << "HomeCity=\"" << escape( home.locality() ) << "\" ";
382 *stream << "HomeState=\"" << escape( home.region() ) << "\" "; 384 *stream << "HomeState=\"" << escape( home.region() ) << "\" ";
383 *stream << "HomeZip=\"" << escape( home.postalCode() ) << "\" "; 385 *stream << "HomeZip=\"" << escape( home.postalCode() ) << "\" ";
384 *stream << "HomeCountry=\"" << escape( home.country() ) << "\" "; 386 *stream << "HomeCountry=\"" << escape( home.country() ) << "\" ";
385 387
386 *stream << "HomeWebPage=\"" << escape( ab.custom( "opie", "HomeWebPage" ) ) << "\" "; 388 *stream << "HomeWebPage=\"" << escape( ab.custom( "opie", "HomeWebPage" ) ) << "\" ";
387 *stream << "Spouse=\"" << escape( ab.custom( "KADDRESSBOOK", "X-SpousesName") ) << "\" "; 389 *stream << "Spouse=\"" << escape( ab.custom( "KADDRESSBOOK", "X-SpousesName") ) << "\" ";
388 QString gen = "0"; 390 QString gen = "0";
389 if ( ab.custom( "KADDRESSBOOK", "X-Gender") == "male" ) 391 if ( ab.custom( "KADDRESSBOOK", "X-Gender") == "male" )
390 gen = "1"; 392 gen = "1";
391 else if ( ab.custom( "KADDRESSBOOK", "X-Gender") == "female" ) 393 else if ( ab.custom( "KADDRESSBOOK", "X-Gender") == "female" )
392 gen = "2"; 394 gen = "2";
393 *stream << "Gender=\"" << escape( gen ) << "\" "; 395 *stream << "Gender=\"" << escape( gen ) << "\" ";
394 396
395 if ( ab.birthday().date().isValid() ) 397 if ( ab.birthday().date().isValid() )
396 *stream << "Birthday=\"" << escape( dateToString(ab.birthday().date() ) ) << "\" "; 398 *stream << "Birthday=\"" << escape( dateToString(ab.birthday().date() ) ) << "\" ";
397 399
398 { 400 {
399 QDate ann = KGlobal::locale()->readDate( ab.custom("KADDRESSBOOK", "X-Anniversary" ), 401 QDate ann = KGlobal::locale()->readDate( ab.custom("KADDRESSBOOK", "X-Anniversary" ),
400 "%Y-%m-%d"); 402 "%Y-%m-%d");
401 if (ann.isValid() ) { 403 if (ann.isValid() ) {
402 *stream << "Anniversary=\"" << escape( dateToString( ann ) ) << "\" "; 404 *stream << "Anniversary=\"" << escape( dateToString( ann ) ) << "\" ";
403 } 405 }
404 } 406 }
405 *stream << "Nickname=\"" << escape( ab.nickName() ) << "\" "; 407 *stream << "Nickname=\"" << escape( ab.nickName() ) << "\" ";
406 *stream << "Children=\"" << escape( ab.custom("KADDRESSBOOK", "X-Children" ) ) << "\" "; 408 *stream << "Children=\"" << escape( ab.custom("KADDRESSBOOK", "X-Children" ) ) << "\" ";
407 *stream << "Notes=\"" << escape( ab.note() ) << "\" "; 409 *stream << "Notes=\"" << escape( ab.note() ) << "\" ";
408 *stream << "Categories=\"" << categoriesToNumber( ab.categories(), "Contacts") << "\" "; 410 *stream << "Categories=\"" << categoriesToNumber( ab.categories(), "Contacts") << "\" ";
409 411
410 QString uid = ab.uid(); 412 QString uid = ab.uid();
411 *stream << "Uid=\"" << uid << "\" "; 413 *stream << "Uid=\"" << uid << "\" ";
412 //*stream << map.toString( "addressbook", uid ); 414 //*stream << map.toString( "addressbook", uid );
413 *stream << " />" << "\n"; 415 *stream << " />" << "\n";
414 416
415 return true; 417 return true;
416} 418}
417 419
418 420
419#if 0 421#if 0
420 422
421KTempFile* AddressBook::fromKDE( KSync::AddressBookSyncee *syncee, ExtraMap& map ) 423KTempFile* AddressBook::fromKDE( KSync::AddressBookSyncee *syncee, ExtraMap& map )
422{ 424{
423 425
424} 426}
425 427
426QStringList AddressBook::attributes()const { 428QStringList AddressBook::attributes()const {
427 QStringList lst; 429 QStringList lst;
428 lst << "FirstName"; 430 lst << "FirstName";
429 lst << "MiddleName"; 431 lst << "MiddleName";
430 lst << "LastName"; 432 lst << "LastName";
431 lst << "Suffix"; 433 lst << "Suffix";
432 lst << "FileAs"; 434 lst << "FileAs";
433 lst << "JobTitle"; 435 lst << "JobTitle";
434 lst << "Department"; 436 lst << "Department";
435 lst << "Company"; 437 lst << "Company";
436 lst << "BusinessPhone"; 438 lst << "BusinessPhone";
437 lst << "BusinessFax"; 439 lst << "BusinessFax";
438 lst << "BusinessMobile"; 440 lst << "BusinessMobile";
439 lst << "DefaultEmail"; 441 lst << "DefaultEmail";
440 lst << "Emails"; 442 lst << "Emails";
441 lst << "HomePhone"; 443 lst << "HomePhone";
442 lst << "HomeFax"; 444 lst << "HomeFax";
443 lst << "HomeMobile"; 445 lst << "HomeMobile";
444 lst << "BusinessStreet"; 446 lst << "BusinessStreet";
445 lst << "BusinessCity"; 447 lst << "BusinessCity";
446 lst << "BusinessZip"; 448 lst << "BusinessZip";
447 lst << "BusinessCountry"; 449 lst << "BusinessCountry";
448 lst << "BusinessState"; 450 lst << "BusinessState";
449 lst << "Office"; 451 lst << "Office";
450 lst << "Profession"; 452 lst << "Profession";
451 lst << "Assistant"; 453 lst << "Assistant";
452 lst << "Manager"; 454 lst << "Manager";
453 lst << "HomeStreet"; 455 lst << "HomeStreet";
454 lst << "HomeCity"; 456 lst << "HomeCity";
455 lst << "HomeState"; 457 lst << "HomeState";
456 lst << "HomeZip"; 458 lst << "HomeZip";
457 lst << "HomeCountry"; 459 lst << "HomeCountry";
458 lst << "HomeWebPage"; 460 lst << "HomeWebPage";
459 lst << "Spouse"; 461 lst << "Spouse";
460 lst << "Gender"; 462 lst << "Gender";
461 lst << "Anniversary"; 463 lst << "Anniversary";
462 lst << "Nickname"; 464 lst << "Nickname";
463 lst << "Children"; 465 lst << "Children";
464 lst << "Notes"; 466 lst << "Notes";
465 lst << "Categories"; 467 lst << "Categories";
466 lst << "Uid"; 468 lst << "Uid";
467 lst << "Birthday"; 469 lst << "Birthday";
468 470
469 return lst; 471 return lst;
470} 472}
471 473
472 474
473 475
474#endif 476#endif
475 477
476 478
477CategoryEdit::CategoryEdit(){ 479CategoryEdit::CategoryEdit(){
478} 480}
479CategoryEdit::CategoryEdit(const QString &fileName){ 481CategoryEdit::CategoryEdit(const QString &fileName){
480 parse( fileName ); 482 parse( fileName );
481} 483}
482CategoryEdit::~CategoryEdit(){ 484CategoryEdit::~CategoryEdit(){
483} 485}
484void CategoryEdit::save(const QString& fileName)const{ 486void CategoryEdit::save(const QString& fileName)const{
485 QFile file( fileName ); 487 QFile file( fileName );
486 QString endl = "\n"; 488 QString endl = "\n";
487 if ( file.open( IO_WriteOnly ) ) { 489 if ( file.open( QIODevice::WriteOnly ) ) {
488 QTextStream stream( &file ); 490 Q3TextStream stream( &file );
489 stream.setEncoding( QTextStream::UnicodeUTF8 ); 491 stream.setEncoding( Q3TextStream::UnicodeUTF8 );
490 stream << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << endl; 492 stream << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << endl;
491 stream << "<!DOCTYPE CategoryList>" << endl; 493 stream << "<!DOCTYPE CategoryList>" << endl;
492 stream << "<Categories>" << endl; 494 stream << "<Categories>" << endl;
493 for ( QValueList<OpieCategories>::ConstIterator it = m_categories.begin(); 495 for ( Q3ValueList<OpieCategories>::ConstIterator it = m_categories.begin();
494 it != m_categories.end(); ++it ) 496 it != m_categories.end(); ++it )
495 { 497 {
496 stream << "<Category id=\""<< ( (*it).id() ) << "\" "; 498 stream << "<Category id=\""<< ( (*it).id() ) << "\" ";
497 499
498 if ( !(*it).app().isEmpty() ) 500 if ( !(*it).app().isEmpty() )
499 stream << " app=\""<< ( (*it).app() ) << "\" "; 501 stream << " app=\""<< ( (*it).app() ) << "\" ";
500 502
501 stream << "name=\"" << ( (*it).name() ) << "\" "; 503 stream << "name=\"" << ( (*it).name() ) << "\" ";
502 stream << " />" << endl; 504 stream << " />" << endl;
503 } 505 }
504 stream << "</Categories>" << endl; 506 stream << "</Categories>" << endl;
505 file.close(); 507 file.close();
506 } 508 }
507} 509}
508int CategoryEdit::addCategory( const QString &name, int id ){ 510int CategoryEdit::addCategory( const QString &name, int id ){
509 return addCategory( QString::null, name, id ); 511 return addCategory( QString::null, name, id );
510} 512}
511int CategoryEdit::addCategory( const QString &appName, const QString &name, int id ){ 513int CategoryEdit::addCategory( const QString &appName, const QString &name, int id ){
512 if ( id == 0 ) { 514 if ( id == 0 ) {
513 // code from tt 515 // code from tt
514 //generate uid 516 //generate uid
515 QDateTime dt = QDateTime::currentDateTime(); 517 QDateTime dt = QDateTime::currentDateTime();
516 id = -1 * (int) dt.secsTo( QDateTime(QDate( 2000,1,1)) ); 518 id = -1 * (int) dt.secsTo( QDateTime(QDate( 2000,1,1)) );
517 while ( ids.contains( id ) ){ 519 while ( ids.contains( id ) ){
518 id += -1; 520 id += -1;
519 if ( id > 0 ) 521 if ( id > 0 )
520 id = -1; 522 id = -1;
521 } 523 }
522 } 524 }
523 ids.insert( id, TRUE ); 525 ids.insert( id, TRUE );
524 OpieCategories categories(QString::number(id), name, appName); 526 OpieCategories categories(QString::number(id), name, appName);
525 //pending FIXME LR m_categories.remove( categories); 527 //pending FIXME LR m_categories.remove( categories);
526 m_categories.append( categories); 528 m_categories.append( categories);
527 return id; 529 return id;
528} 530}
529/* 531/*
530 * we parse the simple Category File here 532 * we parse the simple Category File here
531 * We also keep track of global Cats 533 * We also keep track of global Cats
532 * and Of Organizer and Contact cats and then 534 * and Of Organizer and Contact cats and then
533 * we will add them to the kde side... 535 * we will add them to the kde side...
534 */ 536 */
535void CategoryEdit::parse( const QString &tempFile ){ 537void CategoryEdit::parse( const QString &tempFile ){
536 clear(); 538 clear();
537 539
538 QDomDocument doc( "mydocument" ); 540 QDomDocument doc( "mydocument" );
539 QFile f( tempFile ); 541 QFile f( tempFile );
540 if ( !f.open( IO_ReadOnly ) ) 542 if ( !f.open( QIODevice::ReadOnly ) )
541 return; 543 return;
542 544
543 if ( !doc.setContent( &f ) ) { 545 if ( !doc.setContent( &f ) ) {
544 f.close(); 546 f.close();
545 return; 547 return;
546 } 548 }
547 f.close(); 549 f.close();
548 550
549 QStringList global, contact, organizer; 551 QStringList global, contact, organizer;
550 552
551 // print out the element names of all elements that are a direct child 553 // print out the element names of all elements that are a direct child
552 // of the outermost element. 554 // of the outermost element.
553 QDomElement docElem = doc.documentElement(); 555 QDomElement docElem = doc.documentElement();
554 QDomNode n = docElem.firstChild(); 556 QDomNode n = docElem.firstChild();
555 if( docElem.nodeName() == QString::fromLatin1("Categories") ){ 557 if( docElem.nodeName() == QString::fromLatin1("Categories") ){
556 while( !n.isNull() ) { 558 while( !n.isNull() ) {
557 QDomElement e = n.toElement(); // try to convert the node to an element. 559 QDomElement e = n.toElement(); // try to convert the node to an element.
558 if( !e.isNull() ) { // the node was really an element. 560 if( !e.isNull() ) { // the node was really an element.
559 QString id = e.attribute("id" ); 561 QString id = e.attribute("id" );
560 QString app = e.attribute("app" ); 562 QString app = e.attribute("app" );
561 QString name = e.attribute("name"); 563 QString name = e.attribute("name");
562 564
563 /* 565 /*
564 * see where it belongs default to global 566 * see where it belongs default to global
565 */ 567 */
566 if (app == QString::fromLatin1("Calendar") || app == QString::fromLatin1("Todo List") ) 568 if (app == QString::fromLatin1("Calendar") || app == QString::fromLatin1("Todo List") )
567 organizer.append( name ); 569 organizer.append( name );
568 else if ( app == QString::fromLatin1("Contacts") ) 570 else if ( app == QString::fromLatin1("Contacts") )
569 contact.append( name ); 571 contact.append( name );
570 else 572 else
571 global.append( name ); 573 global.append( name );
572 574
573 OpieCategories category( id, name, app ); 575 OpieCategories category( id, name, app );
574 m_categories.append( category ); // cheater 576 m_categories.append( category ); // cheater
575 } 577 }
576 n = n.nextSibling(); 578 n = n.nextSibling();
577 } 579 }
578 } 580 }
579 updateKDE( "kaddressbookrc", global + contact ); 581 updateKDE( "kaddressbookrc", global + contact );
580 updateKDE( "korganizerrc", global + organizer ); 582 updateKDE( "korganizerrc", global + organizer );
581 583
582} 584}
583void CategoryEdit::clear() 585void CategoryEdit::clear()
584{ 586{
585 ids.clear(); 587 ids.clear();
586 m_categories.clear(); 588 m_categories.clear();
587} 589}
588QString CategoryEdit::categoryById( const QString &id, const QString &app )const 590QString CategoryEdit::categoryById( const QString &id, const QString &app )const
589{ 591{
590 QValueList<OpieCategories>::ConstIterator it; 592 Q3ValueList<OpieCategories>::ConstIterator it;
591 QString category; 593 QString category;
592 QString fallback; 594 QString fallback;
593 for( it = m_categories.begin(); it != m_categories.end(); ++it ){ 595 for( it = m_categories.begin(); it != m_categories.end(); ++it ){
594 if( id.stripWhiteSpace() == (*it).id().stripWhiteSpace() ){ 596 if( id.stripWhiteSpace() == (*it).id().stripWhiteSpace() ){
595 if( app == (*it).app() ){ 597 if( app == (*it).app() ){
596 category = (*it).name(); 598 category = (*it).name();
597 break; 599 break;
598 }else{ 600 }else{
599 fallback = (*it).name(); 601 fallback = (*it).name();
600 } 602 }
601 } 603 }
602 } 604 }
603 return category.isEmpty() ? fallback : category; 605 return category.isEmpty() ? fallback : category;
604} 606}
605QStringList CategoryEdit::categoriesByIds( const QStringList& ids, 607QStringList CategoryEdit::categoriesByIds( const QStringList& ids,
606 const QString& app) { 608 const QString& app) {
607 609
608 QStringList list; 610 QStringList list;
609 QStringList::ConstIterator it; 611 QStringList::ConstIterator it;
610 QString temp; 612 QString temp;
611 for ( it = ids.begin(); it != ids.end(); ++it ) { 613 for ( it = ids.begin(); it != ids.end(); ++it ) {
612 temp = categoryById( (*it), app ); 614 temp = categoryById( (*it), app );
613 if (!temp.isEmpty() ) 615 if (!temp.isEmpty() )
614 list << temp; 616 list << temp;
615 } 617 }
616 618
617 return list; 619 return list;
618} 620}
619void CategoryEdit::updateKDE( const QString& configFile, const QStringList& cats ) { 621void CategoryEdit::updateKDE( const QString& configFile, const QStringList& cats ) {
620 KConfig conf(configFile); 622 KConfig conf(configFile);
621 conf.setGroup("General"); 623 conf.setGroup("General");
622 QStringList avail = conf.readListEntry("Custom Categories"); 624 QStringList avail = conf.readListEntry("Custom Categories");
623 for (QStringList::ConstIterator it = cats.begin(); it != cats.end(); ++it ) { 625 for (QStringList::ConstIterator it = cats.begin(); it != cats.end(); ++it ) {
624 if (!avail.contains( (*it) ) ) 626 if (!avail.contains( (*it) ) )
625 avail << (*it); 627 avail << (*it);
626 } 628 }
627 conf.writeEntry("Custom Categories", avail ); 629 conf.writeEntry("Custom Categories", avail );
628} 630}
629 631
630 632
631 633
632OpieCategories::OpieCategories() 634OpieCategories::OpieCategories()
633{ 635{
634 636
635} 637}
636OpieCategories::OpieCategories(const QString &id, const QString &name, const QString &app ) 638OpieCategories::OpieCategories(const QString &id, const QString &name, const QString &app )
637{ 639{
638 m_name = name; 640 m_name = name;
639 m_id = id; 641 m_id = id;
640 m_app = app; 642 m_app = app;
641} 643}
642OpieCategories::OpieCategories(const OpieCategories &op ) 644OpieCategories::OpieCategories(const OpieCategories &op )
643{ 645{
644 (*this) = op; 646 (*this) = op;
645} 647}
646QString OpieCategories::id() const 648QString OpieCategories::id() const
647{ 649{
648 return m_id; 650 return m_id;
649} 651}
650QString OpieCategories::name() const 652QString OpieCategories::name() const
651{ 653{
652 return m_name; 654 return m_name;
653} 655}
654QString OpieCategories::app() const 656QString OpieCategories::app() const
655{ 657{
656 return m_app; 658 return m_app;
657} 659}
658OpieCategories &OpieCategories::operator=(const OpieCategories &op ) 660OpieCategories &OpieCategories::operator=(const OpieCategories &op )
659{ 661{
660 m_name = op.m_name; 662 m_name = op.m_name;
661 m_app = op.m_app; 663 m_app = op.m_app;
662 m_id = op.m_id; 664 m_id = op.m_id;
663 return (*this); 665 return (*this);
664} 666}
665 667
666 668
667bool operator== (const OpieCategories& a, const OpieCategories &b ) 669bool operator== (const OpieCategories& a, const OpieCategories &b )
668{ 670{
669 if ( a.id() == b.id() && a.name() == b.name() && a.app() == b.app() ) 671 if ( a.id() == b.id() && a.name() == b.name() && a.app() == b.app() )
670 return true; 672 return true;
671 return false; 673 return false;
672} 674}
673 675
diff --git a/kabc/plugins/qtopia/qtopiaconverter.h b/kabc/plugins/qtopia/qtopiaconverter.h
index 744dd41..389926c 100644
--- a/kabc/plugins/qtopia/qtopiaconverter.h
+++ b/kabc/plugins/qtopia/qtopiaconverter.h
@@ -1,133 +1,136 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24$Id$ 24$Id$
25*/ 25*/
26 26
27#ifndef KABC_QTOPIACONVERTER_H 27#ifndef KABC_QTOPIACONVERTER_H
28#define KABC_QTOPIACONVERTER_H 28#define KABC_QTOPIACONVERTER_H
29 29
30#include <qstring.h> 30#include <qstring.h>
31//Added by qt3to4:
32#include <Q3ValueList>
33#include <Q3TextStream>
31 34
32#include "addressee.h" 35#include "addressee.h"
33#ifdef DESKTOP_VERSION 36#ifdef DESKTOP_VERSION
34#include <qdom.h> 37#include <qdom.h>
35#else 38#else
36#include <xml/qdom.h> 39#include <xml/qdom.h>
37#endif 40#endif
38class Categories; 41class Categories;
39 42
40namespace KABC { 43namespace KABC {
41 44
42 45
43 46
44class OpieCategories { 47class OpieCategories {
45 public: 48 public:
46 //friend class KSync::OpieSocket; 49 //friend class KSync::OpieSocket;
47 friend bool operator== ( const OpieCategories &a, const OpieCategories &b ); 50 friend bool operator== ( const OpieCategories &a, const OpieCategories &b );
48 OpieCategories(); 51 OpieCategories();
49 OpieCategories(const QString &id, const QString &name, const QString &app ); 52 OpieCategories(const QString &id, const QString &name, const QString &app );
50 OpieCategories(const OpieCategories & ); 53 OpieCategories(const OpieCategories & );
51 ~OpieCategories() {}; 54 ~OpieCategories() {};
52 OpieCategories &operator=(const OpieCategories & ); 55 OpieCategories &operator=(const OpieCategories & );
53 QString id()const; 56 QString id()const;
54 QString name()const; 57 QString name()const;
55 QString app()const; 58 QString app()const;
56 59
57 private: 60 private:
58 QString m_name; 61 QString m_name;
59 QString m_app; 62 QString m_app;
60 QString m_id; 63 QString m_id;
61}; 64};
62 65
63 66
64 class CategoryEdit { 67 class CategoryEdit {
65 public: 68 public:
66 CategoryEdit(); 69 CategoryEdit();
67 CategoryEdit(const QString &fileName); 70 CategoryEdit(const QString &fileName);
68 ~CategoryEdit(); 71 ~CategoryEdit();
69 72
70 void save(const QString&) const; 73 void save(const QString&) const;
71 int addCategory( const QString &name, int id = 0 ); 74 int addCategory( const QString &name, int id = 0 );
72 int addCategory(const QString &appName, const QString &name, int id = 0); 75 int addCategory(const QString &appName, const QString &name, int id = 0);
73 void parse( const QString &fileName ); 76 void parse( const QString &fileName );
74 77
75 QString categoryById(const QString &id, const QString &app )const; 78 QString categoryById(const QString &id, const QString &app )const;
76 QStringList categoriesByIds( const QStringList& ids, const QString& app ); 79 QStringList categoriesByIds( const QStringList& ids, const QString& app );
77 80
78 void clear(); 81 void clear();
79 QValueList<OpieCategories> categories()const { return m_categories; }; 82 Q3ValueList<OpieCategories> categories()const { return m_categories; };
80 private: 83 private:
81 /** 84 /**
82 * this function will be used internally to update the kde categories... 85 * this function will be used internally to update the kde categories...
83 */ 86 */
84 void updateKDE( const QString& app, const QStringList& categories ); 87 void updateKDE( const QString& app, const QStringList& categories );
85 QMap<int, bool> ids; // from tt Qtopia::UidGen 88 QMap<int, bool> ids; // from tt Qtopia::UidGen
86 QValueList<OpieCategories> m_categories; 89 Q3ValueList<OpieCategories> m_categories;
87 }; 90 };
88 91
89 92
90class QtopiaConverter 93class QtopiaConverter
91{ 94{
92public: 95public:
93 96
94 /** 97 /**
95 * Constructor. 98 * Constructor.
96 */ 99 */
97 QtopiaConverter(); 100 QtopiaConverter();
98 101
99 /** 102 /**
100 * Destructor. 103 * Destructor.
101 */ 104 */
102 virtual ~QtopiaConverter(); 105 virtual ~QtopiaConverter();
103 106
104 bool init(); 107 bool init();
105 void deinit(); 108 void deinit();
106 109
107 /** 110 /**
108 * Converts a vcard string to an addressee. 111 * Converts a vcard string to an addressee.
109 * 112 *
110 * @param contact The qtopia contact. 113 * @param contact The qtopia contact.
111 * @param addr The addressee. 114 * @param addr The addressee.
112 */ 115 */
113 bool qtopiaToAddressee( const QDomElement& el, Addressee &adr ); 116 bool qtopiaToAddressee( const QDomElement& el, Addressee &adr );
114 /** 117 /**
115 * Converts an addressee to a vcard string. 118 * Converts an addressee to a vcard string.
116 * 119 *
117 * @param addr The addressee. 120 * @param addr The addressee.
118 * @param contact The qtopia contact. 121 * @param contact The qtopia contact.
119 */ 122 */
120 bool addresseeToQtopia( const Addressee &ab, QTextStream *stream ); 123 bool addresseeToQtopia( const Addressee &ab, Q3TextStream *stream );
121 124
122 private: 125 private:
123 QString categoriesToNumber( const QStringList &list, const QString &app ); 126 QString categoriesToNumber( const QStringList &list, const QString &app );
124 QString escape( const QString& s){ return s;}; 127 QString escape( const QString& s){ return s;};
125 CategoryEdit *m_edit; 128 CategoryEdit *m_edit;
126 QDate fromString( const QString& ); 129 QDate fromString( const QString& );
127 QDate dateFromString( const QString& ); 130 QDate dateFromString( const QString& );
128 QString dateToString( const QDate& ); 131 QString dateToString( const QDate& );
129 132
130 133
131}; 134};
132} 135}
133#endif 136#endif
diff --git a/kabc/plugins/qtopia/resourceqtopia.cpp b/kabc/plugins/qtopia/resourceqtopia.cpp
index 79ddaea..a36eb8f 100644
--- a/kabc/plugins/qtopia/resourceqtopia.cpp
+++ b/kabc/plugins/qtopia/resourceqtopia.cpp
@@ -1,336 +1,336 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27#include <sys/types.h> 27#include <sys/types.h>
28#include <sys/stat.h> 28#include <sys/stat.h>
29#ifndef _WIN32_ 29#ifndef _WIN32_
30#include <unistd.h> 30#include <unistd.h>
31#endif 31#endif
32#include <qdir.h> 32#include <qdir.h>
33#include <qfile.h> 33#include <qfile.h>
34#include <qtextstream.h> 34#include <q3textstream.h>
35#include <qfileinfo.h> 35#include <qfileinfo.h>
36#include <qregexp.h> 36#include <qregexp.h>
37//US #include <qtimer.h> 37//US #include <qtimer.h>
38 38
39#include <kapplication.h> 39#include <kapplication.h>
40#include <kconfig.h> 40#include <kconfig.h>
41#include <kdebug.h> 41#include <kdebug.h>
42#include <klocale.h> 42#include <klocale.h>
43//US #include <ksavefile.h> 43//US #include <ksavefile.h>
44#include <kstandarddirs.h> 44#include <kstandarddirs.h>
45#include <kmessagebox.h> 45#include <kmessagebox.h>
46 46
47 47
48#include "resourceqtopiaconfig.h" 48#include "resourceqtopiaconfig.h"
49#include "stdaddressbook.h" 49#include "stdaddressbook.h"
50 50
51#include "qtopiaconverter.h" 51#include "qtopiaconverter.h"
52 52
53#include "resourceqtopia.h" 53#include "resourceqtopia.h"
54 54
55using namespace KABC; 55using namespace KABC;
56 56
57extern "C" 57extern "C"
58#ifdef _WIN32_ 58#ifdef _WIN32_
59__declspec(dllexport) 59__declspec(dllexport)
60#else 60#else
61{ 61{
62#endif 62#endif
63 void *init_microkabc_qtopia() 63 void *init_microkabc_qtopia()
64 { 64 {
65 return new KRES::PluginFactory<ResourceQtopia,ResourceQtopiaConfig>(); 65 return new KRES::PluginFactory<ResourceQtopia,ResourceQtopiaConfig>();
66 } 66 }
67#ifndef _WIN32_ 67#ifndef _WIN32_
68} 68}
69#endif 69#endif
70 70
71ResourceQtopia::ResourceQtopia( const KConfig *config ) 71ResourceQtopia::ResourceQtopia( const KConfig *config )
72 : Resource( config ), mConverter (0) 72 : Resource( config ), mConverter (0)
73{ 73{
74 // we can not choose the filename. Therefore use the default to display 74 // we can not choose the filename. Therefore use the default to display
75 QString fileName = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml"; 75 QString fileName = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml";
76 init( fileName ); 76 init( fileName );
77} 77}
78 78
79ResourceQtopia::ResourceQtopia( const QString &fileName ) 79ResourceQtopia::ResourceQtopia( const QString &fileName )
80 : Resource( 0 ) 80 : Resource( 0 )
81{ 81{
82 init( fileName ); 82 init( fileName );
83} 83}
84 84
85void ResourceQtopia::init( const QString &fileName ) 85void ResourceQtopia::init( const QString &fileName )
86{ 86{
87#ifdef _USE_DIRWATCH_ 87#ifdef _USE_DIRWATCH_
88 connect( &mDirWatch, SIGNAL( dirty(const QString&) ), SLOT( fileChanged() ) ); 88 connect( &mDirWatch, SIGNAL( dirty(const QString&) ), SLOT( fileChanged() ) );
89 connect( &mDirWatch, SIGNAL( created(const QString&) ), SLOT( fileChanged() ) ); 89 connect( &mDirWatch, SIGNAL( created(const QString&) ), SLOT( fileChanged() ) );
90 connect( &mDirWatch, SIGNAL( deleted(const QString&) ), SLOT( fileChanged() ) ); 90 connect( &mDirWatch, SIGNAL( deleted(const QString&) ), SLOT( fileChanged() ) );
91#endif 91#endif
92 setFileName( fileName ); 92 setFileName( fileName );
93} 93}
94 94
95ResourceQtopia::~ResourceQtopia() 95ResourceQtopia::~ResourceQtopia()
96{ 96{
97 if (mConverter != 0) 97 if (mConverter != 0)
98 delete mConverter; 98 delete mConverter;
99 99
100} 100}
101 101
102void ResourceQtopia::writeConfig( KConfig *config ) 102void ResourceQtopia::writeConfig( KConfig *config )
103{ 103{
104 Resource::writeConfig( config ); 104 Resource::writeConfig( config );
105} 105}
106 106
107Ticket *ResourceQtopia::requestSaveTicket() 107Ticket *ResourceQtopia::requestSaveTicket()
108{ 108{
109 kdDebug(5700) << "ResourceQtopia::requestSaveTicket()" << endl; 109 kdDebug(5700) << "ResourceQtopia::requestSaveTicket()" << endl;
110 110
111 qDebug("ResourceQtopia::requestSaveTicket: %s", fileName().latin1()); 111 qDebug("ResourceQtopia::requestSaveTicket: %s", fileName().latin1());
112 112
113 if ( !addressBook() ) return 0; 113 if ( !addressBook() ) return 0;
114 114
115 if ( !lock( fileName() ) ) { 115 if ( !lock( fileName() ) ) {
116 kdDebug(5700) << "ResourceQtopia::requestSaveTicket(): Unable to lock file '" 116 kdDebug(5700) << "ResourceQtopia::requestSaveTicket(): Unable to lock file '"
117 << fileName() << "'" << endl; 117 << fileName() << "'" << endl;
118 return 0; 118 return 0;
119 } 119 }
120 return createTicket( this ); 120 return createTicket( this );
121} 121}
122 122
123 123
124bool ResourceQtopia::doOpen() 124bool ResourceQtopia::doOpen()
125{ 125{
126 qDebug("ResourceQtopia::doOpen(): %s", fileName().latin1()); 126 qDebug("ResourceQtopia::doOpen(): %s", fileName().latin1());
127 127
128 128
129 if (mConverter == 0) 129 if (mConverter == 0)
130 { 130 {
131 mConverter = new QtopiaConverter(); 131 mConverter = new QtopiaConverter();
132 bool res = mConverter->init(); 132 bool res = mConverter->init();
133 if ( !res ) 133 if ( !res )
134 { 134 {
135 QString msg("Unable to initialize qtopia converter. Most likely a problem with the category file"); 135 QString msg("Unable to initialize qtopia converter. Most likely a problem with the category file");
136 qDebug(msg); 136 qDebug(msg);
137 return false; 137 return false;
138 } 138 }
139 } 139 }
140 140
141 return true; 141 return true;
142} 142}
143 143
144void ResourceQtopia::doClose() 144void ResourceQtopia::doClose()
145{ 145{
146 qDebug("ResourceQtopia::doClose: %s", fileName().latin1()); 146 qDebug("ResourceQtopia::doClose: %s", fileName().latin1());
147 147
148 148
149 // it seems so, that deletion of access deletes backend as well 149 // it seems so, that deletion of access deletes backend as well
150 //delete backend; 150 //delete backend;
151 151
152 return; 152 return;
153} 153}
154 154
155bool ResourceQtopia::load() 155bool ResourceQtopia::load()
156{ 156{
157 157
158 QFile file( fileName() ); 158 QFile file( fileName() );
159 if ( !file.open(IO_ReadOnly ) ) { 159 if ( !file.open(QIODevice::ReadOnly ) ) {
160 return false; 160 return false;
161 } 161 }
162 162
163 QDomDocument doc("mydocument" ); 163 QDomDocument doc("mydocument" );
164 if ( !doc.setContent( &file ) ) { 164 if ( !doc.setContent( &file ) ) {
165 file.close(); 165 file.close();
166 return false; 166 return false;
167 } 167 }
168 bool res; 168 bool res;
169 QDomElement docElem = doc.documentElement( ); 169 QDomElement docElem = doc.documentElement( );
170 QDomNode n = docElem.firstChild(); 170 QDomNode n = docElem.firstChild();
171 while ( !n.isNull() ) { 171 while ( !n.isNull() ) {
172 QDomElement e = n.toElement(); 172 QDomElement e = n.toElement();
173 if ( !e.isNull() ) { 173 if ( !e.isNull() ) {
174 if ( e.tagName() == QString::fromLatin1( "Contacts" ) ) { 174 if ( e.tagName() == QString::fromLatin1( "Contacts" ) ) {
175 QDomNode no = e.firstChild(); 175 QDomNode no = e.firstChild();
176 while ( !no.isNull() ) { 176 while ( !no.isNull() ) {
177 QDomElement el = no.toElement(); 177 QDomElement el = no.toElement();
178 if ( !el.isNull() ) { 178 if ( !el.isNull() ) {
179 KABC::Addressee addressee; 179 KABC::Addressee addressee;
180 res = mConverter->qtopiaToAddressee( el, addressee ); 180 res = mConverter->qtopiaToAddressee( el, addressee );
181 if ( !addressee.isEmpty() && res ) 181 if ( !addressee.isEmpty() && res )
182 { 182 {
183 addressee.setResource( this ); 183 addressee.setResource( this );
184 addressBook()->insertAddressee( addressee ); 184 addressBook()->insertAddressee( addressee );
185 } 185 }
186 } 186 }
187 187
188 no = no.nextSibling(); 188 no = no.nextSibling();
189 } 189 }
190 } 190 }
191 } 191 }
192 192
193 n = n.nextSibling(); 193 n = n.nextSibling();
194 } 194 }
195 return true; 195 return true;
196} 196}
197 197
198bool ResourceQtopia::save( Ticket *ticket ) 198bool ResourceQtopia::save( Ticket *ticket )
199{ 199{
200#ifdef _USE_DIRWATCH_ 200#ifdef _USE_DIRWATCH_
201 mDirWatch.stopScan(); 201 mDirWatch.stopScan();
202#endif 202#endif
203 KABC::AddressBook::Iterator it; 203 KABC::AddressBook::Iterator it;
204 bool res; 204 bool res;
205 QFile file( fileName() ); 205 QFile file( fileName() );
206 if (!file.open( IO_WriteOnly ) ) { 206 if (!file.open( QIODevice::WriteOnly ) ) {
207 return false; 207 return false;
208 } 208 }
209 QTextStream ts( &file ); 209 Q3TextStream ts( &file );
210 QTextStream *stream = &ts; 210 Q3TextStream *stream = &ts;
211 stream->setEncoding( QTextStream::UnicodeUTF8 ); 211 stream->setEncoding( Q3TextStream::UnicodeUTF8 );
212 *stream << "<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE Addressbook ><AddressBook>" << endl; 212 *stream << "<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE Addressbook ><AddressBook>" << endl;
213 *stream << " <Groups>" << endl; 213 *stream << " <Groups>" << endl;
214 *stream << " </Groups>" << endl; 214 *stream << " </Groups>" << endl;
215 *stream << " <Contacts> " << endl; 215 *stream << " <Contacts> " << endl;
216 // for all entries 216 // for all entries
217 KABC::Addressee ab; 217 KABC::Addressee ab;
218 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) { 218 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) {
219 KABC::Addressee addressee = (*it); 219 KABC::Addressee addressee = (*it);
220 res = mConverter->addresseeToQtopia( addressee, stream ); 220 res = mConverter->addresseeToQtopia( addressee, stream );
221 if (!res == true) 221 if (!res == true)
222 { 222 {
223 qDebug("Unable to convert Addressee %s", addressee.formattedName().latin1()); 223 qDebug("Unable to convert Addressee %s", addressee.formattedName().latin1());
224 } 224 }
225 } 225 }
226 *stream << "</Contacts>" << endl; 226 *stream << "</Contacts>" << endl;
227 *stream << "</AddressBook>" << endl; 227 *stream << "</AddressBook>" << endl;
228 file.close(); 228 file.close();
229#ifdef _USE_DIRWATCH_ 229#ifdef _USE_DIRWATCH_
230 mDirWatch.startScan(); 230 mDirWatch.startScan();
231#endif 231#endif
232 delete ticket; 232 delete ticket;
233 unlock( fileName() ); 233 unlock( fileName() );
234 return true; 234 return true;
235} 235}
236 236
237bool ResourceQtopia::lock( const QString &lockfileName ) 237bool ResourceQtopia::lock( const QString &lockfileName )
238{ 238{
239 //disabled 239 //disabled
240 return true; 240 return true;
241 qDebug("ResourceQtopia::lock: %s", fileName().latin1()); 241 qDebug("ResourceQtopia::lock: %s", fileName().latin1());
242 QString fn = lockfileName; 242 QString fn = lockfileName;
243 243
244 KURL url(fn); 244 KURL url(fn);
245 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" ); 245 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
246 246
247 if (QFile::exists( lockName )) 247 if (QFile::exists( lockName ))
248 { 248 {
249 qDebug("ResourceOpie::lock: lockfile %s already exists. (Delete it before continuing if nobody else is accessing the resourcefile %s)", lockName.latin1(), fileName().latin1()); 249 qDebug("ResourceOpie::lock: lockfile %s already exists. (Delete it before continuing if nobody else is accessing the resourcefile %s)", lockName.latin1(), fileName().latin1());
250 return false; 250 return false;
251 } 251 }
252 252
253 QString lockUniqueName; 253 QString lockUniqueName;
254 lockUniqueName = fn + KApplication::randomString( 8 ); 254 lockUniqueName = fn + KApplication::randomString( 8 );
255 255
256 url = lockUniqueName; 256 url = lockUniqueName;
257//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName ); 257//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName );
258 mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() ); 258 mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() );
259 kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl; 259 kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl;
260 260
261 // Create unique file 261 // Create unique file
262 QFile file( mLockUniqueName ); 262 QFile file( mLockUniqueName );
263 file.open( IO_WriteOnly ); 263 file.open( QIODevice::WriteOnly );
264 file.close(); 264 file.close();
265 265
266 // Create lock file 266 // Create lock file
267 int result = 0; 267 int result = 0;
268#ifndef _WIN32_ 268#ifndef _WIN32_
269 result = ::link( QFile::encodeName( mLockUniqueName ), 269 result = ::link( QFile::encodeName( mLockUniqueName ),
270 QFile::encodeName( lockName ) ); 270 QFile::encodeName( lockName ) );
271#endif 271#endif
272 if ( result == 0 ) { 272 if ( result == 0 ) {
273 addressBook()->emitAddressBookLocked(); 273 addressBook()->emitAddressBookLocked();
274 return true; 274 return true;
275 } 275 }
276 276
277 // TODO: check stat 277 // TODO: check stat
278 278
279 return false; 279 return false;
280} 280}
281 281
282void ResourceQtopia::unlock( const QString &fileName ) 282void ResourceQtopia::unlock( const QString &fileName )
283{ 283{
284 //disabled 284 //disabled
285 return; 285 return;
286 qDebug("ResourceQtopia::unlock() %s", fileName.latin1()); 286 qDebug("ResourceQtopia::unlock() %s", fileName.latin1());
287 287
288 QString fn = fileName; 288 QString fn = fileName;
289 KURL url(fn); 289 KURL url(fn);
290 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" ); 290 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
291 291
292 QFile::remove( lockName ); 292 QFile::remove( lockName );
293 QFile::remove( mLockUniqueName ); 293 QFile::remove( mLockUniqueName );
294 addressBook()->emitAddressBookUnlocked(); 294 addressBook()->emitAddressBookUnlocked();
295} 295}
296 296
297void ResourceQtopia::setFileName( const QString &newFileName ) 297void ResourceQtopia::setFileName( const QString &newFileName )
298{ 298{
299#ifdef _USE_DIRWATCH_ 299#ifdef _USE_DIRWATCH_
300 mDirWatch.stopScan(); 300 mDirWatch.stopScan();
301#endif 301#endif
302 mDirWatch.removeFile( fileName() ); 302 mDirWatch.removeFile( fileName() );
303 303
304 Resource::setFileName( newFileName ); 304 Resource::setFileName( newFileName );
305 305
306 mDirWatch.addFile( fileName() ); 306 mDirWatch.addFile( fileName() );
307#ifdef _USE_DIRWATCH_ 307#ifdef _USE_DIRWATCH_
308 mDirWatch.startScan(); 308 mDirWatch.startScan();
309#endif 309#endif
310} 310}
311 311
312 312
313void ResourceQtopia::fileChanged() 313void ResourceQtopia::fileChanged()
314{ 314{
315 // There is a small theoretical chance that KDirWatch calls us before 315 // There is a small theoretical chance that KDirWatch calls us before
316 // we are fully constructed 316 // we are fully constructed
317 if (!addressBook()) 317 if (!addressBook())
318 return; 318 return;
319 319
320 QString text( i18n( "Qtopia resource '%1'<br> has been changed by third party.<br>Do you want to reload?").arg( fileName() ) ); 320 QString text( i18n( "Qtopia resource '%1'<br> has been changed by third party.<br>Do you want to reload?").arg( fileName() ) );
321 if ( readOnly() || KMessageBox::questionYesNo( 0, text ) == KMessageBox::Yes ) { 321 if ( readOnly() || KMessageBox::questionYesNo( 0, text ) == KMessageBox::Yes ) {
322 load(); 322 load();
323 addressBook()->emitAddressBookChanged(); 323 addressBook()->emitAddressBookChanged();
324 } 324 }
325} 325}
326 326
327void ResourceQtopia::removeAddressee( const Addressee &addr ) 327void ResourceQtopia::removeAddressee( const Addressee &addr )
328{ 328{
329} 329}
330 330
331void ResourceQtopia::cleanUp() 331void ResourceQtopia::cleanUp()
332{ 332{
333 unlock( fileName() ); 333 unlock( fileName() );
334} 334}
335 335
336//US #include "resourceqtopia.moc" 336//US #include "resourceqtopia.moc"
diff --git a/kabc/plugins/qtopia/resourceqtopiaconfig.cpp b/kabc/plugins/qtopia/resourceqtopiaconfig.cpp
index d5d6141..42fd428 100644
--- a/kabc/plugins/qtopia/resourceqtopiaconfig.cpp
+++ b/kabc/plugins/qtopia/resourceqtopiaconfig.cpp
@@ -1,107 +1,109 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28#include <qlabel.h> 28#include <qlabel.h>
29#include <qlayout.h> 29#include <qlayout.h>
30//Added by qt3to4:
31#include <Q3GridLayout>
30 32
31#include <kdebug.h> 33#include <kdebug.h>
32#include <klocale.h> 34#include <klocale.h>
33#include <kstandarddirs.h> 35#include <kstandarddirs.h>
34#include <kdialog.h> 36#include <kdialog.h>
35 37
36//#include <unistd.h> 38//#include <unistd.h>
37 39
38#include <qdir.h> 40#include <qdir.h>
39#include <qfile.h> 41#include <qfile.h>
40#include "resourceqtopia.h" 42#include "resourceqtopia.h"
41 43
42#include "resourceqtopiaconfig.h" 44#include "resourceqtopiaconfig.h"
43 45
44using namespace KABC; 46using namespace KABC;
45 47
46ResourceQtopiaConfig::ResourceQtopiaConfig( QWidget* parent, const char* name ) 48ResourceQtopiaConfig::ResourceQtopiaConfig( QWidget* parent, const char* name )
47 : ConfigWidget( parent, name ) 49 : ConfigWidget( parent, name )
48{ 50{
49 QGridLayout *mainLayout = new QGridLayout( this, 1, 2, 0, 51 Q3GridLayout *mainLayout = new Q3GridLayout( this, 1, 2, 0,
50 KDialog::spacingHint() ); 52 KDialog::spacingHint() );
51 53
52 QLabel *label = new QLabel( i18n( "Location:" ), this ); 54 QLabel *label = new QLabel( i18n( "Location:" ), this );
53 mFileNameEdit = new KURLRequester( this ); 55 mFileNameEdit = new KURLRequester( this );
54 56
55 connect( mFileNameEdit, SIGNAL( textChanged( const QString & ) ), 57 connect( mFileNameEdit, SIGNAL( textChanged( const QString & ) ),
56 SLOT( checkFilePermissions( const QString & ) ) ); 58 SLOT( checkFilePermissions( const QString & ) ) );
57 59
58 mainLayout->addWidget( label, 0, 0 ); 60 mainLayout->addWidget( label, 0, 0 );
59 mainLayout->addWidget( mFileNameEdit, 0, 1 ); 61 mainLayout->addWidget( mFileNameEdit, 0, 1 );
60 62
61} 63}
62 64
63void ResourceQtopiaConfig::loadSettings( KRES::Resource *res ) 65void ResourceQtopiaConfig::loadSettings( KRES::Resource *res )
64{ 66{
65//US ResourceFile *resource = dynamic_cast<ResourceFile*>( res ); 67//US ResourceFile *resource = dynamic_cast<ResourceFile*>( res );
66 ResourceQtopia *resource = (ResourceQtopia*)( res ); 68 ResourceQtopia *resource = (ResourceQtopia*)( res );
67 69
68 if ( !resource ) { 70 if ( !resource ) {
69 kdDebug(5700) << "ResourceQtopiaConfig::loadSettings(): cast failed" << endl; 71 kdDebug(5700) << "ResourceQtopiaConfig::loadSettings(): cast failed" << endl;
70 return; 72 return;
71 } 73 }
72 74
73 mFileNameEdit->setURL( resource->fileName() ); 75 mFileNameEdit->setURL( resource->fileName() );
74 if ( mFileNameEdit->url().isEmpty() ) 76 if ( mFileNameEdit->url().isEmpty() )
75 mFileNameEdit->setURL( QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml" ); 77 mFileNameEdit->setURL( QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml" );
76 78
77 //US Qtopia resources are ReadOnly by definition 79 //US Qtopia resources are ReadOnly by definition
78 emit setPersistentReadOnly( true ); 80 emit setPersistentReadOnly( true );
79 81
80 //US we can not choose the filename for the qtopia backend => make it readonly. 82 //US we can not choose the filename for the qtopia backend => make it readonly.
81 mFileNameEdit->setEnabled( false ); 83 mFileNameEdit->setEnabled( false );
82 84
83} 85}
84 86
85void ResourceQtopiaConfig::saveSettings( KRES::Resource *res ) 87void ResourceQtopiaConfig::saveSettings( KRES::Resource *res )
86{ 88{
87//US ResourceFile *resource = dynamic_cast<ResourceFile*>( res ); 89//US ResourceFile *resource = dynamic_cast<ResourceFile*>( res );
88 ResourceQtopia *resource = (ResourceQtopia*)( res ); 90 ResourceQtopia *resource = (ResourceQtopia*)( res );
89 91
90 if ( !resource ) { 92 if ( !resource ) {
91 kdDebug(5700) << "ResourceQtopiaConfig::saveSettings(): cast failed" << endl; 93 kdDebug(5700) << "ResourceQtopiaConfig::saveSettings(): cast failed" << endl;
92 return; 94 return;
93 } 95 }
94 96
95 resource->setFileName( mFileNameEdit->url() ); 97 resource->setFileName( mFileNameEdit->url() );
96} 98}
97 99
98void ResourceQtopiaConfig::checkFilePermissions( const QString& fileName ) 100void ResourceQtopiaConfig::checkFilePermissions( const QString& fileName )
99{ 101{
100 // If file exist but is not writeable... 102 // If file exist but is not writeable...
101/*US 103/*US
102 if ( access( QFile::encodeName( fileName ), F_OK ) == 0 ) 104 if ( access( QFile::encodeName( fileName ), F_OK ) == 0 )
103 emit setReadOnly( access( QFile::encodeName( fileName ), W_OK ) < 0 ); 105 emit setReadOnly( access( QFile::encodeName( fileName ), W_OK ) < 0 );
104*/ 106*/
105} 107}
106 108
107//US #include "resourceopieconfig.moc" 109//US #include "resourceopieconfig.moc"
diff --git a/kabc/plugins/sharpdtm/sharpdtmE.pro b/kabc/plugins/sharpdtm/sharpdtmE.pro
index 23b0b76..7fc8ba8 100644
--- a/kabc/plugins/sharpdtm/sharpdtmE.pro
+++ b/kabc/plugins/sharpdtm/sharpdtmE.pro
@@ -1,35 +1,35 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2CONFIG += qt warn_on 2CONFIG += qt warn_on
3TARGET = microkabc_sharpdtm 3TARGET = xmicrokabc_sharpdtm
4 4
5INCLUDEPATH += $(KDEPIMDIR) $(KDEPIMDIR)/kabc $(SHARPDTMSDK)/include $(KDEPIMDIR)/microkde $(KDEPIMDIR)/microkde/kdecore $(KDEPIMDIR)/microkde/kio/kfile $(KDEPIMDIR)/microkde/kio/kio $(KDEPIMDIR)/microkde/kresources $(KDEPIMDIR)/qtcompat $(QPEDIR)/include 5INCLUDEPATH += $(KDEPIMDIR) $(KDEPIMDIR)/kabc $(SHARPDTMSDK)/include $(KDEPIMDIR)/microkde $(KDEPIMDIR)/microkde/kdecore $(KDEPIMDIR)/microkde/kio/kfile $(KDEPIMDIR)/microkde/kio/kio $(KDEPIMDIR)/microkde/kresources $(KDEPIMDIR)/qtcompat $(QPEDIR)/include
6 6
7 7
8OBJECTS_DIR = obj/$(PLATFORM) 8OBJECTS_DIR = obj/$(PLATFORM)
9MOC_DIR = moc/$(PLATFORM) 9MOC_DIR = moc/$(PLATFORM)
10DESTDIR = $(QPEDIR)/lib 10DESTDIR = $(QPEDIR)/lib
11LIBS += -lmicrokde 11LIBS += -lxmicrokde
12LIBS += -lmicrokabc 12LIBS += -lxmicrokabc
13LIBS += -lmicrokdepim 13LIBS += -lxmicrokdepim
14LIBS += -lmicroqtcompat 14LIBS += -lmicroqtcompat
15LIBS += -L$(QPEDIR)/lib 15LIBS += -L$(QPEDIR)/lib
16LIBS += -ljpeg 16LIBS += -ljpeg
17LIBS += -lqpe 17LIBS += -lqpe
18LIBS += -lqte 18LIBS += -lqte
19LIBS += -lzdtm 19LIBS += -lzdtm
20LIBS += -lsl 20LIBS += -lsl
21 21
22 22
23 23
24INTERFACES = \ 24INTERFACES = \
25 25
26HEADERS = \ 26HEADERS = \
27 resourcesharpdtm.h \ 27 resourcesharpdtm.h \
28 resourcesharpdtmconfig.h \ 28 resourcesharpdtmconfig.h \
29 sharpdtmconverter.h 29 sharpdtmconverter.h
30 30
31SOURCES = \ 31SOURCES = \
32 resourcesharpdtm.cpp \ 32 resourcesharpdtm.cpp \
33 resourcesharpdtmconfig.cpp \ 33 resourcesharpdtmconfig.cpp \
34 sharpdtmconverter.cpp 34 sharpdtmconverter.cpp
35 35
diff --git a/kabc/secrecy.h b/kabc/secrecy.h
index b2ff565..0fe956e 100644
--- a/kabc/secrecy.h
+++ b/kabc/secrecy.h
@@ -1,102 +1,102 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28#ifndef KABC_SECRECY_H 28#ifndef KABC_SECRECY_H
29#define KABC_SECRECY_H 29#define KABC_SECRECY_H
30 30
31#include <qvaluelist.h> 31#include <q3valuelist.h>
32 32
33namespace KABC { 33namespace KABC {
34 34
35class Secrecy 35class Secrecy
36{ 36{
37 friend QDataStream &operator<<( QDataStream &, const Secrecy & ); 37 friend QDataStream &operator<<( QDataStream &, const Secrecy & );
38 friend QDataStream &operator>>( QDataStream &, Secrecy & ); 38 friend QDataStream &operator>>( QDataStream &, Secrecy & );
39 39
40public: 40public:
41 typedef QValueList<int> TypeList; 41 typedef Q3ValueList<int> TypeList;
42 42
43 /** 43 /**
44 * Secrecy types 44 * Secrecy types
45 * 45 *
46 * @li Public - for public access 46 * @li Public - for public access
47 * @li Private - only private access 47 * @li Private - only private access
48 * @li Confidential - access for confidential persons 48 * @li Confidential - access for confidential persons
49 */ 49 */
50 enum Types { 50 enum Types {
51 Public, 51 Public,
52 Private, 52 Private,
53 Confidential, 53 Confidential,
54 Invalid 54 Invalid
55 }; 55 };
56 56
57 /** 57 /**
58 * Constructor. 58 * Constructor.
59 * 59 *
60 * @param type The secrecy type, @see Types. 60 * @param type The secrecy type, @see Types.
61 */ 61 */
62 Secrecy( int type = Public ); 62 Secrecy( int type = Public );
63 63
64 bool operator==( const Secrecy & ) const; 64 bool operator==( const Secrecy & ) const;
65 bool operator!=( const Secrecy & ) const; 65 bool operator!=( const Secrecy & ) const;
66 66
67 /** 67 /**
68 Returns if the Secrecy object has a valid value. 68 Returns if the Secrecy object has a valid value.
69 */ 69 */
70 bool isValid() const; 70 bool isValid() const;
71 71
72 /** 72 /**
73 * Sets the type, @see Types. 73 * Sets the type, @see Types.
74 */ 74 */
75 void setType( int type ); 75 void setType( int type );
76 76
77 /** 77 /**
78 * Returns the type, @see Types. 78 * Returns the type, @see Types.
79 */ 79 */
80 int type() const; 80 int type() const;
81 81
82 /** 82 /**
83 * Returns a list of all available secrecy types. 83 * Returns a list of all available secrecy types.
84 */ 84 */
85 static TypeList typeList(); 85 static TypeList typeList();
86 86
87 /** 87 /**
88 * Returns a translated label for a given secrecy type. 88 * Returns a translated label for a given secrecy type.
89 */ 89 */
90 static QString typeLabel( int type ); 90 static QString typeLabel( int type );
91 91
92 /** 92 /**
93 * For debug. 93 * For debug.
94 */ 94 */
95 QString asString() const; 95 QString asString() const;
96 96
97private: 97private:
98 int mType; 98 int mType;
99}; 99};
100 100
101} 101}
102#endif 102#endif
diff --git a/kabc/sound.h b/kabc/sound.h
index 0ec5ec8..9777054 100644
--- a/kabc/sound.h
+++ b/kabc/sound.h
@@ -1,123 +1,123 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28#ifndef KABC_SOUND_H 28#ifndef KABC_SOUND_H
29#define KABC_SOUND_H 29#define KABC_SOUND_H
30 30
31#include <qcstring.h> 31#include <q3cstring.h>
32#include <qstring.h> 32#include <qstring.h>
33 33
34namespace KABC { 34namespace KABC {
35 35
36class Sound 36class Sound
37{ 37{
38 friend QDataStream &operator<<( QDataStream &, const Sound & ); 38 friend QDataStream &operator<<( QDataStream &, const Sound & );
39 friend QDataStream &operator>>( QDataStream &, Sound & ); 39 friend QDataStream &operator>>( QDataStream &, Sound & );
40 40
41public: 41public:
42 42
43 /** 43 /**
44 * Consturctor. Creates an empty object. 44 * Consturctor. Creates an empty object.
45 */ 45 */
46 Sound(); 46 Sound();
47 47
48 /** 48 /**
49 * Consturctor. 49 * Consturctor.
50 * 50 *
51 * @param url A URL that describes the position of the sound file. 51 * @param url A URL that describes the position of the sound file.
52 */ 52 */
53 Sound( const QString &url ); 53 Sound( const QString &url );
54 54
55 /** 55 /**
56 * Consturctor. 56 * Consturctor.
57 * 57 *
58 * @param data The raw data of the sound. 58 * @param data The raw data of the sound.
59 */ 59 */
60 Sound( const QByteArray &data ); 60 Sound( const QByteArray &data );
61 61
62 /** 62 /**
63 * Destructor. 63 * Destructor.
64 */ 64 */
65 ~Sound(); 65 ~Sound();
66 66
67 67
68 bool operator==( const Sound & ) const; 68 bool operator==( const Sound & ) const;
69 bool operator!=( const Sound & ) const; 69 bool operator!=( const Sound & ) const;
70 70
71 /** 71 /**
72 * Sets a URL for the location of the sound file. When using this 72 * Sets a URL for the location of the sound file. When using this
73 * function, @ref isIntern() will return 'false' until you use 73 * function, @ref isIntern() will return 'false' until you use
74 * @ref setData(). 74 * @ref setData().
75 * 75 *
76 * @param url The location URL of the sound file. 76 * @param url The location URL of the sound file.
77 */ 77 */
78 void setUrl( const QString &url ); 78 void setUrl( const QString &url );
79 79
80 /** 80 /**
81 * Sets the raw data of the sound. When using this function, 81 * Sets the raw data of the sound. When using this function,
82 * @ref isIntern() will return 'true' until you use @ref setUrl(). 82 * @ref isIntern() will return 'true' until you use @ref setUrl().
83 * 83 *
84 * @param data The raw data of the sound. 84 * @param data The raw data of the sound.
85 */ 85 */
86 void setData( const QByteArray &data ); 86 void setData( const QByteArray &data );
87 87
88 /** 88 /**
89 * Returns whether the sound is described by a URL (extern) or 89 * Returns whether the sound is described by a URL (extern) or
90 * by the raw data (intern). 90 * by the raw data (intern).
91 * When this method returns 'true' you can use @ref data() to 91 * When this method returns 'true' you can use @ref data() to
92 * get the raw data. Otherwise you can request the URL of this 92 * get the raw data. Otherwise you can request the URL of this
93 * sound by @ref url() and load the raw data from that location. 93 * sound by @ref url() and load the raw data from that location.
94 */ 94 */
95 bool isIntern() const; 95 bool isIntern() const;
96 96
97 /** 97 /**
98 * Returns the location URL of this sound. 98 * Returns the location URL of this sound.
99 */ 99 */
100 QString url() const; 100 QString url() const;
101 101
102 /** 102 /**
103 * Returns the raw data of this sound. 103 * Returns the raw data of this sound.
104 */ 104 */
105 QByteArray data() const; 105 QByteArray data() const;
106 106
107 /** 107 /**
108 * Returns string representation of the sound. 108 * Returns string representation of the sound.
109 */ 109 */
110 QString asString() const; 110 QString asString() const;
111 111
112private: 112private:
113 QString mUrl; 113 QString mUrl;
114 QByteArray mData; 114 QByteArray mData;
115 115
116 int mIntern; 116 int mIntern;
117}; 117};
118 118
119QDataStream &operator<<( QDataStream &, const Sound & ); 119QDataStream &operator<<( QDataStream &, const Sound & );
120QDataStream &operator>>( QDataStream &, Sound & ); 120QDataStream &operator>>( QDataStream &, Sound & );
121 121
122} 122}
123#endif 123#endif
diff --git a/kabc/tmpaddressbook.cpp b/kabc/tmpaddressbook.cpp
index cfa57e3..5152e00 100644
--- a/kabc/tmpaddressbook.cpp
+++ b/kabc/tmpaddressbook.cpp
@@ -1,49 +1,49 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2004 Ulf Schenk 3 Copyright (c) 2004 Ulf Schenk
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27#include <qptrlist.h> 27#include <q3ptrlist.h>
28 28
29#include "tmpaddressbook.h" 29#include "tmpaddressbook.h"
30 30
31using namespace KABC; 31using namespace KABC;
32 32
33#include "resource.h" 33#include "resource.h"
34 34
35TmpAddressBook::TmpAddressBook() 35TmpAddressBook::TmpAddressBook()
36 : AddressBook(0, "tmpcontact") 36 : AddressBook(0, "tmpcontact")
37{ 37{
38} 38}
39 39
40TmpAddressBook::TmpAddressBook( const QString &config ) 40TmpAddressBook::TmpAddressBook( const QString &config )
41 : AddressBook( config, "tmpcontact" ) 41 : AddressBook( config, "tmpcontact" )
42{ 42{
43} 43}
44 44
45TmpAddressBook::~TmpAddressBook() 45TmpAddressBook::~TmpAddressBook()
46{ 46{
47 removeResources(); 47 removeResources();
48} 48}
49 49
diff --git a/kabc/vcard/AdrParam.cpp b/kabc/vcard/AdrParam.cpp
index fa46499..33d358c 100644
--- a/kabc/vcard/AdrParam.cpp
+++ b/kabc/vcard/AdrParam.cpp
@@ -1,126 +1,128 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardRToken.h> 24#include <VCardRToken.h>
25#include <VCardAdrParam.h> 25#include <VCardAdrParam.h>
26#include <VCardParam.h> 26#include <VCardParam.h>
27//Added by qt3to4:
28#include <Q3CString>
27 29
28using namespace VCARD; 30using namespace VCARD;
29 31
30AdrParam::AdrParam() 32AdrParam::AdrParam()
31 :Param() 33 :Param()
32{ 34{
33} 35}
34 36
35AdrParam::AdrParam(const AdrParam & x) 37AdrParam::AdrParam(const AdrParam & x)
36 :Param(x), 38 :Param(x),
37 adrTypeList_(x.adrTypeList_) 39 adrTypeList_(x.adrTypeList_)
38{ 40{
39} 41}
40 42
41AdrParam::AdrParam(const QCString & s) 43AdrParam::AdrParam(const Q3CString & s)
42 :Param(s) 44 :Param(s)
43{ 45{
44} 46}
45 47
46 AdrParam & 48 AdrParam &
47AdrParam::operator = (AdrParam & x) 49AdrParam::operator = (AdrParam & x)
48{ 50{
49 if (*this == x) return *this; 51 if (*this == x) return *this;
50 52
51 adrTypeList_= x.adrTypeList(); 53 adrTypeList_= x.adrTypeList();
52 textParam_ = x.textParam(); 54 textParam_ = x.textParam();
53 55
54 Param::operator = (x); 56 Param::operator = (x);
55 return *this; 57 return *this;
56} 58}
57 59
58 AdrParam & 60 AdrParam &
59AdrParam::operator = (const QCString & s) 61AdrParam::operator = (const Q3CString & s)
60{ 62{
61 Param::operator = (s); 63 Param::operator = (s);
62 64
63 adrTypeList_.clear(); 65 adrTypeList_.clear();
64 textParam_.truncate(0); 66 textParam_.truncate(0);
65 67
66 return *this; 68 return *this;
67} 69}
68 70
69 bool 71 bool
70AdrParam::operator == (AdrParam & x) 72AdrParam::operator == (AdrParam & x)
71{ 73{
72 parse(); 74 parse();
73 75
74 if (!x.textParam().isEmpty()) 76 if (!x.textParam().isEmpty())
75 return (x.textParam_ == textParam_); 77 return (x.textParam_ == textParam_);
76 78
77 if (x.adrTypeList().count() != adrTypeList_.count()) 79 if (x.adrTypeList().count() != adrTypeList_.count())
78 return false; 80 return false;
79 81
80 QStrListIterator it(x.adrTypeList_); 82 Q3StrListIterator it(x.adrTypeList_);
81 83
82 for (; it.current(); ++it) 84 for (; it.current(); ++it)
83 if (!adrTypeList_.find(it.current())) 85 if (!adrTypeList_.find(it.current()))
84 return false; 86 return false;
85 87
86 return true; 88 return true;
87} 89}
88 90
89AdrParam::~AdrParam() 91AdrParam::~AdrParam()
90{ 92{
91} 93}
92 94
93 void 95 void
94AdrParam::_parse() 96AdrParam::_parse()
95{ 97{
96 adrTypeList_.clear(); 98 adrTypeList_.clear();
97 99
98 if (strRep_.left(4) != "TYPE") { 100 if (strRep_.left(4) != "TYPE") {
99 textParam_ = strRep_; 101 textParam_ = strRep_;
100 return; 102 return;
101 } 103 }
102 104
103 if (!strRep_.contains('=')) 105 if (!strRep_.contains('='))
104 return; 106 return;
105 107
106 RTokenise(strRep_, ",", adrTypeList_); 108 RTokenise(strRep_, ",", adrTypeList_);
107} 109}
108 110
109 void 111 void
110AdrParam::_assemble() 112AdrParam::_assemble()
111{ 113{
112 if (!textParam_.isEmpty()) { 114 if (!textParam_.isEmpty()) {
113 strRep_ = textParam_; 115 strRep_ = textParam_;
114 return; 116 return;
115 } 117 }
116 118
117 QStrListIterator it(adrTypeList_); 119 Q3StrListIterator it(adrTypeList_);
118 120
119 for (; it.current(); ++it) { 121 for (; it.current(); ++it) {
120 122
121 strRep_ += it.current(); 123 strRep_ += it.current();
122 124
123 if (it.current() != adrTypeList_.last()) 125 if (it.current() != adrTypeList_.last())
124 strRep_ += ','; 126 strRep_ += ',';
125 } 127 }
126} 128}
diff --git a/kabc/vcard/AdrValue.cpp b/kabc/vcard/AdrValue.cpp
index 7ecef33..51ca12a 100644
--- a/kabc/vcard/AdrValue.cpp
+++ b/kabc/vcard/AdrValue.cpp
@@ -1,140 +1,143 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardRToken.h> 24#include <VCardRToken.h>
25#include <VCardAdrValue.h> 25#include <VCardAdrValue.h>
26#include <VCardValue.h> 26#include <VCardValue.h>
27#include <VCardDefines.h> 27#include <VCardDefines.h>
28//Added by qt3to4:
29#include <Q3StrList>
30#include <Q3CString>
28 31
29using namespace VCARD; 32using namespace VCARD;
30 33
31AdrValue::AdrValue() 34AdrValue::AdrValue()
32 :Value() 35 :Value()
33{ 36{
34} 37}
35 38
36AdrValue::AdrValue(const AdrValue & x) 39AdrValue::AdrValue(const AdrValue & x)
37 :Value(x), 40 :Value(x),
38 poBox_ (x.poBox_), 41 poBox_ (x.poBox_),
39 extAddress_(x.extAddress_), 42 extAddress_(x.extAddress_),
40 street_ (x.street_), 43 street_ (x.street_),
41 locality_(x.locality_), 44 locality_(x.locality_),
42 region_ (x.region_), 45 region_ (x.region_),
43 postCode_(x.postCode_), 46 postCode_(x.postCode_),
44 countryName_(x.countryName_) 47 countryName_(x.countryName_)
45{ 48{
46} 49}
47 50
48AdrValue::AdrValue(const QCString & s) 51AdrValue::AdrValue(const Q3CString & s)
49 :Value(s) 52 :Value(s)
50{ 53{
51} 54}
52 55
53 AdrValue & 56 AdrValue &
54AdrValue::operator = (AdrValue & x) 57AdrValue::operator = (AdrValue & x)
55{ 58{
56 if (*this == x) return *this; 59 if (*this == x) return *this;
57 60
58 poBox_ = x.poBox_; 61 poBox_ = x.poBox_;
59 extAddress_= x.extAddress_; 62 extAddress_= x.extAddress_;
60 street_ = x.street_; 63 street_ = x.street_;
61 locality_= x.locality_; 64 locality_= x.locality_;
62 region_ = x.region_; 65 region_ = x.region_;
63 postCode_= x.postCode_; 66 postCode_= x.postCode_;
64 countryName_= x.countryName_; 67 countryName_= x.countryName_;
65 68
66 Value::operator = (x); 69 Value::operator = (x);
67 return *this; 70 return *this;
68} 71}
69 72
70 AdrValue & 73 AdrValue &
71AdrValue::operator = (const QCString & s) 74AdrValue::operator = (const Q3CString & s)
72{ 75{
73 Value::operator = (s); 76 Value::operator = (s);
74 return *this; 77 return *this;
75} 78}
76 79
77 bool 80 bool
78AdrValue::operator == (AdrValue & x) 81AdrValue::operator == (AdrValue & x)
79{ 82{
80 parse(); 83 parse();
81 x.parse(); 84 x.parse();
82 85
83 return ( 86 return (
84 poBox_ == x.poBox_ && 87 poBox_ == x.poBox_ &&
85 extAddress_ == x.extAddress_&& 88 extAddress_ == x.extAddress_&&
86 street_ == x.street_ && 89 street_ == x.street_ &&
87 locality_ == x.locality_ && 90 locality_ == x.locality_ &&
88 region_ == x.region_ && 91 region_ == x.region_ &&
89 postCode_ == x.postCode_ && 92 postCode_ == x.postCode_ &&
90 countryName_== x.countryName_); 93 countryName_== x.countryName_);
91} 94}
92 95
93AdrValue::~AdrValue() 96AdrValue::~AdrValue()
94{ 97{
95} 98}
96 99
97 AdrValue * 100 AdrValue *
98AdrValue::clone() 101AdrValue::clone()
99{ 102{
100 return new AdrValue( *this ); 103 return new AdrValue( *this );
101} 104}
102 105
103 void 106 void
104AdrValue::_parse() 107AdrValue::_parse()
105{ 108{
106 vDebug("AdrValue::_parse()"); 109 vDebug("AdrValue::_parse()");
107 110
108 QStrList l; 111 Q3StrList l;
109 RTokenise(strRep_, ";", l); 112 RTokenise(strRep_, ";", l);
110 113
111 for (unsigned int i = 0; i < l.count(); i++) { 114 for (unsigned int i = 0; i < l.count(); i++) {
112 115
113 switch (i) { 116 switch (i) {
114 117
115 case 0: poBox_ = l.at(0);break; 118 case 0: poBox_ = l.at(0);break;
116 case 1: extAddress_ = l.at(1);break; 119 case 1: extAddress_ = l.at(1);break;
117 case 2: street_ = l.at(2);break; 120 case 2: street_ = l.at(2);break;
118 case 3: locality_ = l.at(3);break; 121 case 3: locality_ = l.at(3);break;
119 case 4: region_ = l.at(4);break; 122 case 4: region_ = l.at(4);break;
120 case 5: postCode_ = l.at(5);break; 123 case 5: postCode_ = l.at(5);break;
121 case 6: countryName_ = l.at(6);break; 124 case 6: countryName_ = l.at(6);break;
122 default: break; 125 default: break;
123 } 126 }
124 } 127 }
125} 128}
126 129
127 void 130 void
128AdrValue::_assemble() 131AdrValue::_assemble()
129{ 132{
130 vDebug("AdrValue::_assemble"); 133 vDebug("AdrValue::_assemble");
131 134
132 strRep_ = poBox_; 135 strRep_ = poBox_;
133 strRep_ += ";" +extAddress_; 136 strRep_ += ";" +extAddress_;
134 strRep_ += ";" +street_; 137 strRep_ += ";" +street_;
135 strRep_ += ";" +locality_; 138 strRep_ += ";" +locality_;
136 strRep_ += ";" +region_; 139 strRep_ += ";" +region_;
137 strRep_ += ";" +postCode_; 140 strRep_ += ";" +postCode_;
138 strRep_ += ";" +countryName_; 141 strRep_ += ";" +countryName_;
139} 142}
140 143
diff --git a/kabc/vcard/AgentParam.cpp b/kabc/vcard/AgentParam.cpp
index 5625e00..aae35ac 100644
--- a/kabc/vcard/AgentParam.cpp
+++ b/kabc/vcard/AgentParam.cpp
@@ -1,103 +1,105 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardAgentParam.h> 24#include <VCardAgentParam.h>
25 25
26#include <VCardParam.h> 26#include <VCardParam.h>
27//Added by qt3to4:
28#include <Q3CString>
27 29
28using namespace VCARD; 30using namespace VCARD;
29 31
30AgentParam::AgentParam() 32AgentParam::AgentParam()
31 :Param() 33 :Param()
32{ 34{
33} 35}
34 36
35AgentParam::AgentParam(const AgentParam & x) 37AgentParam::AgentParam(const AgentParam & x)
36 :Param(x), 38 :Param(x),
37 refer_(x.refer_), 39 refer_(x.refer_),
38 uri_(x.uri_) 40 uri_(x.uri_)
39{ 41{
40} 42}
41 43
42AgentParam::AgentParam(const QCString & s) 44AgentParam::AgentParam(const Q3CString & s)
43 :Param(s) 45 :Param(s)
44{ 46{
45} 47}
46 48
47 AgentParam & 49 AgentParam &
48AgentParam::operator = (AgentParam & x) 50AgentParam::operator = (AgentParam & x)
49{ 51{
50 if (*this == x) return *this; 52 if (*this == x) return *this;
51 53
52 refer_= x.refer_; 54 refer_= x.refer_;
53 uri_= x.uri_; 55 uri_= x.uri_;
54 56
55 Param::operator = (x); 57 Param::operator = (x);
56 return *this; 58 return *this;
57} 59}
58 60
59 AgentParam & 61 AgentParam &
60AgentParam::operator = (const QCString & s) 62AgentParam::operator = (const Q3CString & s)
61{ 63{
62 Param::operator = (s); 64 Param::operator = (s);
63 return *this; 65 return *this;
64} 66}
65 67
66 bool 68 bool
67AgentParam::operator == (AgentParam & x) 69AgentParam::operator == (AgentParam & x)
68{ 70{
69 parse(); 71 parse();
70 72
71 if (refer_) 73 if (refer_)
72 return (x.refer() && uri_ == x.uri_); 74 return (x.refer() && uri_ == x.uri_);
73 75
74 return !x.refer(); 76 return !x.refer();
75} 77}
76 78
77AgentParam::~AgentParam() 79AgentParam::~AgentParam()
78{ 80{
79} 81}
80 82
81 void 83 void
82AgentParam::_parse() 84AgentParam::_parse()
83{ 85{
84 if (strRep_.isEmpty()) { 86 if (strRep_.isEmpty()) {
85 refer_ = false; 87 refer_ = false;
86 return; 88 return;
87 } 89 }
88 90
89 refer_= true; 91 refer_= true;
90 uri_= strRep_; 92 uri_= strRep_;
91} 93}
92 94
93 void 95 void
94AgentParam::_assemble() 96AgentParam::_assemble()
95{ 97{
96 if (!refer_) { 98 if (!refer_) {
97 strRep_.truncate(0); 99 strRep_.truncate(0);
98 return; 100 return;
99 } 101 }
100 102
101 strRep_ = uri_.asString(); 103 strRep_ = uri_.asString();
102 return; 104 return;
103} 105}
diff --git a/kabc/vcard/AgentValue.cpp b/kabc/vcard/AgentValue.cpp
index bccde80..14e73b1 100644
--- a/kabc/vcard/AgentValue.cpp
+++ b/kabc/vcard/AgentValue.cpp
@@ -1,81 +1,83 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardAgentValue.h> 24#include <VCardAgentValue.h>
25 25
26#include <VCardValue.h> 26#include <VCardValue.h>
27//Added by qt3to4:
28#include <Q3CString>
27 29
28using namespace VCARD; 30using namespace VCARD;
29 31
30AgentValue::AgentValue() 32AgentValue::AgentValue()
31 :Value() 33 :Value()
32{ 34{
33} 35}
34 36
35AgentValue::AgentValue(const AgentValue & x) 37AgentValue::AgentValue(const AgentValue & x)
36 :Value(x) 38 :Value(x)
37{ 39{
38} 40}
39 41
40AgentValue::AgentValue(const QCString & s) 42AgentValue::AgentValue(const Q3CString & s)
41 :Value(s) 43 :Value(s)
42{ 44{
43} 45}
44 46
45 AgentValue & 47 AgentValue &
46AgentValue::operator = (AgentValue & x) 48AgentValue::operator = (AgentValue & x)
47{ 49{
48 if (*this == x) return *this; 50 if (*this == x) return *this;
49 51
50 Value::operator = (x); 52 Value::operator = (x);
51 return *this; 53 return *this;
52} 54}
53 55
54 AgentValue & 56 AgentValue &
55AgentValue::operator = (const QCString & s) 57AgentValue::operator = (const Q3CString & s)
56{ 58{
57 Value::operator = (s); 59 Value::operator = (s);
58 return *this; 60 return *this;
59} 61}
60 62
61 bool 63 bool
62AgentValue::operator == (AgentValue & x) 64AgentValue::operator == (AgentValue & x)
63{ 65{
64 x.parse(); 66 x.parse();
65 return false; 67 return false;
66} 68}
67 69
68AgentValue::~AgentValue() 70AgentValue::~AgentValue()
69{ 71{
70} 72}
71 73
72 void 74 void
73AgentValue::_parse() 75AgentValue::_parse()
74{ 76{
75} 77}
76 78
77 void 79 void
78AgentValue::_assemble() 80AgentValue::_assemble()
79{ 81{
80} 82}
81 83
diff --git a/kabc/vcard/ClassValue.cpp b/kabc/vcard/ClassValue.cpp
index f01e5a6..c088d7c 100644
--- a/kabc/vcard/ClassValue.cpp
+++ b/kabc/vcard/ClassValue.cpp
@@ -1,120 +1,122 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardClassValue.h> 24#include <VCardClassValue.h>
25 25
26#include <VCardValue.h> 26#include <VCardValue.h>
27 27
28#include <kdebug.h> 28#include <kdebug.h>
29//Added by qt3to4:
30#include <Q3CString>
29 31
30using namespace VCARD; 32using namespace VCARD;
31 33
32ClassValue::ClassValue() 34ClassValue::ClassValue()
33 :Value() 35 :Value()
34{ 36{
35} 37}
36 38
37ClassValue::ClassValue(const ClassValue & x) 39ClassValue::ClassValue(const ClassValue & x)
38 :Value(x), 40 :Value(x),
39 classType_(x.classType_) 41 classType_(x.classType_)
40{ 42{
41} 43}
42 44
43ClassValue::ClassValue(const QCString & s) 45ClassValue::ClassValue(const Q3CString & s)
44 :Value(s) 46 :Value(s)
45{ 47{
46} 48}
47 49
48 ClassValue & 50 ClassValue &
49ClassValue::operator = (ClassValue & x) 51ClassValue::operator = (ClassValue & x)
50{ 52{
51 if (*this == x) return *this; 53 if (*this == x) return *this;
52 x.parse(); 54 x.parse();
53 55
54 classType_ = x.classType_; 56 classType_ = x.classType_;
55 57
56 Value::operator = (x); 58 Value::operator = (x);
57 return *this; 59 return *this;
58} 60}
59 61
60 ClassValue & 62 ClassValue &
61ClassValue::operator = (const QCString & s) 63ClassValue::operator = (const Q3CString & s)
62{ 64{
63 Value::operator = (s); 65 Value::operator = (s);
64 return *this; 66 return *this;
65} 67}
66 68
67 bool 69 bool
68ClassValue::operator == (ClassValue & x) 70ClassValue::operator == (ClassValue & x)
69{ 71{
70 x.parse(); 72 x.parse();
71 return ( classType_ == x.classType_ ); 73 return ( classType_ == x.classType_ );
72} 74}
73 75
74ClassValue::~ClassValue() 76ClassValue::~ClassValue()
75{ 77{
76} 78}
77 79
78 ClassValue * 80 ClassValue *
79ClassValue::clone() 81ClassValue::clone()
80{ 82{
81 return new ClassValue( *this ); 83 return new ClassValue( *this );
82} 84}
83 85
84 void 86 void
85ClassValue::_parse() 87ClassValue::_parse()
86{ 88{
87 if (qstricmp(strRep_, "PUBLIC") == 0) 89 if (qstricmp(strRep_, "PUBLIC") == 0)
88 classType_ = Public; 90 classType_ = Public;
89 91
90 else if (qstricmp(strRep_, "PRIVATE") == 0) 92 else if (qstricmp(strRep_, "PRIVATE") == 0)
91 classType_ = Private; 93 classType_ = Private;
92 94
93 else if (qstricmp(strRep_, "CONFIDENTIAL") == 0) 95 else if (qstricmp(strRep_, "CONFIDENTIAL") == 0)
94 classType_ = Confidential; 96 classType_ = Confidential;
95 97
96 else classType_ = Other; 98 else classType_ = Other;
97} 99}
98 100
99 void 101 void
100ClassValue::_assemble() 102ClassValue::_assemble()
101{ 103{
102 switch (classType_) { 104 switch (classType_) {
103 105
104 case Public: 106 case Public:
105 strRep_ = "PUBLIC"; 107 strRep_ = "PUBLIC";
106 break; 108 break;
107 109
108 case Private: 110 case Private:
109 strRep_ = "PRIVATE"; 111 strRep_ = "PRIVATE";
110 break; 112 break;
111 113
112 case Confidential: 114 case Confidential:
113 strRep_ = "CONFIDENTIAL"; 115 strRep_ = "CONFIDENTIAL";
114 break; 116 break;
115 117
116 default: 118 default:
117 break; 119 break;
118 } 120 }
119} 121}
120 122
diff --git a/kabc/vcard/ContentLine.cpp b/kabc/vcard/ContentLine.cpp
index 0a2f97d..1d4886c 100644
--- a/kabc/vcard/ContentLine.cpp
+++ b/kabc/vcard/ContentLine.cpp
@@ -1,355 +1,355 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <qcstring.h> 24#include <q3cstring.h>
25#include <qstrlist.h> 25#include <q3strlist.h>
26#include <qregexp.h> 26#include <qregexp.h>
27 27
28#include <kdebug.h> 28#include <kdebug.h>
29 29
30#include <VCardAdrParam.h> 30#include <VCardAdrParam.h>
31#include <VCardAgentParam.h> 31#include <VCardAgentParam.h>
32#include <VCardDateParam.h> 32#include <VCardDateParam.h>
33#include <VCardEmailParam.h> 33#include <VCardEmailParam.h>
34#include <VCardImageParam.h> 34#include <VCardImageParam.h>
35#include <VCardSourceParam.h> 35#include <VCardSourceParam.h>
36#include <VCardTelParam.h> 36#include <VCardTelParam.h>
37#include <VCardTextBinParam.h> 37#include <VCardTextBinParam.h>
38#include <VCardTextParam.h> 38#include <VCardTextParam.h>
39 39
40#include <VCardAdrValue.h> 40#include <VCardAdrValue.h>
41#include <VCardAgentValue.h> 41#include <VCardAgentValue.h>
42#include <VCardDateValue.h> 42#include <VCardDateValue.h>
43#include <VCardImageValue.h> 43#include <VCardImageValue.h>
44#include <VCardTextValue.h> 44#include <VCardTextValue.h>
45#include <VCardTextBinValue.h> 45#include <VCardTextBinValue.h>
46#include <VCardLangValue.h> 46#include <VCardLangValue.h>
47#include <VCardNValue.h> 47#include <VCardNValue.h>
48#include <VCardURIValue.h> 48#include <VCardURIValue.h>
49#include <VCardSoundValue.h> 49#include <VCardSoundValue.h>
50#include <VCardClassValue.h> 50#include <VCardClassValue.h>
51#include <VCardFloatValue.h> 51#include <VCardFloatValue.h>
52#include <VCardOrgValue.h> 52#include <VCardOrgValue.h>
53#include <VCardTelValue.h> 53#include <VCardTelValue.h>
54#include <VCardTextListValue.h> 54#include <VCardTextListValue.h>
55#include <VCardUTCValue.h> 55#include <VCardUTCValue.h>
56#include <VCardGeoValue.h> 56#include <VCardGeoValue.h>
57 57
58#include <VCardRToken.h> 58#include <VCardRToken.h>
59#include <VCardContentLine.h> 59#include <VCardContentLine.h>
60 60
61#include <VCardEntity.h> 61#include <VCardEntity.h>
62#include <VCardEnum.h> 62#include <VCardEnum.h>
63#include <VCardDefines.h> 63#include <VCardDefines.h>
64 64
65using namespace VCARD; 65using namespace VCARD;
66 66
67ContentLine::ContentLine() 67ContentLine::ContentLine()
68 :Entity(), 68 :Entity(),
69 value_(0), 69 value_(0),
70 paramType_( ParamUnknown ), 70 paramType_( ParamUnknown ),
71 valueType_( ValueUnknown ), 71 valueType_( ValueUnknown ),
72 entityType_( EntityUnknown ) 72 entityType_( EntityUnknown )
73{ 73{
74 paramList_.setAutoDelete( TRUE ); 74 paramList_.setAutoDelete( TRUE );
75} 75}
76 76
77ContentLine::ContentLine(const ContentLine & x) 77ContentLine::ContentLine(const ContentLine & x)
78 :Entity(x), 78 :Entity(x),
79 group_ (x.group_), 79 group_ (x.group_),
80 name_ (x.name_), 80 name_ (x.name_),
81 /*US paramList_(x.paramList_),*/ 81 /*US paramList_(x.paramList_),*/
82 value_(x.value_->clone()), 82 value_(x.value_->clone()),
83 paramType_(x.paramType_), 83 paramType_(x.paramType_),
84 valueType_(x.valueType_), 84 valueType_(x.valueType_),
85 entityType_(x.entityType_) 85 entityType_(x.entityType_)
86{ 86{
87 paramList_.setAutoDelete( TRUE ); 87 paramList_.setAutoDelete( TRUE );
88 88
89 89
90 ParamListIterator it(x.paramList_); 90 ParamListIterator it(x.paramList_);
91 for (; it.current(); ++it) 91 for (; it.current(); ++it)
92 { 92 {
93 Param *p = new Param; 93 Param *p = new Param;
94 p->setName( it.current()->name() ); 94 p->setName( it.current()->name() );
95 p->setValue( it.current()->value() ); 95 p->setValue( it.current()->value() );
96 paramList_.append(p); 96 paramList_.append(p);
97 } 97 }
98 98
99} 99}
100 100
101ContentLine::ContentLine(const QCString & s) 101ContentLine::ContentLine(const Q3CString & s)
102 :Entity(s), 102 :Entity(s),
103 value_(0), 103 value_(0),
104 paramType_( ParamUnknown ), 104 paramType_( ParamUnknown ),
105 valueType_( ValueUnknown ), 105 valueType_( ValueUnknown ),
106 entityType_( EntityUnknown ) 106 entityType_( EntityUnknown )
107{ 107{
108 paramList_.setAutoDelete( TRUE ); 108 paramList_.setAutoDelete( TRUE );
109} 109}
110 110
111 ContentLine & 111 ContentLine &
112ContentLine::operator = (ContentLine & x) 112ContentLine::operator = (ContentLine & x)
113{ 113{
114 if (*this == x) return *this; 114 if (*this == x) return *this;
115 115
116 ParamListIterator it(x.paramList_); 116 ParamListIterator it(x.paramList_);
117 for (; it.current(); ++it) 117 for (; it.current(); ++it)
118 { 118 {
119 Param *p = new Param; 119 Param *p = new Param;
120 p->setName( it.current()->name() ); 120 p->setName( it.current()->name() );
121 p->setValue( it.current()->value() ); 121 p->setValue( it.current()->value() );
122 paramList_.append(p); 122 paramList_.append(p);
123 } 123 }
124 124
125 value_ = x.value_->clone(); 125 value_ = x.value_->clone();
126 126
127 Entity::operator = (x); 127 Entity::operator = (x);
128 return *this; 128 return *this;
129} 129}
130 130
131 ContentLine & 131 ContentLine &
132ContentLine::operator = (const QCString & s) 132ContentLine::operator = (const Q3CString & s)
133{ 133{
134 Entity::operator = (s); 134 Entity::operator = (s);
135 delete value_; 135 delete value_;
136 value_ = 0; 136 value_ = 0;
137 return *this; 137 return *this;
138} 138}
139 139
140 bool 140 bool
141ContentLine::operator == (ContentLine & x) 141ContentLine::operator == (ContentLine & x)
142{ 142{
143 x.parse(); 143 x.parse();
144 144
145 QPtrListIterator<Param> it(x.paramList()); 145 Q3PtrListIterator<Param> it(x.paramList());
146 146
147 if (!paramList_.find(it.current())) 147 if (!paramList_.find(it.current()))
148 return false; 148 return false;
149 149
150 return true; 150 return true;
151} 151}
152 152
153ContentLine::~ContentLine() 153ContentLine::~ContentLine()
154{ 154{
155 delete value_; 155 delete value_;
156 value_ = 0; 156 value_ = 0;
157} 157}
158 158
159 void 159 void
160ContentLine::_parse() 160ContentLine::_parse()
161{ 161{
162 vDebug("parse"); 162 vDebug("parse");
163 163
164 // Unfold folded lines 164 // Unfold folded lines
165 // NLR 165 // NLR
166 strRep_ = strRep_.replace( QRegExp( "\\r" ), "" ); 166 strRep_ = strRep_.replace( "\\r" , "" );
167 // Unqote newlines 167 // Unqote newlines
168 strRep_ = strRep_.replace( QRegExp( "\\\\n" ), "\n" ); 168 strRep_ = strRep_.replace( "\\\\n", "\n" );
169 //NLR 169 //NLR
170 strRep_ = strRep_.replace( QRegExp( "\\\\r" ), "\r" ); 170 strRep_ = strRep_.replace( "\\\\r" , "\r" );
171 171
172 int split = strRep_.find(':'); 172 int split = strRep_.find(':');
173 173
174 if (split == -1) { // invalid content line 174 if (split == -1) { // invalid content line
175 vDebug("No ':'"); 175 vDebug("No ':'");
176 return; 176 return;
177 } 177 }
178 178
179 QCString firstPart(strRep_.left(split)); 179 Q3CString firstPart(strRep_.left(split));
180 QCString valuePart(strRep_.mid(split + 1)); 180 Q3CString valuePart(strRep_.mid(split + 1));
181 181
182 split = firstPart.find('.'); 182 split = firstPart.find('.');
183 183
184 if (split != -1) { 184 if (split != -1) {
185 group_ = firstPart.left(split); 185 group_ = firstPart.left(split);
186 firstPart= firstPart.mid(split + 1); 186 firstPart= firstPart.mid(split + 1);
187 } 187 }
188 188
189 vDebug("Group == " + group_); 189 vDebug("Group == " + group_);
190 vDebug("firstPart == " + firstPart); 190 vDebug("firstPart == " + firstPart);
191 vDebug("valuePart == " + valuePart); 191 vDebug("valuePart == " + valuePart);
192 192
193 // Now we have the group, the name and param list together and the value. 193 // Now we have the group, the name and param list together and the value.
194 194
195 QStrList l; 195 Q3StrList l;
196 196
197 RTokenise(firstPart, ";", l); 197 RTokenise(firstPart, ";", l);
198 198
199 if (l.count() == 0) {// invalid - no name ! 199 if (l.count() == 0) {// invalid - no name !
200 vDebug("No name for this content line !"); 200 vDebug("No name for this content line !");
201 return; 201 return;
202 } 202 }
203 203
204 name_ = l.at(0); 204 name_ = l.at(0);
205 205
206 // Now we have the name, so the rest of 'l' is the params. 206 // Now we have the name, so the rest of 'l' is the params.
207 // Remove the name part. 207 // Remove the name part.
208 l.remove(0u); 208 l.remove(0u);
209 209
210 entityType_= EntityNameToEntityType(name_); 210 entityType_= EntityNameToEntityType(name_);
211 paramType_= EntityTypeToParamType(entityType_); 211 paramType_= EntityTypeToParamType(entityType_);
212 212
213 unsigned int i = 0; 213 unsigned int i = 0;
214 214
215 // For each parameter, create a new parameter of the correct type. 215 // For each parameter, create a new parameter of the correct type.
216 216
217 QStrListIterator it(l); 217 Q3StrListIterator it(l);
218 218
219 for (; it.current(); ++it, i++) { 219 for (; it.current(); ++it, i++) {
220 220
221 QCString str = *it; 221 Q3CString str = *it;
222 222
223 split = str.find("="); 223 split = str.find("=");
224 if (split < 0 ) { 224 if (split < 0 ) {
225 vDebug("No '=' in paramter."); 225 vDebug("No '=' in paramter.");
226 continue; 226 continue;
227 } 227 }
228 228
229 QCString paraName = str.left(split); 229 Q3CString paraName = str.left(split);
230 QCString paraValue = str.mid(split + 1); 230 Q3CString paraValue = str.mid(split + 1);
231 231
232 QStrList paraValues; 232 Q3StrList paraValues;
233 RTokenise(paraValue, ",", paraValues); 233 RTokenise(paraValue, ",", paraValues);
234 234
235 QStrListIterator it2( paraValues ); 235 Q3StrListIterator it2( paraValues );
236 236
237 for(; it2.current(); ++it2) { 237 for(; it2.current(); ++it2) {
238 238
239 Param *p = new Param; 239 Param *p = new Param;
240 p->setName( paraName ); 240 p->setName( paraName );
241 p->setValue( *it2 ); 241 p->setValue( *it2 );
242 242
243 paramList_.append(p); 243 paramList_.append(p);
244 } 244 }
245 } 245 }
246 246
247 // Create a new value of the correct type. 247 // Create a new value of the correct type.
248 248
249 valueType_ = EntityTypeToValueType(entityType_); 249 valueType_ = EntityTypeToValueType(entityType_);
250 250
251 //kdDebug(5710) << "valueType: " << valueType_ << endl; 251 //kdDebug(5710) << "valueType: " << valueType_ << endl;
252 252
253 switch (valueType_) { 253 switch (valueType_) {
254 254
255 case ValueSound: value_ = new SoundValue;break; 255 case ValueSound: value_ = new SoundValue;break;
256 case ValueAgent: value_ = new AgentValue;break; 256 case ValueAgent: value_ = new AgentValue;break;
257 case ValueAddress: value_ = new AdrValue; break; 257 case ValueAddress: value_ = new AdrValue; break;
258 case ValueTel: value_ = new TelValue; break; 258 case ValueTel: value_ = new TelValue; break;
259 case ValueTextBin: value_ = new TextBinValue;break; 259 case ValueTextBin: value_ = new TextBinValue;break;
260 case ValueOrg: value_ = new OrgValue; break; 260 case ValueOrg: value_ = new OrgValue; break;
261 case ValueN: value_ = new NValue; break; 261 case ValueN: value_ = new NValue; break;
262 case ValueUTC: value_ = new UTCValue; break; 262 case ValueUTC: value_ = new UTCValue; break;
263 case ValueURI: value_ = new URIValue; break; 263 case ValueURI: value_ = new URIValue; break;
264 case ValueClass: value_ = new ClassValue;break; 264 case ValueClass: value_ = new ClassValue;break;
265 case ValueFloat: value_ = new FloatValue;break; 265 case ValueFloat: value_ = new FloatValue;break;
266 case ValueImage: value_ = new ImageValue;break; 266 case ValueImage: value_ = new ImageValue;break;
267 case ValueDate: value_ = new DateValue; break; 267 case ValueDate: value_ = new DateValue; break;
268 case ValueTextList: value_ = new TextListValue;break; 268 case ValueTextList: value_ = new TextListValue;break;
269 case ValueGeo: value_ = new GeoValue; break; 269 case ValueGeo: value_ = new GeoValue; break;
270 case ValueText: 270 case ValueText:
271 case ValueUnknown: 271 case ValueUnknown:
272 default: value_ = new TextValue; break; 272 default: value_ = new TextValue; break;
273 } 273 }
274 274
275 *value_ = valuePart; 275 *value_ = valuePart;
276} 276}
277 277
278 void 278 void
279ContentLine::_assemble() 279ContentLine::_assemble()
280{ 280{
281 //strRep_.truncate(0); 281 //strRep_.truncate(0);
282 QString line; 282 QString line;
283 if (!group_.isEmpty()) 283 if (!group_.isEmpty())
284 line = group_ + '.'; 284 line = group_ + '.';
285 line += name_; 285 line += name_;
286 ParamListIterator it(paramList_); 286 ParamListIterator it(paramList_);
287 for (; it.current(); ++it) 287 for (; it.current(); ++it)
288 line += ";" + it.current()->asString(); 288 line += ";" + it.current()->asString();
289 289
290 if (value_ != 0) 290 if (value_ != 0)
291 line += ":" + value_->asString(); 291 line += ":" + value_->asString();
292 292
293 line = line.replace( QRegExp( "\r" ), "\\r" ); 293 line = line.replace( QRegExp( "\r" ), "\\r" );
294 line = line.replace( QRegExp( "\n" ), "\\n" ); 294 line = line.replace( QRegExp( "\n" ), "\\n" );
295 295
296 // Fold lines longer than 72 chars 296 // Fold lines longer than 72 chars
297 const int maxLen = 72; 297 const int maxLen = 72;
298 uint cursor = 0; 298 uint cursor = 0;
299 QString cut; 299 QString cut;
300 while( line.length() > ( cursor + 1 ) * maxLen ) { 300 while( line.length() > ( cursor + 1 ) * maxLen ) {
301 cut += line.mid( cursor * maxLen, maxLen ); 301 cut += line.mid( cursor * maxLen, maxLen );
302 cut += "\r\n "; 302 cut += "\r\n ";
303 ++cursor; 303 ++cursor;
304 } 304 }
305 cut += line.mid( cursor * maxLen ); 305 cut += line.mid( cursor * maxLen );
306 strRep_ = cut.latin1(); 306 strRep_ = cut.latin1();
307 //qDebug("ContentLine::_assemble()\n%s*****", strRep_.data()); 307 //qDebug("ContentLine::_assemble()\n%s*****", strRep_.data());
308#if 0 308#if 0
309 vDebug("Assemble (argl) - my name is \"" + name_ + "\""); 309 vDebug("Assemble (argl) - my name is \"" + name_ + "\"");
310 strRep_.truncate(0); 310 strRep_.truncate(0);
311 311
312 QCString line; 312 Q3CString line;
313 313
314 if (!group_.isEmpty()) 314 if (!group_.isEmpty())
315 line += group_ + '.'; 315 line += group_ + '.';
316 316
317 line += name_; 317 line += name_;
318 318
319 vDebug("Adding parameters"); 319 vDebug("Adding parameters");
320 ParamListIterator it(paramList_); 320 ParamListIterator it(paramList_);
321 321
322 for (; it.current(); ++it) 322 for (; it.current(); ++it)
323 line += ";" + it.current()->asString(); 323 line += ";" + it.current()->asString();
324 324
325 vDebug("Adding value"); 325 vDebug("Adding value");
326 if (value_ != 0) 326 if (value_ != 0)
327 line += ":" + value_->asString(); 327 line += ":" + value_->asString();
328 else 328 else
329 vDebug("No value"); 329 vDebug("No value");
330 330
331 // Quote newlines 331 // Quote newlines
332 line = line.replace( QRegExp( "\n" ), "\\n" ); 332 line = line.replace( QRegExp( "\n" ), "\\n" );
333 333
334 // Fold lines longer than 72 chars 334 // Fold lines longer than 72 chars
335 const int maxLen = 72; 335 const int maxLen = 72;
336 uint cursor = 0; 336 uint cursor = 0;
337 while( line.length() > ( cursor + 1 ) * maxLen ) { 337 while( line.length() > ( cursor + 1 ) * maxLen ) {
338 strRep_ += line.mid( cursor * maxLen, maxLen ); 338 strRep_ += line.mid( cursor * maxLen, maxLen );
339 strRep_ += "\r\n "; 339 strRep_ += "\r\n ";
340 ++cursor; 340 ++cursor;
341 } 341 }
342 strRep_ += line.mid( cursor * maxLen ); 342 strRep_ += line.mid( cursor * maxLen );
343 qDebug("ContentLine::_assemble()\n%s*****", strRep_.data()); 343 qDebug("ContentLine::_assemble()\n%s*****", strRep_.data());
344#endif 344#endif
345} 345}
346 346
347 void 347 void
348ContentLine::clear() 348ContentLine::clear()
349{ 349{
350 group_.truncate(0); 350 group_.truncate(0);
351 name_.truncate(0); 351 name_.truncate(0);
352 paramList_.clear(); 352 paramList_.clear();
353 delete value_; 353 delete value_;
354 value_ = 0; 354 value_ = 0;
355} 355}
diff --git a/kabc/vcard/DateParam.cpp b/kabc/vcard/DateParam.cpp
index 52af089..52fb828 100644
--- a/kabc/vcard/DateParam.cpp
+++ b/kabc/vcard/DateParam.cpp
@@ -1,82 +1,84 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardDateParam.h> 24#include <VCardDateParam.h>
25 25
26#include <VCardParam.h> 26#include <VCardParam.h>
27//Added by qt3to4:
28#include <Q3CString>
27 29
28using namespace VCARD; 30using namespace VCARD;
29 31
30DateParam::DateParam() 32DateParam::DateParam()
31 :Param() 33 :Param()
32{ 34{
33} 35}
34 36
35DateParam::DateParam(const DateParam & x) 37DateParam::DateParam(const DateParam & x)
36 :Param(x) 38 :Param(x)
37{ 39{
38} 40}
39 41
40DateParam::DateParam(const QCString & s) 42DateParam::DateParam(const Q3CString & s)
41 :Param(s) 43 :Param(s)
42{ 44{
43} 45}
44 46
45 DateParam & 47 DateParam &
46DateParam::operator = (DateParam & x) 48DateParam::operator = (DateParam & x)
47{ 49{
48 if (*this == x) return *this; 50 if (*this == x) return *this;
49 51
50 Param::operator = (x); 52 Param::operator = (x);
51 return *this; 53 return *this;
52} 54}
53 55
54 DateParam & 56 DateParam &
55DateParam::operator = (const QCString & s) 57DateParam::operator = (const Q3CString & s)
56{ 58{
57 Param::operator = (s); 59 Param::operator = (s);
58 return *this; 60 return *this;
59} 61}
60 62
61 bool 63 bool
62DateParam::operator == (DateParam & x) 64DateParam::operator == (DateParam & x)
63{ 65{
64 x.parse(); 66 x.parse();
65 67
66 return false; 68 return false;
67} 69}
68 70
69DateParam::~DateParam() 71DateParam::~DateParam()
70{ 72{
71} 73}
72 74
73 void 75 void
74DateParam::_parse() 76DateParam::_parse()
75{ 77{
76} 78}
77 79
78 void 80 void
79DateParam::_assemble() 81DateParam::_assemble()
80{ 82{
81} 83}
82 84
diff --git a/kabc/vcard/DateValue.cpp b/kabc/vcard/DateValue.cpp
index c5c5c85..87c7007 100644
--- a/kabc/vcard/DateValue.cpp
+++ b/kabc/vcard/DateValue.cpp
@@ -1,434 +1,436 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <qregexp.h> 24#include <qregexp.h>
25//Added by qt3to4:
26#include <Q3CString>
25 27
26#include <kdebug.h> 28#include <kdebug.h>
27 29
28#include <VCardDefines.h> 30#include <VCardDefines.h>
29#include <VCardDateValue.h> 31#include <VCardDateValue.h>
30#include <VCardValue.h> 32#include <VCardValue.h>
31 33
32using namespace VCARD; 34using namespace VCARD;
33 35
34DateValue::DateValue() 36DateValue::DateValue()
35 :Value() 37 :Value()
36{ 38{
37 vDebug("DateValue::DateValue()"); 39 vDebug("DateValue::DateValue()");
38} 40}
39 41
40DateValue::DateValue( 42DateValue::DateValue(
41 unsigned intyear, 43 unsigned intyear,
42 unsigned intmonth, 44 unsigned intmonth,
43 unsigned intday, 45 unsigned intday,
44 unsigned inthour, 46 unsigned inthour,
45 unsigned intminute, 47 unsigned intminute,
46 unsigned intsecond, 48 unsigned intsecond,
47 double secFrac, 49 double secFrac,
48 bool zonePositive, 50 bool zonePositive,
49 unsigned intzoneHour, 51 unsigned intzoneHour,
50 unsigned intzoneMinute) 52 unsigned intzoneMinute)
51 : Value (), 53 : Value (),
52 year_ (year), 54 year_ (year),
53 month_ (month), 55 month_ (month),
54 day_ (day), 56 day_ (day),
55 hour_ (hour), 57 hour_ (hour),
56 minute_ (minute), 58 minute_ (minute),
57 second_ (second), 59 second_ (second),
58 zoneHour_ (zoneHour), 60 zoneHour_ (zoneHour),
59 zoneMinute_ (zoneMinute), 61 zoneMinute_ (zoneMinute),
60 secFrac_ (secFrac), 62 secFrac_ (secFrac),
61 zonePositive_(zonePositive), 63 zonePositive_(zonePositive),
62 hasTime_(true) 64 hasTime_(true)
63{ 65{
64 parsed_ = true; 66 parsed_ = true;
65 assembled_ = false; 67 assembled_ = false;
66} 68}
67 69
68DateValue::DateValue(const QDate & d) 70DateValue::DateValue(const QDate & d)
69 : Value (), 71 : Value (),
70 year_ (d.year()), 72 year_ (d.year()),
71 month_ (d.month()), 73 month_ (d.month()),
72 day_ (d.day()), 74 day_ (d.day()),
73 hasTime_(false) 75 hasTime_(false)
74{ 76{
75 parsed_ = true; 77 parsed_ = true;
76 assembled_ = false; 78 assembled_ = false;
77} 79}
78 80
79DateValue::DateValue(const QDateTime & d) 81DateValue::DateValue(const QDateTime & d)
80 : Value (), 82 : Value (),
81 year_ (d.date().year()), 83 year_ (d.date().year()),
82 month_ (d.date().month()), 84 month_ (d.date().month()),
83 day_ (d.date().day()), 85 day_ (d.date().day()),
84 hour_ (d.time().hour()), 86 hour_ (d.time().hour()),
85 minute_ (d.time().minute()), 87 minute_ (d.time().minute()),
86 second_ (d.time().second()), 88 second_ (d.time().second()),
87 hasTime_(true) 89 hasTime_(true)
88{ 90{
89 parsed_ = true; 91 parsed_ = true;
90 assembled_ = false; 92 assembled_ = false;
91} 93}
92 94
93DateValue::DateValue(const DateValue & x) 95DateValue::DateValue(const DateValue & x)
94 :Value(x) 96 :Value(x)
95{ 97{
96 year_ = x.year_; 98 year_ = x.year_;
97 month_ = x.month_; 99 month_ = x.month_;
98 day_ = x.day_; 100 day_ = x.day_;
99 hour_ = x.hour_; 101 hour_ = x.hour_;
100 minute_ = x.minute_; 102 minute_ = x.minute_;
101 second_ = x.second_; 103 second_ = x.second_;
102 zoneHour_ = x.zoneHour_; 104 zoneHour_ = x.zoneHour_;
103 zoneMinute_ = x.zoneMinute_; 105 zoneMinute_ = x.zoneMinute_;
104 secFrac_ = x.secFrac_; 106 secFrac_ = x.secFrac_;
105 hasTime_ = x.hasTime_; 107 hasTime_ = x.hasTime_;
106} 108}
107 109
108DateValue::DateValue(const QCString & s) 110DateValue::DateValue(const Q3CString & s)
109 :Value(s) 111 :Value(s)
110{ 112{
111} 113}
112 114
113 DateValue & 115 DateValue &
114DateValue::operator = (DateValue & x) 116DateValue::operator = (DateValue & x)
115{ 117{
116 if (*this == x) return *this; 118 if (*this == x) return *this;
117 119
118 Value::operator = (x); 120 Value::operator = (x);
119 return *this; 121 return *this;
120} 122}
121 123
122 DateValue & 124 DateValue &
123DateValue::operator = (const QCString & s) 125DateValue::operator = (const Q3CString & s)
124{ 126{
125 Value::operator = (s); 127 Value::operator = (s);
126 return *this; 128 return *this;
127} 129}
128 130
129 bool 131 bool
130DateValue::operator == (DateValue & x) 132DateValue::operator == (DateValue & x)
131{ 133{
132 x.parse(); 134 x.parse();
133 return false; 135 return false;
134} 136}
135 137
136DateValue::~DateValue() 138DateValue::~DateValue()
137{ 139{
138} 140}
139 141
140 DateValue * 142 DateValue *
141DateValue::clone() 143DateValue::clone()
142{ 144{
143 return new DateValue( *this ); 145 return new DateValue( *this );
144} 146}
145 147
146 void 148 void
147DateValue::_parse() 149DateValue::_parse()
148{ 150{
149 vDebug("DateValue::_parse()"); 151 vDebug("DateValue::_parse()");
150 152
151 // date = date-full-year ["-"] date-month ["-"] date-mday 153 // date = date-full-year ["-"] date-month ["-"] date-mday
152 // time = time-hour [":"] time-minute [":"] time-second [":"] 154 // time = time-hour [":"] time-minute [":"] time-second [":"]
153 // [time-secfrac] [time-zone] 155 // [time-secfrac] [time-zone]
154 156
155 int timeSep = strRep_.find('T'); 157 int timeSep = strRep_.find('T');
156 158
157 QCString dateStr; 159 Q3CString dateStr;
158 QCString timeStr; 160 Q3CString timeStr;
159 161
160 if (timeSep == -1) { 162 if (timeSep == -1) {
161 163
162 dateStr = strRep_; 164 dateStr = strRep_;
163 vDebug("Has date string \"" + dateStr + "\""); 165 vDebug("Has date string \"" + dateStr + "\"");
164 166
165 } else { 167 } else {
166 168
167 dateStr = strRep_.left(timeSep); 169 dateStr = strRep_.left(timeSep);
168 vDebug("Has date string \"" + dateStr + "\""); 170 vDebug("Has date string \"" + dateStr + "\"");
169 171
170 timeStr = strRep_.mid(timeSep + 1); 172 timeStr = strRep_.mid(timeSep + 1);
171 vDebug("Has time string \"" + timeStr + "\""); 173 vDebug("Has time string \"" + timeStr + "\"");
172 } 174 }
173 175
174 /////////////////////////////////////////////////////////////// DATE 176 /////////////////////////////////////////////////////////////// DATE
175 177
176 dateStr.replace(QRegExp("-"), ""); 178 dateStr.replace("-", "");
177 179
178 kdDebug(5710) << "dateStr: " << dateStr << endl; 180 kdDebug(5710) << "dateStr: " << dateStr << endl;
179 181
180 year_= dateStr.left(4).toInt(); 182 year_= dateStr.left(4).toInt();
181 month_= dateStr.mid(4, 2).toInt(); 183 month_= dateStr.mid(4, 2).toInt();
182 day_= dateStr.right(2).toInt(); 184 day_= dateStr.right(2).toInt();
183 185
184 if (timeSep == -1) { 186 if (timeSep == -1) {
185 hasTime_ = false; 187 hasTime_ = false;
186 return; // No time, done. 188 return; // No time, done.
187 } 189 }
188 else 190 else
189 hasTime_ = true; 191 hasTime_ = true;
190 192
191 /////////////////////////////////////////////////////////////// TIME 193 /////////////////////////////////////////////////////////////// TIME
192 194
193 /////////////////////////////////////////////////////////////// ZONE 195 /////////////////////////////////////////////////////////////// ZONE
194 196
195 int zoneSep = timeStr.find('Z'); 197 int zoneSep = timeStr.find('Z');
196 198
197 if (zoneSep != -1 && timeStr.length() - zoneSep > 3) { 199 if (zoneSep != -1 && timeStr.length() - zoneSep > 3) {
198 200
199 QCString zoneStr(timeStr.mid(zoneSep + 1)); 201 Q3CString zoneStr(timeStr.mid(zoneSep + 1));
200 vDebug("zoneStr == " + zoneStr); 202 vDebug("zoneStr == " + zoneStr);
201 203
202 zonePositive_= (zoneStr[0] == '+'); 204 zonePositive_= (zoneStr[0] == '+');
203 zoneHour_ = zoneStr.mid(1, 2).toInt(); 205 zoneHour_ = zoneStr.mid(1, 2).toInt();
204 zoneMinute_ = zoneStr.right(2).toInt(); 206 zoneMinute_ = zoneStr.right(2).toInt();
205 207
206 timeStr.remove(zoneSep, timeStr.length() - zoneSep); 208 timeStr.remove(zoneSep, timeStr.length() - zoneSep);
207 } 209 }
208 210
209 //////////////////////////////////////////////////// SECOND FRACTION 211 //////////////////////////////////////////////////// SECOND FRACTION
210 212
211 int secFracSep = timeStr.findRev(','); 213 int secFracSep = timeStr.findRev(',');
212 214
213 if (secFracSep != -1 && zoneSep != -1) { // zoneSep checked to avoid errors. 215 if (secFracSep != -1 && zoneSep != -1) { // zoneSep checked to avoid errors.
214 QCString quirkafleeg = "0." + timeStr.mid(secFracSep + 1, zoneSep); 216 Q3CString quirkafleeg = "0." + timeStr.mid(secFracSep + 1, zoneSep);
215 secFrac_ = quirkafleeg.toDouble(); 217 secFrac_ = quirkafleeg.toDouble();
216 } 218 }
217 219
218 /////////////////////////////////////////////////////////////// HMS 220 /////////////////////////////////////////////////////////////// HMS
219 221
220 timeStr.replace(QRegExp(":"), ""); 222 timeStr.replace(":", "");
221 223
222 hour_= timeStr.left(2).toInt(); 224 hour_= timeStr.left(2).toInt();
223 minute_= timeStr.mid(2, 2).toInt(); 225 minute_= timeStr.mid(2, 2).toInt();
224 second_= timeStr.mid(4, 2).toInt(); 226 second_= timeStr.mid(4, 2).toInt();
225} 227}
226 228
227 void 229 void
228DateValue::_assemble() 230DateValue::_assemble()
229{ 231{
230 vDebug("DateValue::_assemble"); 232 vDebug("DateValue::_assemble");
231 233
232 QCString year; 234 Q3CString year;
233 QCString month; 235 Q3CString month;
234 QCString day; 236 Q3CString day;
235 237
236 year.setNum( year_ ); 238 year.setNum( year_ );
237 month.setNum( month_ ); 239 month.setNum( month_ );
238 day.setNum( day_ ); 240 day.setNum( day_ );
239 241
240 if ( month.length() < 2 ) month.prepend( "0" ); 242 if ( month.length() < 2 ) month.prepend( "0" );
241 if ( day.length() < 2 ) day.prepend( "0" ); 243 if ( day.length() < 2 ) day.prepend( "0" );
242 244
243 strRep_ = year + '-' + month + '-' + day; 245 strRep_ = year + '-' + month + '-' + day;
244 246
245 if ( hasTime_ ) { 247 if ( hasTime_ ) {
246 QCString hour; 248 Q3CString hour;
247 QCString minute; 249 Q3CString minute;
248 QCString second; 250 Q3CString second;
249 251
250 hour.setNum( hour_ ); 252 hour.setNum( hour_ );
251 minute.setNum( minute_ ); 253 minute.setNum( minute_ );
252 second.setNum( second_ ); 254 second.setNum( second_ );
253 255
254 if ( hour.length() < 2 ) hour.prepend( "0" ); 256 if ( hour.length() < 2 ) hour.prepend( "0" );
255 if ( minute.length() < 2 ) minute.prepend( "0" ); 257 if ( minute.length() < 2 ) minute.prepend( "0" );
256 if ( second.length() < 2 ) second.prepend( "0" ); 258 if ( second.length() < 2 ) second.prepend( "0" );
257 259
258 strRep_ += 'T' + hour + ':' + minute + ':' + second + 'Z'; 260 strRep_ += 'T' + hour + ':' + minute + ':' + second + 'Z';
259 } 261 }
260} 262}
261 263
262 unsigned int 264 unsigned int
263DateValue::year() 265DateValue::year()
264{ 266{
265 parse(); 267 parse();
266 return year_; 268 return year_;
267} 269}
268 270
269 unsigned int 271 unsigned int
270DateValue::month() 272DateValue::month()
271{ 273{
272 parse(); 274 parse();
273 return month_; 275 return month_;
274} 276}
275 277
276 unsigned int 278 unsigned int
277DateValue::day() 279DateValue::day()
278{ 280{
279 parse(); 281 parse();
280 return day_; 282 return day_;
281} 283}
282 unsigned int 284 unsigned int
283DateValue::hour() 285DateValue::hour()
284{ 286{
285 parse(); 287 parse();
286 return hour_; 288 return hour_;
287} 289}
288 290
289 unsigned int 291 unsigned int
290DateValue::minute() 292DateValue::minute()
291{ 293{
292 parse(); 294 parse();
293 return minute_; 295 return minute_;
294} 296}
295 297
296 unsigned int 298 unsigned int
297DateValue::second() 299DateValue::second()
298{ 300{
299 parse(); 301 parse();
300 return second_; 302 return second_;
301} 303}
302 304
303 double 305 double
304DateValue::secondFraction() 306DateValue::secondFraction()
305{ 307{
306 parse(); 308 parse();
307 return secFrac_; 309 return secFrac_;
308} 310}
309 311
310 bool 312 bool
311DateValue::zonePositive() 313DateValue::zonePositive()
312{ 314{
313 parse(); 315 parse();
314 return zonePositive_; 316 return zonePositive_;
315} 317}
316 318
317 unsigned int 319 unsigned int
318DateValue::zoneHour() 320DateValue::zoneHour()
319{ 321{
320 parse(); 322 parse();
321 return zoneHour_; 323 return zoneHour_;
322} 324}
323 325
324 unsigned int 326 unsigned int
325DateValue::zoneMinute() 327DateValue::zoneMinute()
326{ 328{
327 parse(); 329 parse();
328 return zoneMinute_; 330 return zoneMinute_;
329} 331}
330 332
331 void 333 void
332DateValue::setYear(unsigned int i) 334DateValue::setYear(unsigned int i)
333{ 335{
334 year_ = i; 336 year_ = i;
335 assembled_ = false; 337 assembled_ = false;
336} 338}
337 339
338 void 340 void
339DateValue::setMonth(unsigned int i) 341DateValue::setMonth(unsigned int i)
340{ 342{
341 month_ = i; 343 month_ = i;
342 assembled_ = false; 344 assembled_ = false;
343} 345}
344 346
345 void 347 void
346DateValue::setDay(unsigned int i) 348DateValue::setDay(unsigned int i)
347{ 349{
348 day_ = i; 350 day_ = i;
349 assembled_ = false; 351 assembled_ = false;
350} 352}
351 353
352 void 354 void
353DateValue::setHour(unsigned int i) 355DateValue::setHour(unsigned int i)
354{ 356{
355 hour_ = i; 357 hour_ = i;
356 assembled_ = false; 358 assembled_ = false;
357} 359}
358 360
359 void 361 void
360DateValue::setMinute(unsigned int i) 362DateValue::setMinute(unsigned int i)
361{ 363{
362 minute_ = i; 364 minute_ = i;
363 assembled_ = false; 365 assembled_ = false;
364} 366}
365 367
366 void 368 void
367DateValue::setSecond(unsigned int i) 369DateValue::setSecond(unsigned int i)
368{ 370{
369 second_ = i; 371 second_ = i;
370 assembled_ = false; 372 assembled_ = false;
371} 373}
372 374
373 void 375 void
374DateValue::setSecondFraction(double d) 376DateValue::setSecondFraction(double d)
375{ 377{
376 secFrac_ = d; 378 secFrac_ = d;
377 assembled_ = false; 379 assembled_ = false;
378} 380}
379 381
380 void 382 void
381DateValue::setZonePositive(bool b) 383DateValue::setZonePositive(bool b)
382{ 384{
383 zonePositive_ = b; 385 zonePositive_ = b;
384 assembled_ = false; 386 assembled_ = false;
385 } 387 }
386 388
387 void 389 void
388DateValue::setZoneHour(unsigned int i) 390DateValue::setZoneHour(unsigned int i)
389{ 391{
390 zoneHour_ = i; 392 zoneHour_ = i;
391 assembled_ = false; 393 assembled_ = false;
392} 394}
393 395
394 void 396 void
395DateValue::setZoneMinute(unsigned int i) 397DateValue::setZoneMinute(unsigned int i)
396{ 398{
397 zoneMinute_ = i; 399 zoneMinute_ = i;
398 assembled_ = false; 400 assembled_ = false;
399} 401}
400 402
401 QDate 403 QDate
402DateValue::qdate() 404DateValue::qdate()
403{ 405{
404 parse(); 406 parse();
405 QDate d(year_, month_, day_); 407 QDate d(year_, month_, day_);
406 return d; 408 return d;
407} 409}
408 410
409 QTime 411 QTime
410DateValue::qtime() 412DateValue::qtime()
411{ 413{
412 parse(); 414 parse();
413 QTime t(hour_, minute_, second_); 415 QTime t(hour_, minute_, second_);
414 //t.setMs(1 / secFrac_); 416 //t.setMs(1 / secFrac_);
415 return t; 417 return t;
416} 418}
417 419
418 QDateTime 420 QDateTime
419DateValue::qdt() 421DateValue::qdt()
420{ 422{
421 parse(); 423 parse();
422 QDateTime dt; 424 QDateTime dt;
423 dt.setDate(qdate()); 425 dt.setDate(qdate());
424 dt.setTime(qtime()); 426 dt.setTime(qtime());
425 return dt; 427 return dt;
426} 428}
427 429
428 bool 430 bool
429DateValue::hasTime() 431DateValue::hasTime()
430{ 432{
431 parse(); 433 parse();
432 return hasTime_; 434 return hasTime_;
433} 435}
434 436
diff --git a/kabc/vcard/EmailParam.cpp b/kabc/vcard/EmailParam.cpp
index 8c87477..877af60 100644
--- a/kabc/vcard/EmailParam.cpp
+++ b/kabc/vcard/EmailParam.cpp
@@ -1,116 +1,118 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardEmailParam.h> 24#include <VCardEmailParam.h>
25#include <VCardParam.h> 25#include <VCardParam.h>
26#include <VCardDefines.h> 26#include <VCardDefines.h>
27//Added by qt3to4:
28#include <Q3CString>
27 29
28using namespace VCARD; 30using namespace VCARD;
29 31
30EmailParam::EmailParam() 32EmailParam::EmailParam()
31 :Param() 33 :Param()
32{ 34{
33 vDebug("ctor"); 35 vDebug("ctor");
34} 36}
35 37
36EmailParam::EmailParam(const EmailParam & x) 38EmailParam::EmailParam(const EmailParam & x)
37 :Param(x), 39 :Param(x),
38 emailType_(x.emailType_), 40 emailType_(x.emailType_),
39 pref_ (x.pref_) 41 pref_ (x.pref_)
40{ 42{
41} 43}
42 44
43EmailParam::EmailParam(const QCString & s) 45EmailParam::EmailParam(const Q3CString & s)
44 :Param(s) 46 :Param(s)
45{ 47{
46} 48}
47 49
48 EmailParam & 50 EmailParam &
49EmailParam::operator = (EmailParam & x) 51EmailParam::operator = (EmailParam & x)
50{ 52{
51 if (*this == x) return *this; 53 if (*this == x) return *this;
52 54
53 emailType_= x.emailType(); 55 emailType_= x.emailType();
54 pref_ = x.pref_; 56 pref_ = x.pref_;
55 57
56 Param::operator = (x); 58 Param::operator = (x);
57 return *this; 59 return *this;
58} 60}
59 61
60 EmailParam & 62 EmailParam &
61EmailParam::operator = (const QCString & s) 63EmailParam::operator = (const Q3CString & s)
62{ 64{
63 Param::operator = (s); 65 Param::operator = (s);
64 return *this; 66 return *this;
65} 67}
66 68
67 bool 69 bool
68EmailParam::operator == (EmailParam & x) 70EmailParam::operator == (EmailParam & x)
69{ 71{
70 parse(); 72 parse();
71 73
72 if (pref_) 74 if (pref_)
73 return (x.pref_ && x.emailType() == emailType_); 75 return (x.pref_ && x.emailType() == emailType_);
74 76
75 return !x.pref(); 77 return !x.pref();
76} 78}
77 79
78EmailParam::~EmailParam() 80EmailParam::~EmailParam()
79{ 81{
80} 82}
81 83
82 void 84 void
83EmailParam::_parse() 85EmailParam::_parse()
84{ 86{
85#if 0 87#if 0
86 Param::parseToList(); 88 Param::parseToList();
87 89
88 SubParamListIterator it(subParamList_); 90 SubParamListIterator it(subParamList_);
89 91
90 pref_ = true; 92 pref_ = true;
91 emailType_ = ""; 93 emailType_ = "";
92 94
93 for (; it.current(); ++it) { 95 for (; it.current(); ++it) {
94 96
95 if (qstricmp(it.current()->name(), "TYPE") == 0) { 97 if (qstricmp(it.current()->name(), "TYPE") == 0) {
96 emailType_ = it.current()->value(); 98 emailType_ = it.current()->value();
97 continue; 99 continue;
98 } 100 }
99 101
100 if (qstricmp(it.current()->name(), "PREF") == 0) { 102 if (qstricmp(it.current()->name(), "PREF") == 0) {
101 pref_ = true; 103 pref_ = true;
102 } 104 }
103 } 105 }
104#endif 106#endif
105} 107}
106 108
107 void 109 void
108EmailParam::_assemble() 110EmailParam::_assemble()
109{ 111{
110 strRep_ = "TYPE="; 112 strRep_ = "TYPE=";
111 strRep_ += emailType_; 113 strRep_ += emailType_;
112 114
113 if (pref_) 115 if (pref_)
114 strRep_ += ",PREF"; 116 strRep_ += ",PREF";
115} 117}
116 118
diff --git a/kabc/vcard/Entity.cpp b/kabc/vcard/Entity.cpp
index b7d09e0..e38fa11 100644
--- a/kabc/vcard/Entity.cpp
+++ b/kabc/vcard/Entity.cpp
@@ -1,134 +1,136 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardEntity.h> 24#include <VCardEntity.h>
25//Added by qt3to4:
26#include <Q3CString>
25 27
26using namespace VCARD; 28using namespace VCARD;
27 29
28Entity::Entity() 30Entity::Entity()
29 : parsed_ (false), 31 : parsed_ (false),
30 assembled_(true) 32 assembled_(true)
31{ 33{
32 // empty 34 // empty
33} 35}
34 36
35Entity::Entity(const Entity & e) 37Entity::Entity(const Entity & e)
36 : strRep_ (e.strRep_), 38 : strRep_ (e.strRep_),
37 parsed_ (e.parsed_), 39 parsed_ (e.parsed_),
38 assembled_(e.assembled_) 40 assembled_(e.assembled_)
39{ 41{
40 // empty 42 // empty
41} 43}
42 44
43Entity::Entity(const QCString & s) 45Entity::Entity(const Q3CString & s)
44 : strRep_ (s), 46 : strRep_ (s),
45 parsed_ (false), 47 parsed_ (false),
46 assembled_(true) 48 assembled_(true)
47{ 49{
48 // empty 50 // empty
49} 51}
50 52
51 Entity & 53 Entity &
52Entity::operator = (const Entity & e) 54Entity::operator = (const Entity & e)
53{ 55{
54 if (this == &e) return *this; 56 if (this == &e) return *this;
55 57
56 strRep_ = e.strRep_; 58 strRep_ = e.strRep_;
57 parsed_ = e.parsed_; 59 parsed_ = e.parsed_;
58 assembled_= e.assembled_; 60 assembled_= e.assembled_;
59 61
60 return *this; 62 return *this;
61} 63}
62 64
63 Entity & 65 Entity &
64Entity::operator = (const QCString & s) 66Entity::operator = (const Q3CString & s)
65{ 67{
66 strRep_ = s; 68 strRep_ = s;
67 parsed_ = false; 69 parsed_ = false;
68 assembled_= true; 70 assembled_= true;
69 71
70 return *this; 72 return *this;
71} 73}
72 74
73 bool 75 bool
74Entity::operator == (Entity & e) 76Entity::operator == (Entity & e)
75{ 77{
76 return asString() == e.asString(); 78 return asString() == e.asString();
77} 79}
78 80
79 bool 81 bool
80Entity::operator != (Entity & e) 82Entity::operator != (Entity & e)
81{ 83{
82 return !(*this == e); 84 return !(*this == e);
83} 85}
84 86
85 bool 87 bool
86Entity::operator == (const QCString & s) 88Entity::operator == (const Q3CString & s)
87{ 89{
88 return asString() == s; 90 return asString() == s;
89} 91}
90 92
91 bool 93 bool
92Entity::operator != (const QCString & s) 94Entity::operator != (const Q3CString & s)
93{ 95{
94 return !(*this == s); 96 return !(*this == s);
95} 97}
96 98
97Entity::~Entity() 99Entity::~Entity()
98{ 100{
99 // empty 101 // empty
100} 102}
101 103
102 QCString 104 Q3CString
103Entity::asString() 105Entity::asString()
104{ 106{
105 //vDebug("Entity::asString()"); 107 //vDebug("Entity::asString()");
106 assemble(); 108 assemble();
107 109
108 return strRep_; 110 return strRep_;
109} 111}
110 112
111 void 113 void
112Entity::parse() 114Entity::parse()
113{ 115{
114 //vDebug( "Entity::parse()" ); 116 //vDebug( "Entity::parse()" );
115 117
116 if (!parsed_) _parse(); 118 if (!parsed_) _parse();
117 119
118 parsed_ = true; 120 parsed_ = true;
119 assembled_= false; 121 assembled_= false;
120} 122}
121 123
122 void 124 void
123Entity::assemble() 125Entity::assemble()
124{ 126{
125 //vDebug( "Entity::assemble()" ); 127 //vDebug( "Entity::assemble()" );
126 128
127 if (assembled_) return; 129 if (assembled_) return;
128 130
129 parse(); 131 parse();
130 _assemble(); 132 _assemble();
131 133
132 assembled_= true; 134 assembled_= true;
133} 135}
134 136
diff --git a/kabc/vcard/Enum.cpp b/kabc/vcard/Enum.cpp
index cc48b5a..036324c 100644
--- a/kabc/vcard/Enum.cpp
+++ b/kabc/vcard/Enum.cpp
@@ -1,482 +1,482 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <qcstring.h> 24#include <q3cstring.h>
25#include <ctype.h> 25#include <ctype.h>
26 26
27#include <VCardEnum.h> 27#include <VCardEnum.h>
28 28
29using namespace VCARD; 29using namespace VCARD;
30 30
31// There are 31 possible types, not including extensions. 31// There are 31 possible types, not including extensions.
32 const QCString 32 const Q3CString
33VCARD::paramNames [] = 33VCARD::paramNames [] =
34{ 34{
35 "NAME", 35 "NAME",
36 "PROFILE", 36 "PROFILE",
37 "SOURCE", 37 "SOURCE",
38 "FN", 38 "FN",
39 "N", 39 "N",
40 "NICKNAME", 40 "NICKNAME",
41 "PHOTO", 41 "PHOTO",
42 "BDAY", 42 "BDAY",
43 "ADR", 43 "ADR",
44 "LABEL", 44 "LABEL",
45 "TEL", 45 "TEL",
46 "EMAIL", 46 "EMAIL",
47 "MAILER", 47 "MAILER",
48 "TZ", 48 "TZ",
49 "GEO", 49 "GEO",
50 "TITLE", 50 "TITLE",
51 "ROLE", 51 "ROLE",
52 "LOGO", 52 "LOGO",
53 "AGENT", 53 "AGENT",
54 "ORG", 54 "ORG",
55 "CATEGORIES", 55 "CATEGORIES",
56 "NOTE", 56 "NOTE",
57 "PRODID", 57 "PRODID",
58 "REV", 58 "REV",
59 "SORT-STRING", 59 "SORT-STRING",
60 "SOUND", 60 "SOUND",
61 "UID", 61 "UID",
62 "URL", 62 "URL",
63 "VERSION", 63 "VERSION",
64 "CLASS", 64 "CLASS",
65 "KEY" 65 "KEY"
66}; 66};
67 67
68 const ParamType 68 const ParamType
69VCARD::paramTypesTable[] = { 69VCARD::paramTypesTable[] = {
70 ParamNone, // NAME 70 ParamNone, // NAME
71 ParamNone, // PROFILE 71 ParamNone, // PROFILE
72 ParamSource, // SOURCE 72 ParamSource, // SOURCE
73 ParamText, // FN 73 ParamText, // FN
74 ParamText, // N 74 ParamText, // N
75 ParamText, // NICKNAME 75 ParamText, // NICKNAME
76 ParamImage, // PHOTO (inline/refer) 76 ParamImage, // PHOTO (inline/refer)
77 ParamDate, // BDAY ("VALUE = "date-time/date) 77 ParamDate, // BDAY ("VALUE = "date-time/date)
78 ParamAddrText, // ADR (adr-param/text-param) 78 ParamAddrText, // ADR (adr-param/text-param)
79 ParamAddrText, // LABEL (adr-param/text-param) 79 ParamAddrText, // LABEL (adr-param/text-param)
80 ParamTel, // TEL 80 ParamTel, // TEL
81 ParamEmail, // EMAIL 81 ParamEmail, // EMAIL
82 ParamText, // MAILER 82 ParamText, // MAILER
83 ParamNone, // TZ 83 ParamNone, // TZ
84 ParamNone, // GEO 84 ParamNone, // GEO
85 ParamText, // TITLE 85 ParamText, // TITLE
86 ParamText, // ROLE 86 ParamText, // ROLE
87 ParamImage, // LOGO 87 ParamImage, // LOGO
88 ParamAgent, // AGENT 88 ParamAgent, // AGENT
89 ParamText, // ORG 89 ParamText, // ORG
90 ParamText, // CATEGORIES 90 ParamText, // CATEGORIES
91 ParamText, // NOTE 91 ParamText, // NOTE
92 ParamNone, // PRODID 92 ParamNone, // PRODID
93 ParamDate, // REV 93 ParamDate, // REV
94 ParamText, // SORT-STRING 94 ParamText, // SORT-STRING
95 ParamSound, // SOUND 95 ParamSound, // SOUND
96 ParamNone, // UID 96 ParamNone, // UID
97 ParamNone, // URL 97 ParamNone, // URL
98 ParamNone, // VERSION 98 ParamNone, // VERSION
99 ParamNone, // CLASS 99 ParamNone, // CLASS
100 ParamTextBin, // KEY 100 ParamTextBin, // KEY
101 ParamTextNS // X 101 ParamTextNS // X
102}; 102};
103 103
104 ParamType 104 ParamType
105VCARD::EntityTypeToParamType(EntityType e) 105VCARD::EntityTypeToParamType(EntityType e)
106{ 106{
107 ParamType t(ParamUnknown); 107 ParamType t(ParamUnknown);
108 108
109 switch (e) { 109 switch (e) {
110 110
111 //---------------------------------------------------------------// 111 //---------------------------------------------------------------//
112 case EntityAgent: t = ParamAgent; break; 112 case EntityAgent: t = ParamAgent; break;
113 //---------------------------------------------------------------// 113 //---------------------------------------------------------------//
114 case EntitySound: t = ParamSound; break; 114 case EntitySound: t = ParamSound; break;
115 //---------------------------------------------------------------// 115 //---------------------------------------------------------------//
116 case EntitySource: t = ParamSource;break; 116 case EntitySource: t = ParamSource;break;
117 //---------------------------------------------------------------// 117 //---------------------------------------------------------------//
118 case EntityTelephone: t = ParamTel; break; 118 case EntityTelephone: t = ParamTel; break;
119 //---------------------------------------------------------------// 119 //---------------------------------------------------------------//
120 case EntityEmail: t = ParamEmail; break; 120 case EntityEmail: t = ParamEmail; break;
121 //---------------------------------------------------------------// 121 //---------------------------------------------------------------//
122 case EntityKey: t = ParamTextBin;break; 122 case EntityKey: t = ParamTextBin;break;
123 //---------------------------------------------------------------// 123 //---------------------------------------------------------------//
124 case EntityExtension: t = ParamTextNS;break; 124 case EntityExtension: t = ParamTextNS;break;
125 //---------------------------------------------------------------// 125 //---------------------------------------------------------------//
126 case EntityAddress: 126 case EntityAddress:
127 case EntityLabel: t = ParamAddrText;break; 127 case EntityLabel: t = ParamAddrText;break;
128 //---------------------------------------------------------------// 128 //---------------------------------------------------------------//
129 case EntityBirthday: 129 case EntityBirthday:
130 case EntityRevision: t = ParamDate; break; 130 case EntityRevision: t = ParamDate; break;
131 //---------------------------------------------------------------// 131 //---------------------------------------------------------------//
132 case EntityPhoto: 132 case EntityPhoto:
133 case EntityLogo: t = ParamImage; break; 133 case EntityLogo: t = ParamImage; break;
134 //---------------------------------------------------------------// 134 //---------------------------------------------------------------//
135 case EntityOrganisation: 135 case EntityOrganisation:
136 case EntityTitle: 136 case EntityTitle:
137 case EntityRole: 137 case EntityRole:
138 case EntityFullName: 138 case EntityFullName:
139 case EntityMailer: 139 case EntityMailer:
140 case EntityN: 140 case EntityN:
141 case EntitySortString: 141 case EntitySortString:
142 case EntityNickname: 142 case EntityNickname:
143 case EntityCategories: 143 case EntityCategories:
144 case EntityNote: t = ParamText; break; 144 case EntityNote: t = ParamText; break;
145 //---------------------------------------------------------------// 145 //---------------------------------------------------------------//
146 case EntityProductID: 146 case EntityProductID:
147 case EntityTimeZone: 147 case EntityTimeZone:
148 case EntityUID: 148 case EntityUID:
149 case EntityURL: 149 case EntityURL:
150 case EntityClass: 150 case EntityClass:
151 case EntityGeo: 151 case EntityGeo:
152 case EntityName: 152 case EntityName:
153 case EntityVersion: 153 case EntityVersion:
154 case EntityProfile: 154 case EntityProfile:
155 default: t = ParamNone; break; 155 default: t = ParamNone; break;
156 //---------------------------------------------------------------// 156 //---------------------------------------------------------------//
157 157
158 } 158 }
159 159
160 return t; 160 return t;
161} 161}
162 162
163 ValueType 163 ValueType
164VCARD::EntityTypeToValueType(EntityType e) 164VCARD::EntityTypeToValueType(EntityType e)
165{ 165{
166 ValueType t(ValueUnknown); 166 ValueType t(ValueUnknown);
167 167
168 switch (e) { 168 switch (e) {
169 169
170 //---------------------------------------------------------------// 170 //---------------------------------------------------------------//
171 case EntitySound: t = ValueSound; break; 171 case EntitySound: t = ValueSound; break;
172 //---------------------------------------------------------------// 172 //---------------------------------------------------------------//
173 case EntityAgent: t = ValueAgent; break; 173 case EntityAgent: t = ValueAgent; break;
174 //---------------------------------------------------------------// 174 //---------------------------------------------------------------//
175 case EntityAddress: t = ValueAddress;break; 175 case EntityAddress: t = ValueAddress;break;
176 //---------------------------------------------------------------// 176 //---------------------------------------------------------------//
177 case EntityTelephone: t = ValueTel; break; 177 case EntityTelephone: t = ValueTel; break;
178 //---------------------------------------------------------------// 178 //---------------------------------------------------------------//
179 case EntityKey: t = ValueTextBin;break; 179 case EntityKey: t = ValueTextBin;break;
180 //---------------------------------------------------------------// 180 //---------------------------------------------------------------//
181 case EntityOrganisation: t = ValueOrg; break; 181 case EntityOrganisation: t = ValueOrg; break;
182 //---------------------------------------------------------------// 182 //---------------------------------------------------------------//
183 case EntityN: t = ValueN; break; 183 case EntityN: t = ValueN; break;
184 //---------------------------------------------------------------// 184 //---------------------------------------------------------------//
185 case EntityTimeZone: t = ValueUTC; break; 185 case EntityTimeZone: t = ValueUTC; break;
186 //---------------------------------------------------------------// 186 //---------------------------------------------------------------//
187 case EntityClass: t = ValueClass; break; 187 case EntityClass: t = ValueClass; break;
188 //---------------------------------------------------------------// 188 //---------------------------------------------------------------//
189 case EntityGeo: t = ValueGeo; break; 189 case EntityGeo: t = ValueGeo; break;
190 //---------------------------------------------------------------// 190 //---------------------------------------------------------------//
191 case EntitySource: 191 case EntitySource:
192 case EntityURL: t = ValueURI; break; 192 case EntityURL: t = ValueURI; break;
193 //---------------------------------------------------------------// 193 //---------------------------------------------------------------//
194 case EntityPhoto: 194 case EntityPhoto:
195 case EntityLogo: t = ValueImage; break; 195 case EntityLogo: t = ValueImage; break;
196 //---------------------------------------------------------------// 196 //---------------------------------------------------------------//
197 case EntityBirthday: 197 case EntityBirthday:
198 case EntityRevision: t = ValueDate; break; 198 case EntityRevision: t = ValueDate; break;
199 //---------------------------------------------------------------// 199 //---------------------------------------------------------------//
200 case EntityCategories: 200 case EntityCategories:
201 case EntityNickname: t = ValueTextList;break; 201 case EntityNickname: t = ValueTextList;break;
202 //---------------------------------------------------------------// 202 //---------------------------------------------------------------//
203 case EntityLabel: 203 case EntityLabel:
204 case EntityExtension: 204 case EntityExtension:
205 case EntityEmail: 205 case EntityEmail:
206 case EntityTitle: 206 case EntityTitle:
207 case EntityRole: 207 case EntityRole:
208 case EntityFullName: 208 case EntityFullName:
209 case EntityMailer: 209 case EntityMailer:
210 case EntityProductID: 210 case EntityProductID:
211 case EntityName: 211 case EntityName:
212 case EntitySortString: 212 case EntitySortString:
213 case EntityVersion: 213 case EntityVersion:
214 case EntityProfile: 214 case EntityProfile:
215 case EntityUID: 215 case EntityUID:
216 case EntityNote: 216 case EntityNote:
217 default: t = ValueText; break; 217 default: t = ValueText; break;
218 //---------------------------------------------------------------// 218 //---------------------------------------------------------------//
219 219
220 } 220 }
221 221
222 return t; 222 return t;
223} 223}
224 224
225 QCString 225 Q3CString
226VCARD::EntityTypeToParamName(EntityType e) 226VCARD::EntityTypeToParamName(EntityType e)
227{ 227{
228 if ( e > EntityUnknown ) e = EntityUnknown; 228 if ( e > EntityUnknown ) e = EntityUnknown;
229 return paramNames[ int( e ) ]; 229 return paramNames[ int( e ) ];
230} 230}
231 231
232 EntityType 232 EntityType
233VCARD::EntityNameToEntityType(const QCString & s) 233VCARD::EntityNameToEntityType(const Q3CString & s)
234{ 234{
235 if (s.isEmpty()) return EntityUnknown; 235 if (s.isEmpty()) return EntityUnknown;
236 236
237 EntityType t(EntityUnknown); 237 EntityType t(EntityUnknown);
238 238
239 switch (s[0]) { 239 switch (s[0]) {
240 240
241 case 'A': 241 case 'A':
242 if (s == "ADR") 242 if (s == "ADR")
243 t = EntityAddress; 243 t = EntityAddress;
244 else if (s == "AGENT") 244 else if (s == "AGENT")
245 t = EntityAgent; 245 t = EntityAgent;
246 break; 246 break;
247 247
248 case 'B': 248 case 'B':
249 if (s == "BDAY") 249 if (s == "BDAY")
250 t = EntityBirthday; 250 t = EntityBirthday;
251 break; 251 break;
252 252
253 case 'C': 253 case 'C':
254 if (s == "CATEGORIES") 254 if (s == "CATEGORIES")
255 t = EntityCategories; 255 t = EntityCategories;
256 else if (s == "CLASS") 256 else if (s == "CLASS")
257 t = EntityClass; 257 t = EntityClass;
258 break; 258 break;
259 259
260 case 'E': 260 case 'E':
261 if (s == "EMAIL") 261 if (s == "EMAIL")
262 t = EntityEmail; 262 t = EntityEmail;
263 break; 263 break;
264 264
265 case 'F': 265 case 'F':
266 if (s == "FN") 266 if (s == "FN")
267 t = EntityFullName; 267 t = EntityFullName;
268 break; 268 break;
269 269
270 case 'G': 270 case 'G':
271 if (s == "GEO") 271 if (s == "GEO")
272 t = EntityGeo; 272 t = EntityGeo;
273 break; 273 break;
274 274
275 case 'K': 275 case 'K':
276 if (s == "KEY") 276 if (s == "KEY")
277 t = EntityKey; 277 t = EntityKey;
278 break; 278 break;
279 279
280 case 'L': 280 case 'L':
281 if (s == "LABEL") 281 if (s == "LABEL")
282 t = EntityLabel; 282 t = EntityLabel;
283 else if (s == "LOGO") 283 else if (s == "LOGO")
284 t = EntityLogo; 284 t = EntityLogo;
285 break; 285 break;
286 286
287 case 'M': 287 case 'M':
288 if (s == "MAILER") 288 if (s == "MAILER")
289 t = EntityMailer; 289 t = EntityMailer;
290 break; 290 break;
291 291
292 case 'N': 292 case 'N':
293 if (s == "N") 293 if (s == "N")
294 t = EntityN; 294 t = EntityN;
295 else if (s == "NAME") 295 else if (s == "NAME")
296 t = EntityName; 296 t = EntityName;
297 else if (s == "NICKNAME") 297 else if (s == "NICKNAME")
298 t = EntityNickname; 298 t = EntityNickname;
299 else if (s == "NOTE") 299 else if (s == "NOTE")
300 t = EntityNote; 300 t = EntityNote;
301 break; 301 break;
302 302
303 case 'O': 303 case 'O':
304 if (s == "ORG") 304 if (s == "ORG")
305 t = EntityOrganisation; 305 t = EntityOrganisation;
306 break; 306 break;
307 307
308 case 'P': 308 case 'P':
309 if (s == "PHOTO") 309 if (s == "PHOTO")
310 t = EntityPhoto; 310 t = EntityPhoto;
311 else if (s == "PRODID") 311 else if (s == "PRODID")
312 t = EntityProductID; 312 t = EntityProductID;
313 else if (s == "PROFILE") 313 else if (s == "PROFILE")
314 t = EntityProfile; 314 t = EntityProfile;
315 break; 315 break;
316 316
317 case 'R': 317 case 'R':
318 if (s == "REV") 318 if (s == "REV")
319 t = EntityRevision; 319 t = EntityRevision;
320 else if (s == "ROLE") 320 else if (s == "ROLE")
321 t = EntityRole; 321 t = EntityRole;
322 break; 322 break;
323 323
324 case 'S': 324 case 'S':
325 if (s == "SORT-STRING") 325 if (s == "SORT-STRING")
326 t = EntitySortString; 326 t = EntitySortString;
327 else if (s == "SOUND") 327 else if (s == "SOUND")
328 t = EntitySound; 328 t = EntitySound;
329 else if (s == "SOURCE") 329 else if (s == "SOURCE")
330 t = EntitySource; 330 t = EntitySource;
331 break; 331 break;
332 332
333 case 'T': 333 case 'T':
334 if (s == "TEL") 334 if (s == "TEL")
335 t = EntityTelephone; 335 t = EntityTelephone;
336 else if (s == "TITLE") 336 else if (s == "TITLE")
337 t = EntityTitle; 337 t = EntityTitle;
338 else if (s == "TZ") 338 else if (s == "TZ")
339 t = EntityTimeZone; 339 t = EntityTimeZone;
340 break; 340 break;
341 341
342 case 'U': 342 case 'U':
343 if (s == "UID") 343 if (s == "UID")
344 t = EntityUID; 344 t = EntityUID;
345 else if (s == "URL") 345 else if (s == "URL")
346 t = EntityURL; 346 t = EntityURL;
347 case 'V': 347 case 'V':
348 if (s == "VERSION") 348 if (s == "VERSION")
349 t = EntityVersion; 349 t = EntityVersion;
350 break; 350 break;
351 351
352 case 'X': 352 case 'X':
353 if (s.left(2) == "X-") 353 if (s.left(2) == "X-")
354 t = EntityExtension; 354 t = EntityExtension;
355 break; 355 break;
356 356
357 default: 357 default:
358 358
359 t = EntityUnknown; 359 t = EntityUnknown;
360 } 360 }
361 361
362 return t; 362 return t;
363} 363}
364 364
365// The copyright notice below refers to the base64 codec functions used below, 365// The copyright notice below refers to the base64 codec functions used below,
366// which are modified from the original sources. 366// which are modified from the original sources.
367 367
368/* 368/*
369 * Original version Copyright 1988 by The Leland Stanford Junior University 369 * Original version Copyright 1988 by The Leland Stanford Junior University
370 * Copyright 1998 by the University of Washington 370 * Copyright 1998 by the University of Washington
371 * 371 *
372 * Permission to use, copy, modify, and distribute this software and its 372 * Permission to use, copy, modify, and distribute this software and its
373 * documentation for any purpose and without fee is hereby granted, provided 373 * documentation for any purpose and without fee is hereby granted, provided
374 * that the above copyright notices appear in all copies and that both the 374 * that the above copyright notices appear in all copies and that both the
375 * above copyright notices and this permission notice appear in supporting 375 * above copyright notices and this permission notice appear in supporting
376 * documentation, and that the name of the University of Washington or The 376 * documentation, and that the name of the University of Washington or The
377 * Leland Stanford Junior University not be used in advertising or publicity 377 * Leland Stanford Junior University not be used in advertising or publicity
378 * pertaining to distribution of the software without specific, written prior 378 * pertaining to distribution of the software without specific, written prior
379 * permission. This software is made available "as is", and 379 * permission. This software is made available "as is", and
380 * THE UNIVERSITY OF WASHINGTON AND THE LELAND STANFORD JUNIOR UNIVERSITY 380 * THE UNIVERSITY OF WASHINGTON AND THE LELAND STANFORD JUNIOR UNIVERSITY
381 * DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD TO THIS SOFTWARE, 381 * DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD TO THIS SOFTWARE,
382 * INCLUDING WITHOUT LIMITATION ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 382 * INCLUDING WITHOUT LIMITATION ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
383 * FITNESS FOR A PARTICULAR PURPOSE, AND IN NO EVENT SHALL THE UNIVERSITY OF 383 * FITNESS FOR A PARTICULAR PURPOSE, AND IN NO EVENT SHALL THE UNIVERSITY OF
384 * WASHINGTON OR THE LELAND STANFORD JUNIOR UNIVERSITY BE LIABLE FOR ANY 384 * WASHINGTON OR THE LELAND STANFORD JUNIOR UNIVERSITY BE LIABLE FOR ANY
385 * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER 385 * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
386 * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 386 * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
387 * CONTRACT, TORT (INCLUDING NEGLIGENCE) OR STRICT LIABILITY, ARISING OUT OF 387 * CONTRACT, TORT (INCLUDING NEGLIGENCE) OR STRICT LIABILITY, ARISING OUT OF
388 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 388 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
389 * 389 *
390 */ 390 */
391 391
392static char B64[] = 392static char B64[] =
393 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; 393 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
394 394
395// the mime base64 disctionary used for decoding 395// the mime base64 disctionary used for decoding
396static signed char b64dec[] = { 396static signed char b64dec[] = {
397 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0 397 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0
398 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 10 398 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 10
399 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 20 399 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 20
400 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 30 400 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 30
401 -1, -1, -1,-19, -1, -1, -1,-16, -4, -4, // 40 -19 == '+' -16 == '/' 401 -1, -1, -1,-19, -1, -1, -1,-16, -4, -4, // 40 -19 == '+' -16 == '/'
402 -4, -4, -4, -4, -4, -4, -4, -4, -1, -1, // 50 -4 == '0' 402 -4, -4, -4, -4, -4, -4, -4, -4, -1, -1, // 50 -4 == '0'
403 -1, 0, -1, -1, -1, 65, 65, 65, 65, 65, // 60 0 == '=' 65 == 'A' 403 -1, 0, -1, -1, -1, 65, 65, 65, 65, 65, // 60 0 == '=' 65 == 'A'
404 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, // 70 404 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, // 70
405 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, // 80 405 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, // 80
406 65, -1, -1, -1, -1, -1, -1, 71, 71, 71, // 90 71 == 'a' 406 65, -1, -1, -1, -1, -1, -1, 71, 71, 71, // 90 71 == 'a'
407 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, // 100 407 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, // 100
408 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, // 110 408 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, // 110
409 71, 71, 71, -1, -1, -1, -1, -1, -1, -1, // 120 409 71, 71, 71, -1, -1, -1, -1, -1, -1, -1, // 120
410 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 130 410 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 130
411 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 140 411 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 140
412 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 150 412 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 150
413 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 160 413 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 160
414 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 170 414 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 170
415 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 180 415 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 180
416 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 190 416 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 190
417 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 200 417 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 200
418 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 210 418 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 210
419 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 220 419 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 220
420 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 230 420 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 230
421 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 240 421 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 240
422 -1, -1, -1, -1, -1, -1, -1 // 250 422 -1, -1, -1, -1, -1, -1, -1 // 250
423}; 423};
424 424
425 char * 425 char *
426VCARD::decodeBase64(const char * s, unsigned long srcl, unsigned long & len) 426VCARD::decodeBase64(const char * s, unsigned long srcl, unsigned long & len)
427{ 427{
428 register unsigned char c; 428 register unsigned char c;
429 register unsigned long e(0); 429 register unsigned long e(0);
430 len = 0; 430 len = 0;
431 unsigned const char * src = (unsigned const char *)s; 431 unsigned const char * src = (unsigned const char *)s;
432 char * ret = new char[srcl + (srcl / 4 + 1)]; 432 char * ret = new char[srcl + (srcl / 4 + 1)];
433 register char *d = ret; 433 register char *d = ret;
434 while (srcl--) { // Critical loop 434 while (srcl--) { // Critical loop
435 c = *src++; 435 c = *src++;
436 int dec = b64dec[c]; 436 int dec = b64dec[c];
437 if (dec == -1) continue; 437 if (dec == -1) continue;
438 if (c == '=') { 438 if (c == '=') {
439 switch (e++) { 439 switch (e++) {
440 case 3: e = 0; break; 440 case 3: e = 0; break;
441 case 2: if (*src == '=') break; 441 case 2: if (*src == '=') break;
442 default: delete [] ret; ret = 0; return 0;break; 442 default: delete [] ret; ret = 0; return 0;break;
443 } 443 }
444 continue; 444 continue;
445 } 445 }
446 c -= dec; 446 c -= dec;
447 if (e == 0) { *d = c << 2; ++e; continue; } 447 if (e == 0) { *d = c << 2; ++e; continue; }
448 switch (e) { 448 switch (e) {
449 case 1: *d |= c >> 4; *++d = c << 4;break; 449 case 1: *d |= c >> 4; *++d = c << 4;break;
450 case 2: *d |= c >> 2; *++d = c << 6;break; 450 case 2: *d |= c >> 2; *++d = c << 6;break;
451 case 3: *d++ |= c; e = 0; continue; break; 451 case 3: *d++ |= c; e = 0; continue; break;
452 } 452 }
453 ++e; 453 ++e;
454 } 454 }
455 len = d - (char *)ret; 455 len = d - (char *)ret;
456 return ret; 456 return ret;
457} 457}
458 458
459 459
460 char * 460 char *
461VCARD::encodeBase64(const char * src, unsigned long srcl, unsigned long & destl) 461VCARD::encodeBase64(const char * src, unsigned long srcl, unsigned long & destl)
462{ 462{
463 register const unsigned char *s = (unsigned char *)src; 463 register const unsigned char *s = (unsigned char *)src;
464 register unsigned long i = ((srcl + 2) / 3) * 4; 464 register unsigned long i = ((srcl + 2) / 3) * 4;
465 destl = i += 2 * ((i / 60) + 1); 465 destl = i += 2 * ((i / 60) + 1);
466 i = 0; 466 i = 0;
467 char * ret = new char[destl]; 467 char * ret = new char[destl];
468 register unsigned char *d((unsigned char *)ret); 468 register unsigned char *d((unsigned char *)ret);
469 while (srcl != 0) { // Critical loop 469 while (srcl != 0) { // Critical loop
470 *d++ = B64[s[0] >> 2]; 470 *d++ = B64[s[0] >> 2];
471 *d++ = B64[((s[0] << 4) + (--srcl == 0 ? 0 : s[1] >> 4)) & 0x3f]; 471 *d++ = B64[((s[0] << 4) + (--srcl == 0 ? 0 : s[1] >> 4)) & 0x3f];
472 *d++ = srcl == 0 ? '=' : 472 *d++ = srcl == 0 ? '=' :
473 B64[((s[1] << 2) + (--srcl == 0 ? 0 : s[2] >> 6)) & 0x3f]; 473 B64[((s[1] << 2) + (--srcl == 0 ? 0 : s[2] >> 6)) & 0x3f];
474 *d++ = srcl == 0 ?'=' : B64[s[2] & 0x3f]; 474 *d++ = srcl == 0 ?'=' : B64[s[2] & 0x3f];
475 if (srcl != 0) srcl--; 475 if (srcl != 0) srcl--;
476 if (++i == 15) { i = 0; *d++ = '\r'; *d++ = '\n'; } 476 if (++i == 15) { i = 0; *d++ = '\r'; *d++ = '\n'; }
477 s += 3; 477 s += 3;
478 } 478 }
479 *d = '\r'; *++d = '\n'; *++d = '\0'; 479 *d = '\r'; *++d = '\n'; *++d = '\0';
480 return ret; 480 return ret;
481} 481}
482 482
diff --git a/kabc/vcard/FloatValue.cpp b/kabc/vcard/FloatValue.cpp
index 15bb664..7065081 100644
--- a/kabc/vcard/FloatValue.cpp
+++ b/kabc/vcard/FloatValue.cpp
@@ -1,120 +1,122 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardFloatValue.h> 24#include <VCardFloatValue.h>
25 25
26#include <VCardValue.h> 26#include <VCardValue.h>
27//Added by qt3to4:
28#include <Q3CString>
27 29
28using namespace VCARD; 30using namespace VCARD;
29 31
30FloatValue::FloatValue() 32FloatValue::FloatValue()
31 :Value() 33 :Value()
32{ 34{
33} 35}
34 36
35FloatValue::FloatValue(float f) 37FloatValue::FloatValue(float f)
36 : Value(), 38 : Value(),
37 value_(f) 39 value_(f)
38{ 40{
39 parsed_ = true; 41 parsed_ = true;
40} 42}
41 43
42FloatValue::FloatValue(const FloatValue & x) 44FloatValue::FloatValue(const FloatValue & x)
43 :Value(x) 45 :Value(x)
44{ 46{
45 value_ = x.value_; 47 value_ = x.value_;
46} 48}
47 49
48FloatValue::FloatValue(const QCString & s) 50FloatValue::FloatValue(const Q3CString & s)
49 :Value(s) 51 :Value(s)
50{ 52{
51} 53}
52 54
53 FloatValue & 55 FloatValue &
54FloatValue::operator = (FloatValue & x) 56FloatValue::operator = (FloatValue & x)
55{ 57{
56 if (*this == x) return *this; 58 if (*this == x) return *this;
57 59
58 x.parse(); 60 x.parse();
59 value_ = x.value_; 61 value_ = x.value_;
60 62
61 Value::operator = (x); 63 Value::operator = (x);
62 return *this; 64 return *this;
63} 65}
64 66
65 FloatValue & 67 FloatValue &
66FloatValue::operator = (const QCString & s) 68FloatValue::operator = (const Q3CString & s)
67{ 69{
68 Value::operator = (s); 70 Value::operator = (s);
69 return *this; 71 return *this;
70} 72}
71 73
72 bool 74 bool
73FloatValue::operator == (FloatValue & x) 75FloatValue::operator == (FloatValue & x)
74{ 76{
75 x.parse(); 77 x.parse();
76 return (value_ == x.value_); 78 return (value_ == x.value_);
77} 79}
78 80
79FloatValue::~FloatValue() 81FloatValue::~FloatValue()
80{ 82{
81} 83}
82 84
83 void 85 void
84FloatValue::_parse() 86FloatValue::_parse()
85{ 87{
86 bool negative(false); 88 bool negative(false);
87 89
88 if (strRep_[0] == '-' || strRep_[1] == '+') { 90 if (strRep_[0] == '-' || strRep_[1] == '+') {
89 91
90 if (strRep_[0] == '-') 92 if (strRep_[0] == '-')
91 negative = true; 93 negative = true;
92 94
93 strRep_.remove(0, 1); 95 strRep_.remove(0, 1);
94 } 96 }
95 97
96 value_ = strRep_.toFloat(); 98 value_ = strRep_.toFloat();
97 if (negative) 99 if (negative)
98 value_ = -value_; 100 value_ = -value_;
99} 101}
100 102
101 void 103 void
102FloatValue::_assemble() 104FloatValue::_assemble()
103{ 105{
104 strRep_ = QCString().setNum(value_); 106 strRep_ = Q3CString().setNum(value_);
105} 107}
106 108
107 float 109 float
108FloatValue::value() 110FloatValue::value()
109{ 111{
110 parse(); 112 parse();
111 return value_; 113 return value_;
112} 114}
113 115
114 void 116 void
115FloatValue::setValue(float f) 117FloatValue::setValue(float f)
116{ 118{
117 parsed_ = true; 119 parsed_ = true;
118 value_ = f; 120 value_ = f;
119} 121}
120 122
diff --git a/kabc/vcard/GeoValue.cpp b/kabc/vcard/GeoValue.cpp
index e02b402..ba57a6b 100644
--- a/kabc/vcard/GeoValue.cpp
+++ b/kabc/vcard/GeoValue.cpp
@@ -1,100 +1,102 @@
1/* 1/*
2 This file is part of libvcard. 2 This file is part of libvcard.
3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#include <VCardGeoValue.h> 21#include <VCardGeoValue.h>
22 22
23#include <VCardValue.h> 23#include <VCardValue.h>
24 24
25#include <kdebug.h> 25#include <kdebug.h>
26//Added by qt3to4:
27#include <Q3CString>
26 28
27using namespace VCARD; 29using namespace VCARD;
28 30
29GeoValue::GeoValue() 31GeoValue::GeoValue()
30 :Value() 32 :Value()
31{ 33{
32} 34}
33 35
34GeoValue::GeoValue(const GeoValue & x) 36GeoValue::GeoValue(const GeoValue & x)
35 :Value(x), latitude_(x.latitude_), longitude_(x.longitude_) 37 :Value(x), latitude_(x.latitude_), longitude_(x.longitude_)
36{ 38{
37} 39}
38 40
39GeoValue::GeoValue(const QCString & s) 41GeoValue::GeoValue(const Q3CString & s)
40 :Value(s) 42 :Value(s)
41{ 43{
42} 44}
43 45
44 GeoValue & 46 GeoValue &
45GeoValue::operator = (GeoValue & x) 47GeoValue::operator = (GeoValue & x)
46{ 48{
47 if (*this == x) return *this; 49 if (*this == x) return *this;
48 50
49 latitude_ = x.latitude_; 51 latitude_ = x.latitude_;
50 longitude_ = x.longitude_; 52 longitude_ = x.longitude_;
51 53
52 Value::operator = (x); 54 Value::operator = (x);
53 return *this; 55 return *this;
54} 56}
55 57
56 GeoValue & 58 GeoValue &
57GeoValue::operator = (const QCString & s) 59GeoValue::operator = (const Q3CString & s)
58{ 60{
59 Value::operator = (s); 61 Value::operator = (s);
60 return *this; 62 return *this;
61} 63}
62 64
63 bool 65 bool
64GeoValue::operator == (GeoValue & x) 66GeoValue::operator == (GeoValue & x)
65{ 67{
66 x.parse(); 68 x.parse();
67 69
68 if ( latitude_ != x.latitude_ ) return false; 70 if ( latitude_ != x.latitude_ ) return false;
69 if ( longitude_ != x.longitude_ ) return false; 71 if ( longitude_ != x.longitude_ ) return false;
70 72
71 return true; 73 return true;
72} 74}
73 75
74GeoValue::~GeoValue() 76GeoValue::~GeoValue()
75{ 77{
76} 78}
77 79
78 GeoValue * 80 GeoValue *
79GeoValue::clone() 81GeoValue::clone()
80{ 82{
81 return new GeoValue( *this ); 83 return new GeoValue( *this );
82} 84}
83 85
84 void 86 void
85GeoValue::_parse() 87GeoValue::_parse()
86{ 88{
87 int semiColon = strRep_.find( ";" ); 89 int semiColon = strRep_.find( ";" );
88 90
89 if ( semiColon == -1 ) // invalid 91 if ( semiColon == -1 ) // invalid
90 return; 92 return;
91 93
92 latitude_ = strRep_.left( semiColon ).toFloat(); 94 latitude_ = strRep_.left( semiColon ).toFloat();
93 longitude_ = strRep_.mid( semiColon + 1, strRep_.length() - semiColon ).toFloat(); 95 longitude_ = strRep_.mid( semiColon + 1, strRep_.length() - semiColon ).toFloat();
94} 96}
95 97
96 void 98 void
97GeoValue::_assemble() 99GeoValue::_assemble()
98{ 100{
99 strRep_.sprintf( "%.6f;%.6f", latitude_, longitude_ ); 101 strRep_.sprintf( "%.6f;%.6f", latitude_, longitude_ );
100} 102}
diff --git a/kabc/vcard/ImageParam.cpp b/kabc/vcard/ImageParam.cpp
index c9cf6fd..6da317d 100644
--- a/kabc/vcard/ImageParam.cpp
+++ b/kabc/vcard/ImageParam.cpp
@@ -1,81 +1,83 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardImageParam.h> 24#include <VCardImageParam.h>
25 25
26#include <VCardParam.h> 26#include <VCardParam.h>
27//Added by qt3to4:
28#include <Q3CString>
27 29
28using namespace VCARD; 30using namespace VCARD;
29 31
30ImageParam::ImageParam() 32ImageParam::ImageParam()
31 :Param() 33 :Param()
32{ 34{
33} 35}
34 36
35ImageParam::ImageParam(const ImageParam & x) 37ImageParam::ImageParam(const ImageParam & x)
36 :Param(x) 38 :Param(x)
37{ 39{
38} 40}
39 41
40ImageParam::ImageParam(const QCString & s) 42ImageParam::ImageParam(const Q3CString & s)
41 :Param(s) 43 :Param(s)
42{ 44{
43} 45}
44 46
45 ImageParam & 47 ImageParam &
46ImageParam::operator = (ImageParam & x) 48ImageParam::operator = (ImageParam & x)
47{ 49{
48 if (*this == x) return *this; 50 if (*this == x) return *this;
49 51
50 Param::operator = (x); 52 Param::operator = (x);
51 return *this; 53 return *this;
52} 54}
53 55
54 ImageParam & 56 ImageParam &
55ImageParam::operator = (const QCString & s) 57ImageParam::operator = (const Q3CString & s)
56{ 58{
57 Param::operator = (s); 59 Param::operator = (s);
58 return *this; 60 return *this;
59} 61}
60 62
61 bool 63 bool
62ImageParam::operator == (ImageParam & x) 64ImageParam::operator == (ImageParam & x)
63{ 65{
64 x.parse(); 66 x.parse();
65 return false; 67 return false;
66} 68}
67 69
68ImageParam::~ImageParam() 70ImageParam::~ImageParam()
69{ 71{
70} 72}
71 73
72 void 74 void
73ImageParam::_parse() 75ImageParam::_parse()
74{ 76{
75} 77}
76 78
77 void 79 void
78ImageParam::_assemble() 80ImageParam::_assemble()
79{ 81{
80} 82}
81 83
diff --git a/kabc/vcard/ImageValue.cpp b/kabc/vcard/ImageValue.cpp
index 4630fac..678a81c 100644
--- a/kabc/vcard/ImageValue.cpp
+++ b/kabc/vcard/ImageValue.cpp
@@ -1,81 +1,83 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardImageValue.h> 24#include <VCardImageValue.h>
25 25
26#include <VCardValue.h> 26#include <VCardValue.h>
27//Added by qt3to4:
28#include <Q3CString>
27 29
28using namespace VCARD; 30using namespace VCARD;
29 31
30ImageValue::ImageValue() 32ImageValue::ImageValue()
31 :Value() 33 :Value()
32{ 34{
33} 35}
34 36
35ImageValue::ImageValue(const ImageValue & x) 37ImageValue::ImageValue(const ImageValue & x)
36 :Value(x) 38 :Value(x)
37{ 39{
38} 40}
39 41
40ImageValue::ImageValue(const QCString & s) 42ImageValue::ImageValue(const Q3CString & s)
41 :Value(s) 43 :Value(s)
42{ 44{
43} 45}
44 46
45 ImageValue & 47 ImageValue &
46ImageValue::operator = (ImageValue & x) 48ImageValue::operator = (ImageValue & x)
47{ 49{
48 if (*this == x) return *this; 50 if (*this == x) return *this;
49 51
50 Value::operator = (x); 52 Value::operator = (x);
51 return *this; 53 return *this;
52} 54}
53 55
54 ImageValue & 56 ImageValue &
55ImageValue::operator = (const QCString & s) 57ImageValue::operator = (const Q3CString & s)
56{ 58{
57 Value::operator = (s); 59 Value::operator = (s);
58 return *this; 60 return *this;
59} 61}
60 62
61 bool 63 bool
62ImageValue::operator == (ImageValue & x) 64ImageValue::operator == (ImageValue & x)
63{ 65{
64 x.parse(); 66 x.parse();
65 return false; 67 return false;
66} 68}
67 69
68ImageValue::~ImageValue() 70ImageValue::~ImageValue()
69{ 71{
70} 72}
71 73
72 void 74 void
73ImageValue::_parse() 75ImageValue::_parse()
74{ 76{
75} 77}
76 78
77 void 79 void
78ImageValue::_assemble() 80ImageValue::_assemble()
79{ 81{
80} 82}
81 83
diff --git a/kabc/vcard/ImgValue.cpp b/kabc/vcard/ImgValue.cpp
index 7b961f8..1b289df 100644
--- a/kabc/vcard/ImgValue.cpp
+++ b/kabc/vcard/ImgValue.cpp
@@ -1,81 +1,83 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardImgValue.h> 24#include <VCardImgValue.h>
25 25
26#include <VCardValue.h> 26#include <VCardValue.h>
27//Added by qt3to4:
28#include <Q3CString>
27 29
28using namespace VCARD; 30using namespace VCARD;
29 31
30ImgValue::ImgValue() 32ImgValue::ImgValue()
31 :Value() 33 :Value()
32{ 34{
33} 35}
34 36
35ImgValue::ImgValue(const ImgValue & x) 37ImgValue::ImgValue(const ImgValue & x)
36 :Value(x) 38 :Value(x)
37{ 39{
38} 40}
39 41
40ImgValue::ImgValue(const QCString & s) 42ImgValue::ImgValue(const Q3CString & s)
41 :Value(s) 43 :Value(s)
42{ 44{
43} 45}
44 46
45 ImgValue & 47 ImgValue &
46ImgValue::operator = (ImgValue & x) 48ImgValue::operator = (ImgValue & x)
47{ 49{
48 if (*this == x) return *this; 50 if (*this == x) return *this;
49 51
50 Value::operator = (x); 52 Value::operator = (x);
51 return *this; 53 return *this;
52} 54}
53 55
54 ImgValue & 56 ImgValue &
55ImgValue::operator = (const QCString & s) 57ImgValue::operator = (const Q3CString & s)
56{ 58{
57 Value::operator = (s); 59 Value::operator = (s);
58 return *this; 60 return *this;
59} 61}
60 62
61 bool 63 bool
62ImgValue::operator == (ImgValue & x) 64ImgValue::operator == (ImgValue & x)
63{ 65{
64 x.parse(); 66 x.parse();
65 return false; 67 return false;
66} 68}
67 69
68ImgValue::~ImgValue() 70ImgValue::~ImgValue()
69{ 71{
70} 72}
71 73
72 void 74 void
73ImgValue::_parse() 75ImgValue::_parse()
74{ 76{
75} 77}
76 78
77 void 79 void
78ImgValue::_assemble() 80ImgValue::_assemble()
79{ 81{
80} 82}
81 83
diff --git a/kabc/vcard/LangValue.cpp b/kabc/vcard/LangValue.cpp
index edf1804..52a0204 100644
--- a/kabc/vcard/LangValue.cpp
+++ b/kabc/vcard/LangValue.cpp
@@ -1,127 +1,131 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardRToken.h> 24#include <VCardRToken.h>
25 25
26#include <VCardLangValue.h> 26#include <VCardLangValue.h>
27 27
28#include <VCardValue.h> 28#include <VCardValue.h>
29//Added by qt3to4:
30#include <Q3CString>
31#include <Q3StrList>
29 32
30using namespace VCARD; 33using namespace VCARD;
31 34
32LangValue::LangValue() 35LangValue::LangValue()
33 :Value() 36 :Value()
34{ 37{
35} 38}
36 39
37LangValue::LangValue(const LangValue & x) 40LangValue::LangValue(const LangValue & x)
38 :Value(x) 41 :Value(x)
39{ 42{
40} 43}
41 44
42LangValue::LangValue(const QCString & s) 45LangValue::LangValue(const Q3CString & s)
43 :Value(s) 46 :Value(s)
44{ 47{
45} 48}
46 49
47 LangValue & 50 LangValue &
48LangValue::operator = (LangValue & x) 51LangValue::operator = (LangValue & x)
49{ 52{
50 if (*this == x) return *this; 53 if (*this == x) return *this;
51 54
52 Value::operator = (x); 55 Value::operator = (x);
53 return *this; 56 return *this;
54} 57}
55 58
56 LangValue & 59 LangValue &
57LangValue::operator = (const QCString & s) 60LangValue::operator = (const Q3CString & s)
58{ 61{
59 Value::operator = (s); 62 Value::operator = (s);
60 return *this; 63 return *this;
61} 64}
62 65
63 bool 66 bool
64LangValue::operator == (LangValue & x) 67LangValue::operator == (LangValue & x)
65{ 68{
66 x.parse(); 69 x.parse();
67 return false; 70 return false;
68} 71}
69 72
70LangValue::~LangValue() 73LangValue::~LangValue()
71{ 74{
72} 75}
73 76
74 void 77 void
75LangValue::_parse() 78LangValue::_parse()
76{ 79{
77 QStrList l; 80 Q3StrList l;
78 RTokenise(strRep_, "-", l); 81 RTokenise(strRep_, "-", l);
79 82
80 if (l.count() == 0) return; 83 if (l.count() == 0) return;
81 84
82 primary_ = l.at(0); 85 primary_ = l.at(0);
83 86
84 l.remove(0u); 87 l.remove(0u);
85 88
86 subtags_ = l; 89 subtags_ = l;
87} 90}
88 91
89 void 92 void
90LangValue::_assemble() 93LangValue::_assemble()
91{ 94{
92 strRep_ = primary_; 95 strRep_ = primary_;
93 96
94 QStrListIterator it(subtags_); 97 Q3StrListIterator it(subtags_);
95 98
96 for (; it.current(); ++it) 99 for (; it.current(); ++it) {
97 strRep_ += QCString('-') + it.current(); 100 strRep_ += Q3CString('-'); strRep_ += it.current();
101 }
98} 102}
99 103
100 QCString 104 Q3CString
101LangValue::primary() 105LangValue::primary()
102{ 106{
103 parse(); 107 parse();
104 return primary_; 108 return primary_;
105} 109}
106 110
107 QStrList 111 Q3StrList
108LangValue::subtags() 112LangValue::subtags()
109{ 113{
110 parse(); 114 parse();
111 return subtags_; 115 return subtags_;
112} 116}
113 117
114 void 118 void
115LangValue::setPrimary(const QCString & s) 119LangValue::setPrimary(const Q3CString & s)
116{ 120{
117 parse(); 121 parse();
118 primary_ = s; 122 primary_ = s;
119} 123}
120 124
121 void 125 void
122LangValue::setSubTags(const QStrList & l) 126LangValue::setSubTags(const Q3StrList & l)
123{ 127{
124 parse(); 128 parse();
125 subtags_ = l; 129 subtags_ = l;
126} 130}
127 131
diff --git a/kabc/vcard/NValue.cpp b/kabc/vcard/NValue.cpp
index cdec621..6c0f365 100644
--- a/kabc/vcard/NValue.cpp
+++ b/kabc/vcard/NValue.cpp
@@ -1,128 +1,130 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <qstrlist.h> 24#include <q3strlist.h>
25//Added by qt3to4:
26#include <Q3CString>
25 27
26#include <VCardRToken.h> 28#include <VCardRToken.h>
27#include <VCardNValue.h> 29#include <VCardNValue.h>
28#include <VCardValue.h> 30#include <VCardValue.h>
29#include <VCardDefines.h> 31#include <VCardDefines.h>
30 32
31using namespace VCARD; 33using namespace VCARD;
32 34
33NValue::NValue() 35NValue::NValue()
34 :Value() 36 :Value()
35{ 37{
36 vDebug("ctor"); 38 vDebug("ctor");
37} 39}
38 40
39NValue::NValue(const NValue & x) 41NValue::NValue(const NValue & x)
40 :Value(x), 42 :Value(x),
41 family_(x.family_), 43 family_(x.family_),
42 given_(x.given_), 44 given_(x.given_),
43 middle_(x.middle_), 45 middle_(x.middle_),
44 prefix_(x.prefix_), 46 prefix_(x.prefix_),
45 suffix_(x.suffix_) 47 suffix_(x.suffix_)
46{ 48{
47} 49}
48 50
49NValue::NValue(const QCString & s) 51NValue::NValue(const Q3CString & s)
50 :Value(s) 52 :Value(s)
51{ 53{
52 vDebug("ctor"); 54 vDebug("ctor");
53} 55}
54 56
55 NValue & 57 NValue &
56NValue::operator = (NValue & x) 58NValue::operator = (NValue & x)
57{ 59{
58 if (*this == x) return *this; 60 if (*this == x) return *this;
59 61
60 family_= x.family_; 62 family_= x.family_;
61 given_= x.given_; 63 given_= x.given_;
62 middle_= x.middle_; 64 middle_= x.middle_;
63 prefix_= x.prefix_; 65 prefix_= x.prefix_;
64 suffix_= x.suffix_; 66 suffix_= x.suffix_;
65 67
66 Value::operator = (x); 68 Value::operator = (x);
67 return *this; 69 return *this;
68} 70}
69 71
70 NValue & 72 NValue &
71NValue::operator = (const QCString & s) 73NValue::operator = (const Q3CString & s)
72{ 74{
73 Value::operator = (s); 75 Value::operator = (s);
74 return *this; 76 return *this;
75} 77}
76 78
77 bool 79 bool
78NValue::operator == (NValue & x) 80NValue::operator == (NValue & x)
79{ 81{
80 x.parse(); 82 x.parse();
81 83
82 return ( 84 return (
83 family_ == x.family_&& 85 family_ == x.family_&&
84 given_ == x.given_&& 86 given_ == x.given_&&
85 middle_ == x.middle_&& 87 middle_ == x.middle_&&
86 prefix_ == x.prefix_&& 88 prefix_ == x.prefix_&&
87 suffix_ == x.suffix_); 89 suffix_ == x.suffix_);
88} 90}
89 91
90NValue::~NValue() 92NValue::~NValue()
91{ 93{
92} 94}
93 95
94 NValue * 96 NValue *
95NValue::clone() 97NValue::clone()
96{ 98{
97 return new NValue( *this ); 99 return new NValue( *this );
98} 100}
99 101
100 void 102 void
101NValue::_parse() 103NValue::_parse()
102{ 104{
103 QStrList l; 105 Q3StrList l;
104 RTokenise(strRep_, ";", l); 106 RTokenise(strRep_, ";", l);
105 107
106 for (unsigned int i = 0; i < l.count(); i++) { 108 for (unsigned int i = 0; i < l.count(); i++) {
107 109
108 switch (i) { 110 switch (i) {
109 case 0: family_ = l.at(0);break; 111 case 0: family_ = l.at(0);break;
110 case 1: given_ = l.at(1);break; 112 case 1: given_ = l.at(1);break;
111 case 2: middle_ = l.at(2);break; 113 case 2: middle_ = l.at(2);break;
112 case 3: prefix_ = l.at(3);break; 114 case 3: prefix_ = l.at(3);break;
113 case 4: suffix_ = l.at(4);break; 115 case 4: suffix_ = l.at(4);break;
114 default: break; 116 default: break;
115 } 117 }
116 } 118 }
117} 119}
118 120
119 void 121 void
120NValue::_assemble() 122NValue::_assemble()
121{ 123{
122 strRep_ = family_; 124 strRep_ = family_;
123 strRep_ += ";" +given_; 125 strRep_ += ";" +given_;
124 strRep_ += ";" +middle_; 126 strRep_ += ";" +middle_;
125 strRep_ += ";" +prefix_; 127 strRep_ += ";" +prefix_;
126 strRep_ += ";" +suffix_; 128 strRep_ += ";" +suffix_;
127} 129}
128 130
diff --git a/kabc/vcard/OrgValue.cpp b/kabc/vcard/OrgValue.cpp
index c3134c8..a6a32dd 100644
--- a/kabc/vcard/OrgValue.cpp
+++ b/kabc/vcard/OrgValue.cpp
@@ -1,107 +1,109 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardRToken.h> 24#include <VCardRToken.h>
25 25
26#include <VCardOrgValue.h> 26#include <VCardOrgValue.h>
27 27
28#include <VCardValue.h> 28#include <VCardValue.h>
29//Added by qt3to4:
30#include <Q3CString>
29 31
30using namespace VCARD; 32using namespace VCARD;
31 33
32OrgValue::OrgValue() 34OrgValue::OrgValue()
33 :Value() 35 :Value()
34{ 36{
35} 37}
36 38
37OrgValue::OrgValue(const OrgValue & x) 39OrgValue::OrgValue(const OrgValue & x)
38 :Value(x) 40 :Value(x)
39{ 41{
40} 42}
41 43
42OrgValue::OrgValue(const QCString & s) 44OrgValue::OrgValue(const Q3CString & s)
43 :Value(s) 45 :Value(s)
44{ 46{
45} 47}
46 48
47 OrgValue & 49 OrgValue &
48OrgValue::operator = (OrgValue & x) 50OrgValue::operator = (OrgValue & x)
49{ 51{
50 if (*this == x) return *this; 52 if (*this == x) return *this;
51 53
52 Value::operator = (x); 54 Value::operator = (x);
53 return *this; 55 return *this;
54} 56}
55 57
56 OrgValue & 58 OrgValue &
57OrgValue::operator = (const QCString & s) 59OrgValue::operator = (const Q3CString & s)
58{ 60{
59 Value::operator = (s); 61 Value::operator = (s);
60 return *this; 62 return *this;
61} 63}
62 64
63 bool 65 bool
64OrgValue::operator == (OrgValue & x) 66OrgValue::operator == (OrgValue & x)
65{ 67{
66 x.parse(); 68 x.parse();
67 return false; 69 return false;
68} 70}
69 71
70OrgValue::~OrgValue() 72OrgValue::~OrgValue()
71{ 73{
72} 74}
73 75
74 void 76 void
75OrgValue::_parse() 77OrgValue::_parse()
76{ 78{
77 RTokenise(strRep_, ";", valueList_); 79 RTokenise(strRep_, ";", valueList_);
78} 80}
79 81
80 void 82 void
81OrgValue::_assemble() 83OrgValue::_assemble()
82{ 84{
83 bool first(true); 85 bool first(true);
84 86
85 QStrListIterator it(valueList_); 87 Q3StrListIterator it(valueList_);
86 88
87 for (; it.current(); ++it) { 89 for (; it.current(); ++it) {
88 if (!first) strRep_ += ';'; 90 if (!first) strRep_ += ';';
89 strRep_ += it.current(); 91 strRep_ += it.current();
90 first = false; 92 first = false;
91 } 93 }
92} 94}
93 95
94 unsigned int 96 unsigned int
95OrgValue::numValues() 97OrgValue::numValues()
96{ 98{
97 parse(); 99 parse();
98 return valueList_.count(); 100 return valueList_.count();
99} 101}
100 102
101 QCString 103 Q3CString
102OrgValue::value(unsigned int i) 104OrgValue::value(unsigned int i)
103{ 105{
104 parse(); 106 parse();
105 return valueList_.at(i); 107 return valueList_.at(i);
106} 108}
107 109
diff --git a/kabc/vcard/Param.cpp b/kabc/vcard/Param.cpp
index c513613..bd6b299 100644
--- a/kabc/vcard/Param.cpp
+++ b/kabc/vcard/Param.cpp
@@ -1,129 +1,131 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardParam.h> 24#include <VCardParam.h>
25 25
26#include <VCardEntity.h> 26#include <VCardEntity.h>
27 27
28#include <VCardRToken.h> 28#include <VCardRToken.h>
29//Added by qt3to4:
30#include <Q3CString>
29 31
30using namespace VCARD; 32using namespace VCARD;
31 33
32Param::Param() 34Param::Param()
33 :Entity(), 35 :Entity(),
34 name_(""), 36 name_(""),
35 value_("") 37 value_("")
36{ 38{
37} 39}
38 40
39Param::Param(const Param & x) 41Param::Param(const Param & x)
40 :Entity(x), 42 :Entity(x),
41 name_(x.name_), 43 name_(x.name_),
42 value_(x.value_) 44 value_(x.value_)
43{ 45{
44} 46}
45 47
46Param::Param(const QCString & s) 48Param::Param(const Q3CString & s)
47 :Entity(s), 49 :Entity(s),
48 name_(""), 50 name_(""),
49 value_("") 51 value_("")
50{ 52{
51} 53}
52 54
53 Param & 55 Param &
54Param::operator = (Param & x) 56Param::operator = (Param & x)
55{ 57{
56 if (*this == x) return *this; 58 if (*this == x) return *this;
57 59
58 Entity::operator = (x); 60 Entity::operator = (x);
59 name_ = x.name_; 61 name_ = x.name_;
60 value_ = x.value_; 62 value_ = x.value_;
61 63
62 return *this; 64 return *this;
63} 65}
64 66
65 Param & 67 Param &
66Param::operator = (const QCString & s) 68Param::operator = (const Q3CString & s)
67{ 69{
68 Entity::operator = (s); 70 Entity::operator = (s);
69 return *this; 71 return *this;
70} 72}
71 73
72 bool 74 bool
73Param::operator == (Param & x) 75Param::operator == (Param & x)
74{ 76{
75 x.parse(); 77 x.parse();
76 return false; 78 return false;
77} 79}
78 80
79Param::~Param() 81Param::~Param()
80{ 82{
81} 83}
82 84
83 void 85 void
84Param::_parse() 86Param::_parse()
85{ 87{
86} 88}
87 89
88 void 90 void
89Param::_assemble() 91Param::_assemble()
90{ 92{
91 strRep_ = name_ + "=" + value_; 93 strRep_ = name_ + "=" + value_;
92} 94}
93 95
94Param::Param(const QCString &name, const QCString &value) 96Param::Param(const Q3CString &name, const Q3CString &value)
95 :Entity(), 97 :Entity(),
96 name_(name), 98 name_(name),
97 value_(value) 99 value_(value)
98{ 100{
99 parsed_ = true; 101 parsed_ = true;
100 assembled_ = false; 102 assembled_ = false;
101} 103}
102 104
103 void 105 void
104Param::setName(const QCString & name) 106Param::setName(const Q3CString & name)
105{ 107{
106 name_ = name; 108 name_ = name;
107 109
108 assembled_ = false; 110 assembled_ = false;
109} 111}
110 112
111 void 113 void
112Param::setValue(const QCString & value) 114Param::setValue(const Q3CString & value)
113{ 115{
114 value_ = value; 116 value_ = value;
115 117
116 assembled_ = false; 118 assembled_ = false;
117} 119}
118 120
119 QCString 121 Q3CString
120Param::name() 122Param::name()
121{ 123{
122 return name_; 124 return name_;
123} 125}
124 126
125 QCString 127 Q3CString
126Param::value() 128Param::value()
127{ 129{
128 return value_; 130 return value_;
129} 131}
diff --git a/kabc/vcard/PhoneNumberValue.cpp b/kabc/vcard/PhoneNumberValue.cpp
index 17b1400..57aa336 100644
--- a/kabc/vcard/PhoneNumberValue.cpp
+++ b/kabc/vcard/PhoneNumberValue.cpp
@@ -1,81 +1,83 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardPhoneNumberValue.h> 24#include <VCardPhoneNumberValue.h>
25 25
26#include <VCardValue.h> 26#include <VCardValue.h>
27//Added by qt3to4:
28#include <Q3CString>
27 29
28using namespace VCARD; 30using namespace VCARD;
29 31
30PhoneNumberValue::PhoneNumberValue() 32PhoneNumberValue::PhoneNumberValue()
31 :Value() 33 :Value()
32{ 34{
33} 35}
34 36
35PhoneNumberValue::PhoneNumberValue(const PhoneNumberValue & x) 37PhoneNumberValue::PhoneNumberValue(const PhoneNumberValue & x)
36 :Value(x) 38 :Value(x)
37{ 39{
38} 40}
39 41
40PhoneNumberValue::PhoneNumberValue(const QCString & s) 42PhoneNumberValue::PhoneNumberValue(const Q3CString & s)
41 :Value(s) 43 :Value(s)
42{ 44{
43} 45}
44 46
45 PhoneNumberValue & 47 PhoneNumberValue &
46PhoneNumberValue::operator = (PhoneNumberValue & x) 48PhoneNumberValue::operator = (PhoneNumberValue & x)
47{ 49{
48 if (*this == x) return *this; 50 if (*this == x) return *this;
49 51
50 Value::operator = (x); 52 Value::operator = (x);
51 return *this; 53 return *this;
52} 54}
53 55
54 PhoneNumberValue & 56 PhoneNumberValue &
55PhoneNumberValue::operator = (const QCString & s) 57PhoneNumberValue::operator = (const Q3CString & s)
56{ 58{
57 Value::operator = (s); 59 Value::operator = (s);
58 return *this; 60 return *this;
59} 61}
60 62
61 bool 63 bool
62PhoneNumberValue::operator == (PhoneNumberValue & x) 64PhoneNumberValue::operator == (PhoneNumberValue & x)
63{ 65{
64 x.parse(); 66 x.parse();
65 return false; 67 return false;
66} 68}
67 69
68PhoneNumberValue::~PhoneNumberValue() 70PhoneNumberValue::~PhoneNumberValue()
69{ 71{
70} 72}
71 73
72 void 74 void
73PhoneNumberValue::_parse() 75PhoneNumberValue::_parse()
74{ 76{
75} 77}
76 78
77 void 79 void
78PhoneNumberValue::_assemble() 80PhoneNumberValue::_assemble()
79{ 81{
80} 82}
81 83
diff --git a/kabc/vcard/RToken.cpp b/kabc/vcard/RToken.cpp
index 2a85820..8fc0558 100644
--- a/kabc/vcard/RToken.cpp
+++ b/kabc/vcard/RToken.cpp
@@ -1,88 +1,88 @@
1/* 1/*
2 2
3 libvcard - vCard parsing library for vCard version 3.0 3 libvcard - vCard parsing library for vCard version 3.0
4 4
5 Copyright (C) 1999 Rik Hemsley rik@kde.org 5 Copyright (C) 1999 Rik Hemsley rik@kde.org
6 6
7 Permission is hereby granted, free of charge, to any person obtaining a copy 7 Permission is hereby granted, free of charge, to any person obtaining a copy
8 of this software and associated documentation files (the "Software"), to 8 of this software and associated documentation files (the "Software"), to
9 deal in the Software without restriction, including without limitation the 9 deal in the Software without restriction, including without limitation the
10 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 10 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
11 sell copies of the Software, and to permit persons to whom the Software is 11 sell copies of the Software, and to permit persons to whom the Software is
12 furnished to do so, subject to the following conditions: 12 furnished to do so, subject to the following conditions:
13 13
14 The above copyright notice and this permission notice shall be included in 14 The above copyright notice and this permission notice shall be included in
15 all copies or substantial portions of the Software. 15 all copies or substantial portions of the Software.
16 16
17 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 20 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
21 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 21 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23*/ 23*/
24 24
25#include <string.h> 25#include <string.h>
26#include <stddef.h> 26#include <stddef.h>
27#include <qcstring.h> 27#include <q3cstring.h>
28#include <qstrlist.h> 28#include <q3strlist.h>
29 29
30namespace VCARD 30namespace VCARD
31{ 31{
32 32
33 Q_UINT32 33 Q_UINT32
34RTokenise(const char * str, const char * delim, QStrList & l) 34RTokenise(const char * str, const char * delim, Q3StrList & l)
35{ 35{
36 // FIXME no stderr ! 36 // FIXME no stderr !
37 l.clear(); 37 l.clear();
38 38
39 if (!delim || !str || strlen(delim) == 0 || strlen(str) == 0) return 0; 39 if (!delim || !str || strlen(delim) == 0 || strlen(str) == 0) return 0;
40 40
41 char * len = (char *)(str + strlen(str));// End of string. 41 char * len = (char *)(str + strlen(str));// End of string.
42 42
43 register char * rstart = new char[strlen(str) + 1]; 43 register char * rstart = new char[strlen(str) + 1];
44 register char * r = rstart; 44 register char * r = rstart;
45 45
46 46
47 register const char * i = str;// Cursor. 47 register const char * i = str;// Cursor.
48 48
49 while (i <= len) { 49 while (i <= len) {
50 50
51 if (*i == '\\') { // Escaped chars go straight through. 51 if (*i == '\\') { // Escaped chars go straight through.
52 *r++ = *i++; 52 *r++ = *i++;
53 if (i <= len) 53 if (i <= len)
54 *r++ = *i++; 54 *r++ = *i++;
55 continue; 55 continue;
56 } 56 }
57 57
58 if (strchr(delim, *i) != 0) { 58 if (strchr(delim, *i) != 0) {
59 // We hit a delimiter. If we have some text, make a new token. 59 // We hit a delimiter. If we have some text, make a new token.
60 // This has the effect that multiple delimiters are collapsed. 60 // This has the effect that multiple delimiters are collapsed.
61 // cs: We mustn't collapse multiple delimiters, otherwise we 61 // cs: We mustn't collapse multiple delimiters, otherwise we
62 // lose empty fields. 62 // lose empty fields.
63 *r = '\0'; 63 *r = '\0';
64 // if (r != rstart) { 64 // if (r != rstart) {
65 l.append(rstart); 65 l.append(rstart);
66 // } 66 // }
67 r = rstart; 67 r = rstart;
68 ++i; 68 ++i;
69 continue; 69 continue;
70 } 70 }
71 71
72 *r++ = *i++; 72 *r++ = *i++;
73 } 73 }
74 74
75 // Catch last token 75 // Catch last token
76 //if (r != rstart) { 76 //if (r != rstart) {
77 *r = '\0'; 77 *r = '\0';
78 l.append(rstart); 78 l.append(rstart);
79 //} 79 //}
80 80
81 r = 0; 81 r = 0;
82 82
83 delete [] rstart; 83 delete [] rstart;
84 84
85 return l.count(); 85 return l.count();
86} 86}
87 87
88} 88}
diff --git a/kabc/vcard/SoundValue.cpp b/kabc/vcard/SoundValue.cpp
index 81040d1..4d098d2 100644
--- a/kabc/vcard/SoundValue.cpp
+++ b/kabc/vcard/SoundValue.cpp
@@ -1,81 +1,83 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardSoundValue.h> 24#include <VCardSoundValue.h>
25 25
26#include <VCardValue.h> 26#include <VCardValue.h>
27//Added by qt3to4:
28#include <Q3CString>
27 29
28using namespace VCARD; 30using namespace VCARD;
29 31
30SoundValue::SoundValue() 32SoundValue::SoundValue()
31 :Value() 33 :Value()
32{ 34{
33} 35}
34 36
35SoundValue::SoundValue(const SoundValue & x) 37SoundValue::SoundValue(const SoundValue & x)
36 :Value(x) 38 :Value(x)
37{ 39{
38} 40}
39 41
40SoundValue::SoundValue(const QCString & s) 42SoundValue::SoundValue(const Q3CString & s)
41 :Value(s) 43 :Value(s)
42{ 44{
43} 45}
44 46
45 SoundValue & 47 SoundValue &
46SoundValue::operator = (SoundValue & x) 48SoundValue::operator = (SoundValue & x)
47{ 49{
48 if (*this == x) return *this; 50 if (*this == x) return *this;
49 51
50 Value::operator = (x); 52 Value::operator = (x);
51 return *this; 53 return *this;
52} 54}
53 55
54 SoundValue & 56 SoundValue &
55SoundValue::operator = (const QCString & s) 57SoundValue::operator = (const Q3CString & s)
56{ 58{
57 Value::operator = (s); 59 Value::operator = (s);
58 return *this; 60 return *this;
59} 61}
60 62
61 bool 63 bool
62SoundValue::operator == (SoundValue & x) 64SoundValue::operator == (SoundValue & x)
63{ 65{
64 x.parse(); 66 x.parse();
65 return false; 67 return false;
66} 68}
67 69
68SoundValue::~SoundValue() 70SoundValue::~SoundValue()
69{ 71{
70} 72}
71 73
72 void 74 void
73SoundValue::_parse() 75SoundValue::_parse()
74{ 76{
75} 77}
76 78
77 void 79 void
78SoundValue::_assemble() 80SoundValue::_assemble()
79{ 81{
80} 82}
81 83
diff --git a/kabc/vcard/SourceParam.cpp b/kabc/vcard/SourceParam.cpp
index cd51cbd..8f02113 100644
--- a/kabc/vcard/SourceParam.cpp
+++ b/kabc/vcard/SourceParam.cpp
@@ -1,112 +1,114 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardSourceParam.h> 24#include <VCardSourceParam.h>
25 25
26#include <VCardParam.h> 26#include <VCardParam.h>
27//Added by qt3to4:
28#include <Q3CString>
27 29
28using namespace VCARD; 30using namespace VCARD;
29 31
30SourceParam::SourceParam() 32SourceParam::SourceParam()
31 :Param(), 33 :Param(),
32 type_(SourceParam::TypeUnknown) 34 type_(SourceParam::TypeUnknown)
33{ 35{
34} 36}
35 37
36SourceParam::SourceParam(const SourceParam & x) 38SourceParam::SourceParam(const SourceParam & x)
37 :Param(x), 39 :Param(x),
38 type_(x.type_), 40 type_(x.type_),
39 par_(x.par_), 41 par_(x.par_),
40 val_(x.val_) 42 val_(x.val_)
41{ 43{
42} 44}
43 45
44SourceParam::SourceParam(const QCString & s) 46SourceParam::SourceParam(const Q3CString & s)
45 :Param(s), 47 :Param(s),
46 type_(SourceParam::TypeUnknown) 48 type_(SourceParam::TypeUnknown)
47{ 49{
48} 50}
49 51
50 SourceParam & 52 SourceParam &
51SourceParam::operator = (SourceParam & x) 53SourceParam::operator = (SourceParam & x)
52{ 54{
53 if (*this == x) return *this; 55 if (*this == x) return *this;
54 type_= x.type(); 56 type_= x.type();
55 par_= x.par(); 57 par_= x.par();
56 val_= x.val(); 58 val_= x.val();
57 59
58 Param::operator = (x); 60 Param::operator = (x);
59 return *this; 61 return *this;
60} 62}
61 63
62 SourceParam & 64 SourceParam &
63SourceParam::operator = (const QCString & s) 65SourceParam::operator = (const Q3CString & s)
64{ 66{
65 Param::operator = (s); 67 Param::operator = (s);
66 return *this; 68 return *this;
67} 69}
68 70
69 bool 71 bool
70SourceParam::operator == (SourceParam & x) 72SourceParam::operator == (SourceParam & x)
71{ 73{
72 x.parse(); 74 x.parse();
73 return false; 75 return false;
74} 76}
75 77
76SourceParam::~SourceParam() 78SourceParam::~SourceParam()
77{ 79{
78} 80}
79 81
80 void 82 void
81SourceParam::_parse() 83SourceParam::_parse()
82{ 84{
83 int i = strRep_.find('='); 85 int i = strRep_.find('=');
84 if (i == -1) // Invalid 86 if (i == -1) // Invalid
85 return; 87 return;
86 88
87 par_ = strRep_.left(i); 89 par_ = strRep_.left(i);
88 val_ = strRep_.right(strRep_.length() - i - 1); 90 val_ = strRep_.right(strRep_.length() - i - 1);
89 91
90 if (qstricmp(par_, "VALUE") == 0 && qstricmp(val_, "uri") == 0) 92 if (qstricmp(par_, "VALUE") == 0 && qstricmp(val_, "uri") == 0)
91 type_ = TypeValue; 93 type_ = TypeValue;
92 else if (qstricmp(par_, "CONTEXT") == 0 && qstricmp(val_, "word") == 0) 94 else if (qstricmp(par_, "CONTEXT") == 0 && qstricmp(val_, "word") == 0)
93 type_ = TypeContext; 95 type_ = TypeContext;
94 else if (qstrnicmp(par_, "X-", 2) == 0) { 96 else if (qstrnicmp(par_, "X-", 2) == 0) {
95 type_ = TypeX; 97 type_ = TypeX;
96 } 98 }
97 else type_ = TypeUnknown; 99 else type_ = TypeUnknown;
98 100
99} 101}
100 102
101 void 103 void
102SourceParam::_assemble() 104SourceParam::_assemble()
103{ 105{
104 if (type_ == TypeValue) 106 if (type_ == TypeValue)
105 strRep_ = "VALUE=uri"; 107 strRep_ = "VALUE=uri";
106 else if (type_ == TypeContext) 108 else if (type_ == TypeContext)
107 strRep_ = "CONTEXT=word"; 109 strRep_ = "CONTEXT=word";
108 else if (type_ == TypeX) 110 else if (type_ == TypeX)
109 strRep_ = par_ + "=" + val_; 111 strRep_ = par_ + "=" + val_;
110 else strRep_ = ""; 112 else strRep_ = "";
111} 113}
112 114
diff --git a/kabc/vcard/TelParam.cpp b/kabc/vcard/TelParam.cpp
index 9d9fe4d..4bc8b6a 100644
--- a/kabc/vcard/TelParam.cpp
+++ b/kabc/vcard/TelParam.cpp
@@ -1,81 +1,83 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardTelParam.h> 24#include <VCardTelParam.h>
25 25
26#include <VCardParam.h> 26#include <VCardParam.h>
27//Added by qt3to4:
28#include <Q3CString>
27 29
28using namespace VCARD; 30using namespace VCARD;
29 31
30TelParam::TelParam() 32TelParam::TelParam()
31 :Param() 33 :Param()
32{ 34{
33} 35}
34 36
35TelParam::TelParam(const TelParam & x) 37TelParam::TelParam(const TelParam & x)
36 :Param(x) 38 :Param(x)
37{ 39{
38} 40}
39 41
40TelParam::TelParam(const QCString & s) 42TelParam::TelParam(const Q3CString & s)
41 :Param(s) 43 :Param(s)
42{ 44{
43} 45}
44 46
45 TelParam & 47 TelParam &
46TelParam::operator = (TelParam & x) 48TelParam::operator = (TelParam & x)
47{ 49{
48 if (*this == x) return *this; 50 if (*this == x) return *this;
49 51
50 Param::operator = (x); 52 Param::operator = (x);
51 return *this; 53 return *this;
52} 54}
53 55
54 TelParam & 56 TelParam &
55TelParam::operator = (const QCString & s) 57TelParam::operator = (const Q3CString & s)
56{ 58{
57 Param::operator = (s); 59 Param::operator = (s);
58 return *this; 60 return *this;
59} 61}
60 62
61 bool 63 bool
62TelParam::operator == (TelParam & x) 64TelParam::operator == (TelParam & x)
63{ 65{
64 x.parse(); 66 x.parse();
65 return false; 67 return false;
66} 68}
67 69
68TelParam::~TelParam() 70TelParam::~TelParam()
69{ 71{
70} 72}
71 73
72 void 74 void
73TelParam::_parse() 75TelParam::_parse()
74{ 76{
75} 77}
76 78
77 void 79 void
78TelParam::_assemble() 80TelParam::_assemble()
79{ 81{
80} 82}
81 83
diff --git a/kabc/vcard/TelValue.cpp b/kabc/vcard/TelValue.cpp
index 349f99a..d9cbf3e 100644
--- a/kabc/vcard/TelValue.cpp
+++ b/kabc/vcard/TelValue.cpp
@@ -1,81 +1,83 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardTelValue.h> 24#include <VCardTelValue.h>
25 25
26#include <VCardValue.h> 26#include <VCardValue.h>
27//Added by qt3to4:
28#include <Q3CString>
27 29
28using namespace VCARD; 30using namespace VCARD;
29 31
30TelValue::TelValue() 32TelValue::TelValue()
31 :Value() 33 :Value()
32{ 34{
33} 35}
34 36
35TelValue::TelValue(const TelValue & x) 37TelValue::TelValue(const TelValue & x)
36 :Value(x) 38 :Value(x)
37{ 39{
38} 40}
39 41
40TelValue::TelValue(const QCString & s) 42TelValue::TelValue(const Q3CString & s)
41 :Value(s) 43 :Value(s)
42{ 44{
43} 45}
44 46
45 TelValue & 47 TelValue &
46TelValue::operator = (TelValue & x) 48TelValue::operator = (TelValue & x)
47{ 49{
48 if (*this == x) return *this; 50 if (*this == x) return *this;
49 51
50 Value::operator = (x); 52 Value::operator = (x);
51 return *this; 53 return *this;
52} 54}
53 55
54 TelValue & 56 TelValue &
55TelValue::operator = (const QCString & s) 57TelValue::operator = (const Q3CString & s)
56{ 58{
57 Value::operator = (s); 59 Value::operator = (s);
58 return *this; 60 return *this;
59} 61}
60 62
61 bool 63 bool
62TelValue::operator == (TelValue & x) 64TelValue::operator == (TelValue & x)
63{ 65{
64 x.parse(); 66 x.parse();
65 return false; 67 return false;
66} 68}
67 69
68TelValue::~TelValue() 70TelValue::~TelValue()
69{ 71{
70} 72}
71 73
72 void 74 void
73TelValue::_parse() 75TelValue::_parse()
74{ 76{
75} 77}
76 78
77 void 79 void
78TelValue::_assemble() 80TelValue::_assemble()
79{ 81{
80} 82}
81 83
diff --git a/kabc/vcard/TextBinParam.cpp b/kabc/vcard/TextBinParam.cpp
index 66f2946..2866c12 100644
--- a/kabc/vcard/TextBinParam.cpp
+++ b/kabc/vcard/TextBinParam.cpp
@@ -1,81 +1,83 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardTextBinParam.h> 24#include <VCardTextBinParam.h>
25 25
26#include <VCardParam.h> 26#include <VCardParam.h>
27//Added by qt3to4:
28#include <Q3CString>
27 29
28using namespace VCARD; 30using namespace VCARD;
29 31
30TextBinParam::TextBinParam() 32TextBinParam::TextBinParam()
31 :Param() 33 :Param()
32{ 34{
33} 35}
34 36
35TextBinParam::TextBinParam(const TextBinParam & x) 37TextBinParam::TextBinParam(const TextBinParam & x)
36 :Param(x) 38 :Param(x)
37{ 39{
38} 40}
39 41
40TextBinParam::TextBinParam(const QCString & s) 42TextBinParam::TextBinParam(const Q3CString & s)
41 :Param(s) 43 :Param(s)
42{ 44{
43} 45}
44 46
45 TextBinParam & 47 TextBinParam &
46TextBinParam::operator = (TextBinParam & x) 48TextBinParam::operator = (TextBinParam & x)
47{ 49{
48 if (*this == x) return *this; 50 if (*this == x) return *this;
49 51
50 Param::operator = (x); 52 Param::operator = (x);
51 return *this; 53 return *this;
52} 54}
53 55
54 TextBinParam & 56 TextBinParam &
55TextBinParam::operator = (const QCString & s) 57TextBinParam::operator = (const Q3CString & s)
56{ 58{
57 Param::operator = (s); 59 Param::operator = (s);
58 return *this; 60 return *this;
59} 61}
60 62
61 bool 63 bool
62TextBinParam::operator == (TextBinParam & x) 64TextBinParam::operator == (TextBinParam & x)
63{ 65{
64 x.parse(); 66 x.parse();
65 return false; 67 return false;
66} 68}
67 69
68TextBinParam::~TextBinParam() 70TextBinParam::~TextBinParam()
69{ 71{
70} 72}
71 73
72 void 74 void
73TextBinParam::_parse() 75TextBinParam::_parse()
74{ 76{
75} 77}
76 78
77 void 79 void
78TextBinParam::_assemble() 80TextBinParam::_assemble()
79{ 81{
80} 82}
81 83
diff --git a/kabc/vcard/TextBinValue.cpp b/kabc/vcard/TextBinValue.cpp
index c584009..a3a96ae 100644
--- a/kabc/vcard/TextBinValue.cpp
+++ b/kabc/vcard/TextBinValue.cpp
@@ -1,104 +1,106 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <kmdcodec.h> 24#include <kmdcodec.h>
25 25
26#include <VCardTextBinValue.h> 26#include <VCardTextBinValue.h>
27#include <VCardValue.h> 27#include <VCardValue.h>
28//Added by qt3to4:
29#include <Q3CString>
28 30
29using namespace VCARD; 31using namespace VCARD;
30 32
31TextBinValue::TextBinValue() 33TextBinValue::TextBinValue()
32 :Value() 34 :Value()
33{ 35{
34} 36}
35 37
36TextBinValue::TextBinValue(const TextBinValue & x) 38TextBinValue::TextBinValue(const TextBinValue & x)
37 :Value(x) 39 :Value(x)
38{ 40{
39 mIsBinary_ = x.mIsBinary_; 41 mIsBinary_ = x.mIsBinary_;
40 mData_ = x.mData_; 42 mData_ = x.mData_;
41 mUrl_ = x.mUrl_; 43 mUrl_ = x.mUrl_;
42} 44}
43 45
44TextBinValue::TextBinValue(const QCString & s) 46TextBinValue::TextBinValue(const Q3CString & s)
45 :Value(s) 47 :Value(s)
46{ 48{
47} 49}
48 50
49 TextBinValue & 51 TextBinValue &
50TextBinValue::operator = (TextBinValue & x) 52TextBinValue::operator = (TextBinValue & x)
51{ 53{
52 if (*this == x) return *this; 54 if (*this == x) return *this;
53 55
54 mIsBinary_ = x.mIsBinary_; 56 mIsBinary_ = x.mIsBinary_;
55 mData_ = x.mData_; 57 mData_ = x.mData_;
56 mUrl_ = x.mUrl_; 58 mUrl_ = x.mUrl_;
57 59
58 Value::operator = (x); 60 Value::operator = (x);
59 return *this; 61 return *this;
60} 62}
61 63
62 TextBinValue & 64 TextBinValue &
63TextBinValue::operator = (const QCString & s) 65TextBinValue::operator = (const Q3CString & s)
64{ 66{
65 Value::operator = (s); 67 Value::operator = (s);
66 return *this; 68 return *this;
67} 69}
68 70
69 bool 71 bool
70TextBinValue::operator == (TextBinValue & x) 72TextBinValue::operator == (TextBinValue & x)
71{ 73{
72 x.parse(); 74 x.parse();
73 75
74 if ( mIsBinary_ != x.mIsBinary_ ) return false; 76 if ( mIsBinary_ != x.mIsBinary_ ) return false;
75 if ( mData_ != x.mData_ ) return false; 77 if ( mData_ != x.mData_ ) return false;
76 if ( mUrl_ != x.mUrl_ ) return false; 78 if ( mUrl_ != x.mUrl_ ) return false;
77 79
78 return true; 80 return true;
79} 81}
80 82
81TextBinValue::~TextBinValue() 83TextBinValue::~TextBinValue()
82{ 84{
83} 85}
84 86
85 TextBinValue * 87 TextBinValue *
86TextBinValue::clone() 88TextBinValue::clone()
87{ 89{
88 return new TextBinValue( *this ); 90 return new TextBinValue( *this );
89} 91}
90 92
91 void 93 void
92TextBinValue::_parse() 94TextBinValue::_parse()
93{ 95{
94} 96}
95 97
96 void 98 void
97TextBinValue::_assemble() 99TextBinValue::_assemble()
98{ 100{
99 if ( mIsBinary_ ) { 101 if ( mIsBinary_ ) {
100 strRep_ = KCodecs::base64Encode( mData_ ); 102 strRep_ = KCodecs::base64Encode( mData_ );
101 } else 103 } else
102 strRep_ = mUrl_.utf8(); 104 strRep_ = mUrl_.utf8();
103} 105}
104 106
diff --git a/kabc/vcard/TextListValue.cpp b/kabc/vcard/TextListValue.cpp
index c4ac1e3..919f4f7 100644
--- a/kabc/vcard/TextListValue.cpp
+++ b/kabc/vcard/TextListValue.cpp
@@ -1,107 +1,109 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardRToken.h> 24#include <VCardRToken.h>
25 25
26#include <VCardTextListValue.h> 26#include <VCardTextListValue.h>
27 27
28#include <VCardValue.h> 28#include <VCardValue.h>
29//Added by qt3to4:
30#include <Q3CString>
29 31
30using namespace VCARD; 32using namespace VCARD;
31 33
32TextListValue::TextListValue() 34TextListValue::TextListValue()
33 :Value() 35 :Value()
34{ 36{
35} 37}
36 38
37TextListValue::TextListValue(const TextListValue & x) 39TextListValue::TextListValue(const TextListValue & x)
38 :Value(x) 40 :Value(x)
39{ 41{
40} 42}
41 43
42TextListValue::TextListValue(const QCString & s) 44TextListValue::TextListValue(const Q3CString & s)
43 :Value(s) 45 :Value(s)
44{ 46{
45} 47}
46 48
47 TextListValue & 49 TextListValue &
48TextListValue::operator = (TextListValue & x) 50TextListValue::operator = (TextListValue & x)
49{ 51{
50 if (*this == x) return *this; 52 if (*this == x) return *this;
51 53
52 Value::operator = (x); 54 Value::operator = (x);
53 return *this; 55 return *this;
54} 56}
55 57
56 TextListValue & 58 TextListValue &
57TextListValue::operator = (const QCString & s) 59TextListValue::operator = (const Q3CString & s)
58{ 60{
59 Value::operator = (s); 61 Value::operator = (s);
60 return *this; 62 return *this;
61} 63}
62 64
63 bool 65 bool
64TextListValue::operator == (TextListValue & x) 66TextListValue::operator == (TextListValue & x)
65{ 67{
66 x.parse(); 68 x.parse();
67 return false; 69 return false;
68} 70}
69 71
70TextListValue::~TextListValue() 72TextListValue::~TextListValue()
71{ 73{
72} 74}
73 75
74 void 76 void
75TextListValue::_parse() 77TextListValue::_parse()
76{ 78{
77 RTokenise(strRep_, ";", valueList_); 79 RTokenise(strRep_, ";", valueList_);
78} 80}
79 81
80 void 82 void
81TextListValue::_assemble() 83TextListValue::_assemble()
82{ 84{
83 bool first(true); 85 bool first(true);
84 86
85 QStrListIterator it(valueList_); 87 Q3StrListIterator it(valueList_);
86 88
87 for (; it.current(); ++it) { 89 for (; it.current(); ++it) {
88 if (!first) strRep_ += ';'; 90 if (!first) strRep_ += ';';
89 strRep_ += it.current(); 91 strRep_ += it.current();
90 first = false; 92 first = false;
91 } 93 }
92} 94}
93 95
94 unsigned int 96 unsigned int
95TextListValue::numValues() 97TextListValue::numValues()
96{ 98{
97 parse(); 99 parse();
98 return valueList_.count(); 100 return valueList_.count();
99} 101}
100 102
101 QCString 103 Q3CString
102TextListValue::value(unsigned int i) 104TextListValue::value(unsigned int i)
103{ 105{
104 parse(); 106 parse();
105 return valueList_.at(i); 107 return valueList_.at(i);
106} 108}
107 109
diff --git a/kabc/vcard/TextParam.cpp b/kabc/vcard/TextParam.cpp
index 7c68700..ce6661f 100644
--- a/kabc/vcard/TextParam.cpp
+++ b/kabc/vcard/TextParam.cpp
@@ -1,82 +1,84 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardTextParam.h> 24#include <VCardTextParam.h>
25 25
26#include <VCardParam.h> 26#include <VCardParam.h>
27//Added by qt3to4:
28#include <Q3CString>
27 29
28using namespace VCARD; 30using namespace VCARD;
29 31
30TextParam::TextParam() 32TextParam::TextParam()
31 :Param() 33 :Param()
32{ 34{
33} 35}
34 36
35TextParam::TextParam(const TextParam & x) 37TextParam::TextParam(const TextParam & x)
36 :Param(x) 38 :Param(x)
37{ 39{
38} 40}
39 41
40TextParam::TextParam(const QCString & s) 42TextParam::TextParam(const Q3CString & s)
41 :Param(s) 43 :Param(s)
42{ 44{
43} 45}
44 46
45 TextParam & 47 TextParam &
46TextParam::operator = (TextParam & x) 48TextParam::operator = (TextParam & x)
47{ 49{
48 if (*this == x) return *this; 50 if (*this == x) return *this;
49 51
50 Param::operator = (x); 52 Param::operator = (x);
51 return *this; 53 return *this;
52} 54}
53 55
54 TextParam & 56 TextParam &
55TextParam::operator = (const QCString & s) 57TextParam::operator = (const Q3CString & s)
56{ 58{
57 Param::operator = (s); 59 Param::operator = (s);
58 return *this; 60 return *this;
59} 61}
60 62
61 bool 63 bool
62TextParam::operator == (TextParam & x) 64TextParam::operator == (TextParam & x)
63{ 65{
64 x.parse(); 66 x.parse();
65 67
66 return false; 68 return false;
67} 69}
68 70
69TextParam::~TextParam() 71TextParam::~TextParam()
70{ 72{
71} 73}
72 74
73 void 75 void
74TextParam::_parse() 76TextParam::_parse()
75{ 77{
76} 78}
77 79
78 void 80 void
79TextParam::_assemble() 81TextParam::_assemble()
80{ 82{
81} 83}
82 84
diff --git a/kabc/vcard/TextValue.cpp b/kabc/vcard/TextValue.cpp
index 09934fa..d0d2996 100644
--- a/kabc/vcard/TextValue.cpp
+++ b/kabc/vcard/TextValue.cpp
@@ -1,86 +1,88 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardTextValue.h> 24#include <VCardTextValue.h>
25 25
26#include <VCardValue.h> 26#include <VCardValue.h>
27//Added by qt3to4:
28#include <Q3CString>
27 29
28using namespace VCARD; 30using namespace VCARD;
29 31
30TextValue::TextValue() 32TextValue::TextValue()
31 :Value() 33 :Value()
32{ 34{
33} 35}
34 36
35TextValue::TextValue(const TextValue & x) 37TextValue::TextValue(const TextValue & x)
36 :Value(x) 38 :Value(x)
37{ 39{
38} 40}
39 41
40TextValue::TextValue(const QCString & s) 42TextValue::TextValue(const Q3CString & s)
41 :Value(s) 43 :Value(s)
42{ 44{
43} 45}
44 46
45 TextValue & 47 TextValue &
46TextValue::operator = (TextValue & x) 48TextValue::operator = (TextValue & x)
47{ 49{
48 if (*this == x) return *this; 50 if (*this == x) return *this;
49 51
50 Value::operator = (x); 52 Value::operator = (x);
51 return *this; 53 return *this;
52} 54}
53 55
54 TextValue & 56 TextValue &
55TextValue::operator = (const QCString & s) 57TextValue::operator = (const Q3CString & s)
56{ 58{
57 Value::operator = (s); 59 Value::operator = (s);
58 return *this; 60 return *this;
59} 61}
60 62
61 bool 63 bool
62TextValue::operator == (TextValue & x) 64TextValue::operator == (TextValue & x)
63{ 65{
64 return strRep_ = x.strRep_; 66 return strRep_ == x.strRep_;
65} 67}
66 68
67TextValue::~TextValue() 69TextValue::~TextValue()
68{ 70{
69} 71}
70 72
71 TextValue * 73 TextValue *
72TextValue::clone() 74TextValue::clone()
73{ 75{
74 return new TextValue( *this ); 76 return new TextValue( *this );
75} 77}
76 78
77 void 79 void
78TextValue::_parse() 80TextValue::_parse()
79{ 81{
80} 82}
81 83
82 void 84 void
83TextValue::_assemble() 85TextValue::_assemble()
84{ 86{
85} 87}
86 88
diff --git a/kabc/vcard/URIValue.cpp b/kabc/vcard/URIValue.cpp
index c1d1022..26da7f4 100644
--- a/kabc/vcard/URIValue.cpp
+++ b/kabc/vcard/URIValue.cpp
@@ -1,133 +1,135 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardURIValue.h> 24#include <VCardURIValue.h>
25 25
26#include <VCardValue.h> 26#include <VCardValue.h>
27//Added by qt3to4:
28#include <Q3CString>
27 29
28using namespace VCARD; 30using namespace VCARD;
29 31
30URIValue::URIValue() 32URIValue::URIValue()
31 :Value() 33 :Value()
32{ 34{
33} 35}
34 36
35URIValue::URIValue(const QCString & scheme, const QCString & schemeSpecificPart) 37URIValue::URIValue(const Q3CString & scheme, const Q3CString & schemeSpecificPart)
36 :Value(), 38 :Value(),
37 scheme_ (scheme), 39 scheme_ (scheme),
38 schemeSpecificPart_(schemeSpecificPart) 40 schemeSpecificPart_(schemeSpecificPart)
39{ 41{
40 parsed_ = true; 42 parsed_ = true;
41} 43}
42 44
43URIValue::URIValue(const URIValue & x) 45URIValue::URIValue(const URIValue & x)
44 : Value (x), 46 : Value (x),
45 scheme_ (x.scheme_), 47 scheme_ (x.scheme_),
46 schemeSpecificPart_(x.schemeSpecificPart_) 48 schemeSpecificPart_(x.schemeSpecificPart_)
47{ 49{
48} 50}
49 51
50URIValue::URIValue(const QCString & s) 52URIValue::URIValue(const Q3CString & s)
51 :Value(s) 53 :Value(s)
52{ 54{
53} 55}
54 56
55 URIValue & 57 URIValue &
56URIValue::operator = (URIValue & x) 58URIValue::operator = (URIValue & x)
57{ 59{
58 if (*this == x) return *this; 60 if (*this == x) return *this;
59 61
60 scheme_ = x.scheme_; 62 scheme_ = x.scheme_;
61 schemeSpecificPart_= x.schemeSpecificPart_; 63 schemeSpecificPart_= x.schemeSpecificPart_;
62 64
63 Value::operator = (x); 65 Value::operator = (x);
64 return *this; 66 return *this;
65} 67}
66 68
67 URIValue & 69 URIValue &
68URIValue::operator = (const QCString & s) 70URIValue::operator = (const Q3CString & s)
69{ 71{
70 Value::operator = (s); 72 Value::operator = (s);
71 return *this; 73 return *this;
72} 74}
73 75
74 bool 76 bool
75URIValue::operator == (URIValue & x) 77URIValue::operator == (URIValue & x)
76{ 78{
77 x.parse(); 79 x.parse();
78 return ( 80 return (
79 (scheme_ == x.scheme_) && 81 (scheme_ == x.scheme_) &&
80 (schemeSpecificPart_== x.schemeSpecificPart_)); 82 (schemeSpecificPart_== x.schemeSpecificPart_));
81 83
82 return false; 84 return false;
83} 85}
84 86
85URIValue::~URIValue() 87URIValue::~URIValue()
86{ 88{
87} 89}
88 90
89 void 91 void
90URIValue::_parse() 92URIValue::_parse()
91{ 93{
92 int split = strRep_.find(':'); 94 int split = strRep_.find(':');
93 if (split == -1) 95 if (split == -1)
94 return; 96 return;
95 97
96 scheme_ = strRep_.left(split); 98 scheme_ = strRep_.left(split);
97 schemeSpecificPart_ = strRep_.mid(split + 1); 99 schemeSpecificPart_ = strRep_.mid(split + 1);
98} 100}
99 101
100 void 102 void
101URIValue::_assemble() 103URIValue::_assemble()
102{ 104{
103 strRep_ = scheme_ + ':' + schemeSpecificPart_; 105 strRep_ = scheme_ + ':' + schemeSpecificPart_;
104} 106}
105 107
106 QCString 108 Q3CString
107URIValue::scheme() 109URIValue::scheme()
108{ 110{
109 parse(); 111 parse();
110 return scheme_; 112 return scheme_;
111} 113}
112 114
113 QCString 115 Q3CString
114URIValue::schemeSpecificPart() 116URIValue::schemeSpecificPart()
115{ 117{
116 parse(); 118 parse();
117 return schemeSpecificPart_; 119 return schemeSpecificPart_;
118} 120}
119 121
120 void 122 void
121URIValue::setScheme(const QCString & s) 123URIValue::setScheme(const Q3CString & s)
122{ 124{
123 parse(); 125 parse();
124 scheme_ = s; 126 scheme_ = s;
125} 127}
126 128
127 void 129 void
128URIValue::setSchemeSpecificPart(const QCString & s) 130URIValue::setSchemeSpecificPart(const Q3CString & s)
129{ 131{
130 parse(); 132 parse();
131 schemeSpecificPart_ = s; 133 schemeSpecificPart_ = s;
132} 134}
133 135
diff --git a/kabc/vcard/UTCValue.cpp b/kabc/vcard/UTCValue.cpp
index 374306c..f35d986 100644
--- a/kabc/vcard/UTCValue.cpp
+++ b/kabc/vcard/UTCValue.cpp
@@ -1,110 +1,112 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardUTCValue.h> 24#include <VCardUTCValue.h>
25 25
26#include <VCardValue.h> 26#include <VCardValue.h>
27//Added by qt3to4:
28#include <Q3CString>
27 29
28using namespace VCARD; 30using namespace VCARD;
29 31
30UTCValue::UTCValue() 32UTCValue::UTCValue()
31 :Value() 33 :Value()
32{ 34{
33} 35}
34 36
35UTCValue::UTCValue(const UTCValue & x) 37UTCValue::UTCValue(const UTCValue & x)
36 : Value(x),positive_(x.positive_), hour_(x.hour_), minute_(x.minute_) 38 : Value(x),positive_(x.positive_), hour_(x.hour_), minute_(x.minute_)
37 39
38{ 40{
39} 41}
40 42
41UTCValue::UTCValue(const QCString & s) 43UTCValue::UTCValue(const Q3CString & s)
42 :Value(s) 44 :Value(s)
43{ 45{
44} 46}
45 47
46 UTCValue & 48 UTCValue &
47UTCValue::operator = (UTCValue & x) 49UTCValue::operator = (UTCValue & x)
48{ 50{
49 if (*this == x) return *this; 51 if (*this == x) return *this;
50 52
51 positive_ = x.positive_; 53 positive_ = x.positive_;
52 hour_ = x.hour_; 54 hour_ = x.hour_;
53 minute_ = x.minute_; 55 minute_ = x.minute_;
54 56
55 Value::operator = (x); 57 Value::operator = (x);
56 return *this; 58 return *this;
57} 59}
58 60
59 UTCValue & 61 UTCValue &
60UTCValue::operator = (const QCString & s) 62UTCValue::operator = (const Q3CString & s)
61{ 63{
62 Value::operator = (s); 64 Value::operator = (s);
63 return *this; 65 return *this;
64} 66}
65 67
66 bool 68 bool
67UTCValue::operator == (UTCValue & x) 69UTCValue::operator == (UTCValue & x)
68{ 70{
69 x.parse(); 71 x.parse();
70 72
71 if (positive_ != x.positive_) return false; 73 if (positive_ != x.positive_) return false;
72 if (hour_ != x.hour_) return false; 74 if (hour_ != x.hour_) return false;
73 if (minute_ != x.minute_) return false; 75 if (minute_ != x.minute_) return false;
74 76
75 return true; 77 return true;
76} 78}
77 79
78UTCValue::~UTCValue() 80UTCValue::~UTCValue()
79{ 81{
80} 82}
81 83
82 UTCValue * 84 UTCValue *
83UTCValue::clone() 85UTCValue::clone()
84{ 86{
85 return new UTCValue( *this ); 87 return new UTCValue( *this );
86} 88}
87 89
88 void 90 void
89UTCValue::_parse() 91UTCValue::_parse()
90{ 92{
91 if ( strRep_.isEmpty() ) 93 if ( strRep_.isEmpty() )
92 return; 94 return;
93 95
94 positive_ = ( strRep_[0] == '+' ); 96 positive_ = ( strRep_[0] == '+' );
95 97
96 int colon = strRep_.find( ':' ); 98 int colon = strRep_.find( ':' );
97 99
98 if ( colon == -1 ) // Not valid. 100 if ( colon == -1 ) // Not valid.
99 return; 101 return;
100 102
101 hour_= strRep_.mid( 1, 2 ).toInt(); 103 hour_= strRep_.mid( 1, 2 ).toInt();
102 minute_= strRep_.right( 2 ).toInt(); 104 minute_= strRep_.right( 2 ).toInt();
103} 105}
104 106
105 void 107 void
106UTCValue::_assemble() 108UTCValue::_assemble()
107{ 109{
108 strRep_.sprintf( "%c%.2i:%.2i", (positive_ ? '+' : '-'), hour_, minute_ ); 110 strRep_.sprintf( "%c%.2i:%.2i", (positive_ ? '+' : '-'), hour_, minute_ );
109} 111}
110 112
diff --git a/kabc/vcard/VCardEntity.cpp b/kabc/vcard/VCardEntity.cpp
index a2ff327..bae5385 100644
--- a/kabc/vcard/VCardEntity.cpp
+++ b/kabc/vcard/VCardEntity.cpp
@@ -1,175 +1,177 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <qregexp.h> 24#include <qregexp.h>
25#include <qdatetime.h> 25#include <qdatetime.h>
26//Added by qt3to4:
27#include <Q3CString>
26 28
27#include <VCardDefines.h> 29#include <VCardDefines.h>
28#include <VCardVCardEntity.h> 30#include <VCardVCardEntity.h>
29 31
30using namespace VCARD; 32using namespace VCARD;
31 33
32VCardEntity::VCardEntity() 34VCardEntity::VCardEntity()
33 :Entity() 35 :Entity()
34{ 36{
35 cardList_.setAutoDelete( TRUE ); 37 cardList_.setAutoDelete( TRUE );
36} 38}
37 39
38VCardEntity::VCardEntity(const VCardEntity & x) 40VCardEntity::VCardEntity(const VCardEntity & x)
39 :Entity(x) 41 :Entity(x)
40{ 42{
41 cardList_.setAutoDelete( TRUE ); 43 cardList_.setAutoDelete( TRUE );
42} 44}
43 45
44VCardEntity::VCardEntity(const QCString & s) 46VCardEntity::VCardEntity(const Q3CString & s)
45 :Entity(s) 47 :Entity(s)
46{ 48{
47 cardList_.setAutoDelete( TRUE ); 49 cardList_.setAutoDelete( TRUE );
48} 50}
49 51
50 VCardEntity & 52 VCardEntity &
51VCardEntity::operator = (VCardEntity & x) 53VCardEntity::operator = (VCardEntity & x)
52{ 54{
53 if (*this == x) return *this; 55 if (*this == x) return *this;
54 56
55 Entity::operator = (x); 57 Entity::operator = (x);
56 return *this; 58 return *this;
57} 59}
58 60
59 VCardEntity & 61 VCardEntity &
60VCardEntity::operator = (const QCString & s) 62VCardEntity::operator = (const Q3CString & s)
61{ 63{
62 Entity::operator = (s); 64 Entity::operator = (s);
63 return *this; 65 return *this;
64} 66}
65 67
66 bool 68 bool
67VCardEntity::operator == (VCardEntity & x) 69VCardEntity::operator == (VCardEntity & x)
68{ 70{
69 x.parse(); 71 x.parse();
70 return false; 72 return false;
71} 73}
72 74
73VCardEntity::~VCardEntity() 75VCardEntity::~VCardEntity()
74{ 76{
75} 77}
76 78
77 void 79 void
78VCardEntity::_parse() 80VCardEntity::_parse()
79{ 81{
80#if 0 82#if 0
81 QTime tim; 83 QTime tim;
82 tim.start(); 84 tim.start();
83 int num = 0; 85 int num = 0;
84 // old code 86 // old code
85 vDebug("parse"); 87 vDebug("parse");
86 QCString s(strRep_); 88 Q3CString s(strRep_);
87 89
88 int i = s.find(QRegExp("BEGIN:VCARD", false)); 90 int i = s.find(QRegExp("BEGIN:VCARD", false));
89 91
90 while (i != -1) { 92 while (i != -1) {
91 93
92 i = s.find(QRegExp("BEGIN:VCARD", false), 11); 94 i = s.find(QRegExp("BEGIN:VCARD", false), 11);
93 95
94 QCString cardStr(s.left(i)); 96 Q3CString cardStr(s.left(i));
95 97
96 VCard * v = new VCard(cardStr); 98 VCard * v = new VCard(cardStr);
97 99
98 cardList_.append(v); 100 cardList_.append(v);
99 101
100 v->parse(); 102 v->parse();
101 103
102 s.remove(0, i); 104 s.remove(0, i);
103 } 105 }
104 106
105#else 107#else
106 // this code is up to 17 (!) times faster 108 // this code is up to 17 (!) times faster
107 int start = 0; 109 int start = 0;
108 QTime tim; 110 QTime tim;
109 tim.start(); 111 tim.start();
110 int i = 11; 112 int i = 11;
111 int len = strRep_.length(); 113 int len = strRep_.length();
112 int num = 0; 114 int num = 0;
113 while (i < len ) { 115 while (i < len ) {
114 while( i < len ) { 116 while( i < len ) {
115 int add = 1; 117 int add = 1;
116 if ( strRep_.at(i) == 'B' ) { 118 if ( strRep_.at(i) == 'B' ) {
117 if ( i+add < len && strRep_.at(i+add++) == 'E') 119 if ( i+add < len && strRep_.at(i+add++) == 'E')
118 if ( i+add < len && strRep_.at(i+add++) == 'G') 120 if ( i+add < len && strRep_.at(i+add++) == 'G')
119 if ( i+add < len && strRep_.at(i+add++) == 'I') 121 if ( i+add < len && strRep_.at(i+add++) == 'I')
120 if ( i+add < len && strRep_.at(i+add++) == 'N') 122 if ( i+add < len && strRep_.at(i+add++) == 'N')
121 if ( i+add < len && strRep_.at(i+add++) == ':') 123 if ( i+add < len && strRep_.at(i+add++) == ':')
122 if ( i+add < len && strRep_.at(i+add++) == 'V') 124 if ( i+add < len && strRep_.at(i+add++) == 'V')
123 if ( i+add < len && strRep_.at(i+add++) == 'C') 125 if ( i+add < len && strRep_.at(i+add++) == 'C')
124 if ( i+add < len && strRep_.at(i+add++) == 'A') 126 if ( i+add < len && strRep_.at(i+add++) == 'A')
125 if ( i+add < len && strRep_.at(i+add++) == 'R') 127 if ( i+add < len && strRep_.at(i+add++) == 'R')
126 if ( i+add < len && strRep_.at(i+add++) == 'D') 128 if ( i+add < len && strRep_.at(i+add++) == 'D')
127 if ( i+add < len && (strRep_.at(i+add) == '\r' || strRep_.at(i+add) == '\n' )) 129 if ( i+add < len && (strRep_.at(i+add) == '\r' || strRep_.at(i+add) == '\n' ))
128 break; 130 break;
129 } 131 }
130 ++i; 132 ++i;
131 } 133 }
132 if ( i <= len ) { 134 if ( i <= len ) {
133 ++num; 135 ++num;
134 char* dat = strRep_.data()+start; 136 char* dat = strRep_.data()+start;
135 VCard * v = new VCard( QCString ( dat,i-start ) ); 137 VCard * v = new VCard( Q3CString ( dat,i-start ) );
136 start = i; 138 start = i;
137 cardList_.append(v); 139 cardList_.append(v);
138 v->parse(); 140 v->parse();
139 } 141 }
140 i+= 11; 142 i+= 11;
141 } 143 }
142#endif 144#endif
143 //qDebug("***time %d found %d", tim.elapsed(), num); 145 //qDebug("***time %d found %d", tim.elapsed(), num);
144} 146}
145 147
146 void 148 void
147VCardEntity::_assemble() 149VCardEntity::_assemble()
148{ 150{
149 VCardListIterator it(cardList_); 151 VCardListIterator it(cardList_);
150 152
151 for (; it.current(); ++it) 153 for (; it.current(); ++it)
152 strRep_ += it.current()->asString() + "\r\n"; // One CRLF for luck. 154 strRep_ += it.current()->asString() + "\r\n"; // One CRLF for luck.
153} 155}
154 156
155 VCardList & 157 VCardList &
156VCardEntity::cardList() 158VCardEntity::cardList()
157{ 159{
158 parse(); 160 parse();
159 return cardList_; 161 return cardList_;
160} 162}
161 163
162 void 164 void
163VCardEntity::setCardList(const VCardList & l) 165VCardEntity::setCardList(const VCardList & l)
164{ 166{
165 parse(); 167 parse();
166 //UScardList_ = l; 168 //UScardList_ = l;
167 VCardListIterator it(l); 169 VCardListIterator it(l);
168 170
169 for (; it.current(); ++it) { 171 for (; it.current(); ++it) {
170 VCard* v = new VCard(*it.current()); 172 VCard* v = new VCard(*it.current());
171 cardList_.append(v); 173 cardList_.append(v);
172 } 174 }
173 175
174} 176}
175 177
diff --git a/kabc/vcard/VCardv.cpp b/kabc/vcard/VCardv.cpp
index bad2ef1..5dd675d 100644
--- a/kabc/vcard/VCardv.cpp
+++ b/kabc/vcard/VCardv.cpp
@@ -1,294 +1,295 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <qcstring.h> 24#include <q3cstring.h>
25#include <qstrlist.h> 25#include <q3strlist.h>
26#include <qstringlist.h> 26#include <qstringlist.h>
27#include <qstring.h> 27#include <qstring.h>
28#include <qvaluelist.h> 28#include <q3valuelist.h>
29 29
30#include <VCardEntity.h> 30#include <VCardEntity.h>
31#include <VCardVCard.h> 31#include <VCardVCard.h>
32#include <VCardContentLine.h> 32#include <VCardContentLine.h>
33#include <VCardRToken.h> 33#include <VCardRToken.h>
34 34
35#include <VCardDefines.h> 35#include <VCardDefines.h>
36 36
37using namespace VCARD; 37using namespace VCARD;
38 38
39VCard::VCard() 39VCard::VCard()
40 :Entity() 40 :Entity()
41{ 41{
42 contentLineList_.setAutoDelete( TRUE ); 42 contentLineList_.setAutoDelete( TRUE );
43} 43}
44 44
45VCard::VCard(const VCard & x) 45VCard::VCard(const VCard & x)
46 :Entity(x), 46 :Entity(x),
47 group_(x.group_) 47 group_(x.group_)
48{ 48{
49 contentLineList_.setAutoDelete( TRUE ); 49 contentLineList_.setAutoDelete( TRUE );
50 50
51 QPtrListIterator<ContentLine> it(x.contentLineList_); 51 Q3PtrListIterator<ContentLine> it(x.contentLineList_);
52 for (; it.current(); ++it) { 52 for (; it.current(); ++it) {
53 ContentLine * c = new ContentLine(*it.current()); 53 ContentLine * c = new ContentLine(*it.current());
54 contentLineList_.append(c); 54 contentLineList_.append(c);
55 } 55 }
56 56
57} 57}
58 58
59VCard::VCard(const QCString & s) 59VCard::VCard(const Q3CString & s)
60 :Entity(s) 60 :Entity(s)
61{ 61{
62 contentLineList_.setAutoDelete( TRUE ); 62 contentLineList_.setAutoDelete( TRUE );
63} 63}
64 64
65 VCard & 65 VCard &
66VCard::operator = (VCard & x) 66VCard::operator = (VCard & x)
67{ 67{
68 if (*this == x) return *this; 68 if (*this == x) return *this;
69 69
70 group_ = x.group(); 70 group_ = x.group();
71 QPtrListIterator<ContentLine> it(x.contentLineList_); 71 Q3PtrListIterator<ContentLine> it(x.contentLineList_);
72 for (; it.current(); ++it) { 72 for (; it.current(); ++it) {
73 ContentLine * c = new ContentLine(*it.current()); 73 ContentLine * c = new ContentLine(*it.current());
74 contentLineList_.append(c); 74 contentLineList_.append(c);
75 } 75 }
76 76
77 Entity::operator = (x); 77 Entity::operator = (x);
78 return *this; 78 return *this;
79} 79}
80 80
81 VCard & 81 VCard &
82VCard::operator = (const QCString & s) 82VCard::operator = (const Q3CString & s)
83{ 83{
84 Entity::operator = (s); 84 Entity::operator = (s);
85 return *this; 85 return *this;
86} 86}
87 87
88 bool 88 bool
89VCard::operator == (VCard & x) 89VCard::operator == (VCard & x)
90{ 90{
91 x.parse(); 91 x.parse();
92 return false; 92 return false;
93} 93}
94 94
95VCard::~VCard() 95VCard::~VCard()
96{ 96{
97} 97}
98 98
99 void 99 void
100VCard::_parse() 100VCard::_parse()
101{ 101{
102 102
103 QStringList l; 103 QStringList l;
104 QStrList sl; 104 Q3StrList sl;
105 105
106 RTokenise(strRep_, "\r\n", sl); 106 RTokenise(strRep_, "\r\n", sl);
107 107
108 if (sl.count() < 3) { // Invalid VCARD ! 108 if (sl.count() < 3) { // Invalid VCARD !
109 //qDebug("invalid vcard "); 109 //qDebug("invalid vcard ");
110 return; 110 return;
111 } 111 }
112 l = QStringList::fromStrList( sl ); 112 for(Q3StrList::iterator i=sl.begin();i!=sl.end();++i)
113 l.push_back(*i);
113 // Get the first line 114 // Get the first line
114 QString beginLine = l[0].stripWhiteSpace(); 115 QString beginLine = l[0].stripWhiteSpace();
115 116
116 // Remove extra blank lines 117 // Remove extra blank lines
117 while (l.last().isEmpty()) 118 while (l.last().isEmpty())
118 l.remove(l.last()); 119 l.remove(l.last());
119 120
120 // Now we know this is the last line 121 // Now we know this is the last line
121 QString endLine = l.last(); 122 QString endLine = l.last();
122 123
123 // Trash the first and last lines as we have seen them. 124 // Trash the first and last lines as we have seen them.
124 l.remove(l.begin()); 125 l.remove(l.begin());
125 l.remove(l.last()); 126 l.remove(l.last());
126 127
127 /////////////////////////////////////////////////////////////// 128 ///////////////////////////////////////////////////////////////
128 // FIRST LINE 129 // FIRST LINE
129 130
130 int split = beginLine.find(':'); 131 int split = beginLine.find(':');
131 132
132 if (split == -1) { // invalid, no BEGIN 133 if (split == -1) { // invalid, no BEGIN
133 vDebug("No split"); 134 vDebug("No split");
134 return; 135 return;
135 } 136 }
136 137
137 QString firstPart(beginLine.left(split)); 138 QString firstPart(beginLine.left(split));
138 QString valuePart(beginLine.mid(split + 1)); 139 QString valuePart(beginLine.mid(split + 1));
139 140
140 split = firstPart.find('.'); 141 split = firstPart.find('.');
141 142
142 if (split != -1) { 143 if (split != -1) {
143 group_ = firstPart.left(split); 144 group_ = firstPart.left(split);
144 firstPart= firstPart.right(firstPart.length() - split - 1); 145 firstPart= firstPart.right(firstPart.length() - split - 1);
145 } 146 }
146 147
147 if (firstPart.left(5) != "BEGIN" ) { // No BEGIN ! 148 if (firstPart.left(5) != "BEGIN" ) { // No BEGIN !
148 qDebug("no BEGIN in vcard "); 149 qDebug("no BEGIN in vcard ");
149 return; 150 return;
150 } 151 }
151 152
152 if (valuePart.left(5) != "VCARD") { // Not a vcard ! 153 if (valuePart.left(5) != "VCARD") { // Not a vcard !
153 qDebug("not a VCARD "); 154 qDebug("not a VCARD ");
154 return; 155 return;
155 } 156 }
156 157
157 /////////////////////////////////////////////////////////////// 158 ///////////////////////////////////////////////////////////////
158 // CONTENT LINES 159 // CONTENT LINES
159 // 160 //
160 vDebug("Content lines"); 161 vDebug("Content lines");
161 162
162 // Handle folded lines. 163 // Handle folded lines.
163 164
164 QStringList refolded; 165 QStringList refolded;
165 166
166 167
167 QStringList::Iterator it = l.begin(); 168 QStringList::Iterator it = l.begin();
168 169
169 QString cur; 170 QString cur;
170 171
171 for (; it != l.end(); ++it) { 172 for (; it != l.end(); ++it) {
172 cur = (*it); 173 cur = (*it);
173 ++it; 174 ++it;
174 while ( it!= l.end() && (*it).at(0) == ' '&& (*it).length()!= 1) { 175 while ( it!= l.end() && (*it).at(0) == ' '&& (*it).length()!= 1) {
175 cur += (*it).mid(1) ; 176 cur += (*it).mid(1) ;
176 ++it; 177 ++it;
177 } 178 }
178 --it; 179 --it;
179 refolded.append(cur); 180 refolded.append(cur);
180 } 181 }
181 QStringList::Iterator it2 = refolded.begin(); 182 QStringList::Iterator it2 = refolded.begin();
182 for (; it2 != refolded.end(); ++it2) { 183 for (; it2 != refolded.end(); ++it2) {
183 ContentLine * cl = new ContentLine(QCString((*it2).latin1())); 184 ContentLine * cl = new ContentLine(Q3CString((*it2).latin1()));
184 cl->parse(); 185 cl->parse();
185 if (cl->value() == 0) 186 if (cl->value() == 0)
186 { 187 {
187 qDebug("Content line could not be parsed. Discarded: %s", (*it2).latin1()); 188 qDebug("Content line could not be parsed. Discarded: %s", (*it2).latin1());
188 delete cl; 189 delete cl;
189 } 190 }
190 else 191 else
191 contentLineList_.append(cl); 192 contentLineList_.append(cl);
192 } 193 }
193 194
194 /////////////////////////////////////////////////////////////// 195 ///////////////////////////////////////////////////////////////
195 // LAST LINE 196 // LAST LINE
196 197
197 198
198 // LR: sorry, but the remaining code in this method makes no sense 199 // LR: sorry, but the remaining code in this method makes no sense
199 200
200#if 0 201#if 0
201 split = endLine.find(':'); 202 split = endLine.find(':');
202 203
203 if (split == -1) // invalid, no END 204 if (split == -1) // invalid, no END
204 return; 205 return;
205 206
206 firstPart = endLine.left(split); 207 firstPart = endLine.left(split);
207 valuePart = endLine.right(firstPart.length() - split - 1); 208 valuePart = endLine.right(firstPart.length() - split - 1);
208 209
209 split = firstPart.find('.'); 210 split = firstPart.find('.');
210 211
211 if (split != -1) { 212 if (split != -1) {
212 group_ = firstPart.left(split); 213 group_ = firstPart.left(split);
213 firstPart= firstPart.right(firstPart.length() - split - 1); 214 firstPart= firstPart.right(firstPart.length() - split - 1);
214 } 215 }
215 216
216 if (qstricmp(firstPart, "END") != 0) // No END ! 217 if (qstricmp(firstPart, "END") != 0) // No END !
217 return; 218 return;
218 219
219 if (qstricmp(valuePart, "VCARD") != 0) // Not a vcard ! 220 if (qstricmp(valuePart, "VCARD") != 0) // Not a vcard !
220 return; 221 return;
221#endif 222#endif
222} 223}
223 224
224 void 225 void
225VCard::_assemble() 226VCard::_assemble()
226{ 227{
227 vDebug("Assembling vcard"); 228 vDebug("Assembling vcard");
228 strRep_ = "BEGIN:VCARD\r\n"; 229 strRep_ = "BEGIN:VCARD\r\n";
229 strRep_ += "VERSION:3.0\r\n"; 230 strRep_ += "VERSION:3.0\r\n";
230 231
231 QPtrListIterator<ContentLine> it(contentLineList_); 232 Q3PtrListIterator<ContentLine> it(contentLineList_);
232 233
233 for (; it.current(); ++it) 234 for (; it.current(); ++it)
234 strRep_ += it.current()->asString() + "\r\n"; 235 strRep_ += it.current()->asString() + "\r\n";
235 236
236 strRep_ += "END:VCARD\r\n"; 237 strRep_ += "END:VCARD\r\n";
237} 238}
238 239
239 bool 240 bool
240VCard::has(EntityType t) 241VCard::has(EntityType t)
241{ 242{
242 parse(); 243 parse();
243 return contentLine(t) == 0 ? false : true; 244 return contentLine(t) == 0 ? false : true;
244} 245}
245 246
246 bool 247 bool
247VCard::has(const QCString & s) 248VCard::has(const Q3CString & s)
248{ 249{
249 parse(); 250 parse();
250 return contentLine(s) == 0 ? false : true; 251 return contentLine(s) == 0 ? false : true;
251} 252}
252 253
253 void 254 void
254VCard::add(const ContentLine & cl) 255VCard::add(const ContentLine & cl)
255{ 256{
256 parse(); 257 parse();
257 ContentLine * c = new ContentLine(cl); 258 ContentLine * c = new ContentLine(cl);
258 contentLineList_.append(c); 259 contentLineList_.append(c);
259} 260}
260 261
261 void 262 void
262VCard::add(const QCString & s) 263VCard::add(const Q3CString & s)
263{ 264{
264 parse(); 265 parse();
265 ContentLine * c = new ContentLine(s); 266 ContentLine * c = new ContentLine(s);
266 contentLineList_.append(c); 267 contentLineList_.append(c);
267} 268}
268 269
269 ContentLine * 270 ContentLine *
270VCard::contentLine(EntityType t) 271VCard::contentLine(EntityType t)
271{ 272{
272 parse(); 273 parse();
273 QPtrListIterator<ContentLine> it(contentLineList_); 274 Q3PtrListIterator<ContentLine> it(contentLineList_);
274 275
275 for (; it.current(); ++it) 276 for (; it.current(); ++it)
276 if (it.current()->entityType() == t) 277 if (it.current()->entityType() == t)
277 return it.current(); 278 return it.current();
278 279
279 return 0; 280 return 0;
280} 281}
281 282
282 ContentLine * 283 ContentLine *
283VCard::contentLine(const QCString & s) 284VCard::contentLine(const Q3CString & s)
284{ 285{
285 parse(); 286 parse();
286 QPtrListIterator<ContentLine> it(contentLineList_); 287 Q3PtrListIterator<ContentLine> it(contentLineList_);
287 288
288 for (; it.current(); ++it) 289 for (; it.current(); ++it)
289 if (it.current()->entityType() == EntityNameToEntityType(s)) 290 if (it.current()->entityType() == EntityNameToEntityType(s))
290 return it.current(); 291 return it.current();
291 292
292 return 0; 293 return 0;
293} 294}
294 295
diff --git a/kabc/vcard/Value.cpp b/kabc/vcard/Value.cpp
index 1978af2..3a4d406 100644
--- a/kabc/vcard/Value.cpp
+++ b/kabc/vcard/Value.cpp
@@ -1,82 +1,84 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#include <VCardEntity.h> 24#include <VCardEntity.h>
25#include <VCardValue.h> 25#include <VCardValue.h>
26//Added by qt3to4:
27#include <Q3CString>
26 28
27using namespace VCARD; 29using namespace VCARD;
28 30
29Value::Value() 31Value::Value()
30 :Entity() 32 :Entity()
31{ 33{
32} 34}
33 35
34Value::Value(const Value & x) 36Value::Value(const Value & x)
35 :Entity(x) 37 :Entity(x)
36{ 38{
37} 39}
38 40
39Value::Value(const QCString & s) 41Value::Value(const Q3CString & s)
40 :Entity(s) 42 :Entity(s)
41{ 43{
42} 44}
43 45
44 Value & 46 Value &
45Value::operator = (Value & x) 47Value::operator = (Value & x)
46{ 48{
47 if (*this == x) return *this; 49 if (*this == x) return *this;
48 50
49 Entity::operator = (x); 51 Entity::operator = (x);
50 return *this; 52 return *this;
51} 53}
52 54
53 Value & 55 Value &
54Value::operator = (const QCString & s) 56Value::operator = (const Q3CString & s)
55{ 57{
56 Entity::operator = (s); 58 Entity::operator = (s);
57 return *this; 59 return *this;
58} 60}
59 61
60 bool 62 bool
61Value::operator == (Value & x) 63Value::operator == (Value & x)
62{ 64{
63 x.parse(); 65 x.parse();
64 return false; 66 return false;
65} 67}
66 68
67Value::~Value() 69Value::~Value()
68{ 70{
69} 71}
70 72
71 void 73 void
72Value::_parse() 74Value::_parse()
73{ 75{
74} 76}
75 77
76 void 78 void
77Value::_assemble() 79Value::_assemble()
78{ 80{
79 //USvDebug("Value::_assemble()"); 81 //USvDebug("Value::_assemble()");
80 qDebug("Value::_assemble()"); 82 qDebug("Value::_assemble()");
81} 83}
82 84
diff --git a/kabc/vcard/include/VCardAdrParam.h b/kabc/vcard/include/VCardAdrParam.h
index 89dcb64..6456624 100644
--- a/kabc/vcard/include/VCardAdrParam.h
+++ b/kabc/vcard/include/VCardAdrParam.h
@@ -1,64 +1,64 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef ADRPARAM_H 24#ifndef ADRPARAM_H
25#define ADRPARAM_H 25#define ADRPARAM_H
26 26
27#include <qcstring.h> 27#include <q3cstring.h>
28#include <qstrlist.h> 28#include <q3strlist.h>
29 29
30#include <VCardParam.h> 30#include <VCardParam.h>
31 31
32namespace VCARD 32namespace VCARD
33{ 33{
34 34
35class AdrParam : public Param 35class AdrParam : public Param
36{ 36{
37 37
38#include "AdrParam-generated.h" 38#include "AdrParam-generated.h"
39 39
40 QStrList adrTypeList() 40 Q3StrList adrTypeList()
41 { parse(); return adrTypeList_; } 41 { parse(); return adrTypeList_; }
42 42
43 QCString textParam() 43 Q3CString textParam()
44 { parse(); return textParam_; } 44 { parse(); return textParam_; }
45 45
46 void setAdrTypeList(const QStrList & l) 46 void setAdrTypeList(const Q3StrList & l)
47 { adrTypeList_ = l; assembled_ = false; } 47 { adrTypeList_ = l; assembled_ = false; }
48 48
49 void setTextParam(const QCString & s) 49 void setTextParam(const Q3CString & s)
50 { textParam_ = s; assembled_ = false; } 50 { textParam_ = s; assembled_ = false; }
51 51
52 enum AdrType { 52 enum AdrType {
53 AdrDom, AdrIntl, AdrPostal, AdrParcel, AdrHome, AdrWork, AdrPref, 53 AdrDom, AdrIntl, AdrPostal, AdrParcel, AdrHome, AdrWork, AdrPref,
54 AdrIANA, AdrX 54 AdrIANA, AdrX
55 }; 55 };
56 56
57 private: 57 private:
58 58
59 QStrListadrTypeList_; 59 Q3StrListadrTypeList_;
60 QCStringtextParam_; 60 Q3CStringtextParam_;
61}; 61};
62} 62}
63 63
64#endif 64#endif
diff --git a/kabc/vcard/include/VCardAdrValue.h b/kabc/vcard/include/VCardAdrValue.h
index 0731924..14ddb02 100644
--- a/kabc/vcard/include/VCardAdrValue.h
+++ b/kabc/vcard/include/VCardAdrValue.h
@@ -1,83 +1,85 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef ADRVALUE_H 24#ifndef ADRVALUE_H
25#define ADRVALUE_H 25#define ADRVALUE_H
26 26
27#include <qstrlist.h> 27#include <q3strlist.h>
28//Added by qt3to4:
29#include <Q3CString>
28#include <VCardValue.h> 30#include <VCardValue.h>
29 31
30namespace VCARD 32namespace VCARD
31{ 33{
32 34
33class AdrValue : public Value 35class AdrValue : public Value
34{ 36{
35 37
36#include "AdrValue-generated.h" 38#include "AdrValue-generated.h"
37 39
38 AdrValue *clone(); 40 AdrValue *clone();
39 41
40 void setPOBox(const QCString & s) 42 void setPOBox(const Q3CString & s)
41 { poBox_ = s; assembled_ = false; } 43 { poBox_ = s; assembled_ = false; }
42 44
43 void setExtAddress(const QCString & s) 45 void setExtAddress(const Q3CString & s)
44 { extAddress_ = s; assembled_ = false; } 46 { extAddress_ = s; assembled_ = false; }
45 47
46 void setStreet(const QCString & s) 48 void setStreet(const Q3CString & s)
47 { street_ = s; assembled_ = false; } 49 { street_ = s; assembled_ = false; }
48 50
49 void setLocality(const QCString & s) 51 void setLocality(const Q3CString & s)
50 { locality_ = s; assembled_ = false; } 52 { locality_ = s; assembled_ = false; }
51 53
52 void setRegion(const QCString & s) 54 void setRegion(const Q3CString & s)
53 { region_ = s; assembled_ = false; } 55 { region_ = s; assembled_ = false; }
54 56
55 void setPostCode(const QCString & s) 57 void setPostCode(const Q3CString & s)
56 { postCode_ = s; assembled_ = false; } 58 { postCode_ = s; assembled_ = false; }
57 59
58 void setCountryName(const QCString & s) 60 void setCountryName(const Q3CString & s)
59 { countryName_ = s; assembled_ = false; } 61 { countryName_ = s; assembled_ = false; }
60 62
61 QCString poBox() { parse(); return poBox_;} 63 Q3CString poBox() { parse(); return poBox_;}
62 QCString extAddress() { parse(); return extAddress_;} 64 Q3CString extAddress() { parse(); return extAddress_;}
63 QCString street() { parse(); return street_;} 65 Q3CString street() { parse(); return street_;}
64 QCString locality() { parse(); return locality_;} 66 Q3CString locality() { parse(); return locality_;}
65 QCString region() { parse(); return region_;} 67 Q3CString region() { parse(); return region_;}
66 QCString postCode() { parse(); return postCode_;} 68 Q3CString postCode() { parse(); return postCode_;}
67 QCString countryName() { parse(); return countryName_;} 69 Q3CString countryName() { parse(); return countryName_;}
68 70
69 private: 71 private:
70 72
71 QCString poBox_; 73 Q3CString poBox_;
72 QCString extAddress_; 74 Q3CString extAddress_;
73 QCString street_; 75 Q3CString street_;
74 QCString locality_; 76 Q3CString locality_;
75 QCString region_; 77 Q3CString region_;
76 QCString postCode_; 78 Q3CString postCode_;
77 QCString countryName_; 79 Q3CString countryName_;
78}; 80};
79 81
80} 82}
81 83
82#endif 84#endif
83 85
diff --git a/kabc/vcard/include/VCardAgentParam.h b/kabc/vcard/include/VCardAgentParam.h
index 72a05db..5733540 100644
--- a/kabc/vcard/include/VCardAgentParam.h
+++ b/kabc/vcard/include/VCardAgentParam.h
@@ -1,60 +1,60 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef AGENTPARAM_H 24#ifndef AGENTPARAM_H
25#define AGENTPARAM_H 25#define AGENTPARAM_H
26 26
27#include <qcstring.h> 27#include <q3cstring.h>
28 28
29#include <VCardParam.h> 29#include <VCardParam.h>
30#include <VCardURIValue.h> 30#include <VCardURIValue.h>
31 31
32namespace VCARD 32namespace VCARD
33{ 33{
34 34
35class AgentParam : public Param 35class AgentParam : public Param
36{ 36{
37 37
38#include "AgentParam-generated.h" 38#include "AgentParam-generated.h"
39 39
40 bool refer() 40 bool refer()
41 { parse(); return refer_; } 41 { parse(); return refer_; }
42 42
43 URIValue uri() 43 URIValue uri()
44 { parse(); return uri_; } 44 { parse(); return uri_; }
45 45
46 void setRefer(bool b) 46 void setRefer(bool b)
47 { refer_ = b; assembled_ = false; } 47 { refer_ = b; assembled_ = false; }
48 48
49 void setURI(const QCString & s) 49 void setURI(const Q3CString & s)
50 { uri_ = s; assembled_ = false; } 50 { uri_ = s; assembled_ = false; }
51 51
52 private: 52 private:
53 53
54 bool refer_; 54 bool refer_;
55 URIValueuri_; 55 URIValueuri_;
56}; 56};
57 57
58} 58}
59 59
60#endif 60#endif
diff --git a/kabc/vcard/include/VCardAgentValue.h b/kabc/vcard/include/VCardAgentValue.h
index f655836..b0d883b 100644
--- a/kabc/vcard/include/VCardAgentValue.h
+++ b/kabc/vcard/include/VCardAgentValue.h
@@ -1,44 +1,44 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef AGENTVALUE_H 24#ifndef AGENTVALUE_H
25#define AGENTVALUE_H 25#define AGENTVALUE_H
26 26
27#include <qcstring.h> 27#include <q3cstring.h>
28 28
29#include <VCardValue.h> 29#include <VCardValue.h>
30 30
31namespace VCARD 31namespace VCARD
32{ 32{
33 33
34class AgentValue : public Value 34class AgentValue : public Value
35{ 35{
36 36
37#include "AgentValue-generated.h" 37#include "AgentValue-generated.h"
38 38
39 private: 39 private:
40}; 40};
41 41
42} 42}
43 43
44#endif 44#endif
diff --git a/kabc/vcard/include/VCardClassValue.h b/kabc/vcard/include/VCardClassValue.h
index ff133c2..c450169 100644
--- a/kabc/vcard/include/VCardClassValue.h
+++ b/kabc/vcard/include/VCardClassValue.h
@@ -1,56 +1,56 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef CLASSVALUE_H 24#ifndef CLASSVALUE_H
25#define CLASSVALUE_H 25#define CLASSVALUE_H
26 26
27#include <qcstring.h> 27#include <q3cstring.h>
28 28
29#include <VCardValue.h> 29#include <VCardValue.h>
30 30
31#include <kdebug.h> 31#include <kdebug.h>
32 32
33namespace VCARD 33namespace VCARD
34{ 34{
35 35
36class ClassValue : public Value 36class ClassValue : public Value
37{ 37{
38 38
39#include "ClassValue-generated.h" 39#include "ClassValue-generated.h"
40 40
41 enum ClassType { 41 enum ClassType {
42 Public, Private, Confidential, Other 42 Public, Private, Confidential, Other
43 }; 43 };
44 44
45 ClassValue *clone(); 45 ClassValue *clone();
46 46
47 void setType( int type ) { classType_ = type; assembled_ = false; parsed_ = true; } 47 void setType( int type ) { classType_ = type; assembled_ = false; parsed_ = true; }
48 int type() { parse(); return classType_; } 48 int type() { parse(); return classType_; }
49 49
50 private: 50 private:
51 int classType_; 51 int classType_;
52}; 52};
53 53
54} 54}
55 55
56#endif 56#endif
diff --git a/kabc/vcard/include/VCardContentLine.h b/kabc/vcard/include/VCardContentLine.h
index 1c5f5be..c3c5253 100644
--- a/kabc/vcard/include/VCardContentLine.h
+++ b/kabc/vcard/include/VCardContentLine.h
@@ -1,77 +1,79 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef CONTENTLINE_H 24#ifndef CONTENTLINE_H
25#define CONTENTLINE_H 25#define CONTENTLINE_H
26 26
27#include <qptrlist.h> 27#include <q3ptrlist.h>
28//Added by qt3to4:
29#include <Q3CString>
28 30
29#include "VCardEnum.h" 31#include "VCardEnum.h"
30#include "VCardEntity.h" 32#include "VCardEntity.h"
31#include "VCardParam.h" 33#include "VCardParam.h"
32#include "VCardValue.h" 34#include "VCardValue.h"
33 35
34namespace VCARD 36namespace VCARD
35{ 37{
36 38
37class ContentLine : public Entity 39class ContentLine : public Entity
38{ 40{
39 41
40#include "ContentLine-generated.h" 42#include "ContentLine-generated.h"
41 43
42 QCString group() { parse(); return group_;} 44 Q3CString group() { parse(); return group_;}
43 QCString name() { parse(); return name_;} 45 Q3CString name() { parse(); return name_;}
44 Value * value() { parse(); return value_;} 46 Value * value() { parse(); return value_;}
45 ParamList paramList() { parse(); return paramList_;} 47 ParamList paramList() { parse(); return paramList_;}
46 ParamType paramType() { parse(); return paramType_;} 48 ParamType paramType() { parse(); return paramType_;}
47 ValueType valueType() { parse(); return valueType_;} 49 ValueType valueType() { parse(); return valueType_;}
48 EntityType entityType() { parse(); return entityType_;} 50 EntityType entityType() { parse(); return entityType_;}
49 51
50 void setGroup (const QCString & s) 52 void setGroup (const Q3CString & s)
51 { group_ = s; assembled_ = false; } 53 { group_ = s; assembled_ = false; }
52 54
53 void setName (const QCString & s) 55 void setName (const Q3CString & s)
54 { name_ = s; assembled_ = false; } 56 { name_ = s; assembled_ = false; }
55 57
56 void setValue (Value *s) 58 void setValue (Value *s)
57 { value_ = s; assembled_ = false; } 59 { value_ = s; assembled_ = false; }
58 60
59 void setParamList(const ParamList & l) 61 void setParamList(const ParamList & l)
60 { paramList_ = l; assembled_ = false; } 62 { paramList_ = l; assembled_ = false; }
61 63
62 void clear (); 64 void clear ();
63 65
64 private: 66 private:
65 67
66 QCString group_; 68 Q3CString group_;
67 QCString name_; 69 Q3CString name_;
68 QPtrList<Param> paramList_; 70 Q3PtrList<Param> paramList_;
69 Value * value_; 71 Value * value_;
70 72
71 ParamType paramType_; 73 ParamType paramType_;
72 ValueType valueType_; 74 ValueType valueType_;
73 EntityType entityType_; 75 EntityType entityType_;
74}; 76};
75} 77}
76 78
77#endif 79#endif
diff --git a/kabc/vcard/include/VCardDateParam.h b/kabc/vcard/include/VCardDateParam.h
index 21ac1f1..959b75b 100644
--- a/kabc/vcard/include/VCardDateParam.h
+++ b/kabc/vcard/include/VCardDateParam.h
@@ -1,44 +1,44 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef DATEPARAM_H 24#ifndef DATEPARAM_H
25#define DATEPARAM_H 25#define DATEPARAM_H
26 26
27#include <qcstring.h> 27#include <q3cstring.h>
28 28
29#include <VCardParam.h> 29#include <VCardParam.h>
30 30
31namespace VCARD 31namespace VCARD
32{ 32{
33 33
34class DateParam : public Param 34class DateParam : public Param
35{ 35{
36 36
37#include "DateParam-generated.h" 37#include "DateParam-generated.h"
38 38
39 private: 39 private:
40}; 40};
41 41
42} 42}
43 43
44#endif 44#endif
diff --git a/kabc/vcard/include/VCardDateValue.h b/kabc/vcard/include/VCardDateValue.h
index c248966..fc216c0 100644
--- a/kabc/vcard/include/VCardDateValue.h
+++ b/kabc/vcard/include/VCardDateValue.h
@@ -1,99 +1,99 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef DATEVALUE_H 24#ifndef DATEVALUE_H
25#define DATEVALUE_H 25#define DATEVALUE_H
26 26
27#include <qcstring.h> 27#include <q3cstring.h>
28#include <qdatetime.h> 28#include <qdatetime.h>
29 29
30#include <VCardValue.h> 30#include <VCardValue.h>
31 31
32namespace VCARD 32namespace VCARD
33{ 33{
34 34
35class DateValue : public Value 35class DateValue : public Value
36{ 36{
37#include "DateValue-generated.h" 37#include "DateValue-generated.h"
38 38
39 DateValue( 39 DateValue(
40 unsigned intyear, 40 unsigned intyear,
41 unsigned intmonth, 41 unsigned intmonth,
42 unsigned intday, 42 unsigned intday,
43 unsigned inthour = 0, 43 unsigned inthour = 0,
44 unsigned intminute = 0, 44 unsigned intminute = 0,
45 unsigned intsecond = 0, 45 unsigned intsecond = 0,
46 double secFrac = 0, 46 double secFrac = 0,
47 bool zonePositive = true, 47 bool zonePositive = true,
48 unsigned intzoneHour = 0, 48 unsigned intzoneHour = 0,
49 unsigned intzoneMinute = 0); 49 unsigned intzoneMinute = 0);
50 50
51 DateValue(const QDate &); 51 DateValue(const QDate &);
52 DateValue(const QDateTime &); 52 DateValue(const QDateTime &);
53 53
54 DateValue *clone(); 54 DateValue *clone();
55 55
56 bool hasTime(); 56 bool hasTime();
57 57
58 unsigned intyear(); 58 unsigned intyear();
59 unsigned intmonth(); 59 unsigned intmonth();
60 unsigned intday(); 60 unsigned intday();
61 unsigned inthour(); 61 unsigned inthour();
62 unsigned intminute(); 62 unsigned intminute();
63 unsigned intsecond(); 63 unsigned intsecond();
64 double secondFraction(); 64 double secondFraction();
65 bool zonePositive(); 65 bool zonePositive();
66 unsigned intzoneHour(); 66 unsigned intzoneHour();
67 unsigned intzoneMinute(); 67 unsigned intzoneMinute();
68 68
69 void setYear (unsigned int); 69 void setYear (unsigned int);
70 void setMonth (unsigned int); 70 void setMonth (unsigned int);
71 void setDay (unsigned int); 71 void setDay (unsigned int);
72 void setHour (unsigned int); 72 void setHour (unsigned int);
73 void setMinute (unsigned int); 73 void setMinute (unsigned int);
74 void setSecond (unsigned int); 74 void setSecond (unsigned int);
75 void setSecondFraction(double); 75 void setSecondFraction(double);
76 void setZonePositive(bool); 76 void setZonePositive(bool);
77 void setZoneHour (unsigned int); 77 void setZoneHour (unsigned int);
78 void setZoneMinute (unsigned int); 78 void setZoneMinute (unsigned int);
79 79
80 QDate qdate(); 80 QDate qdate();
81 QTime qtime(); 81 QTime qtime();
82 QDateTime qdt(); 82 QDateTime qdt();
83 83
84 private: 84 private:
85 85
86 unsigned intyear_, month_, day_, 86 unsigned intyear_, month_, day_,
87 hour_, minute_, second_, 87 hour_, minute_, second_,
88 zoneHour_, zoneMinute_; 88 zoneHour_, zoneMinute_;
89 89
90 double secFrac_; 90 double secFrac_;
91 91
92 bool zonePositive_; 92 bool zonePositive_;
93 93
94 bool hasTime_; 94 bool hasTime_;
95}; 95};
96 96
97} 97}
98 98
99#endif 99#endif
diff --git a/kabc/vcard/include/VCardDefines.h b/kabc/vcard/include/VCardDefines.h
index 557410f..5d4f2f4 100644
--- a/kabc/vcard/include/VCardDefines.h
+++ b/kabc/vcard/include/VCardDefines.h
@@ -1,53 +1,53 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1998 Rik Hemsley rik@kde.org 4 Copyright (C) 1998 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef VCARD_DEFINES_H 24#ifndef VCARD_DEFINES_H
25#define VCARD_DEFINES_H 25#define VCARD_DEFINES_H
26 26
27#include <kdebug.h> 27#include <kdebug.h>
28 28
29#ifdef VCARD_DEBUG 29#ifdef VCARD_DEBUG
30//US #define vDebug(a) kdDebug(5710) << a << endl; 30//US #define vDebug(a) kdDebug(5710) << a << endl;
31#define vDebug(a) qDebug(a); 31#define vDebug(a) qDebug(a);
32#else 32#else
33#define vDebug(a) 33#define vDebug(a)
34#endif 34#endif
35 35
36#if 0 36#if 0
37#ifndef NDEBUG 37#ifndef NDEBUG
38 #include <qcstring.h> 38 #include <q3cstring.h>
39 #include <iostream> 39 #include <iostream>
40 #ifdef __GNUG__ 40 #ifdef __GNUG__
41 # define vDebug(a) cerr << className() << ":" << __FUNCTION__ << " (" \ 41 # define vDebug(a) cerr << className() << ":" << __FUNCTION__ << " (" \
42 << __LINE__ << "): " << QCString((a)).data() << endl; 42 << __LINE__ << "): " << Q3CString((a)).data() << endl;
43 #else 43 #else
44 # define vDebug(a) cerr << className() << ": " \ 44 # define vDebug(a) cerr << className() << ": " \
45 << QCString((a)).data() << endl; 45 << Q3CString((a)).data() << endl;
46 #endif 46 #endif
47#else 47#else
48 #define vDebug(a) 48 #define vDebug(a)
49#endif 49#endif
50#endif 50#endif
51 51
52#endif // Included this file 52#endif // Included this file
53 53
diff --git a/kabc/vcard/include/VCardEmailParam.h b/kabc/vcard/include/VCardEmailParam.h
index 98d1b30..ff07324 100644
--- a/kabc/vcard/include/VCardEmailParam.h
+++ b/kabc/vcard/include/VCardEmailParam.h
@@ -1,56 +1,56 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef EMAILPARAM_H 24#ifndef EMAILPARAM_H
25#define EMAILPARAM_H 25#define EMAILPARAM_H
26 26
27#include <qcstring.h> 27#include <q3cstring.h>
28 28
29#include <VCardParam.h> 29#include <VCardParam.h>
30 30
31namespace VCARD 31namespace VCARD
32{ 32{
33 33
34class EmailParam : public Param 34class EmailParam : public Param
35{ 35{
36 36
37#include "EmailParam-generated.h" 37#include "EmailParam-generated.h"
38 38
39 QCString emailType() { parse(); return emailType_;} 39 Q3CString emailType() { parse(); return emailType_;}
40 bool pref() { parse(); return pref_; } 40 bool pref() { parse(); return pref_; }
41 41
42 void setEmailType(const QCString & s) 42 void setEmailType(const Q3CString & s)
43 { emailType_ = s; assembled_ = false; } 43 { emailType_ = s; assembled_ = false; }
44 44
45 void setPref(bool b) 45 void setPref(bool b)
46 { pref_ = b; assembled_ = false; } 46 { pref_ = b; assembled_ = false; }
47 47
48 private: 48 private:
49 49
50 QCStringemailType_; 50 Q3CStringemailType_;
51 bool pref_; 51 bool pref_;
52}; 52};
53 53
54} 54}
55 55
56#endif 56#endif
diff --git a/kabc/vcard/include/VCardEntity.h b/kabc/vcard/include/VCardEntity.h
index 3c945b5..1a3d20f 100644
--- a/kabc/vcard/include/VCardEntity.h
+++ b/kabc/vcard/include/VCardEntity.h
@@ -1,67 +1,67 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef ENTITY_H 24#ifndef ENTITY_H
25#define ENTITY_H 25#define ENTITY_H
26 26
27#include <qcstring.h> 27#include <q3cstring.h>
28 28
29namespace VCARD 29namespace VCARD
30{ 30{
31 31
32class Entity 32class Entity
33{ 33{
34 public: 34 public:
35 35
36 Entity(); 36 Entity();
37 Entity(const Entity & e); 37 Entity(const Entity & e);
38 Entity(const QCString & s); 38 Entity(const Q3CString & s);
39 39
40 virtual Entity & operator = (const Entity & e); 40 virtual Entity & operator = (const Entity & e);
41 virtual Entity & operator = (const QCString & s); 41 virtual Entity & operator = (const Q3CString & s);
42 42
43 virtual bool operator == (Entity & e); 43 virtual bool operator == (Entity & e);
44 virtual bool operator != (Entity & e); 44 virtual bool operator != (Entity & e);
45 virtual bool operator == (const QCString & s); 45 virtual bool operator == (const Q3CString & s);
46 virtual bool operator != (const QCString & s); 46 virtual bool operator != (const Q3CString & s);
47 47
48 virtual ~Entity(); 48 virtual ~Entity();
49 49
50 QCString asString(); 50 Q3CString asString();
51 51
52 virtual void parse(); 52 virtual void parse();
53 virtual void assemble(); 53 virtual void assemble();
54 54
55 virtual void _parse() = 0; 55 virtual void _parse() = 0;
56 virtual void _assemble() = 0; 56 virtual void _assemble() = 0;
57 57
58 protected: 58 protected:
59 59
60 QCString strRep_; 60 Q3CString strRep_;
61 bool parsed_; 61 bool parsed_;
62 bool assembled_; 62 bool assembled_;
63}; 63};
64 64
65} 65}
66 66
67#endif 67#endif
diff --git a/kabc/vcard/include/VCardEnum.h b/kabc/vcard/include/VCardEnum.h
index b4e4094..0c35e5e 100644
--- a/kabc/vcard/include/VCardEnum.h
+++ b/kabc/vcard/include/VCardEnum.h
@@ -1,120 +1,120 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef ENUM_H 24#ifndef ENUM_H
25#define ENUM_H 25#define ENUM_H
26 26
27#include <qcstring.h> 27#include <q3cstring.h>
28 28
29namespace VCARD 29namespace VCARD
30{ 30{
31 31
32extern const QCString paramNames []; 32extern const Q3CString paramNames [];
33 33
34enum EntityType { 34enum EntityType {
35 EntityName, 35 EntityName,
36 EntityProfile, 36 EntityProfile,
37 EntitySource, 37 EntitySource,
38 EntityFullName, 38 EntityFullName,
39 EntityN, 39 EntityN,
40 EntityNickname, 40 EntityNickname,
41 EntityPhoto, 41 EntityPhoto,
42 EntityBirthday, 42 EntityBirthday,
43 EntityAddress, 43 EntityAddress,
44 EntityLabel, 44 EntityLabel,
45 EntityTelephone, 45 EntityTelephone,
46 EntityEmail, 46 EntityEmail,
47 EntityMailer, 47 EntityMailer,
48 EntityTimeZone, 48 EntityTimeZone,
49 EntityGeo, 49 EntityGeo,
50 EntityTitle, 50 EntityTitle,
51 EntityRole, 51 EntityRole,
52 EntityLogo, 52 EntityLogo,
53 EntityAgent, 53 EntityAgent,
54 EntityOrganisation, 54 EntityOrganisation,
55 EntityCategories, 55 EntityCategories,
56 EntityNote, 56 EntityNote,
57 EntityProductID, 57 EntityProductID,
58 EntityRevision, 58 EntityRevision,
59 EntitySortString, 59 EntitySortString,
60 EntitySound, 60 EntitySound,
61 EntityUID, 61 EntityUID,
62 EntityURL, 62 EntityURL,
63 EntityVersion, 63 EntityVersion,
64 EntityClass, 64 EntityClass,
65 EntityKey, 65 EntityKey,
66 EntityExtension, 66 EntityExtension,
67 EntityUnknown 67 EntityUnknown
68}; 68};
69 69
70enum ValueType { 70enum ValueType {
71 ValueSound, 71 ValueSound,
72 ValueAgent, 72 ValueAgent,
73 ValueAddress, 73 ValueAddress,
74 ValueTel, 74 ValueTel,
75 ValueTextBin, 75 ValueTextBin,
76 ValueOrg, 76 ValueOrg,
77 ValueN, 77 ValueN,
78 ValueUTC, 78 ValueUTC,
79 ValueURI, 79 ValueURI,
80 ValueClass, 80 ValueClass,
81 ValueFloat, 81 ValueFloat,
82 ValueImage, 82 ValueImage,
83 ValueDate, 83 ValueDate,
84 ValueTextList, 84 ValueTextList,
85 ValueText, 85 ValueText,
86 ValueGeo, 86 ValueGeo,
87 ValueUnknown 87 ValueUnknown
88}; 88};
89 89
90enum ParamType { 90enum ParamType {
91 ParamUnknown, 91 ParamUnknown,
92 ParamNone, 92 ParamNone,
93 ParamSource, 93 ParamSource,
94 ParamText, 94 ParamText,
95 ParamImage, 95 ParamImage,
96 ParamDate, 96 ParamDate,
97 ParamAddrText, 97 ParamAddrText,
98 ParamTel, 98 ParamTel,
99 ParamEmail, 99 ParamEmail,
100 ParamMailer, 100 ParamMailer,
101 ParamAgent, 101 ParamAgent,
102 ParamTextBin, 102 ParamTextBin,
103 ParamTextNS, 103 ParamTextNS,
104 ParamSound 104 ParamSound
105}; 105};
106 106
107extern const ParamType paramTypesTable[]; 107extern const ParamType paramTypesTable[];
108 108
109ParamType EntityTypeToParamType(EntityType); 109ParamType EntityTypeToParamType(EntityType);
110ValueType EntityTypeToValueType(EntityType); 110ValueType EntityTypeToValueType(EntityType);
111QCString EntityTypeToParamName(EntityType); 111Q3CString EntityTypeToParamName(EntityType);
112EntityType EntityNameToEntityType(const QCString &); 112EntityType EntityNameToEntityType(const Q3CString &);
113 113
114char * encodeBase64(const char *, unsigned long, unsigned long &); 114char * encodeBase64(const char *, unsigned long, unsigned long &);
115char * decodeBase64(const char *, unsigned long, unsigned long &); 115char * decodeBase64(const char *, unsigned long, unsigned long &);
116 116
117} 117}
118 118
119#endif 119#endif
120 120
diff --git a/kabc/vcard/include/VCardFloatValue.h b/kabc/vcard/include/VCardFloatValue.h
index 69fdc22..cac7a91 100644
--- a/kabc/vcard/include/VCardFloatValue.h
+++ b/kabc/vcard/include/VCardFloatValue.h
@@ -1,51 +1,51 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef FLOATVALUE_H 24#ifndef FLOATVALUE_H
25#define FLOATVALUE_H 25#define FLOATVALUE_H
26 26
27#include <qcstring.h> 27#include <q3cstring.h>
28 28
29#include <VCardValue.h> 29#include <VCardValue.h>
30 30
31namespace VCARD 31namespace VCARD
32{ 32{
33 33
34class FloatValue : public Value 34class FloatValue : public Value
35{ 35{
36 36
37#include "FloatValue-generated.h" 37#include "FloatValue-generated.h"
38 38
39 FloatValue(float); 39 FloatValue(float);
40 40
41 float value(); 41 float value();
42 void setValue(float); 42 void setValue(float);
43 43
44 private: 44 private:
45 45
46 float value_; 46 float value_;
47}; 47};
48 48
49} 49}
50 50
51#endif 51#endif
diff --git a/kabc/vcard/include/VCardImageParam.h b/kabc/vcard/include/VCardImageParam.h
index ce99ccc..2785331 100644
--- a/kabc/vcard/include/VCardImageParam.h
+++ b/kabc/vcard/include/VCardImageParam.h
@@ -1,44 +1,44 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef IMGPARAM_H 24#ifndef IMGPARAM_H
25#define IMGPARAM_H 25#define IMGPARAM_H
26 26
27#include <qcstring.h> 27#include <q3cstring.h>
28 28
29#include <VCardParam.h> 29#include <VCardParam.h>
30 30
31namespace VCARD 31namespace VCARD
32{ 32{
33 33
34class ImageParam : public Param 34class ImageParam : public Param
35{ 35{
36 36
37#include "ImageParam-generated.h" 37#include "ImageParam-generated.h"
38 38
39 private: 39 private:
40}; 40};
41 41
42} 42}
43 43
44#endif 44#endif
diff --git a/kabc/vcard/include/VCardImageValue.h b/kabc/vcard/include/VCardImageValue.h
index 6ce0371..3b64731 100644
--- a/kabc/vcard/include/VCardImageValue.h
+++ b/kabc/vcard/include/VCardImageValue.h
@@ -1,44 +1,44 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef IMAGEVALUE_H 24#ifndef IMAGEVALUE_H
25#define IMAGEVALUE_H 25#define IMAGEVALUE_H
26 26
27#include <qcstring.h> 27#include <q3cstring.h>
28 28
29#include <VCardValue.h> 29#include <VCardValue.h>
30 30
31namespace VCARD 31namespace VCARD
32{ 32{
33 33
34class ImageValue : public Value 34class ImageValue : public Value
35{ 35{
36 36
37#include "ImageValue-generated.h" 37#include "ImageValue-generated.h"
38 38
39 private: 39 private:
40}; 40};
41 41
42} 42}
43 43
44#endif 44#endif
diff --git a/kabc/vcard/include/VCardLangValue.h b/kabc/vcard/include/VCardLangValue.h
index 991ceed..319de76 100644
--- a/kabc/vcard/include/VCardLangValue.h
+++ b/kabc/vcard/include/VCardLangValue.h
@@ -1,51 +1,51 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef LANGVALUE_H 24#ifndef LANGVALUE_H
25#define LANGVALUE_H 25#define LANGVALUE_H
26 26
27#include <qcstring.h> 27#include <q3cstring.h>
28#include <qstrlist.h> 28#include <q3strlist.h>
29 29
30#include <VCardValue.h> 30#include <VCardValue.h>
31 31
32namespace VCARD 32namespace VCARD
33{ 33{
34 34
35class LangValue : public Value 35class LangValue : public Value
36{ 36{
37#include "LangValue-generated.h" 37#include "LangValue-generated.h"
38 38
39 QCString primary(); 39 Q3CString primary();
40 QStrList subtags(); 40 Q3StrList subtags();
41 41
42 void setPrimary(const QCString &); 42 void setPrimary(const Q3CString &);
43 void setSubTags(const QStrList &); 43 void setSubTags(const Q3StrList &);
44 44
45 QCString primary_; 45 Q3CString primary_;
46 QStrList subtags_; 46 Q3StrList subtags_;
47}; 47};
48 48
49} 49}
50 50
51#endif 51#endif
diff --git a/kabc/vcard/include/VCardNValue.h b/kabc/vcard/include/VCardNValue.h
index 306821b..ffc5355 100644
--- a/kabc/vcard/include/VCardNValue.h
+++ b/kabc/vcard/include/VCardNValue.h
@@ -1,56 +1,58 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef NVALUE_H 24#ifndef NVALUE_H
25#define NVALUE_H 25#define NVALUE_H
26 26
27#include <VCardValue.h> 27#include <VCardValue.h>
28//Added by qt3to4:
29#include <Q3CString>
28 30
29namespace VCARD 31namespace VCARD
30{ 32{
31 33
32class NValue : public Value 34class NValue : public Value
33{ 35{
34#include "NValue-generated.h" 36#include "NValue-generated.h"
35 NValue *clone(); 37 NValue *clone();
36 38
37 QCString family() { parse(); return family_;} 39 Q3CString family() { parse(); return family_;}
38 QCString given() { parse(); return given_;} 40 Q3CString given() { parse(); return given_;}
39 QCString middle() { parse(); return middle_;} 41 Q3CString middle() { parse(); return middle_;}
40 QCString prefix() { parse(); return prefix_;} 42 Q3CString prefix() { parse(); return prefix_;}
41 QCString suffix() { parse(); return suffix_;} 43 Q3CString suffix() { parse(); return suffix_;}
42 44
43 void setFamily (const QCString & s) { family_= s; assembled_ = false; } 45 void setFamily (const Q3CString & s) { family_= s; assembled_ = false; }
44 void setGiven (const QCString & s) { given_= s; assembled_ = false; } 46 void setGiven (const Q3CString & s) { given_= s; assembled_ = false; }
45 void setMiddle (const QCString & s) { middle_= s; assembled_ = false; } 47 void setMiddle (const Q3CString & s) { middle_= s; assembled_ = false; }
46 void setPrefix (const QCString & s) { prefix_= s; assembled_ = false; } 48 void setPrefix (const Q3CString & s) { prefix_= s; assembled_ = false; }
47 void setSuffix (const QCString & s) { suffix_= s; assembled_ = false; } 49 void setSuffix (const Q3CString & s) { suffix_= s; assembled_ = false; }
48 50
49 private: 51 private:
50 52
51 QCString family_, given_, middle_, prefix_, suffix_; 53 Q3CString family_, given_, middle_, prefix_, suffix_;
52}; 54};
53 55
54} 56}
55 57
56#endif 58#endif
diff --git a/kabc/vcard/include/VCardOrgValue.h b/kabc/vcard/include/VCardOrgValue.h
index c4f3f25..2e5d32f 100644
--- a/kabc/vcard/include/VCardOrgValue.h
+++ b/kabc/vcard/include/VCardOrgValue.h
@@ -1,50 +1,50 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef ORGVALUE_H 24#ifndef ORGVALUE_H
25#define ORGVALUE_H 25#define ORGVALUE_H
26 26
27#include <qcstring.h> 27#include <q3cstring.h>
28#include <qstrlist.h> 28#include <q3strlist.h>
29 29
30#include <VCardValue.h> 30#include <VCardValue.h>
31 31
32namespace VCARD 32namespace VCARD
33{ 33{
34 34
35class OrgValue : public Value 35class OrgValue : public Value
36{ 36{
37 37
38#include "OrgValue-generated.h" 38#include "OrgValue-generated.h"
39 39
40 unsigned int numValues(); 40 unsigned int numValues();
41 QCString value(unsigned int); 41 Q3CString value(unsigned int);
42 42
43 private: 43 private:
44 44
45 QStrList valueList_; 45 Q3StrList valueList_;
46}; 46};
47 47
48} 48}
49 49
50#endif 50#endif
diff --git a/kabc/vcard/include/VCardParam.h b/kabc/vcard/include/VCardParam.h
index b61ce5c..b83fde1 100644
--- a/kabc/vcard/include/VCardParam.h
+++ b/kabc/vcard/include/VCardParam.h
@@ -1,59 +1,59 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef PARAM_H 24#ifndef PARAM_H
25#define PARAM_H 25#define PARAM_H
26 26
27#include <qcstring.h> 27#include <q3cstring.h>
28#include <qptrlist.h> 28#include <q3ptrlist.h>
29 29
30#include <VCardEntity.h> 30#include <VCardEntity.h>
31 31
32namespace VCARD 32namespace VCARD
33{ 33{
34 34
35class Param : public Entity 35class Param : public Entity
36{ 36{
37 37
38#include "Param-generated.h" 38#include "Param-generated.h"
39 39
40 Param(const QCString &name, const QCString &value); 40 Param(const Q3CString &name, const Q3CString &value);
41 41
42 void setName(const QCString &); 42 void setName(const Q3CString &);
43 void setValue(const QCString &); 43 void setValue(const Q3CString &);
44 44
45 QCString name(); 45 Q3CString name();
46 QCString value(); 46 Q3CString value();
47 47
48 private: 48 private:
49 49
50 QCString name_; 50 Q3CString name_;
51 QCString value_; 51 Q3CString value_;
52}; 52};
53 53
54typedef QPtrList<Param> ParamList; 54typedef Q3PtrList<Param> ParamList;
55typedef QPtrListIterator<Param> ParamListIterator; 55typedef Q3PtrListIterator<Param> ParamListIterator;
56 56
57} 57}
58 58
59#endif 59#endif
diff --git a/kabc/vcard/include/VCardRToken.h b/kabc/vcard/include/VCardRToken.h
index 2f95f1b..4a5adb2 100644
--- a/kabc/vcard/include/VCardRToken.h
+++ b/kabc/vcard/include/VCardRToken.h
@@ -1,38 +1,38 @@
1/* 1/*
2 2
3 libvcard - vCard parsing library for vCard version 3.0 3 libvcard - vCard parsing library for vCard version 3.0
4 4
5 Copyright (C) 1999 Rik Hemsley rik@kde.org 5 Copyright (C) 1999 Rik Hemsley rik@kde.org
6 6
7 Permission is hereby granted, free of charge, to any person obtaining a copy 7 Permission is hereby granted, free of charge, to any person obtaining a copy
8 of this software and associated documentation files (the "Software"), to 8 of this software and associated documentation files (the "Software"), to
9 deal in the Software without restriction, including without limitation the 9 deal in the Software without restriction, including without limitation the
10 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 10 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
11 sell copies of the Software, and to permit persons to whom the Software is 11 sell copies of the Software, and to permit persons to whom the Software is
12 furnished to do so, subject to the following conditions: 12 furnished to do so, subject to the following conditions:
13 13
14 The above copyright notice and this permission notice shall be included in 14 The above copyright notice and this permission notice shall be included in
15 all copies or substantial portions of the Software. 15 all copies or substantial portions of the Software.
16 16
17 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 20 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
21 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 21 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23*/ 23*/
24 24
25#ifndef RTOKEN_H 25#ifndef RTOKEN_H
26#define RTOKEN_H 26#define RTOKEN_H
27 27
28#include <qstrlist.h> 28#include <q3strlist.h>
29 29
30namespace VCARD 30namespace VCARD
31{ 31{
32 32
33Q_UINT32 RTokenise(const char * str, const char * delim, QStrList & l); 33Q_UINT32 RTokenise(const char * str, const char * delim, Q3StrList & l);
34 34
35} 35}
36 36
37#endif 37#endif
38 38
diff --git a/kabc/vcard/include/VCardSoundValue.h b/kabc/vcard/include/VCardSoundValue.h
index 994f55e..26f750b 100644
--- a/kabc/vcard/include/VCardSoundValue.h
+++ b/kabc/vcard/include/VCardSoundValue.h
@@ -1,44 +1,44 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef SOUNDVALUE_H 24#ifndef SOUNDVALUE_H
25#define SOUNDVALUE_H 25#define SOUNDVALUE_H
26 26
27#include <qcstring.h> 27#include <q3cstring.h>
28 28
29#include <VCardValue.h> 29#include <VCardValue.h>
30 30
31namespace VCARD 31namespace VCARD
32{ 32{
33 33
34class SoundValue : public Value 34class SoundValue : public Value
35{ 35{
36 36
37#include "SoundValue-generated.h" 37#include "SoundValue-generated.h"
38 38
39 private: 39 private:
40}; 40};
41 41
42} 42}
43 43
44#endif 44#endif
diff --git a/kabc/vcard/include/VCardSourceParam.h b/kabc/vcard/include/VCardSourceParam.h
index 887ea20..5218864 100644
--- a/kabc/vcard/include/VCardSourceParam.h
+++ b/kabc/vcard/include/VCardSourceParam.h
@@ -1,58 +1,58 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef SOURCEPARAM_H 24#ifndef SOURCEPARAM_H
25#define SOURCEPARAM_H 25#define SOURCEPARAM_H
26 26
27#include <qcstring.h> 27#include <q3cstring.h>
28 28
29#include <VCardParam.h> 29#include <VCardParam.h>
30 30
31namespace VCARD 31namespace VCARD
32{ 32{
33 33
34class SourceParam : public Param 34class SourceParam : public Param
35{ 35{
36 36
37#include "SourceParam-generated.h" 37#include "SourceParam-generated.h"
38 38
39 enum SourceParamType { TypeUnknown, TypeValue, TypeContext, TypeX }; 39 enum SourceParamType { TypeUnknown, TypeValue, TypeContext, TypeX };
40 40
41 SourceParamType type(){ parse(); return type_;} 41 SourceParamType type(){ parse(); return type_;}
42 QCString par() { parse(); return par_; } 42 Q3CString par() { parse(); return par_; }
43 QCString val() { parse(); return val_; } 43 Q3CString val() { parse(); return val_; }
44 44
45 void setType(SourceParamType t) { type_= t; assembled_ = false; } 45 void setType(SourceParamType t) { type_= t; assembled_ = false; }
46 void setPar(const QCString & s) { par_= s; assembled_ = false; } 46 void setPar(const Q3CString & s) { par_= s; assembled_ = false; }
47 void setVal(const QCString & s) { val_= s; assembled_ = false; } 47 void setVal(const Q3CString & s) { val_= s; assembled_ = false; }
48 48
49 private: 49 private:
50 50
51 SourceParamType type_; 51 SourceParamType type_;
52 // May be "VALUE = uri" or "CONTEXT = word" or "x-name = *SAFE-CHAR" 52 // May be "VALUE = uri" or "CONTEXT = word" or "x-name = *SAFE-CHAR"
53 QCString par_, val_; // Sub-parameter, value 53 Q3CString par_, val_; // Sub-parameter, value
54}; 54};
55 55
56} 56}
57 57
58#endif 58#endif
diff --git a/kabc/vcard/include/VCardTelParam.h b/kabc/vcard/include/VCardTelParam.h
index 27d7dcc..0c45a3a 100644
--- a/kabc/vcard/include/VCardTelParam.h
+++ b/kabc/vcard/include/VCardTelParam.h
@@ -1,51 +1,53 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef TELPARAM_H 24#ifndef TELPARAM_H
25#define TELPARAM_H 25#define TELPARAM_H
26 26
27#include <qcstring.h> 27#include <q3cstring.h>
28//Added by qt3to4:
29#include <Q3PtrList>
28 30
29#include <VCardParam.h> 31#include <VCardParam.h>
30 32
31namespace VCARD 33namespace VCARD
32{ 34{
33 35
34class TelParam : public Param 36class TelParam : public Param
35{ 37{
36#include "TelParam-generated.h" 38#include "TelParam-generated.h"
37 39
38 enum TelType { 40 enum TelType {
39 TelHome, TelWork, TelPref, TelVoice, TelFex, TelMsg, TelCell, 41 TelHome, TelWork, TelPref, TelVoice, TelFex, TelMsg, TelCell,
40 TelPager, TelBBS, TelModem, TelCar, TelISDN, TelVideo, TelPCS, 42 TelPager, TelBBS, TelModem, TelCar, TelISDN, TelVideo, TelPCS,
41 TelIANA, TelX 43 TelIANA, TelX
42 }; 44 };
43 45
44 private: 46 private:
45 47
46 QPtrList<TelType> types_; 48 Q3PtrList<TelType> types_;
47}; 49};
48 50
49} 51}
50 52
51#endif 53#endif
diff --git a/kabc/vcard/include/VCardTelValue.h b/kabc/vcard/include/VCardTelValue.h
index 9cf5a98..a119e4a 100644
--- a/kabc/vcard/include/VCardTelValue.h
+++ b/kabc/vcard/include/VCardTelValue.h
@@ -1,44 +1,44 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef TELVALUE_H 24#ifndef TELVALUE_H
25#define TELVALUE_H 25#define TELVALUE_H
26 26
27#include <qcstring.h> 27#include <q3cstring.h>
28 28
29#include <VCardValue.h> 29#include <VCardValue.h>
30 30
31namespace VCARD 31namespace VCARD
32{ 32{
33 33
34class TelValue : public Value 34class TelValue : public Value
35{ 35{
36 36
37#include "TelValue-generated.h" 37#include "TelValue-generated.h"
38 38
39 private: 39 private:
40}; 40};
41 41
42} 42}
43 43
44#endif 44#endif
diff --git a/kabc/vcard/include/VCardTextBinParam.h b/kabc/vcard/include/VCardTextBinParam.h
index 31dec86..d186995 100644
--- a/kabc/vcard/include/VCardTextBinParam.h
+++ b/kabc/vcard/include/VCardTextBinParam.h
@@ -1,44 +1,44 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef TEXTBINPARAM_H 24#ifndef TEXTBINPARAM_H
25#define TEXTBINPARAM_H 25#define TEXTBINPARAM_H
26 26
27#include <qcstring.h> 27#include <q3cstring.h>
28 28
29#include <VCardParam.h> 29#include <VCardParam.h>
30 30
31namespace VCARD 31namespace VCARD
32{ 32{
33 33
34class TextBinParam : public Param 34class TextBinParam : public Param
35{ 35{
36 36
37#include "TextBinParam-generated.h" 37#include "TextBinParam-generated.h"
38 38
39 private: 39 private:
40}; 40};
41 41
42} 42}
43 43
44#endif 44#endif
diff --git a/kabc/vcard/include/VCardTextBinValue.h b/kabc/vcard/include/VCardTextBinValue.h
index 8d44fdf..3924f2a 100644
--- a/kabc/vcard/include/VCardTextBinValue.h
+++ b/kabc/vcard/include/VCardTextBinValue.h
@@ -1,67 +1,67 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef TEXTBINVALUE_H 24#ifndef TEXTBINVALUE_H
25#define TEXTBINVALUE_H 25#define TEXTBINVALUE_H
26 26
27#include <qcstring.h> 27#include <q3cstring.h>
28 28
29#include <VCardValue.h> 29#include <VCardValue.h>
30 30
31namespace VCARD 31namespace VCARD
32{ 32{
33 33
34class TextBinValue : public Value 34class TextBinValue : public Value
35{ 35{
36 36
37#include "TextBinValue-generated.h" 37#include "TextBinValue-generated.h"
38 38
39 TextBinValue *clone(); 39 TextBinValue *clone();
40 40
41 bool isBinary() { parse(); return mIsBinary_; } 41 bool isBinary() { parse(); return mIsBinary_; }
42 QByteArray data() { parse(); return mData_; } 42 QByteArray data() { parse(); return mData_; }
43 QString url() { parse(); return mUrl_; } 43 QString url() { parse(); return mUrl_; }
44 44
45 void setData( const QByteArray &data ) 45 void setData( const QByteArray &data )
46 { 46 {
47 mData_ = data; 47 mData_ = data;
48 mIsBinary_ = true; 48 mIsBinary_ = true;
49 assembled_ = false; 49 assembled_ = false;
50 } 50 }
51 51
52 void setUrl( const QString &url ) 52 void setUrl( const QString &url )
53 { 53 {
54 mUrl_ = url; 54 mUrl_ = url;
55 mIsBinary_ = false; 55 mIsBinary_ = false;
56 assembled_ = false; 56 assembled_ = false;
57 } 57 }
58 58
59 private: 59 private:
60 int mIsBinary_; 60 int mIsBinary_;
61 QByteArray mData_; 61 QByteArray mData_;
62 QString mUrl_; 62 QString mUrl_;
63}; 63};
64 64
65} 65}
66 66
67#endif 67#endif
diff --git a/kabc/vcard/include/VCardTextListValue.h b/kabc/vcard/include/VCardTextListValue.h
index 8e47af5..ac42a29 100644
--- a/kabc/vcard/include/VCardTextListValue.h
+++ b/kabc/vcard/include/VCardTextListValue.h
@@ -1,51 +1,51 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef TEXTLISTVALUE_H 24#ifndef TEXTLISTVALUE_H
25#define TEXTLISTVALUE_H 25#define TEXTLISTVALUE_H
26 26
27#include <qstrlist.h> 27#include <q3strlist.h>
28 28
29#include <qcstring.h> 29#include <q3cstring.h>
30 30
31#include <VCardValue.h> 31#include <VCardValue.h>
32 32
33namespace VCARD 33namespace VCARD
34{ 34{
35 35
36class TextListValue : public Value 36class TextListValue : public Value
37{ 37{
38 38
39#include "TextListValue-generated.h" 39#include "TextListValue-generated.h"
40 40
41 unsigned int numValues(); 41 unsigned int numValues();
42 QCString value(unsigned int); 42 Q3CString value(unsigned int);
43 43
44 private: 44 private:
45 45
46 QStrList valueList_; 46 Q3StrList valueList_;
47}; 47};
48 48
49} 49}
50 50
51#endif 51#endif
diff --git a/kabc/vcard/include/VCardTextParam.h b/kabc/vcard/include/VCardTextParam.h
index 08b5f57..2503337 100644
--- a/kabc/vcard/include/VCardTextParam.h
+++ b/kabc/vcard/include/VCardTextParam.h
@@ -1,44 +1,44 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef TEXTPARAM_H 24#ifndef TEXTPARAM_H
25#define TEXTPARAM_H 25#define TEXTPARAM_H
26 26
27#include <qcstring.h> 27#include <q3cstring.h>
28 28
29#include <VCardParam.h> 29#include <VCardParam.h>
30 30
31namespace VCARD 31namespace VCARD
32{ 32{
33 33
34class TextParam : public Param 34class TextParam : public Param
35{ 35{
36 36
37#include "TextParam-generated.h" 37#include "TextParam-generated.h"
38 38
39 private: 39 private:
40}; 40};
41 41
42} 42}
43 43
44#endif 44#endif
diff --git a/kabc/vcard/include/VCardURIValue.h b/kabc/vcard/include/VCardURIValue.h
index 5fd7184..116e4c8 100644
--- a/kabc/vcard/include/VCardURIValue.h
+++ b/kabc/vcard/include/VCardURIValue.h
@@ -1,52 +1,54 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef URIVALUE_H 24#ifndef URIVALUE_H
25#define URIVALUE_H 25#define URIVALUE_H
26 26
27#include <VCardValue.h> 27#include <VCardValue.h>
28//Added by qt3to4:
29#include <Q3CString>
28 30
29namespace VCARD 31namespace VCARD
30{ 32{
31 33
32class URIValue : public Value 34class URIValue : public Value
33{ 35{
34#include "URIValue-generated.h" 36#include "URIValue-generated.h"
35 37
36 URIValue(const QCString & scheme, const QCString & schemeSpecificPart); 38 URIValue(const Q3CString & scheme, const Q3CString & schemeSpecificPart);
37 39
38 QCString scheme(); 40 Q3CString scheme();
39 QCString schemeSpecificPart(); 41 Q3CString schemeSpecificPart();
40 42
41 void setScheme (const QCString &); 43 void setScheme (const Q3CString &);
42 void setSchemeSpecificPart(const QCString &); 44 void setSchemeSpecificPart(const Q3CString &);
43 45
44 private: 46 private:
45 47
46 QCString scheme_; 48 Q3CString scheme_;
47 QCString schemeSpecificPart_; 49 Q3CString schemeSpecificPart_;
48}; 50};
49 51
50} 52}
51 53
52#endif 54#endif
diff --git a/kabc/vcard/include/VCardUTCValue.h b/kabc/vcard/include/VCardUTCValue.h
index ff695e0..eb69829 100644
--- a/kabc/vcard/include/VCardUTCValue.h
+++ b/kabc/vcard/include/VCardUTCValue.h
@@ -1,58 +1,58 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef UTCVALUE_H 24#ifndef UTCVALUE_H
25#define UTCVALUE_H 25#define UTCVALUE_H
26 26
27#include <qcstring.h> 27#include <q3cstring.h>
28 28
29#include <VCardValue.h> 29#include <VCardValue.h>
30 30
31namespace VCARD 31namespace VCARD
32{ 32{
33 33
34class UTCValue : public Value 34class UTCValue : public Value
35{ 35{
36 36
37#include "UTCValue-generated.h" 37#include "UTCValue-generated.h"
38 38
39 UTCValue *clone(); 39 UTCValue *clone();
40 40
41 void setPositive( int p ) { positive_ = p; assembled_ = false; } 41 void setPositive( int p ) { positive_ = p; assembled_ = false; }
42 void setHour( int h ) { hour_ = h; assembled_ = false; } 42 void setHour( int h ) { hour_ = h; assembled_ = false; }
43 void setMinute( int m ) { minute_ = m; assembled_ = false; } 43 void setMinute( int m ) { minute_ = m; assembled_ = false; }
44 44
45 bool positive() { parse(); return positive_; } 45 bool positive() { parse(); return positive_; }
46 unsigned int hour() { parse(); return hour_; } 46 unsigned int hour() { parse(); return hour_; }
47 unsigned int minute() { parse(); return minute_; } 47 unsigned int minute() { parse(); return minute_; }
48 48
49 private: 49 private:
50 50
51 bool positive_; 51 bool positive_;
52 unsigned int hour_; 52 unsigned int hour_;
53 unsigned int minute_; 53 unsigned int minute_;
54}; 54};
55 55
56} 56}
57 57
58#endif 58#endif
diff --git a/kabc/vcard/include/VCardVCard.h b/kabc/vcard/include/VCardVCard.h
index 5dec166..5b66074 100644
--- a/kabc/vcard/include/VCardVCard.h
+++ b/kabc/vcard/include/VCardVCard.h
@@ -1,63 +1,65 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef VCARD_VCARD_H 24#ifndef VCARD_VCARD_H
25#define VCARD_VCARD_H 25#define VCARD_VCARD_H
26 26
27#include <qstring.h> 27#include <qstring.h>
28#include <qptrlist.h> 28#include <q3ptrlist.h>
29//Added by qt3to4:
30#include <Q3CString>
29 31
30#include <VCardEnum.h> 32#include <VCardEnum.h>
31#include <VCardEntity.h> 33#include <VCardEntity.h>
32#include <VCardContentLine.h> 34#include <VCardContentLine.h>
33 35
34namespace VCARD 36namespace VCARD
35{ 37{
36 38
37class VCard : public Entity 39class VCard : public Entity
38{ 40{
39 41
40#include "VCard-generated.h" 42#include "VCard-generated.h"
41 43
42 bool has(EntityType); 44 bool has(EntityType);
43 bool has(const QCString &); 45 bool has(const Q3CString &);
44 46
45 void add(const ContentLine &); 47 void add(const ContentLine &);
46 void add(const QCString &); 48 void add(const Q3CString &);
47 49
48 ContentLine * contentLine(EntityType); 50 ContentLine * contentLine(EntityType);
49 ContentLine * contentLine(const QCString &); 51 ContentLine * contentLine(const Q3CString &);
50 52
51 QCString group() { parse(); return group_; } 53 Q3CString group() { parse(); return group_; }
52 54
53 QPtrList<ContentLine>contentLineList() { parse(); return contentLineList_; } 55 Q3PtrList<ContentLine>contentLineList() { parse(); return contentLineList_; }
54 56
55 private: 57 private:
56 58
57 QCString group_; 59 Q3CString group_;
58 QPtrList<ContentLine>contentLineList_; 60 Q3PtrList<ContentLine>contentLineList_;
59}; 61};
60 62
61} 63}
62 64
63#endif 65#endif
diff --git a/kabc/vcard/include/VCardVCardEntity.h b/kabc/vcard/include/VCardVCardEntity.h
index 47ba370..8c824e7 100644
--- a/kabc/vcard/include/VCardVCardEntity.h
+++ b/kabc/vcard/include/VCardVCardEntity.h
@@ -1,56 +1,56 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef VCARD_ENTITY_H 24#ifndef VCARD_ENTITY_H
25#define VCARD_ENTITY_H 25#define VCARD_ENTITY_H
26 26
27#include <qstring.h> 27#include <qstring.h>
28#include <qptrlist.h> 28#include <q3ptrlist.h>
29 29
30#include <VCardEnum.h> 30#include <VCardEnum.h>
31#include <VCardVCard.h> 31#include <VCardVCard.h>
32#include <VCardEntity.h> 32#include <VCardEntity.h>
33 33
34namespace VCARD 34namespace VCARD
35{ 35{
36 36
37typedef QPtrList<VCard> VCardList; 37typedef Q3PtrList<VCard> VCardList;
38typedef QPtrListIterator<VCard> VCardListIterator; 38typedef Q3PtrListIterator<VCard> VCardListIterator;
39 39
40class VCardEntity : public Entity 40class VCardEntity : public Entity
41{ 41{
42 42
43#include "VCardEntity-generated.h" 43#include "VCardEntity-generated.h"
44 44
45 void setCardList(const VCardList & l); 45 void setCardList(const VCardList & l);
46 VCardList & cardList(); 46 VCardList & cardList();
47 47
48 private: 48 private:
49 49
50 VCardList cardList_; 50 VCardList cardList_;
51 51
52}; 52};
53 53
54} 54}
55 55
56#endif 56#endif
diff --git a/kabc/vcard/include/VCardValue.h b/kabc/vcard/include/VCardValue.h
index 7cfe4a0..024397c 100644
--- a/kabc/vcard/include/VCardValue.h
+++ b/kabc/vcard/include/VCardValue.h
@@ -1,46 +1,46 @@
1/* 1/*
2 libvcard - vCard parsing library for vCard version 3.0 2 libvcard - vCard parsing library for vCard version 3.0
3 3
4 Copyright (C) 1999 Rik Hemsley rik@kde.org 4 Copyright (C) 1999 Rik Hemsley rik@kde.org
5 5
6 Permission is hereby granted, free of charge, to any person obtaining a copy 6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to 7 of this software and associated documentation files (the "Software"), to
8 deal in the Software without restriction, including without limitation the 8 deal in the Software without restriction, including without limitation the
9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 sell copies of the Software, and to permit persons to whom the Software is 10 sell copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions: 11 furnished to do so, subject to the following conditions:
12 12
13 The above copyright notice and this permission notice shall be included in 13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software. 14 all copies or substantial portions of the Software.
15 15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/ 22*/
23 23
24#ifndef VALUE_H 24#ifndef VALUE_H
25#define VALUE_H 25#define VALUE_H
26 26
27#include <qptrlist.h> 27#include <q3ptrlist.h>
28 28
29#include <VCardEntity.h> 29#include <VCardEntity.h>
30 30
31namespace VCARD 31namespace VCARD
32{ 32{
33 33
34class Value : public Entity 34class Value : public Entity
35{ 35{
36#include "Value-generated.h" 36#include "Value-generated.h"
37 37
38 virtual Value *clone() { return new Value( *this ); } 38 virtual Value *clone() { return new Value( *this ); }
39}; 39};
40 40
41typedef QPtrList<Value> ValueList; 41typedef Q3PtrList<Value> ValueList;
42typedef QPtrListIterator<Value> ValueListIterator; 42typedef Q3PtrListIterator<Value> ValueListIterator;
43 43
44} 44}
45 45
46#endif 46#endif
diff --git a/kabc/vcard/include/generated/AdrParam-generated.h b/kabc/vcard/include/generated/AdrParam-generated.h
index 3e265d8..a11d142 100644
--- a/kabc/vcard/include/generated/AdrParam-generated.h
+++ b/kabc/vcard/include/generated/AdrParam-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4AdrParam(); 6AdrParam();
5AdrParam(const AdrParam&); 7AdrParam(const AdrParam&);
6AdrParam(const QCString&); 8AdrParam(const Q3CString&);
7AdrParam & operator = (AdrParam&); 9AdrParam & operator = (AdrParam&);
8AdrParam & operator = (const QCString&); 10AdrParam & operator = (const Q3CString&);
9bool operator ==(AdrParam&); 11bool operator ==(AdrParam&);
10bool operator !=(AdrParam& x) {return !(*this==x);} 12bool operator !=(AdrParam& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {AdrParam a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {AdrParam a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~AdrParam(); 16virtual ~AdrParam();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "AdrParam"; } 23const char * className() const { return "AdrParam"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/AdrValue-generated.h b/kabc/vcard/include/generated/AdrValue-generated.h
index e1d93e4..c0a33a3 100644
--- a/kabc/vcard/include/generated/AdrValue-generated.h
+++ b/kabc/vcard/include/generated/AdrValue-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4AdrValue(); 6AdrValue();
5AdrValue(const AdrValue&); 7AdrValue(const AdrValue&);
6AdrValue(const QCString&); 8AdrValue(const Q3CString&);
7AdrValue & operator = (AdrValue&); 9AdrValue & operator = (AdrValue&);
8AdrValue & operator = (const QCString&); 10AdrValue & operator = (const Q3CString&);
9bool operator ==(AdrValue&); 11bool operator ==(AdrValue&);
10bool operator !=(AdrValue& x) {return !(*this==x);} 12bool operator !=(AdrValue& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {AdrValue a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {AdrValue a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~AdrValue(); 16virtual ~AdrValue();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "AdrValue"; } 23const char * className() const { return "AdrValue"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/AgentParam-generated.h b/kabc/vcard/include/generated/AgentParam-generated.h
index 6423867..d5ed988 100644
--- a/kabc/vcard/include/generated/AgentParam-generated.h
+++ b/kabc/vcard/include/generated/AgentParam-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4AgentParam(); 6AgentParam();
5AgentParam(const AgentParam&); 7AgentParam(const AgentParam&);
6AgentParam(const QCString&); 8AgentParam(const Q3CString&);
7AgentParam & operator = (AgentParam&); 9AgentParam & operator = (AgentParam&);
8AgentParam & operator = (const QCString&); 10AgentParam & operator = (const Q3CString&);
9bool operator ==(AgentParam&); 11bool operator ==(AgentParam&);
10bool operator !=(AgentParam& x) {return !(*this==x);} 12bool operator !=(AgentParam& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {AgentParam a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {AgentParam a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~AgentParam(); 16virtual ~AgentParam();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "AgentParam"; } 23const char * className() const { return "AgentParam"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/AgentValue-generated.h b/kabc/vcard/include/generated/AgentValue-generated.h
index 76bb81c..eef5277 100644
--- a/kabc/vcard/include/generated/AgentValue-generated.h
+++ b/kabc/vcard/include/generated/AgentValue-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4AgentValue(); 6AgentValue();
5AgentValue(const AgentValue&); 7AgentValue(const AgentValue&);
6AgentValue(const QCString&); 8AgentValue(const Q3CString&);
7AgentValue & operator = (AgentValue&); 9AgentValue & operator = (AgentValue&);
8AgentValue & operator = (const QCString&); 10AgentValue & operator = (const Q3CString&);
9bool operator ==(AgentValue&); 11bool operator ==(AgentValue&);
10bool operator !=(AgentValue& x) {return !(*this==x);} 12bool operator !=(AgentValue& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {AgentValue a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {AgentValue a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~AgentValue(); 16virtual ~AgentValue();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "AgentValue"; } 23const char * className() const { return "AgentValue"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/ClassValue-generated.h b/kabc/vcard/include/generated/ClassValue-generated.h
index df4ed5f..b84c98f 100644
--- a/kabc/vcard/include/generated/ClassValue-generated.h
+++ b/kabc/vcard/include/generated/ClassValue-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4ClassValue(); 6ClassValue();
5ClassValue(const ClassValue&); 7ClassValue(const ClassValue&);
6ClassValue(const QCString&); 8ClassValue(const Q3CString&);
7ClassValue & operator = (ClassValue&); 9ClassValue & operator = (ClassValue&);
8ClassValue & operator = (const QCString&); 10ClassValue & operator = (const Q3CString&);
9bool operator ==(ClassValue&); 11bool operator ==(ClassValue&);
10bool operator !=(ClassValue& x) {return !(*this==x);} 12bool operator !=(ClassValue& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {ClassValue a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {ClassValue a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~ClassValue(); 16virtual ~ClassValue();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "ClassValue"; } 23const char * className() const { return "ClassValue"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/ContentLine-generated.h b/kabc/vcard/include/generated/ContentLine-generated.h
index 9efe273..84d0822 100644
--- a/kabc/vcard/include/generated/ContentLine-generated.h
+++ b/kabc/vcard/include/generated/ContentLine-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4ContentLine(); 6ContentLine();
5ContentLine(const ContentLine&); 7ContentLine(const ContentLine&);
6ContentLine(const QCString&); 8ContentLine(const Q3CString&);
7ContentLine & operator = (ContentLine&); 9ContentLine & operator = (ContentLine&);
8ContentLine & operator = (const QCString&); 10ContentLine & operator = (const Q3CString&);
9bool operator ==(ContentLine&); 11bool operator ==(ContentLine&);
10bool operator !=(ContentLine& x) {return !(*this==x);} 12bool operator !=(ContentLine& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {ContentLine a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {ContentLine a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~ContentLine(); 16virtual ~ContentLine();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "ContentLine"; } 23const char * className() const { return "ContentLine"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/DateParam-generated.h b/kabc/vcard/include/generated/DateParam-generated.h
index ff1da58..029c1da 100644
--- a/kabc/vcard/include/generated/DateParam-generated.h
+++ b/kabc/vcard/include/generated/DateParam-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4DateParam(); 6DateParam();
5DateParam(const DateParam&); 7DateParam(const DateParam&);
6DateParam(const QCString&); 8DateParam(const Q3CString&);
7DateParam & operator = (DateParam&); 9DateParam & operator = (DateParam&);
8DateParam & operator = (const QCString&); 10DateParam & operator = (const Q3CString&);
9bool operator ==(DateParam&); 11bool operator ==(DateParam&);
10bool operator !=(DateParam& x) {return !(*this==x);} 12bool operator !=(DateParam& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {DateParam a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {DateParam a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~DateParam(); 16virtual ~DateParam();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "DateParam"; } 23const char * className() const { return "DateParam"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/DateValue-generated.h b/kabc/vcard/include/generated/DateValue-generated.h
index a382823..70eecce 100644
--- a/kabc/vcard/include/generated/DateValue-generated.h
+++ b/kabc/vcard/include/generated/DateValue-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4DateValue(); 6DateValue();
5DateValue(const DateValue&); 7DateValue(const DateValue&);
6DateValue(const QCString&); 8DateValue(const Q3CString&);
7DateValue & operator = (DateValue&); 9DateValue & operator = (DateValue&);
8DateValue & operator = (const QCString&); 10DateValue & operator = (const Q3CString&);
9bool operator ==(DateValue&); 11bool operator ==(DateValue&);
10bool operator !=(DateValue& x) {return !(*this==x);} 12bool operator !=(DateValue& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {DateValue a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {DateValue a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~DateValue(); 16virtual ~DateValue();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "DateValue"; } 23const char * className() const { return "DateValue"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/EmailParam-generated.h b/kabc/vcard/include/generated/EmailParam-generated.h
index 428a6fc..f498931 100644
--- a/kabc/vcard/include/generated/EmailParam-generated.h
+++ b/kabc/vcard/include/generated/EmailParam-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4EmailParam(); 6EmailParam();
5EmailParam(const EmailParam&); 7EmailParam(const EmailParam&);
6EmailParam(const QCString&); 8EmailParam(const Q3CString&);
7EmailParam & operator = (EmailParam&); 9EmailParam & operator = (EmailParam&);
8EmailParam & operator = (const QCString&); 10EmailParam & operator = (const Q3CString&);
9bool operator ==(EmailParam&); 11bool operator ==(EmailParam&);
10bool operator !=(EmailParam& x) {return !(*this==x);} 12bool operator !=(EmailParam& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {EmailParam a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {EmailParam a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~EmailParam(); 16virtual ~EmailParam();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "EmailParam"; } 23const char * className() const { return "EmailParam"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/FloatValue-generated.h b/kabc/vcard/include/generated/FloatValue-generated.h
index cac55cf..c04b85f 100644
--- a/kabc/vcard/include/generated/FloatValue-generated.h
+++ b/kabc/vcard/include/generated/FloatValue-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4FloatValue(); 6FloatValue();
5FloatValue(const FloatValue&); 7FloatValue(const FloatValue&);
6FloatValue(const QCString&); 8FloatValue(const Q3CString&);
7FloatValue & operator = (FloatValue&); 9FloatValue & operator = (FloatValue&);
8FloatValue & operator = (const QCString&); 10FloatValue & operator = (const Q3CString&);
9bool operator ==(FloatValue&); 11bool operator ==(FloatValue&);
10bool operator !=(FloatValue& x) {return !(*this==x);} 12bool operator !=(FloatValue& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {FloatValue a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {FloatValue a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~FloatValue(); 16virtual ~FloatValue();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "FloatValue"; } 23const char * className() const { return "FloatValue"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/GeoValue-generated.h b/kabc/vcard/include/generated/GeoValue-generated.h
index 594f3ad..ab659bf 100644
--- a/kabc/vcard/include/generated/GeoValue-generated.h
+++ b/kabc/vcard/include/generated/GeoValue-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4GeoValue(); 6GeoValue();
5GeoValue(const GeoValue&); 7GeoValue(const GeoValue&);
6GeoValue(const QCString&); 8GeoValue(const Q3CString&);
7GeoValue & operator = (GeoValue&); 9GeoValue & operator = (GeoValue&);
8GeoValue & operator = (const QCString&); 10GeoValue & operator = (const Q3CString&);
9bool operator ==(GeoValue&); 11bool operator ==(GeoValue&);
10bool operator !=(GeoValue& x) {return !(*this==x);} 12bool operator !=(GeoValue& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {GeoValue a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {GeoValue a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~GeoValue(); 16virtual ~GeoValue();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "GeoValue"; } 23const char * className() const { return "GeoValue"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/Group-generated.h b/kabc/vcard/include/generated/Group-generated.h
index f39302d..ae16e3d 100644
--- a/kabc/vcard/include/generated/Group-generated.h
+++ b/kabc/vcard/include/generated/Group-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4Group(); 6Group();
5Group(const Group&); 7Group(const Group&);
6Group(const QCString&); 8Group(const Q3CString&);
7Group & operator = (Group&); 9Group & operator = (Group&);
8Group & operator = (const QCString&); 10Group & operator = (const Q3CString&);
9bool operator ==(Group&); 11bool operator ==(Group&);
10bool operator !=(Group& x) {return !(*this==x);} 12bool operator !=(Group& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {Group a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {Group a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~Group(); 16virtual ~Group();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "Group"; } 23const char * className() const { return "Group"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/ImageParam-generated.h b/kabc/vcard/include/generated/ImageParam-generated.h
index 81edfd2..91b09a4 100644
--- a/kabc/vcard/include/generated/ImageParam-generated.h
+++ b/kabc/vcard/include/generated/ImageParam-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4ImageParam(); 6ImageParam();
5ImageParam(const ImageParam&); 7ImageParam(const ImageParam&);
6ImageParam(const QCString&); 8ImageParam(const Q3CString&);
7ImageParam & operator = (ImageParam&); 9ImageParam & operator = (ImageParam&);
8ImageParam & operator = (const QCString&); 10ImageParam & operator = (const Q3CString&);
9bool operator ==(ImageParam&); 11bool operator ==(ImageParam&);
10bool operator !=(ImageParam& x) {return !(*this==x);} 12bool operator !=(ImageParam& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {ImageParam a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {ImageParam a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~ImageParam(); 16virtual ~ImageParam();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "ImageParam"; } 23const char * className() const { return "ImageParam"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/ImageValue-generated.h b/kabc/vcard/include/generated/ImageValue-generated.h
index 5a2c493..d71282e 100644
--- a/kabc/vcard/include/generated/ImageValue-generated.h
+++ b/kabc/vcard/include/generated/ImageValue-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4ImageValue(); 6ImageValue();
5ImageValue(const ImageValue&); 7ImageValue(const ImageValue&);
6ImageValue(const QCString&); 8ImageValue(const Q3CString&);
7ImageValue & operator = (ImageValue&); 9ImageValue & operator = (ImageValue&);
8ImageValue & operator = (const QCString&); 10ImageValue & operator = (const Q3CString&);
9bool operator ==(ImageValue&); 11bool operator ==(ImageValue&);
10bool operator !=(ImageValue& x) {return !(*this==x);} 12bool operator !=(ImageValue& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {ImageValue a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {ImageValue a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~ImageValue(); 16virtual ~ImageValue();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "ImageValue"; } 23const char * className() const { return "ImageValue"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/ImgParam-generated.h b/kabc/vcard/include/generated/ImgParam-generated.h
index 46a6ca0..461ca6d 100644
--- a/kabc/vcard/include/generated/ImgParam-generated.h
+++ b/kabc/vcard/include/generated/ImgParam-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4ImgParam(); 6ImgParam();
5ImgParam(const ImgParam&); 7ImgParam(const ImgParam&);
6ImgParam(const QCString&); 8ImgParam(const Q3CString&);
7ImgParam & operator = (ImgParam&); 9ImgParam & operator = (ImgParam&);
8ImgParam & operator = (const QCString&); 10ImgParam & operator = (const Q3CString&);
9bool operator ==(ImgParam&); 11bool operator ==(ImgParam&);
10bool operator !=(ImgParam& x) {return !(*this==x);} 12bool operator !=(ImgParam& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {ImgParam a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {ImgParam a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~ImgParam(); 16virtual ~ImgParam();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21virtual const char * className() const { return "ImgParam"; } 23virtual const char * className() const { return "ImgParam"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/ImgValue-generated.h b/kabc/vcard/include/generated/ImgValue-generated.h
index d75d545..80ee646 100644
--- a/kabc/vcard/include/generated/ImgValue-generated.h
+++ b/kabc/vcard/include/generated/ImgValue-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4ImgValue(); 6ImgValue();
5ImgValue(const ImgValue&); 7ImgValue(const ImgValue&);
6ImgValue(const QCString&); 8ImgValue(const Q3CString&);
7ImgValue & operator = (ImgValue&); 9ImgValue & operator = (ImgValue&);
8ImgValue & operator = (const QCString&); 10ImgValue & operator = (const Q3CString&);
9bool operator ==(ImgValue&); 11bool operator ==(ImgValue&);
10bool operator !=(ImgValue& x) {return !(*this==x);} 12bool operator !=(ImgValue& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {ImgValue a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {ImgValue a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~ImgValue(); 16virtual ~ImgValue();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21virtual const char * className() const { return "ImgValue"; } 23virtual const char * className() const { return "ImgValue"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/LangValue-generated.h b/kabc/vcard/include/generated/LangValue-generated.h
index 23e138b..434f762 100644
--- a/kabc/vcard/include/generated/LangValue-generated.h
+++ b/kabc/vcard/include/generated/LangValue-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4LangValue(); 6LangValue();
5LangValue(const LangValue&); 7LangValue(const LangValue&);
6LangValue(const QCString&); 8LangValue(const Q3CString&);
7LangValue & operator = (LangValue&); 9LangValue & operator = (LangValue&);
8LangValue & operator = (const QCString&); 10LangValue & operator = (const Q3CString&);
9bool operator ==(LangValue&); 11bool operator ==(LangValue&);
10bool operator !=(LangValue& x) {return !(*this==x);} 12bool operator !=(LangValue& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {LangValue a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {LangValue a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~LangValue(); 16virtual ~LangValue();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "LangValue"; } 23const char * className() const { return "LangValue"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/NValue-generated.h b/kabc/vcard/include/generated/NValue-generated.h
index 082c253..086810f 100644
--- a/kabc/vcard/include/generated/NValue-generated.h
+++ b/kabc/vcard/include/generated/NValue-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4NValue(); 6NValue();
5NValue(const NValue&); 7NValue(const NValue&);
6NValue(const QCString&); 8NValue(const Q3CString&);
7NValue & operator = (NValue&); 9NValue & operator = (NValue&);
8NValue & operator = (const QCString&); 10NValue & operator = (const Q3CString&);
9bool operator ==(NValue&); 11bool operator ==(NValue&);
10bool operator !=(NValue& x) {return !(*this==x);} 12bool operator !=(NValue& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {NValue a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {NValue a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~NValue(); 16virtual ~NValue();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "NValue"; } 23const char * className() const { return "NValue"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/Name-generated.h b/kabc/vcard/include/generated/Name-generated.h
index 0e69abd..a3bcb25 100644
--- a/kabc/vcard/include/generated/Name-generated.h
+++ b/kabc/vcard/include/generated/Name-generated.h
@@ -1,22 +1,24 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4V_Name(); 6V_Name();
5V_Name(const V_Name&); 7V_Name(const V_Name&);
6V_Name(const QCString&); 8V_Name(const Q3CString&);
7V_Name & operator = (V_Name&); 9V_Name & operator = (V_Name&);
8V_Name & operator = (const QCString&); 10V_Name & operator = (const Q3CString&);
9bool operator ==(V_Name&); 11bool operator ==(V_Name&);
10bool operator !=(V_Name& x) {return !(*this==x);} 12bool operator !=(V_Name& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {V_Name a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {V_Name a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~V_Name(); 16virtual ~V_Name();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21 23
22// End of automatically generated code // 24// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/OrgValue-generated.h b/kabc/vcard/include/generated/OrgValue-generated.h
index 51eb1b7..275f56f 100644
--- a/kabc/vcard/include/generated/OrgValue-generated.h
+++ b/kabc/vcard/include/generated/OrgValue-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4OrgValue(); 6OrgValue();
5OrgValue(const OrgValue&); 7OrgValue(const OrgValue&);
6OrgValue(const QCString&); 8OrgValue(const Q3CString&);
7OrgValue & operator = (OrgValue&); 9OrgValue & operator = (OrgValue&);
8OrgValue & operator = (const QCString&); 10OrgValue & operator = (const Q3CString&);
9bool operator ==(OrgValue&); 11bool operator ==(OrgValue&);
10bool operator !=(OrgValue& x) {return !(*this==x);} 12bool operator !=(OrgValue& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {OrgValue a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {OrgValue a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~OrgValue(); 16virtual ~OrgValue();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "OrgValue"; } 23const char * className() const { return "OrgValue"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/Param-generated.h b/kabc/vcard/include/generated/Param-generated.h
index cf4666a..1a35166 100644
--- a/kabc/vcard/include/generated/Param-generated.h
+++ b/kabc/vcard/include/generated/Param-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4Param(); 6Param();
5Param(const Param&); 7Param(const Param&);
6Param(const QCString&); 8Param(const Q3CString&);
7Param & operator = (Param&); 9Param & operator = (Param&);
8Param & operator = (const QCString&); 10Param & operator = (const Q3CString&);
9bool operator ==(Param&); 11bool operator ==(Param&);
10bool operator !=(Param& x) {return !(*this==x);} 12bool operator !=(Param& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {Param a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {Param a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~Param(); 16virtual ~Param();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "Param"; } 23const char * className() const { return "Param"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/ParamName-generated.h b/kabc/vcard/include/generated/ParamName-generated.h
index ef673c3..b45022e 100644
--- a/kabc/vcard/include/generated/ParamName-generated.h
+++ b/kabc/vcard/include/generated/ParamName-generated.h
@@ -1,22 +1,24 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4V_ParamName(); 6V_ParamName();
5V_ParamName(const V_ParamName&); 7V_ParamName(const V_ParamName&);
6V_ParamName(const QCString&); 8V_ParamName(const Q3CString&);
7V_ParamName & operator = (V_ParamName&); 9V_ParamName & operator = (V_ParamName&);
8V_ParamName & operator = (const QCString&); 10V_ParamName & operator = (const Q3CString&);
9bool operator ==(V_ParamName&); 11bool operator ==(V_ParamName&);
10bool operator !=(V_ParamName& x) {return !(*this==x);} 12bool operator !=(V_ParamName& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {V_ParamName a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {V_ParamName a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~V_ParamName(); 16virtual ~V_ParamName();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21 23
22// End of automatically generated code // 24// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/ParamValue-generated.h b/kabc/vcard/include/generated/ParamValue-generated.h
index e73500f..956c8da 100644
--- a/kabc/vcard/include/generated/ParamValue-generated.h
+++ b/kabc/vcard/include/generated/ParamValue-generated.h
@@ -1,22 +1,24 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4V_ParamValue(); 6V_ParamValue();
5V_ParamValue(const V_ParamValue&); 7V_ParamValue(const V_ParamValue&);
6V_ParamValue(const QCString&); 8V_ParamValue(const Q3CString&);
7V_ParamValue & operator = (V_ParamValue&); 9V_ParamValue & operator = (V_ParamValue&);
8V_ParamValue & operator = (const QCString&); 10V_ParamValue & operator = (const Q3CString&);
9bool operator ==(V_ParamValue&); 11bool operator ==(V_ParamValue&);
10bool operator !=(V_ParamValue& x) {return !(*this==x);} 12bool operator !=(V_ParamValue& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {V_ParamValue a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {V_ParamValue a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~V_ParamValue(); 16virtual ~V_ParamValue();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21 23
22// End of automatically generated code // 24// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/PhoneNumberValue-generated.h b/kabc/vcard/include/generated/PhoneNumberValue-generated.h
index 1320f18..0d206f4 100644
--- a/kabc/vcard/include/generated/PhoneNumberValue-generated.h
+++ b/kabc/vcard/include/generated/PhoneNumberValue-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4PhoneNumberValue(); 6PhoneNumberValue();
5PhoneNumberValue(const PhoneNumberValue&); 7PhoneNumberValue(const PhoneNumberValue&);
6PhoneNumberValue(const QCString&); 8PhoneNumberValue(const Q3CString&);
7PhoneNumberValue & operator = (PhoneNumberValue&); 9PhoneNumberValue & operator = (PhoneNumberValue&);
8PhoneNumberValue & operator = (const QCString&); 10PhoneNumberValue & operator = (const Q3CString&);
9bool operator ==(PhoneNumberValue&); 11bool operator ==(PhoneNumberValue&);
10bool operator !=(PhoneNumberValue& x) {return !(*this==x);} 12bool operator !=(PhoneNumberValue& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {PhoneNumberValue a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {PhoneNumberValue a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~PhoneNumberValue(); 16virtual ~PhoneNumberValue();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "PhoneNumberValue"; } 23const char * className() const { return "PhoneNumberValue"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/SoundValue-generated.h b/kabc/vcard/include/generated/SoundValue-generated.h
index a9ab2e8..2cc9c0d 100644
--- a/kabc/vcard/include/generated/SoundValue-generated.h
+++ b/kabc/vcard/include/generated/SoundValue-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4SoundValue(); 6SoundValue();
5SoundValue(const SoundValue&); 7SoundValue(const SoundValue&);
6SoundValue(const QCString&); 8SoundValue(const Q3CString&);
7SoundValue & operator = (SoundValue&); 9SoundValue & operator = (SoundValue&);
8SoundValue & operator = (const QCString&); 10SoundValue & operator = (const Q3CString&);
9bool operator ==(SoundValue&); 11bool operator ==(SoundValue&);
10bool operator !=(SoundValue& x) {return !(*this==x);} 12bool operator !=(SoundValue& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {SoundValue a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {SoundValue a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~SoundValue(); 16virtual ~SoundValue();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "SoundValue"; } 23const char * className() const { return "SoundValue"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/SourceParam-generated.h b/kabc/vcard/include/generated/SourceParam-generated.h
index 75fefb8..537e093 100644
--- a/kabc/vcard/include/generated/SourceParam-generated.h
+++ b/kabc/vcard/include/generated/SourceParam-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4SourceParam(); 6SourceParam();
5SourceParam(const SourceParam&); 7SourceParam(const SourceParam&);
6SourceParam(const QCString&); 8SourceParam(const Q3CString&);
7SourceParam & operator = (SourceParam&); 9SourceParam & operator = (SourceParam&);
8SourceParam & operator = (const QCString&); 10SourceParam & operator = (const Q3CString&);
9bool operator ==(SourceParam&); 11bool operator ==(SourceParam&);
10bool operator !=(SourceParam& x) {return !(*this==x);} 12bool operator !=(SourceParam& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {SourceParam a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {SourceParam a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~SourceParam(); 16virtual ~SourceParam();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "SourceParam"; } 23const char * className() const { return "SourceParam"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/TelParam-generated.h b/kabc/vcard/include/generated/TelParam-generated.h
index 3ee77cc..8d9ba0f 100644
--- a/kabc/vcard/include/generated/TelParam-generated.h
+++ b/kabc/vcard/include/generated/TelParam-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4TelParam(); 6TelParam();
5TelParam(const TelParam&); 7TelParam(const TelParam&);
6TelParam(const QCString&); 8TelParam(const Q3CString&);
7TelParam & operator = (TelParam&); 9TelParam & operator = (TelParam&);
8TelParam & operator = (const QCString&); 10TelParam & operator = (const Q3CString&);
9bool operator ==(TelParam&); 11bool operator ==(TelParam&);
10bool operator !=(TelParam& x) {return !(*this==x);} 12bool operator !=(TelParam& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {TelParam a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {TelParam a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~TelParam(); 16virtual ~TelParam();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "TelParam"; } 23const char * className() const { return "TelParam"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/TelValue-generated.h b/kabc/vcard/include/generated/TelValue-generated.h
index 3213e1c..b72fa7d 100644
--- a/kabc/vcard/include/generated/TelValue-generated.h
+++ b/kabc/vcard/include/generated/TelValue-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4TelValue(); 6TelValue();
5TelValue(const TelValue&); 7TelValue(const TelValue&);
6TelValue(const QCString&); 8TelValue(const Q3CString&);
7TelValue & operator = (TelValue&); 9TelValue & operator = (TelValue&);
8TelValue & operator = (const QCString&); 10TelValue & operator = (const Q3CString&);
9bool operator ==(TelValue&); 11bool operator ==(TelValue&);
10bool operator !=(TelValue& x) {return !(*this==x);} 12bool operator !=(TelValue& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {TelValue a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {TelValue a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~TelValue(); 16virtual ~TelValue();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "TelValue"; } 23const char * className() const { return "TelValue"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/TextBinParam-generated.h b/kabc/vcard/include/generated/TextBinParam-generated.h
index d075c10..2e433b0 100644
--- a/kabc/vcard/include/generated/TextBinParam-generated.h
+++ b/kabc/vcard/include/generated/TextBinParam-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4TextBinParam(); 6TextBinParam();
5TextBinParam(const TextBinParam&); 7TextBinParam(const TextBinParam&);
6TextBinParam(const QCString&); 8TextBinParam(const Q3CString&);
7TextBinParam & operator = (TextBinParam&); 9TextBinParam & operator = (TextBinParam&);
8TextBinParam & operator = (const QCString&); 10TextBinParam & operator = (const Q3CString&);
9bool operator ==(TextBinParam&); 11bool operator ==(TextBinParam&);
10bool operator !=(TextBinParam& x) {return !(*this==x);} 12bool operator !=(TextBinParam& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {TextBinParam a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {TextBinParam a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~TextBinParam(); 16virtual ~TextBinParam();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "TextBinParam"; } 23const char * className() const { return "TextBinParam"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/TextBinValue-generated.h b/kabc/vcard/include/generated/TextBinValue-generated.h
index e9553ac..bc3ad61 100644
--- a/kabc/vcard/include/generated/TextBinValue-generated.h
+++ b/kabc/vcard/include/generated/TextBinValue-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4TextBinValue(); 6TextBinValue();
5TextBinValue(const TextBinValue&); 7TextBinValue(const TextBinValue&);
6TextBinValue(const QCString&); 8TextBinValue(const Q3CString&);
7TextBinValue & operator = (TextBinValue&); 9TextBinValue & operator = (TextBinValue&);
8TextBinValue & operator = (const QCString&); 10TextBinValue & operator = (const Q3CString&);
9bool operator ==(TextBinValue&); 11bool operator ==(TextBinValue&);
10bool operator !=(TextBinValue& x) {return !(*this==x);} 12bool operator !=(TextBinValue& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {TextBinValue a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {TextBinValue a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~TextBinValue(); 16virtual ~TextBinValue();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "TextBinValue"; } 23const char * className() const { return "TextBinValue"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/TextListValue-generated.h b/kabc/vcard/include/generated/TextListValue-generated.h
index 9f46124..9df8a46 100644
--- a/kabc/vcard/include/generated/TextListValue-generated.h
+++ b/kabc/vcard/include/generated/TextListValue-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4TextListValue(); 6TextListValue();
5TextListValue(const TextListValue&); 7TextListValue(const TextListValue&);
6TextListValue(const QCString&); 8TextListValue(const Q3CString&);
7TextListValue & operator = (TextListValue&); 9TextListValue & operator = (TextListValue&);
8TextListValue & operator = (const QCString&); 10TextListValue & operator = (const Q3CString&);
9bool operator ==(TextListValue&); 11bool operator ==(TextListValue&);
10bool operator !=(TextListValue& x) {return !(*this==x);} 12bool operator !=(TextListValue& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {TextListValue a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {TextListValue a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~TextListValue(); 16virtual ~TextListValue();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "TextListValue"; } 23const char * className() const { return "TextListValue"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/TextNSParam-generated.h b/kabc/vcard/include/generated/TextNSParam-generated.h
index d7f58ca..8842bd6 100644
--- a/kabc/vcard/include/generated/TextNSParam-generated.h
+++ b/kabc/vcard/include/generated/TextNSParam-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4TextNSParam(); 6TextNSParam();
5TextNSParam(const TextNSParam&); 7TextNSParam(const TextNSParam&);
6TextNSParam(const QCString&); 8TextNSParam(const Q3CString&);
7TextNSParam & operator = (TextNSParam&); 9TextNSParam & operator = (TextNSParam&);
8TextNSParam & operator = (const QCString&); 10TextNSParam & operator = (const Q3CString&);
9bool operator ==(TextNSParam&); 11bool operator ==(TextNSParam&);
10bool operator !=(TextNSParam& x) {return !(*this==x);} 12bool operator !=(TextNSParam& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {TextNSParam a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {TextNSParam a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~TextNSParam(); 16virtual ~TextNSParam();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "TextNSParam"; } 23const char * className() const { return "TextNSParam"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/TextParam-generated.h b/kabc/vcard/include/generated/TextParam-generated.h
index 154e1bf..e56a8a5 100644
--- a/kabc/vcard/include/generated/TextParam-generated.h
+++ b/kabc/vcard/include/generated/TextParam-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4TextParam(); 6TextParam();
5TextParam(const TextParam&); 7TextParam(const TextParam&);
6TextParam(const QCString&); 8TextParam(const Q3CString&);
7TextParam & operator = (TextParam&); 9TextParam & operator = (TextParam&);
8TextParam & operator = (const QCString&); 10TextParam & operator = (const Q3CString&);
9bool operator ==(TextParam&); 11bool operator ==(TextParam&);
10bool operator !=(TextParam& x) {return !(*this==x);} 12bool operator !=(TextParam& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {TextParam a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {TextParam a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~TextParam(); 16virtual ~TextParam();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "TextParam"; } 23const char * className() const { return "TextParam"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/TextValue-generated.h b/kabc/vcard/include/generated/TextValue-generated.h
index e1c4dcc..3f205e0 100644
--- a/kabc/vcard/include/generated/TextValue-generated.h
+++ b/kabc/vcard/include/generated/TextValue-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4TextValue(); 6TextValue();
5TextValue(const TextValue&); 7TextValue(const TextValue&);
6TextValue(const QCString&); 8TextValue(const Q3CString&);
7TextValue & operator = (TextValue&); 9TextValue & operator = (TextValue&);
8TextValue & operator = (const QCString&); 10TextValue & operator = (const Q3CString&);
9bool operator ==(TextValue&); 11bool operator ==(TextValue&);
10bool operator !=(TextValue& x) {return !(*this==x);} 12bool operator !=(TextValue& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {TextValue a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {TextValue a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~TextValue(); 16virtual ~TextValue();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "TextValue"; } 23const char * className() const { return "TextValue"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/URIValue-generated.h b/kabc/vcard/include/generated/URIValue-generated.h
index dbcb5c1..464178f 100644
--- a/kabc/vcard/include/generated/URIValue-generated.h
+++ b/kabc/vcard/include/generated/URIValue-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4URIValue(); 6URIValue();
5URIValue(const URIValue&); 7URIValue(const URIValue&);
6URIValue(const QCString&); 8URIValue(const Q3CString&);
7URIValue & operator = (URIValue&); 9URIValue & operator = (URIValue&);
8URIValue & operator = (const QCString&); 10URIValue & operator = (const Q3CString&);
9bool operator ==(URIValue&); 11bool operator ==(URIValue&);
10bool operator !=(URIValue& x) {return !(*this==x);} 12bool operator !=(URIValue& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {URIValue a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {URIValue a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~URIValue(); 16virtual ~URIValue();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "URIValue"; } 23const char * className() const { return "URIValue"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/UTCValue-generated.h b/kabc/vcard/include/generated/UTCValue-generated.h
index 46e447b..1a34b5c 100644
--- a/kabc/vcard/include/generated/UTCValue-generated.h
+++ b/kabc/vcard/include/generated/UTCValue-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4UTCValue(); 6UTCValue();
5UTCValue(const UTCValue&); 7UTCValue(const UTCValue&);
6UTCValue(const QCString&); 8UTCValue(const Q3CString&);
7UTCValue & operator = (UTCValue&); 9UTCValue & operator = (UTCValue&);
8UTCValue & operator = (const QCString&); 10UTCValue & operator = (const Q3CString&);
9bool operator ==(UTCValue&); 11bool operator ==(UTCValue&);
10bool operator !=(UTCValue& x) {return !(*this==x);} 12bool operator !=(UTCValue& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {UTCValue a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {UTCValue a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~UTCValue(); 16virtual ~UTCValue();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "UTCValue"; } 23const char * className() const { return "UTCValue"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/VCard-generated.h b/kabc/vcard/include/generated/VCard-generated.h
index 4d7d96d..d09c789 100644
--- a/kabc/vcard/include/generated/VCard-generated.h
+++ b/kabc/vcard/include/generated/VCard-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4VCard(); 6VCard();
5VCard(const VCard&); 7VCard(const VCard&);
6VCard(const QCString&); 8VCard(const Q3CString&);
7VCard & operator = (VCard&); 9VCard & operator = (VCard&);
8VCard & operator = (const QCString&); 10VCard & operator = (const Q3CString&);
9bool operator ==(VCard&); 11bool operator ==(VCard&);
10bool operator !=(VCard& x) {return !(*this==x);} 12bool operator !=(VCard& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {VCard a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {VCard a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~VCard(); 16virtual ~VCard();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "VCard"; } 23const char * className() const { return "VCard"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/VCardEntity-generated.h b/kabc/vcard/include/generated/VCardEntity-generated.h
index 9f2dfbc..cbbe8e1 100644
--- a/kabc/vcard/include/generated/VCardEntity-generated.h
+++ b/kabc/vcard/include/generated/VCardEntity-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4VCardEntity(); 6VCardEntity();
5VCardEntity(const VCardEntity&); 7VCardEntity(const VCardEntity&);
6VCardEntity(const QCString&); 8VCardEntity(const Q3CString&);
7VCardEntity & operator = (VCardEntity&); 9VCardEntity & operator = (VCardEntity&);
8VCardEntity & operator = (const QCString&); 10VCardEntity & operator = (const Q3CString&);
9bool operator ==(VCardEntity&); 11bool operator ==(VCardEntity&);
10bool operator !=(VCardEntity& x) {return !(*this==x);} 12bool operator !=(VCardEntity& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {VCardEntity a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {VCardEntity a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~VCardEntity(); 16virtual ~VCardEntity();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "VCardEntity"; } 23const char * className() const { return "VCardEntity"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/include/generated/Value-generated.h b/kabc/vcard/include/generated/Value-generated.h
index 7afac34..142e720 100644
--- a/kabc/vcard/include/generated/Value-generated.h
+++ b/kabc/vcard/include/generated/Value-generated.h
@@ -1,23 +1,25 @@
1//Added by qt3to4:
2#include <Q3CString>
1// XXX Automatically generated. DO NOT EDIT! XXX // 3// XXX Automatically generated. DO NOT EDIT! XXX //
2 4
3public: 5public:
4Value(); 6Value();
5Value(const Value&); 7Value(const Value&);
6Value(const QCString&); 8Value(const Q3CString&);
7Value & operator = (Value&); 9Value & operator = (Value&);
8Value & operator = (const QCString&); 10Value & operator = (const Q3CString&);
9bool operator ==(Value&); 11bool operator ==(Value&);
10bool operator !=(Value& x) {return !(*this==x);} 12bool operator !=(Value& x) {return !(*this==x);}
11bool operator ==(const QCString& s) {Value a(s);return(*this==a);} 13bool operator ==(const Q3CString& s) {Value a(s);return(*this==a);}
12bool operator != (const QCString& s) {return !(*this == s);} 14bool operator != (const Q3CString& s) {return !(*this == s);}
13 15
14virtual ~Value(); 16virtual ~Value();
15void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;} 17void parse() {if(!parsed_) _parse();parsed_=true;assembled_=false;}
16 18
17void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;} 19void assemble() {if(assembled_) return;parse();_assemble();assembled_=true;}
18 20
19void _parse(); 21void _parse();
20void _assemble(); 22void _assemble();
21const char * className() const { return "Value"; } 23const char * className() const { return "Value"; }
22 24
23// End of automatically generated code // 25// End of automatically generated code //
diff --git a/kabc/vcard/testread.cpp b/kabc/vcard/testread.cpp
index 919c661..4d66aaf 100644
--- a/kabc/vcard/testread.cpp
+++ b/kabc/vcard/testread.cpp
@@ -1,129 +1,131 @@
1#include <iostream> 1#include <iostream>
2#include <stdlib.h> 2#include <stdlib.h>
3#include <assert.h> 3#include <assert.h>
4 4
5#include <qfile.h> 5#include <qfile.h>
6#include <qtextstream.h> 6#include <q3textstream.h>
7//Added by qt3to4:
8#include <Q3CString>
7 9
8#include <VCard.h> 10#include <VCard.h>
9 11
10using namespace std; 12using namespace std;
11 13
12int main(int argc, char * argv[]) 14int main(int argc, char * argv[])
13{ 15{
14 if (argc != 2) { 16 if (argc != 2) {
15 cerr << "Usage: " << argv[0] << " <filename>" << endl; 17 cerr << "Usage: " << argv[0] << " <filename>" << endl;
16 exit(1); 18 exit(1);
17 } 19 }
18 20
19 QFile f(argv[1]); 21 QFile f(argv[1]);
20 22
21 QCString str; 23 Q3CString str;
22 24
23 if (!f.open(IO_ReadOnly)) { 25 if (!f.open(QIODevice::ReadOnly)) {
24 cerr << "Couldn't open file \"" << argv[1] << endl; 26 cerr << "Couldn't open file \"" << argv[1] << endl;
25 exit(1); 27 exit(1);
26 } 28 }
27 29
28 QTextStream t(&f); 30 Q3TextStream t(&f);
29 31
30 while (!t.eof()) 32 while (!t.eof())
31 str += t.readLine().utf8() + '\n'; 33 str += t.readLine().utf8() + '\n';
32 34
33 using namespace VCARD; 35 using namespace VCARD;
34 36
35 // Iterate through all vCards in the file. 37 // Iterate through all vCards in the file.
36 38
37 cout << "--------- begin ----------" << endl; 39 cout << "--------- begin ----------" << endl;
38 cout << str.data(); 40 cout << str.data();
39 cout << "--------- end ----------" << endl; 41 cout << "--------- end ----------" << endl;
40 42
41 VCardEntity e(str); 43 VCardEntity e(str);
42 44
43 VCardListIterator it(e.cardList()); 45 VCardListIterator it(e.cardList());
44 46
45 for (; it.current(); ++it) { 47 for (; it.current(); ++it) {
46 48
47 cerr << "****************** VCARD ********************" << endl; 49 cerr << "****************** VCARD ********************" << endl;
48 50
49 // Create a vcard using the string representation. 51 // Create a vcard using the string representation.
50 VCard & v (*it.current()); 52 VCard & v (*it.current());
51 53
52 if (v.has(EntityEmail)) { 54 if (v.has(EntityEmail)) {
53 cerr << "Email parameter found" << endl; 55 cerr << "Email parameter found" << endl;
54 56
55 QCString s = v.contentLine(EntityEmail)->value()->asString(); 57 Q3CString s = v.contentLine(EntityEmail)->value()->asString();
56 58
57 cerr << "Email value == " << s << endl; 59 cerr << "Email value == " << s << endl;
58 } 60 }
59 61
60 if (v.has(EntityNickname)) { 62 if (v.has(EntityNickname)) {
61 cerr << "Nickname parameter found" << endl; 63 cerr << "Nickname parameter found" << endl;
62 64
63 cerr << "Nickname value == " << 65 cerr << "Nickname value == " <<
64 v.contentLine(EntityNickname)->value()->asString() << 66 v.contentLine(EntityNickname)->value()->asString() <<
65 endl; 67 endl;
66 } 68 }
67 69
68 if (v.has(EntityRevision)) { 70 if (v.has(EntityRevision)) {
69 71
70 cerr << "Revision parameter found" << endl; 72 cerr << "Revision parameter found" << endl;
71 73
72 DateValue * d = 74 DateValue * d =
73 (DateValue *) 75 (DateValue *)
74 v.contentLine(EntityRevision)->value(); 76 v.contentLine(EntityRevision)->value();
75 77
76 assert(d != 0); 78 assert(d != 0);
77 79
78 cerr << "Revision date: " << endl; 80 cerr << "Revision date: " << endl;
79 cerr << "Day : " << d->day() << endl; 81 cerr << "Day : " << d->day() << endl;
80 cerr << "Month : " << d->month()<< endl; 82 cerr << "Month : " << d->month()<< endl;
81 cerr << "Year : " << d->year() << endl; 83 cerr << "Year : " << d->year() << endl;
82 84
83 if (d->hasTime()) { 85 if (d->hasTime()) {
84 cerr << "Revision date has a time component" << endl; 86 cerr << "Revision date has a time component" << endl;
85 cerr << "Revision time: " << endl; 87 cerr << "Revision time: " << endl;
86 cerr << "Hour : " << d->hour()<< endl; 88 cerr << "Hour : " << d->hour()<< endl;
87 cerr << "Minute : " << d->minute()<< endl; 89 cerr << "Minute : " << d->minute()<< endl;
88 cerr << "Second : " << d->second()<< endl; 90 cerr << "Second : " << d->second()<< endl;
89 91
90 } 92 }
91 else cerr << "Revision date does NOT have a time component" << endl; 93 else cerr << "Revision date does NOT have a time component" << endl;
92 } 94 }
93 95
94 if (v.has(EntityURL)) { 96 if (v.has(EntityURL)) {
95 cerr << "URL Parameter found" << endl; 97 cerr << "URL Parameter found" << endl;
96 98
97 cerr << "URL Value == " << 99 cerr << "URL Value == " <<
98 v.contentLine(EntityURL)->value()->asString() << 100 v.contentLine(EntityURL)->value()->asString() <<
99 endl; 101 endl;
100 102
101 URIValue * urlVal = 103 URIValue * urlVal =
102 (URIValue *)v.contentLine(EntityURL)->value(); 104 (URIValue *)v.contentLine(EntityURL)->value();
103 105
104 assert(urlVal != 0); 106 assert(urlVal != 0);
105 107
106 cerr << "URL scheme == " << 108 cerr << "URL scheme == " <<
107 urlVal->scheme() << endl; 109 urlVal->scheme() << endl;
108 110
109 cerr << "URL scheme specific part == " << 111 cerr << "URL scheme specific part == " <<
110 urlVal->schemeSpecificPart() << endl; 112 urlVal->schemeSpecificPart() << endl;
111 } 113 }
112 114
113 if (v.has(EntityN)) { 115 if (v.has(EntityN)) {
114 cerr << "N Parameter found" << endl; 116 cerr << "N Parameter found" << endl;
115 117
116 NValue * n = 118 NValue * n =
117 (NValue *)(v.contentLine(EntityN)->value()); 119 (NValue *)(v.contentLine(EntityN)->value());
118 120
119 cerr << "Family name == " << n->family()<< endl; 121 cerr << "Family name == " << n->family()<< endl;
120 cerr << "Given name == " << n->given()<< endl; 122 cerr << "Given name == " << n->given()<< endl;
121 cerr << "Middle name == " << n->middle()<< endl; 123 cerr << "Middle name == " << n->middle()<< endl;
122 cerr << "Prefix == " << n->prefix()<< endl; 124 cerr << "Prefix == " << n->prefix()<< endl;
123 cerr << "Suffix == " << n->suffix()<< endl; 125 cerr << "Suffix == " << n->suffix()<< endl;
124 } 126 }
125 127
126 cerr << "***************** END VCARD ******************" << endl; 128 cerr << "***************** END VCARD ******************" << endl;
127 } 129 }
128} 130}
129 131
diff --git a/kabc/vcard/testwrite.cpp b/kabc/vcard/testwrite.cpp
index e4bbe7b..846e51a 100644
--- a/kabc/vcard/testwrite.cpp
+++ b/kabc/vcard/testwrite.cpp
@@ -1,41 +1,43 @@
1#include <kaboutdata.h> 1#include <kaboutdata.h>
2#include <kapplication.h> 2#include <kapplication.h>
3#include <kdebug.h> 3#include <kdebug.h>
4#include <klocale.h> 4#include <klocale.h>
5#include <kcmdlineargs.h> 5#include <kcmdlineargs.h>
6 6
7#include <VCard.h> 7#include <VCard.h>
8//Added by qt3to4:
9#include <Q3CString>
8 10
9int main(int argc,char **argv) 11int main(int argc,char **argv)
10{ 12{
11 KAboutData aboutData("testwrite",I18N_NOOP("TestWritevCard"),"0.1"); 13 KAboutData aboutData("testwrite",I18N_NOOP("TestWritevCard"),"0.1");
12 KCmdLineArgs::init(argc,argv,&aboutData); 14 KCmdLineArgs::init(argc,argv,&aboutData);
13 15
14 KApplication app; 16 KApplication app;
15 17
16 kdDebug() << "Test Write VCard" << endl; 18 kdDebug() << "Test Write VCard" << endl;
17 19
18 using namespace VCARD; 20 using namespace VCARD;
19 21
20 VCard v; 22 VCard v;
21 23
22 ContentLine cl1; 24 ContentLine cl1;
23 cl1.setName(EntityTypeToParamName(EntityName)); 25 cl1.setName(EntityTypeToParamName(EntityName));
24 cl1.setValue(new TextValue("Hans Wurst")); 26 cl1.setValue(new TextValue("Hans Wurst"));
25 v.add(cl1); 27 v.add(cl1);
26 28
27 ContentLine cl2; 29 ContentLine cl2;
28 cl2.setName(EntityTypeToParamName(EntityTelephone)); 30 cl2.setName(EntityTypeToParamName(EntityTelephone));
29 cl2.setValue(new TelValue("12345")); 31 cl2.setValue(new TelValue("12345"));
30 ParamList p; 32 ParamList p;
31 p.append( new TelParam("home") ); 33 p.append( new TelParam("home") );
32 p.append( new TelParam("fax") ); 34 p.append( new TelParam("fax") );
33 cl2.setParamList( p ); 35 cl2.setParamList( p );
34 v.add(cl2); 36 v.add(cl2);
35 37
36 QCString str = v.asString(); 38 Q3CString str = v.asString();
37 39
38 kdDebug() << "--- VCard begin ---" << endl 40 kdDebug() << "--- VCard begin ---" << endl
39 << str 41 << str
40 << "--- VCard end ---" << endl; 42 << "--- VCard end ---" << endl;
41} 43}
diff --git a/kabc/vcard21parser.cpp b/kabc/vcard21parser.cpp
index 60d02b8..e24a9dc 100644
--- a/kabc/vcard21parser.cpp
+++ b/kabc/vcard21parser.cpp
@@ -1,607 +1,613 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Mark Westcott <mark@houseoffish.org> 3 Copyright (c) 2001 Mark Westcott <mark@houseoffish.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28#include <qmap.h> 28#include <qmap.h>
29#include <qregexp.h> 29#include <qregexp.h>
30//Added by qt3to4:
31#include <Q3ValueList>
30#include <kmdcodec.h> 32#include <kmdcodec.h>
31 33
32#include "vcard21parser.h" 34#include "vcard21parser.h"
33#include "vcardconverter.h" 35#include "vcardconverter.h"
34 36
35using namespace KABC; 37using namespace KABC;
36 38
37bool VCardLineX::isValid() const 39bool VCardLineX::isValid() const
38{ 40{
39 // Invalid: if it is "begin:vcard" or "end:vcard" 41 // Invalid: if it is "begin:vcard" or "end:vcard"
40 if ( name == VCARD_BEGIN_N || name == VCARD_END_N ) 42 if ( name == VCARD_BEGIN_N || name == VCARD_END_N )
41 return false; 43 return false;
42 44
43 if ( name[0] == 'x' && name[1] == '-' ) // A custom x- line 45 if ( name[0] == 'x' && name[1] == '-' ) // A custom x- line
44 return true; 46 return true;
45 47
46 // This is long but it makes it a bit faster (and saves me from using 48 // This is long but it makes it a bit faster (and saves me from using
47 // a tree which is probably the ideal situation, but a bit memory heavy) 49 // a tree which is probably the ideal situation, but a bit memory heavy)
48 switch( name[0] ) { 50 switch( name[0].unicode() ) {
49 case 'a': 51 case 'a':
50 if ( name == VCARD_ADR && qualified && 52 if ( name == VCARD_ADR && qualified &&
51 (qualifiers.contains(VCARD_ADR_DOM) || 53 (qualifiers.contains(VCARD_ADR_DOM) ||
52 qualifiers.contains(VCARD_ADR_INTL) || 54 qualifiers.contains(VCARD_ADR_INTL) ||
53 qualifiers.contains(VCARD_ADR_POSTAL) || 55 qualifiers.contains(VCARD_ADR_POSTAL) ||
54 qualifiers.contains(VCARD_ADR_HOME) || 56 qualifiers.contains(VCARD_ADR_HOME) ||
55 qualifiers.contains(VCARD_ADR_WORK) || 57 qualifiers.contains(VCARD_ADR_WORK) ||
56 qualifiers.contains(VCARD_ADR_PREF) 58 qualifiers.contains(VCARD_ADR_PREF)
57 ) ) 59 ) )
58 return true; 60 return true;
59 61
60 if ( name == VCARD_AGENT ) 62 if ( name == VCARD_AGENT )
61 return true; 63 return true;
62 break; 64 break;
63 65
64 case 'b': 66 case 'b':
65 if ( name == VCARD_BDAY ) 67 if ( name == VCARD_BDAY )
66 return true; 68 return true;
67 break; 69 break;
68 70
69 case 'c': 71 case 'c':
70 if ( name == VCARD_CATEGORIES ) 72 if ( name == VCARD_CATEGORIES )
71 return true; 73 return true;
72 if ( name == VCARD_CLASS && qualified && 74 if ( name == VCARD_CLASS && qualified &&
73 (qualifiers.contains(VCARD_CLASS_PUBLIC) || 75 (qualifiers.contains(VCARD_CLASS_PUBLIC) ||
74 qualifiers.contains(VCARD_CLASS_PRIVATE) || 76 qualifiers.contains(VCARD_CLASS_PRIVATE) ||
75 qualifiers.contains(VCARD_CLASS_CONFIDENTIAL) 77 qualifiers.contains(VCARD_CLASS_CONFIDENTIAL)
76 ) ) 78 ) )
77 return true; 79 return true;
78 break; 80 break;
79 81
80 case 'e': 82 case 'e':
81 if ( name == VCARD_EMAIL && qualified && 83 if ( name == VCARD_EMAIL && qualified &&
82 (qualifiers.contains(VCARD_EMAIL_INTERNET) || 84 (qualifiers.contains(VCARD_EMAIL_INTERNET) ||
83 qualifiers.contains(VCARD_EMAIL_PREF) || 85 qualifiers.contains(VCARD_EMAIL_PREF) ||
84 qualifiers.contains(VCARD_EMAIL_X400) 86 qualifiers.contains(VCARD_EMAIL_X400)
85 ) ) 87 ) )
86 return true; 88 return true;
87 break; 89 break;
88 90
89 case 'f': 91 case 'f':
90 if ( name == VCARD_FN ) 92 if ( name == VCARD_FN )
91 return true; 93 return true;
92 break; 94 break;
93 95
94 case 'g': 96 case 'g':
95 if ( name == VCARD_GEO ) 97 if ( name == VCARD_GEO )
96 return true; 98 return true;
97 break; 99 break;
98 100
99 case 'k': 101 case 'k':
100 if ( name == VCARD_KEY && qualified && 102 if ( name == VCARD_KEY && qualified &&
101 (qualifiers.contains(VCARD_KEY_X509) || 103 (qualifiers.contains(VCARD_KEY_X509) ||
102 qualifiers.contains(VCARD_KEY_PGP) 104 qualifiers.contains(VCARD_KEY_PGP)
103 ) ) 105 ) )
104 return true; 106 return true;
105 break; 107 break;
106 108
107 case 'l': 109 case 'l':
108 if ( name == VCARD_LABEL ) 110 if ( name == VCARD_LABEL )
109 return true; 111 return true;
110 if ( name == VCARD_LOGO ) 112 if ( name == VCARD_LOGO )
111 return true; 113 return true;
112 break; 114 break;
113 115
114 case 'm': 116 case 'm':
115 if ( name == VCARD_MAILER ) 117 if ( name == VCARD_MAILER )
116 return true; 118 return true;
117 break; 119 break;
118 120
119 case 'n': 121 case 'n':
120 if ( name == VCARD_N ) 122 if ( name == VCARD_N )
121 return true; 123 return true;
122 if ( name == VCARD_NAME ) 124 if ( name == VCARD_NAME )
123 return true; 125 return true;
124 if ( name == VCARD_NICKNAME ) 126 if ( name == VCARD_NICKNAME )
125 return true; 127 return true;
126 if ( name == VCARD_NOTE ) 128 if ( name == VCARD_NOTE )
127 return true; 129 return true;
128 break; 130 break;
129 131
130 case 'o': 132 case 'o':
131 if ( name == VCARD_ORG ) 133 if ( name == VCARD_ORG )
132 return true; 134 return true;
133 break; 135 break;
134 136
135 case 'p': 137 case 'p':
136 if ( name == VCARD_PHOTO ) 138 if ( name == VCARD_PHOTO )
137 return true; 139 return true;
138 if ( name == VCARD_PROFILE ) 140 if ( name == VCARD_PROFILE )
139 return true; 141 return true;
140 if ( name == VCARD_PRODID ) 142 if ( name == VCARD_PRODID )
141 return true; 143 return true;
142 break; 144 break;
143 145
144 case 'r': 146 case 'r':
145 if ( name == VCARD_ROLE ) 147 if ( name == VCARD_ROLE )
146 return true; 148 return true;
147 if ( name == VCARD_REV ) 149 if ( name == VCARD_REV )
148 return true; 150 return true;
149 break; 151 break;
150 152
151 case 's': 153 case 's':
152 if ( name == VCARD_SOURCE ) 154 if ( name == VCARD_SOURCE )
153 return true; 155 return true;
154 if ( name == VCARD_SOUND ) 156 if ( name == VCARD_SOUND )
155 return true; 157 return true;
156 break; 158 break;
157 159
158 case 't': 160 case 't':
159 if ( name == VCARD_TEL && qualified && 161 if ( name == VCARD_TEL && qualified &&
160 (qualifiers.contains(VCARD_TEL_HOME) || 162 (qualifiers.contains(VCARD_TEL_HOME) ||
161 qualifiers.contains(VCARD_TEL_WORK) || 163 qualifiers.contains(VCARD_TEL_WORK) ||
162 qualifiers.contains(VCARD_TEL_PREF) || 164 qualifiers.contains(VCARD_TEL_PREF) ||
163 qualifiers.contains(VCARD_TEL_VOICE) || 165 qualifiers.contains(VCARD_TEL_VOICE) ||
164 qualifiers.contains(VCARD_TEL_FAX) || 166 qualifiers.contains(VCARD_TEL_FAX) ||
165 qualifiers.contains(VCARD_TEL_MSG) || 167 qualifiers.contains(VCARD_TEL_MSG) ||
166 qualifiers.contains(VCARD_TEL_CELL) || 168 qualifiers.contains(VCARD_TEL_CELL) ||
167 qualifiers.contains(VCARD_TEL_PAGER) || 169 qualifiers.contains(VCARD_TEL_PAGER) ||
168 qualifiers.contains(VCARD_TEL_BBS) || 170 qualifiers.contains(VCARD_TEL_BBS) ||
169 qualifiers.contains(VCARD_TEL_MODEM) || 171 qualifiers.contains(VCARD_TEL_MODEM) ||
170 qualifiers.contains(VCARD_TEL_CAR) || 172 qualifiers.contains(VCARD_TEL_CAR) ||
171 qualifiers.contains(VCARD_TEL_ISDN) || 173 qualifiers.contains(VCARD_TEL_ISDN) ||
172 qualifiers.contains(VCARD_TEL_VIDEO) || 174 qualifiers.contains(VCARD_TEL_VIDEO) ||
173 qualifiers.contains(VCARD_TEL_PCS) 175 qualifiers.contains(VCARD_TEL_PCS)
174 ) ) 176 ) )
175 return true; 177 return true;
176 if ( name == VCARD_TZ ) 178 if ( name == VCARD_TZ )
177 return true; 179 return true;
178 if ( name == VCARD_TITLE ) 180 if ( name == VCARD_TITLE )
179 return true; 181 return true;
180 break; 182 break;
181 183
182 case 'u': 184 case 'u':
183 if ( name == VCARD_URL ) 185 if ( name == VCARD_URL )
184 return true; 186 return true;
185 if ( name == VCARD_UID ) 187 if ( name == VCARD_UID )
186 return true; 188 return true;
187 break; 189 break;
188 190
189 case 'v': 191 case 'v':
190 if ( name == VCARD_VERSION ) 192 if ( name == VCARD_VERSION )
191 return true; 193 return true;
192 break; 194 break;
193 default: 195 default:
194 break; 196 break;
195 } 197 }
196 198
197 return false; 199 return false;
198} 200}
199 201
200 202
201VCard21Parser::VCard21Parser() 203VCard21Parser::VCard21Parser()
202{ 204{
203} 205}
204 206
205VCard21Parser::~VCard21Parser() 207VCard21Parser::~VCard21Parser()
206{ 208{
207} 209}
208 210
209void VCard21Parser::readFromString(KABC::AddressBook *addressbook, const QString &data) 211void VCard21Parser::readFromString(KABC::AddressBook *addressbook, const QString &data)
210{ 212{
211 KABC::Addressee mAddressee = readFromString(data); 213 KABC::Addressee mAddressee = readFromString(data);
212 addressbook->insertAddressee(mAddressee); 214 addressbook->insertAddressee(mAddressee);
213} 215}
214 216
215KABC::Addressee VCard21Parser::readFromString( const QString &data) 217KABC::Addressee VCard21Parser::readFromString( const QString &data)
216{ 218{
217 KABC::Addressee addressee; 219 KABC::Addressee addressee;
218 VCard21ParserImpl *mVCard = VCard21ParserImpl::parseVCard(data); 220 VCard21ParserImpl *mVCard = VCard21ParserImpl::parseVCard(data);
219 QString tmpStr; 221 QString tmpStr;
220 222
221 // Check if parsing failed 223 // Check if parsing failed
222 if (mVCard == 0) 224 if (mVCard == 0)
223 { 225 {
224 kdDebug() << "Parsing failed" << endl; 226 kdDebug() << "Parsing failed" << endl;
225 return addressee; 227 return addressee;
226 } 228 }
227 //set the addressees name and formated name 229 //set the addressees name and formated name
228 QStringList tmpList = mVCard->getValues(VCARD_N); 230 QStringList tmpList = mVCard->getValues(VCARD_N);
229 QString formattedName = ""; 231 QString formattedName = "";
230 if (tmpList.count() > 0) 232 if (tmpList.count() > 0)
231 addressee.setFamilyName(tmpList[0]); 233 addressee.setFamilyName(tmpList[0]);
232 if (tmpList.count() > 1) 234 if (tmpList.count() > 1)
233 addressee.setGivenName(tmpList[1]); 235 addressee.setGivenName(tmpList[1]);
234 if (tmpList.count() > 2) 236 if (tmpList.count() > 2)
235 addressee.setAdditionalName(tmpList[2]); 237 addressee.setAdditionalName(tmpList[2]);
236 if (tmpList.count() > 3) 238 if (tmpList.count() > 3)
237 addressee.setPrefix(tmpList[3]); 239 addressee.setPrefix(tmpList[3]);
238 if (tmpList.count() > 4) 240 if (tmpList.count() > 4)
239 addressee.setSuffix(tmpList[4]); 241 addressee.setSuffix(tmpList[4]);
240 242
241 tmpStr = (mVCard->getValue(VCARD_FN)); 243 tmpStr = (mVCard->getValue(VCARD_FN));
242 if (!tmpStr.isEmpty()) 244 if (!tmpStr.isEmpty())
243 addressee.setFormattedName(tmpStr); 245 addressee.setFormattedName(tmpStr);
244 246
245 //set the addressee's nick name 247 //set the addressee's nick name
246 tmpStr = mVCard->getValue(VCARD_NICKNAME); 248 tmpStr = mVCard->getValue(VCARD_NICKNAME);
247 addressee.setNickName(tmpStr); 249 addressee.setNickName(tmpStr);
248 //set the addressee's organisation 250 //set the addressee's organisation
249 tmpStr = mVCard->getValue(VCARD_ORG); 251 tmpStr = mVCard->getValue(VCARD_ORG);
250 addressee.setOrganization(tmpStr); 252 addressee.setOrganization(tmpStr);
251 //set the addressee's title 253 //set the addressee's title
252 tmpStr = mVCard->getValue(VCARD_TITLE); 254 tmpStr = mVCard->getValue(VCARD_TITLE);
253 addressee.setTitle(tmpStr); 255 addressee.setTitle(tmpStr);
254 //set the addressee's email - we can only deal with two. The preferenced one and one other. 256 //set the addressee's email - we can only deal with two. The preferenced one and one other.
255 tmpStr = mVCard->getValue(VCARD_EMAIL, VCARD_EMAIL_INTERNET); 257 tmpStr = mVCard->getValue(VCARD_EMAIL, VCARD_EMAIL_INTERNET);
256 addressee.insertEmail(tmpStr, false); 258 addressee.insertEmail(tmpStr, false);
257 tmpStr = mVCard->getValue(VCARD_EMAIL,VCARD_EMAIL_PREF); 259 tmpStr = mVCard->getValue(VCARD_EMAIL,VCARD_EMAIL_PREF);
258 addressee.insertEmail(tmpStr, true); 260 addressee.insertEmail(tmpStr, true);
259 //set the addressee's url 261 //set the addressee's url
260 tmpStr = mVCard->getValue(VCARD_URL); 262 tmpStr = mVCard->getValue(VCARD_URL);
261 if (tmpStr.isEmpty()) tmpStr = mVCard->getValue(VCARD_URL, VCARD_ADR_WORK); 263 if (tmpStr.isEmpty()) tmpStr = mVCard->getValue(VCARD_URL, VCARD_ADR_WORK);
262 if (tmpStr.isEmpty()) tmpStr = mVCard->getValue(VCARD_URL, VCARD_ADR_HOME); 264 if (tmpStr.isEmpty()) tmpStr = mVCard->getValue(VCARD_URL, VCARD_ADR_HOME);
263 if (!tmpStr.isEmpty()) { 265 if (!tmpStr.isEmpty()) {
264 addressee.setUrl(KURL(tmpStr)); 266 addressee.setUrl(KURL(tmpStr));
265 } 267 }
266 268
267 //set the addressee's birthday 269 //set the addressee's birthday
268 tmpStr = mVCard->getValue(VCARD_BDAY); 270 tmpStr = mVCard->getValue(VCARD_BDAY);
269 addressee.setBirthday(VCardStringToDate(tmpStr)); 271 addressee.setBirthday(VCardStringToDate(tmpStr));
270 272
271 //set the addressee's phone numbers 273 //set the addressee's phone numbers
272 for ( QValueListIterator<VCardLineX> i = mVCard->_vcdata->begin();i != mVCard->_vcdata->end(); ++i ) { 274 for ( Q3ValueListIterator<VCardLineX> i = mVCard->_vcdata->begin();i != mVCard->_vcdata->end(); ++i ) {
273 if ( (*i).name == VCARD_TEL ) { 275 if ( (*i).name == VCARD_TEL ) {
274 int type = 0; 276 int type = 0;
275 if ( (*i).qualified ) { 277 if ( (*i).qualified ) {
276 if ( (*i).qualifiers.contains( VCARD_TEL_HOME ) ) 278 if ( (*i).qualifiers.contains( VCARD_TEL_HOME ) )
277 type |= PhoneNumber::Home; 279 type |= PhoneNumber::Home;
278 if ( (*i).qualifiers.contains( VCARD_TEL_WORK ) ) 280 if ( (*i).qualifiers.contains( VCARD_TEL_WORK ) )
279 type |= PhoneNumber::Work; 281 type |= PhoneNumber::Work;
280 if ( (*i).qualifiers.contains( VCARD_TEL_PREF ) ) 282 if ( (*i).qualifiers.contains( VCARD_TEL_PREF ) )
281 type |= PhoneNumber::Pref; 283 type |= PhoneNumber::Pref;
282 if ( (*i).qualifiers.contains( VCARD_TEL_VOICE ) ) 284 if ( (*i).qualifiers.contains( VCARD_TEL_VOICE ) )
283 type |= PhoneNumber::Voice; 285 type |= PhoneNumber::Voice;
284 if ( (*i).qualifiers.contains( VCARD_TEL_FAX ) ) 286 if ( (*i).qualifiers.contains( VCARD_TEL_FAX ) )
285 type |= PhoneNumber::Fax; 287 type |= PhoneNumber::Fax;
286 if ( (*i).qualifiers.contains( VCARD_TEL_MSG ) ) 288 if ( (*i).qualifiers.contains( VCARD_TEL_MSG ) )
287 type |= PhoneNumber::Msg; 289 type |= PhoneNumber::Msg;
288 if ( (*i).qualifiers.contains( VCARD_TEL_CELL ) ) 290 if ( (*i).qualifiers.contains( VCARD_TEL_CELL ) )
289 type |= PhoneNumber::Cell; 291 type |= PhoneNumber::Cell;
290 if ( (*i).qualifiers.contains( VCARD_TEL_PAGER ) ) 292 if ( (*i).qualifiers.contains( VCARD_TEL_PAGER ) )
291 type |= PhoneNumber::Pager; 293 type |= PhoneNumber::Pager;
292 if ( (*i).qualifiers.contains( VCARD_TEL_BBS ) ) 294 if ( (*i).qualifiers.contains( VCARD_TEL_BBS ) )
293 type |= PhoneNumber::Bbs; 295 type |= PhoneNumber::Bbs;
294 if ( (*i).qualifiers.contains( VCARD_TEL_MODEM ) ) 296 if ( (*i).qualifiers.contains( VCARD_TEL_MODEM ) )
295 type |= PhoneNumber::Modem; 297 type |= PhoneNumber::Modem;
296 if ( (*i).qualifiers.contains( VCARD_TEL_CAR ) ) 298 if ( (*i).qualifiers.contains( VCARD_TEL_CAR ) )
297 type |= PhoneNumber::Car; 299 type |= PhoneNumber::Car;
298 if ( (*i).qualifiers.contains( VCARD_TEL_ISDN ) ) 300 if ( (*i).qualifiers.contains( VCARD_TEL_ISDN ) )
299 type |= PhoneNumber::Isdn; 301 type |= PhoneNumber::Isdn;
300 if ( (*i).qualifiers.contains( VCARD_TEL_VIDEO ) ) 302 if ( (*i).qualifiers.contains( VCARD_TEL_VIDEO ) )
301 type |= PhoneNumber::Video; 303 type |= PhoneNumber::Video;
302 if ( (*i).qualifiers.contains( VCARD_TEL_PCS ) ) 304 if ( (*i).qualifiers.contains( VCARD_TEL_PCS ) )
303 type |= PhoneNumber::Pcs; 305 type |= PhoneNumber::Pcs;
304 306
305 } 307 }
306 addressee.insertPhoneNumber( PhoneNumber( (*i).parameters[ 0 ], type ) ); 308 addressee.insertPhoneNumber( PhoneNumber( (*i).parameters[ 0 ], type ) );
307 } 309 }
308 } 310 }
309 addressee.makePhoneNumbersOLcompatible(); 311 addressee.makePhoneNumbersOLcompatible();
310 //set the addressee's addresses 312 //set the addressee's addresses
311 for ( QValueListIterator<VCardLineX> i = mVCard->_vcdata->begin();i != mVCard->_vcdata->end(); ++i ) { 313 for ( Q3ValueListIterator<VCardLineX> i = mVCard->_vcdata->begin();i != mVCard->_vcdata->end(); ++i ) {
312 if ( (*i).name == VCARD_ADR ) { 314 if ( (*i).name == VCARD_ADR ) {
313 int type = 0; 315 int type = 0;
314 if ( (*i).qualified ) { 316 if ( (*i).qualified ) {
315 if ( (*i).qualifiers.contains( VCARD_ADR_DOM ) ) 317 if ( (*i).qualifiers.contains( VCARD_ADR_DOM ) )
316 type |= Address::Dom; 318 type |= Address::Dom;
317 if ( (*i).qualifiers.contains( VCARD_ADR_INTL ) ) 319 if ( (*i).qualifiers.contains( VCARD_ADR_INTL ) )
318 type |= Address::Intl; 320 type |= Address::Intl;
319 if ( (*i).qualifiers.contains( VCARD_ADR_POSTAL ) ) 321 if ( (*i).qualifiers.contains( VCARD_ADR_POSTAL ) )
320 type |= Address::Postal; 322 type |= Address::Postal;
321 if ( (*i).qualifiers.contains( VCARD_ADR_PARCEL ) ) 323 if ( (*i).qualifiers.contains( VCARD_ADR_PARCEL ) )
322 type |= Address::Parcel; 324 type |= Address::Parcel;
323 if ( (*i).qualifiers.contains( VCARD_ADR_HOME ) ) 325 if ( (*i).qualifiers.contains( VCARD_ADR_HOME ) )
324 type |= Address::Home; 326 type |= Address::Home;
325 if ( (*i).qualifiers.contains( VCARD_ADR_WORK ) ) 327 if ( (*i).qualifiers.contains( VCARD_ADR_WORK ) )
326 type |= Address::Work; 328 type |= Address::Work;
327 if ( (*i).qualifiers.contains( VCARD_ADR_PREF ) ) 329 if ( (*i).qualifiers.contains( VCARD_ADR_PREF ) )
328 type |= Address::Pref; 330 type |= Address::Pref;
329 } 331 }
330 addressee.insertAddress( readAddressFromQStringList( (*i).parameters, type ) ); 332 QStringList tmp;
333 for(Q3ValueList<QString>::const_iterator ii=(*i).parameters.begin();ii!=(*i).parameters.end();++ii)
334 tmp.push_back(*ii);
335 addressee.insertAddress( readAddressFromQStringList( tmp, type ) );
331 } 336 }
332 } 337 }
333 338
334 //set the addressee's delivery label 339 //set the addressee's delivery label
335 tmpStr = mVCard->getValue(VCARD_LABEL); 340 tmpStr = mVCard->getValue(VCARD_LABEL);
336 if (!tmpStr.isEmpty()) { 341 if (!tmpStr.isEmpty()) {
337qDebug("VCard21Parser::readFromString please verify if replace is correct"); 342qDebug("VCard21Parser::readFromString please verify if replace is correct");
338//US tmpStr.replace("\r\n","\n"); 343//US tmpStr.replace("\r\n","\n");
339 tmpStr.replace( QRegExp("\r\n"), "\n" ); 344 tmpStr.replace( QRegExp("\r\n"), "\n" );
340 Address tmpAddress; 345 Address tmpAddress;
341 tmpAddress.setLabel(tmpStr); 346 tmpAddress.setLabel(tmpStr);
342 addressee.insertAddress(tmpAddress); 347 addressee.insertAddress(tmpAddress);
343 } 348 }
344 349
345 //set the addressee's notes 350 //set the addressee's notes
346 tmpStr = mVCard->getValue(VCARD_NOTE); 351 tmpStr = mVCard->getValue(VCARD_NOTE);
347qDebug("VCard21Parser::readFromString please verify if correct"); 352qDebug("VCard21Parser::readFromString please verify if correct");
348//US tmpStr.replace("\r\n","\n"); 353//US tmpStr.replace("\r\n","\n");
349 tmpStr.replace( QRegExp("\r\n"), "\n" ); 354 tmpStr.replace( QRegExp("\r\n"), "\n" );
350 addressee.setNote(tmpStr); 355 addressee.setNote(tmpStr);
351 356
352 //set the addressee's timezone 357 //set the addressee's timezone
353 tmpStr = mVCard->getValue(VCARD_TZ); 358 tmpStr = mVCard->getValue(VCARD_TZ);
354 TimeZone tmpZone(tmpStr.toInt()); 359 TimeZone tmpZone(tmpStr.toInt());
355 addressee.setTimeZone(tmpZone); 360 addressee.setTimeZone(tmpZone);
356 361
357 //set the addressee's geographical position 362 //set the addressee's geographical position
358 tmpList = mVCard->getValues(VCARD_GEO); 363 tmpList = mVCard->getValues(VCARD_GEO);
359 if (tmpList.count()==2) 364 if (tmpList.count()==2)
360 { 365 {
361 tmpStr = tmpList[0]; 366 tmpStr = tmpList[0];
362 float glat = tmpStr.toFloat(); 367 float glat = tmpStr.toFloat();
363 tmpStr = tmpList[1]; 368 tmpStr = tmpList[1];
364 float glong = tmpStr.toFloat(); 369 float glong = tmpStr.toFloat();
365 Geo tmpGeo(glat,glong); 370 Geo tmpGeo(glat,glong);
366 addressee.setGeo(tmpGeo); 371 addressee.setGeo(tmpGeo);
367 } 372 }
368 373
369 //set the last revision date 374 //set the last revision date
370 tmpStr = mVCard->getValue(VCARD_REV); 375 tmpStr = mVCard->getValue(VCARD_REV);
371 addressee.setRevision(VCardStringToDate(tmpStr)); 376 addressee.setRevision(VCardStringToDate(tmpStr));
372 377
373 //set the role of the addressee 378 //set the role of the addressee
374 tmpStr = mVCard->getValue(VCARD_ROLE); 379 tmpStr = mVCard->getValue(VCARD_ROLE);
375 addressee.setRole(tmpStr); 380 addressee.setRole(tmpStr);
376 381
377 return addressee; 382 return addressee;
378} 383}
379 384
380 385
381 386
382KABC::Address VCard21Parser::readAddressFromQStringList ( const QStringList &data, const int type ) 387KABC::Address VCard21Parser::readAddressFromQStringList ( const QStringList &data, const int type )
383{ 388{
384 KABC::Address mAddress; 389 KABC::Address mAddress;
385 mAddress.setType( type ); 390 mAddress.setType( type );
386 391
387 if ( data.count() > 0 ) 392 if ( data.count() > 0 )
388 mAddress.setPostOfficeBox( data[0] ); 393 mAddress.setPostOfficeBox( data[0] );
389 if ( data.count() > 1 ) 394 if ( data.count() > 1 )
390 mAddress.setExtended( data[1] ); 395 mAddress.setExtended( data[1] );
391 if ( data.count() > 2 ) 396 if ( data.count() > 2 )
392 mAddress.setStreet( data[2] ); 397 mAddress.setStreet( data[2] );
393 if ( data.count() > 3 ) 398 if ( data.count() > 3 )
394 mAddress.setLocality( data[3] ); 399 mAddress.setLocality( data[3] );
395 if ( data.count() > 4 ) 400 if ( data.count() > 4 )
396 mAddress.setRegion( data[4] ); 401 mAddress.setRegion( data[4] );
397 if ( data.count() > 5 ) 402 if ( data.count() > 5 )
398 mAddress.setPostalCode( data[5] ); 403 mAddress.setPostalCode( data[5] );
399 if ( data.count() > 6 ) 404 if ( data.count() > 6 )
400 mAddress.setCountry( data[6] ); 405 mAddress.setCountry( data[6] );
401 406
402 return mAddress; 407 return mAddress;
403} 408}
404 409
405 410
406VCard21ParserImpl *VCard21ParserImpl::parseVCard( const QString& vc, int *err ) 411VCard21ParserImpl *VCard21ParserImpl::parseVCard( const QString& vc, int *err )
407{ 412{
408 int _err = 0; 413 int _err = 0;
409 int _state = VC_STATE_BEGIN; 414 int _state = VC_STATE_BEGIN;
410 415
411 QValueList<VCardLineX> *_vcdata; 416 Q3ValueList<VCardLineX> *_vcdata;
412 QValueList<QString> lines; 417 QStringList lines;
413 418
414 _vcdata = new QValueList<VCardLineX>; 419 _vcdata = new Q3ValueList<VCardLineX>;
415 420
416 lines = QStringList::split( QRegExp( "[\x0d\x0a]" ), vc ); 421 lines = QStringList::split( QRegExp( "[\x0d\x0a]" ), vc );
417 422
418 // for each line in the vCard 423 // for each line in the vCard
419 for ( QStringList::Iterator j = lines.begin(); j != lines.end(); ++j ) { 424 for ( QStringList::Iterator j = lines.begin(); j != lines.end(); ++j ) {
420 VCardLineX _vcl; 425 VCardLineX _vcl;
421 426
422 // take spaces off the end - ugly but necessary hack 427 // take spaces off the end - ugly but necessary hack
423 for ( int g = (*j).length()-1; g > 0 && (*j)[g].isSpace(); --g ) 428 for ( int g = (*j).length()-1; g > 0 && (*j)[g].isSpace(); --g )
424 (*j)[g] = 0; 429 (*j)[g] = 0;
425 430
426 // first token: 431 // first token:
427 // verify state, update if necessary 432 // verify state, update if necessary
428 if ( _state & VC_STATE_BEGIN) { 433 if ( _state & VC_STATE_BEGIN) {
429 if ( !qstricmp( (*j).latin1(), VCARD_BEGIN ) ) { 434 if ( !qstricmp( (*j).latin1(), VCARD_BEGIN ) ) {
430 _state = VC_STATE_BODY; 435 _state = VC_STATE_BODY;
431 continue; 436 continue;
432 } else { 437 } else {
433 _err = VC_ERR_NO_BEGIN; 438 _err = VC_ERR_NO_BEGIN;
434 break; 439 break;
435 } 440 }
436 } else if ( _state & VC_STATE_BODY ) { 441 } else if ( _state & VC_STATE_BODY ) {
437 if ( !qstricmp( (*j).latin1(), VCARD_END ) ) { 442 if ( !qstricmp( (*j).latin1(), VCARD_END ) ) {
438 _state |= VC_STATE_END; 443 _state |= VC_STATE_END;
439 break; 444 break;
440 } 445 }
441 446
442 // split into two tokens 447 // split into two tokens
443 int colon = (*j).find( ':' ); 448 int colon = (*j).find( ':' );
444 if ( colon < 0 ) { 449 if ( colon < 0 ) {
445 _err = VC_ERR_INVALID_LINE; 450 _err = VC_ERR_INVALID_LINE;
446 break; 451 break;
447 } 452 }
448 453
449 QString key = (*j).left( colon ); 454 QString key = (*j).left( colon );
450 QString value = (*j).mid( colon + 1 ); 455 QString value = (*j).mid( colon + 1 );
451 456
452 // check for qualifiers and 457 // check for qualifiers and
453 // set name, qualified, qualifier(s) 458 // set name, qualified, qualifier(s)
454 QStringList keyTokens = QStringList::split( ';', key ); 459 QStringList keyTokens = QStringList::split( ';', key );
455 bool qp = false, first_pass = true; 460 bool qp = false, first_pass = true;
456 bool b64 = false; 461 bool b64 = false;
457 462
458 if ( keyTokens.count() > 0 ) { 463 if ( keyTokens.count() > 0 ) {
459 _vcl.qualified = false; 464 _vcl.qualified = false;
460 _vcl.name = keyTokens[ 0 ].lower(); 465 _vcl.name = keyTokens[ 0 ].lower();
461 466
462 for ( QStringList::Iterator z = keyTokens.begin(); z != keyTokens.end(); ++z ) { 467 for ( QStringList::Iterator z = keyTokens.begin(); z != keyTokens.end(); ++z ) {
463 QString zz = (*z).lower(); 468 QString zz = (*z).lower();
464 if ( zz == VCARD_QUOTED_PRINTABLE || zz == VCARD_ENCODING_QUOTED_PRINTABLE ) { 469 if ( zz == VCARD_QUOTED_PRINTABLE || zz == VCARD_ENCODING_QUOTED_PRINTABLE ) {
465 qp = true; 470 qp = true;
466 } else if ( zz == VCARD_BASE64 ) { 471 } else if ( zz == VCARD_BASE64 ) {
467 b64 = true; 472 b64 = true;
468 } else if ( !first_pass ) { 473 } else if ( !first_pass ) {
469 _vcl.qualified = true; 474 _vcl.qualified = true;
470 _vcl.qualifiers.append( zz ); 475 _vcl.qualifiers.append( zz );
471 } 476 }
472 first_pass = false; 477 first_pass = false;
473 } 478 }
474 } else { 479 } else {
475 _err = VC_ERR_INVALID_LINE; 480 _err = VC_ERR_INVALID_LINE;
476 } 481 }
477 482
478 if ( _err != 0 ) 483 if ( _err != 0 )
479 break; 484 break;
480 485
481 if ( _vcl.name == VCARD_VERSION ) 486 if ( _vcl.name == VCARD_VERSION )
482 _state |= VC_STATE_HAVE_VERSION; 487 _state |= VC_STATE_HAVE_VERSION;
483 488
484 if ( _vcl.name == VCARD_N || _vcl.name == VCARD_FN ) 489 if ( _vcl.name == VCARD_N || _vcl.name == VCARD_FN )
485 _state |= VC_STATE_HAVE_N; 490 _state |= VC_STATE_HAVE_N;
486 491
487 // second token: 492 // second token:
488 // split into tokens by ; 493 // split into tokens by ;
489 // add to parameters vector 494 // add to parameters vector
490 if ( b64 ) { 495 if ( b64 ) {
491 if ( value.at( value.length() - 1 ) != '=' ) 496 if ( value.at( value.length() - 1 ) != '=' )
492 do { 497 do {
493 value += *( ++j ); 498 value += *( ++j );
494 } while ( (*j).at( (*j).length() - 1 ) != '=' ); 499 } while ( (*j).at( (*j).length() - 1 ) != '=' );
495 } else { 500 } else {
496 if ( qp ) { // join any split lines 501 if ( qp ) { // join any split lines
497 while ( value.at( value.length() - 1 ) == '=' ) { 502 while ( value.at( value.length() - 1 ) == '=' ) {
498 value.remove( value.length() - 1, 1 ); 503 value.remove( value.length() - 1, 1 );
499 value.append(*( ++j )); 504 value.append(*( ++j ));
500 } 505 }
501 } 506 }
502 _vcl.parameters = QStringList::split( ';', value, true ); 507 _vcl.parameters = QStringList::split( ';', value, true );
503 if ( qp ) { // decode the quoted printable 508 if ( qp ) { // decode the quoted printable
504 for ( QStringList::Iterator z = _vcl.parameters.begin(); z != _vcl.parameters.end(); ++z ) 509 for ( QLinkedList<QString>::Iterator z = _vcl.parameters.begin(); z != _vcl.parameters.end(); ++z )
505 *z = KCodecs::quotedPrintableDecode( (*z).latin1() ); 510 *z = KCodecs::quotedPrintableDecode( (Q3CString)(*z).latin1() );
506 } 511 }
507 } 512 }
508 } else { 513 } else {
509 _err = VC_ERR_INTERNAL; 514 _err = VC_ERR_INTERNAL;
510 break; 515 break;
511 } 516 }
512 517
513 // validate VCardLineX 518 // validate VCardLineX
514 if ( !_vcl.isValid() ) { 519 if ( !_vcl.isValid() ) {
515 _err = VC_ERR_INVALID_LINE; 520 _err = VC_ERR_INVALID_LINE;
516 break; 521 break;
517 } 522 }
518 523
519 // add to vector 524 // add to vector
520 _vcdata->append( _vcl ); 525 _vcdata->append( _vcl );
521 } 526 }
522 527
523 // errors to check at the last minute (exit state related) 528 // errors to check at the last minute (exit state related)
524 if ( _err == 0 ) { 529 if ( _err == 0 ) {
525 if ( !( _state & VC_STATE_END ) ) // we have to have an end!! 530 if ( !( _state & VC_STATE_END ) ) // we have to have an end!!
526 _err = VC_ERR_NO_END; 531 _err = VC_ERR_NO_END;
527 532
528 if ( !( _state & VC_STATE_HAVE_N ) || // we have to have the mandatories! 533 if ( !( _state & VC_STATE_HAVE_N ) || // we have to have the mandatories!
529 !( _state & VC_STATE_HAVE_VERSION ) ) 534 !( _state & VC_STATE_HAVE_VERSION ) )
530 _err = VC_ERR_MISSING_MANDATORY; 535 _err = VC_ERR_MISSING_MANDATORY;
531 } 536 }
532 537
533 // set the error message if we can, and only return an object 538 // set the error message if we can, and only return an object
534 // if the vCard was valid. 539 // if the vCard was valid.
535 if ( err ) 540 if ( err )
536 *err = _err; 541 *err = _err;
537 542
538 if ( _err != 0 ) { 543 if ( _err != 0 ) {
539 delete _vcdata; 544 delete _vcdata;
540 return 0; 545 return 0;
541 } 546 }
542 547
543 return new VCard21ParserImpl( _vcdata ); 548 return new VCard21ParserImpl( _vcdata );
544} 549}
545 550
546VCard21ParserImpl::VCard21ParserImpl(QValueList<VCardLineX> *_vcd) : _vcdata(_vcd) 551VCard21ParserImpl::VCard21ParserImpl(Q3ValueList<VCardLineX> *_vcd) : _vcdata(_vcd)
547{ 552{
548} 553}
549 554
550 555
551QString VCard21ParserImpl::getValue(const QString& name, const QString& qualifier) 556QString VCard21ParserImpl::getValue(const QString& name, const QString& qualifier)
552{ 557{
553 QString failed; 558 QString failed;
554 const QString lowname = name.lower(); 559 const QString lowname = name.lower();
555 const QString lowqualifier = qualifier.lower(); 560 const QString lowqualifier = qualifier.lower();
556 561
557 for (QValueListIterator<VCardLineX> i = _vcdata->begin();i != _vcdata->end();++i) { 562 for (Q3ValueListIterator<VCardLineX> i = _vcdata->begin();i != _vcdata->end();++i) {
558 if ((*i).name == lowname && (*i).qualified && (*i).qualifiers.contains(lowqualifier)) { 563 if ((*i).name == lowname && (*i).qualified && (*i).qualifiers.contains(lowqualifier)) {
559 if ((*i).parameters.count() > 0) 564 if ((*i).parameters.count() > 0)
560 return (*i).parameters[0]; 565 return (*i).parameters[0];
561 else return failed; 566 else return failed;
562 } 567 }
563 } 568 }
564 return failed; 569 return failed;
565} 570}
566 571
567 572
568QString VCard21ParserImpl::getValue(const QString& name) 573QString VCard21ParserImpl::getValue(const QString& name)
569{ 574{
570 QString failed; 575 QString failed;
571 const QString lowname = name.lower(); 576 const QString lowname = name.lower();
572 577
573 for (QValueListIterator<VCardLineX> i = _vcdata->begin();i != _vcdata->end();++i) { 578 for (Q3ValueListIterator<VCardLineX> i = _vcdata->begin();i != _vcdata->end();++i) {
574 if ((*i).name == lowname && !(*i).qualified) { 579 if ((*i).name == lowname && !(*i).qualified) {
575 if ((*i).parameters.count() > 0) 580 if ((*i).parameters.count() > 0)
576 return (*i).parameters[0]; 581 return (*i).parameters[0];
577 else return failed; 582 else return failed;
578 } 583 }
579 } 584 }
580 return failed; 585 return failed;
581} 586}
582 587
583 588
584QStringList VCard21ParserImpl::getValues(const QString& name) 589QStringList VCard21ParserImpl::getValues(const QString& name)
585{ 590{
586 const QString lowname = name.lower(); 591 const QString lowname = name.lower();
587 for (QValueListIterator<VCardLineX> i = _vcdata->begin();i != _vcdata->end();++i) { 592 for (Q3ValueListIterator<VCardLineX> i = _vcdata->begin();i != _vcdata->end();++i) {
588 if ((*i).name == lowname && !(*i).qualified) 593 if ((*i).name == lowname && !(*i).qualified) {
589 return (*i).parameters; 594 return QStringList( (*i).parameters );
595 }
590 } 596 }
591 // failed. 597 // failed.
592 return QStringList(); 598 return QStringList();
593} 599}
594 600
595QStringList VCard21ParserImpl::getValues(const QString& name, const QString& qualifier) 601QStringList VCard21ParserImpl::getValues(const QString& name, const QString& qualifier)
596{ 602{
597 const QString lowname = name.lower(); 603 const QString lowname = name.lower();
598 const QString lowqualifier = qualifier.lower(); 604 const QString lowqualifier = qualifier.lower();
599 for (QValueListIterator<VCardLineX> i = _vcdata->begin();i != _vcdata->end();++i) { 605 for (Q3ValueListIterator<VCardLineX> i = _vcdata->begin();i != _vcdata->end();++i) {
600 if ((*i).name == lowname && (*i).qualified && (*i).qualifiers.contains(lowqualifier)) 606 if ((*i).name == lowname && (*i).qualified && (*i).qualifiers.contains(lowqualifier))
601 return (*i).parameters; 607 return QStringList( (*i).parameters );
602 } 608 }
603 // failed. 609 // failed.
604 return QStringList(); 610 return QStringList();
605} 611}
606 612
607 613
diff --git a/kabc/vcard21parser.h b/kabc/vcard21parser.h
index 77e69b6..80ba6ef 100644
--- a/kabc/vcard21parser.h
+++ b/kabc/vcard21parser.h
@@ -1,226 +1,226 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 3
4 Copyright (c) 2002 Mark Westcott <mark@houseoffish.org> 4 Copyright (c) 2002 Mark Westcott <mark@houseoffish.org>
5 Copyright (c) 2000 George Staikos <staikos@kde.org> 5 Copyright (c) 2000 George Staikos <staikos@kde.org>
6 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
10 10
11 This library is distributed in the hope that it will be useful, 11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details. 14 Library General Public License for more details.
15 15
16 You should have received a copy of the GNU Library General Public License 16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to 17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. 19 Boston, MA 02111-1307, USA.
20*/ 20*/
21 21
22/* 22/*
23Enhanced Version of the file for platform independent KDE tools. 23Enhanced Version of the file for platform independent KDE tools.
24Copyright (c) 2004 Ulf Schenk 24Copyright (c) 2004 Ulf Schenk
25 25
26$Id$ 26$Id$
27*/ 27*/
28 28
29#ifndef KABC_VCARD21FORMAT_H 29#ifndef KABC_VCARD21FORMAT_H
30#define KABC_VCARD21FORMAT_H 30#define KABC_VCARD21FORMAT_H
31 31
32#include <qdatetime.h> 32#include <qdatetime.h>
33#include <kdebug.h> 33#include <kdebug.h>
34#include <qregexp.h> 34#include <qregexp.h>
35#include <qstring.h> 35#include <qstring.h>
36#include <kurl.h> 36#include <kurl.h>
37#include <qvaluelist.h> 37#include <q3valuelist.h>
38 38
39#include "addressee.h" 39#include "addressee.h"
40#include "addressbook.h" 40#include "addressbook.h"
41#include "phonenumber.h" 41#include "phonenumber.h"
42 42
43 43
44#define VCARD_BEGIN "begin:vcard" 44#define VCARD_BEGIN "begin:vcard"
45#define VCARD_END "end:vcard" 45#define VCARD_END "end:vcard"
46#define VCARD_BEGIN_N "begin" 46#define VCARD_BEGIN_N "begin"
47#define VCARD_END_N "end" 47#define VCARD_END_N "end"
48#define VCARD_VERSION "version" 48#define VCARD_VERSION "version"
49 49
50#define VCARD_FN "fn" 50#define VCARD_FN "fn"
51#define VCARD_N "n" 51#define VCARD_N "n"
52 52
53// optional 53// optional
54#define VCARD_NAME "name" 54#define VCARD_NAME "name"
55#define VCARD_NICKNAME "nickname" 55#define VCARD_NICKNAME "nickname"
56#define VCARD_PHOTO "photo" 56#define VCARD_PHOTO "photo"
57#define VCARD_BDAY "bday" 57#define VCARD_BDAY "bday"
58#define VCARD_ADR "adr" 58#define VCARD_ADR "adr"
59 59
60// types 60// types
61#define VCARD_ADR_DOM "dom" 61#define VCARD_ADR_DOM "dom"
62#define VCARD_ADR_INTL "intl" 62#define VCARD_ADR_INTL "intl"
63#define VCARD_ADR_POSTAL "postal" 63#define VCARD_ADR_POSTAL "postal"
64#define VCARD_ADR_PARCEL "parcel" 64#define VCARD_ADR_PARCEL "parcel"
65#define VCARD_ADR_HOME "home" 65#define VCARD_ADR_HOME "home"
66#define VCARD_ADR_WORK "work" 66#define VCARD_ADR_WORK "work"
67#define VCARD_ADR_PREF "pref" 67#define VCARD_ADR_PREF "pref"
68// values 68// values
69#define VCARD_ADR_POBOX "PO Box" 69#define VCARD_ADR_POBOX "PO Box"
70#define VCARD_ADR_EXTADR "Extended Address" 70#define VCARD_ADR_EXTADR "Extended Address"
71#define VCARD_ADR_STREET "Street" 71#define VCARD_ADR_STREET "Street"
72#define VCARD_ADR_LOCALITY "Locality" 72#define VCARD_ADR_LOCALITY "Locality"
73#define VCARD_ADR_REGION "Region" 73#define VCARD_ADR_REGION "Region"
74#define VCARD_ADR_POSTCODE "Postal Code" 74#define VCARD_ADR_POSTCODE "Postal Code"
75#define VCARD_ADR_COUNTRY "Country Name" 75#define VCARD_ADR_COUNTRY "Country Name"
76#define VCARD_LABEL "label" 76#define VCARD_LABEL "label"
77#define VCARD_PROFILE "profile" 77#define VCARD_PROFILE "profile"
78#define VCARD_SOURCE "source" 78#define VCARD_SOURCE "source"
79#define VCARD_TEL "tel" 79#define VCARD_TEL "tel"
80// types 80// types
81#define VCARD_TEL_HOME "home" 81#define VCARD_TEL_HOME "home"
82#define VCARD_TEL_WORK "work" 82#define VCARD_TEL_WORK "work"
83#define VCARD_TEL_PREF "pref" 83#define VCARD_TEL_PREF "pref"
84#define VCARD_TEL_VOICE "voice" 84#define VCARD_TEL_VOICE "voice"
85#define VCARD_TEL_FAX "fax" 85#define VCARD_TEL_FAX "fax"
86#define VCARD_TEL_MSG "msg" 86#define VCARD_TEL_MSG "msg"
87#define VCARD_TEL_CELL "cell" 87#define VCARD_TEL_CELL "cell"
88#define VCARD_TEL_PAGER "pager" 88#define VCARD_TEL_PAGER "pager"
89#define VCARD_TEL_BBS "bbs" 89#define VCARD_TEL_BBS "bbs"
90#define VCARD_TEL_MODEM "modem" 90#define VCARD_TEL_MODEM "modem"
91#define VCARD_TEL_CAR "car" 91#define VCARD_TEL_CAR "car"
92#define VCARD_TEL_ISDN "isdn" 92#define VCARD_TEL_ISDN "isdn"
93#define VCARD_TEL_VIDEO "video" 93#define VCARD_TEL_VIDEO "video"
94#define VCARD_TEL_PCS "pcs" 94#define VCARD_TEL_PCS "pcs"
95#define VCARD_TEL_SIP "sip" 95#define VCARD_TEL_SIP "sip"
96#define VCARD_EMAIL "email" 96#define VCARD_EMAIL "email"
97// types 97// types
98#define VCARD_EMAIL_PREF "pref" 98#define VCARD_EMAIL_PREF "pref"
99#define VCARD_EMAIL_INTERNET "internet" 99#define VCARD_EMAIL_INTERNET "internet"
100#define VCARD_EMAIL_X400 "x400" 100#define VCARD_EMAIL_X400 "x400"
101#define VCARD_TZ "tz" 101#define VCARD_TZ "tz"
102#define VCARD_GEO "geo" 102#define VCARD_GEO "geo"
103#define VCARD_MAILER "mailer" 103#define VCARD_MAILER "mailer"
104#define VCARD_TITLE "title" 104#define VCARD_TITLE "title"
105#define VCARD_ROLE "role" 105#define VCARD_ROLE "role"
106#define VCARD_LOGO "logo" 106#define VCARD_LOGO "logo"
107#define VCARD_AGENT "agent" 107#define VCARD_AGENT "agent"
108#define VCARD_ORG "org" 108#define VCARD_ORG "org"
109#define VCARD_CATEGORIES "categories" 109#define VCARD_CATEGORIES "categories"
110#define VCARD_NOTE "note" 110#define VCARD_NOTE "note"
111#define VCARD_PRODID "prodid" 111#define VCARD_PRODID "prodid"
112#define VCARD_REV "rev" 112#define VCARD_REV "rev"
113#define VCARD_SOUND "sound" 113#define VCARD_SOUND "sound"
114#define VCARD_UID "uid" 114#define VCARD_UID "uid"
115#define VCARD_URL "url" 115#define VCARD_URL "url"
116#define VCARD_CLASS "class" 116#define VCARD_CLASS "class"
117#define VCARD_CLASS_PUBLIC "public" 117#define VCARD_CLASS_PUBLIC "public"
118#define VCARD_CLASS_PRIVATE "private" 118#define VCARD_CLASS_PRIVATE "private"
119#define VCARD_CLASS_CONFIDENTIAL "confidential" 119#define VCARD_CLASS_CONFIDENTIAL "confidential"
120#define VCARD_KEY "key" 120#define VCARD_KEY "key"
121// types 121// types
122#define VCARD_KEY_X509 "x509" 122#define VCARD_KEY_X509 "x509"
123#define VCARD_KEY_PGP "pgp" 123#define VCARD_KEY_PGP "pgp"
124 124
125#define VCARD_QUOTED_PRINTABLE "quoted-printable" 125#define VCARD_QUOTED_PRINTABLE "quoted-printable"
126// this one is a temporary hack until we support TYPE=VALUE 126// this one is a temporary hack until we support TYPE=VALUE
127#define VCARD_ENCODING_QUOTED_PRINTABLE "encoding=quoted-printable" 127#define VCARD_ENCODING_QUOTED_PRINTABLE "encoding=quoted-printable"
128#define VCARD_BASE64 "base64" 128#define VCARD_BASE64 "base64"
129 129
130#define VC_STATE_BEGIN 1 130#define VC_STATE_BEGIN 1
131#define VC_STATE_BODY 2 131#define VC_STATE_BODY 2
132#define VC_STATE_END 4 132#define VC_STATE_END 4
133#define VC_STATE_HAVE_N 8 133#define VC_STATE_HAVE_N 8
134#define VC_STATE_HAVE_VERSION 16 134#define VC_STATE_HAVE_VERSION 16
135 135
136#define VC_ERR_NO_BEGIN 1 136#define VC_ERR_NO_BEGIN 1
137#define VC_ERR_NO_END 2 137#define VC_ERR_NO_END 2
138#define VC_ERR_INVALID_LINE 3 138#define VC_ERR_INVALID_LINE 3
139#define VC_ERR_INTERNAL 4 139#define VC_ERR_INTERNAL 4
140#define VC_ERR_INVALID_NAME 5 140#define VC_ERR_INVALID_NAME 5
141#define VC_ERR_MISSING_MANDATORY 6 141#define VC_ERR_MISSING_MANDATORY 6
142 142
143namespace KABC { 143namespace KABC {
144 144
145class AddressBook; 145class AddressBook;
146 146
147class VCard21Parser 147class VCard21Parser
148{ 148{
149public: 149public:
150 150
151 /** 151 /**
152 * Constructor. 152 * Constructor.
153 */ 153 */
154 VCard21Parser(); 154 VCard21Parser();
155 155
156 /** 156 /**
157 * Destructor. 157 * Destructor.
158 */ 158 */
159 virtual ~VCard21Parser(); 159 virtual ~VCard21Parser();
160 160
161 /** 161 /**
162 * Parses a string in vcard2.1 format and saves the single addressees 162 * Parses a string in vcard2.1 format and saves the single addressees
163 * to the address book. 163 * to the address book.
164 * 164 *
165 * @param ab The address book. 165 * @param ab The address book.
166 * @param str The vcard string. 166 * @param str The vcard string.
167 */ 167 */
168 void readFromString( KABC::AddressBook *ab, const QString &str ); 168 void readFromString( KABC::AddressBook *ab, const QString &str );
169 169
170 /** 170 /**
171 * FIXME: we need a writeToString method 171 * FIXME: we need a writeToString method
172 * QString writeToString (KABC::AddressBook *); 172 * QString writeToString (KABC::AddressBook *);
173 */ 173 */
174 174
175 /** 175 /**
176 * Parses a string in vcard2.1 format and returns the inherent addressee. 176 * Parses a string in vcard2.1 format and returns the inherent addressee.
177 */ 177 */
178 KABC::Addressee readFromString( const QString &data); 178 KABC::Addressee readFromString( const QString &data);
179 179
180 /** 180 /**
181 * Helper method to store a address. 181 * Helper method to store a address.
182 * 182 *
183 * @param data A string list, that is filled with 'street', 'house number' ... 183 * @param data A string list, that is filled with 'street', 'house number' ...
184 * @param type The type of the returned address. 184 * @param type The type of the returned address.
185 */ 185 */
186 static KABC::Address readAddressFromQStringList (const QStringList &data, const int type); 186 static KABC::Address readAddressFromQStringList (const QStringList &data, const int type);
187}; 187};
188 188
189} 189}
190 190
191/** 191/**
192 * @short Helper class 192 * @short Helper class
193 */ 193 */
194class VCardLineX 194class VCardLineX
195{ 195{
196public: 196public:
197 QString name; 197 QString name;
198 bool qualified; 198 bool qualified;
199 QValueList<QString> qualifiers; 199 Q3ValueList<QString> qualifiers;
200 QValueList<QString> parameters; 200 Q3ValueList<QString> parameters;
201 bool isValid() const; 201 bool isValid() const;
202}; 202};
203 203
204/** 204/**
205 * @short Helper class 205 * @short Helper class
206 */ 206 */
207class VCard21ParserImpl 207class VCard21ParserImpl
208{ 208{
209 friend class VCardLineX; 209 friend class VCardLineX;
210 210
211public: 211public:
212 VCard21ParserImpl() { }; 212 VCard21ParserImpl() { };
213 virtual ~VCard21ParserImpl() { }; 213 virtual ~VCard21ParserImpl() { };
214 static VCard21ParserImpl *parseVCard(const QString& vc, int *err = NULL); 214 static VCard21ParserImpl *parseVCard(const QString& vc, int *err = NULL);
215 QString getValue(const QString& name, const QString& qualifier); 215 QString getValue(const QString& name, const QString& qualifier);
216 QString getValue(const QString& name); 216 QString getValue(const QString& name);
217 QStringList getValues(const QString& name, const QString& qualifier); 217 QStringList getValues(const QString& name, const QString& qualifier);
218 QStringList getValues(const QString& name); 218 QStringList getValues(const QString& name);
219 219
220 QValueList<VCardLineX> *_vcdata; 220 Q3ValueList<VCardLineX> *_vcdata;
221 221
222private: 222private:
223 VCard21ParserImpl (QValueList<VCardLineX> *_vcd); 223 VCard21ParserImpl (Q3ValueList<VCardLineX> *_vcd);
224}; 224};
225 225
226#endif 226#endif
diff --git a/kabc/vcardformatimpl.cpp b/kabc/vcardformatimpl.cpp
index 580c28b..2417874 100644
--- a/kabc/vcardformatimpl.cpp
+++ b/kabc/vcardformatimpl.cpp
@@ -1,1039 +1,1042 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28#include <qfile.h> 28#include <qfile.h>
29#include <qregexp.h> 29#include <qregexp.h>
30#include <qapplication.h> 30#include <qapplication.h>
31//Added by qt3to4:
32#include <Q3CString>
33#include <Q3PtrList>
31 34
32#include <kdebug.h> 35#include <kdebug.h>
33#include <kmdcodec.h> 36#include <kmdcodec.h>
34#include <kstandarddirs.h> 37#include <kstandarddirs.h>
35#include <ktempfile.h> 38#include <ktempfile.h>
36 39
37#include <VCard.h> 40#include <VCard.h>
38 41
39#include "addressbook.h" 42#include "addressbook.h"
40#include "vcardformatimpl.h" 43#include "vcardformatimpl.h"
41 44
42using namespace KABC; 45using namespace KABC;
43using namespace VCARD; 46using namespace VCARD;
44 47
45int VCardFormatImpl::debug = -1; 48int VCardFormatImpl::debug = -1;
46 49
47VCardFormatImpl::VCardFormatImpl() 50VCardFormatImpl::VCardFormatImpl()
48{ 51{
49 debug = (getenv("KABC_DEBUG") != 0); 52 debug = (getenv("KABC_DEBUG") != 0);
50} 53}
51 54
52bool VCardFormatImpl::load( Addressee &addressee, QFile *file ) 55bool VCardFormatImpl::load( Addressee &addressee, QFile *file )
53{ 56{
54 kdDebug(5700) << "VCardFormat::load()" << endl; 57 kdDebug(5700) << "VCardFormat::load()" << endl;
55 58
56 QByteArray fdata = file->readAll(); 59 QByteArray fdata = file->readAll();
57 QCString data(fdata.data(), fdata.size()+1); 60 Q3CString data(fdata.data(), fdata.size()+1);
58 61
59 VCardEntity e( data ); 62 VCardEntity e( data );
60 63
61 VCardListIterator it( e.cardList() ); 64 VCardListIterator it( e.cardList() );
62 65
63 if ( it.current() ) { 66 if ( it.current() ) {
64//US VCard v(*it.current()); 67//US VCard v(*it.current());
65//US loadAddressee( addressee, v ); 68//US loadAddressee( addressee, v );
66 loadAddressee( addressee, it.current() ); 69 loadAddressee( addressee, it.current() );
67 return true; 70 return true;
68 } 71 }
69 72
70 return false; 73 return false;
71} 74}
72 75
73 76
74#include <kmessagebox.h> 77#include <kmessagebox.h>
75bool VCardFormatImpl::loadAll( AddressBook *addressBook, Resource *resource, QFile *file ) 78bool VCardFormatImpl::loadAll( AddressBook *addressBook, Resource *resource, QFile *file )
76{ 79{
77 80
78 QCString data(file->readAll().data(), file->size()+1); 81 Q3CString data(file->readAll().data(), file->size()+1);
79 VCardEntity e( data ); 82 VCardEntity e( data );
80 83
81 VCardListIterator it( e.cardList() ); 84 VCardListIterator it( e.cardList() );
82 85
83 for (; it.current(); ++it) { 86 for (; it.current(); ++it) {
84//US VCard v(*it.current()); 87//US VCard v(*it.current());
85 Addressee addressee; 88 Addressee addressee;
86//US loadAddressee( addressee, v ); 89//US loadAddressee( addressee, v );
87 loadAddressee( addressee, it.current() ); 90 loadAddressee( addressee, it.current() );
88 addressee.setResource( resource ); 91 addressee.setResource( resource );
89 addressBook->insertAddressee( addressee ); 92 addressBook->insertAddressee( addressee );
90 if (debug == true) 93 if (debug == true)
91 { 94 {
92 printf("address %s loaded successfully\n", addressee.formattedName().latin1()); 95 printf("address %s loaded successfully\n", addressee.formattedName().latin1());
93 } 96 }
94 } 97 }
95 return true; 98 return true;
96} 99}
97 100
98void VCardFormatImpl::save( const Addressee &addressee, QFile *file ) 101void VCardFormatImpl::save( const Addressee &addressee, QFile *file )
99{ 102{
100 VCardEntity vcards; 103 VCardEntity vcards;
101 VCardList vcardlist; 104 VCardList vcardlist;
102 vcardlist.setAutoDelete( true ); 105 vcardlist.setAutoDelete( true );
103 106
104 VCard *v = new VCard; 107 VCard *v = new VCard;
105 108
106 saveAddressee( addressee, v, false ); 109 saveAddressee( addressee, v, false );
107 110
108 vcardlist.append( v ); 111 vcardlist.append( v );
109 vcards.setCardList( vcardlist ); 112 vcards.setCardList( vcardlist );
110 113
111 QCString vcardData = vcards.asString(); 114 Q3CString vcardData = vcards.asString();
112 file->writeBlock( (const char*)vcardData, vcardData.length() ); 115 file->writeBlock( (const char*)vcardData, vcardData.length() );
113} 116}
114 117
115void VCardFormatImpl::saveAll( AddressBook *ab, Resource *resource, QFile *file ) 118void VCardFormatImpl::saveAll( AddressBook *ab, Resource *resource, QFile *file )
116{ 119{
117 120
118 AddressBook::Iterator it; 121 AddressBook::Iterator it;
119 for ( it = ab->begin(); it != ab->end(); ++it ) { 122 for ( it = ab->begin(); it != ab->end(); ++it ) {
120 if ( (*it).resource() == resource ) { 123 if ( (*it).resource() == resource ) {
121 save((*it),file); 124 save((*it),file);
122 qApp->processEvents(); 125 qApp->processEvents();
123 (*it).setChanged( false ); 126 (*it).setChanged( false );
124 } 127 }
125 } 128 }
126 // for memory usage status test only 129 // for memory usage status test only
127 // KMessageBox::information ( 0, "Stoppppp", QString("Stop ") ); 130 // KMessageBox::information ( 0, "Stoppppp", QString("Stop ") );
128} 131}
129 132
130bool VCardFormatImpl::loadAddressee( Addressee& addressee, VCard *v ) 133bool VCardFormatImpl::loadAddressee( Addressee& addressee, VCard *v )
131{ 134{
132 QPtrList<ContentLine> contentLines = v->contentLineList(); 135 Q3PtrList<ContentLine> contentLines = v->contentLineList();
133 ContentLine *cl; 136 ContentLine *cl;
134 137
135 for( cl = contentLines.first(); cl; cl = contentLines.next() ) { 138 for( cl = contentLines.first(); cl; cl = contentLines.next() ) {
136 QCString n = cl->name(); 139 Q3CString n = cl->name();
137 if ( n.left( 2 ) == "X-" ) { 140 if ( n.left( 2 ) == "X-" ) {
138 n = n.mid( 2 ); 141 n = n.mid( 2 );
139 int posDash = n.find( "-" ); 142 int posDash = n.find( "-" );
140 addressee.insertCustom( QString::fromUtf8( n.left( posDash ) ), 143 addressee.insertCustom( QString::fromUtf8( n.left( posDash ) ),
141 QString::fromUtf8( n.mid( posDash + 1 ) ), 144 QString::fromUtf8( n.mid( posDash + 1 ) ),
142 QString::fromUtf8( cl->value()->asString() ) ); 145 QString::fromUtf8( cl->value()->asString() ) );
143 continue; 146 continue;
144 } 147 }
145 148
146 EntityType type = cl->entityType(); 149 EntityType type = cl->entityType();
147 switch( type ) { 150 switch( type ) {
148 151
149 case EntityUID: 152 case EntityUID:
150 addressee.setUid( readTextValue( cl ) ); 153 addressee.setUid( readTextValue( cl ) );
151 break; 154 break;
152 155
153 case EntityEmail: 156 case EntityEmail:
154 addressee.insertEmail( readTextValue( cl ) ); 157 addressee.insertEmail( readTextValue( cl ) );
155 break; 158 break;
156 159
157 case EntityName: 160 case EntityName:
158 addressee.setName( readTextValue( cl ) ); 161 addressee.setName( readTextValue( cl ) );
159 break; 162 break;
160 163
161 case EntityFullName: 164 case EntityFullName:
162 addressee.setFormattedName( readTextValue( cl ) ); 165 addressee.setFormattedName( readTextValue( cl ) );
163 break; 166 break;
164 167
165 case EntityURL: 168 case EntityURL:
166 addressee.setUrl( KURL( readTextValue( cl ) ) ); 169 addressee.setUrl( KURL( readTextValue( cl ) ) );
167 break; 170 break;
168 171
169 case EntityNickname: 172 case EntityNickname:
170 addressee.setNickName( readTextValue( cl ) ); 173 addressee.setNickName( readTextValue( cl ) );
171 break; 174 break;
172 175
173 case EntityLabel: 176 case EntityLabel:
174 // not yet supported by kabc 177 // not yet supported by kabc
175 break; 178 break;
176 179
177 case EntityMailer: 180 case EntityMailer:
178 addressee.setMailer( readTextValue( cl ) ); 181 addressee.setMailer( readTextValue( cl ) );
179 break; 182 break;
180 183
181 case EntityTitle: 184 case EntityTitle:
182 addressee.setTitle( readTextValue( cl ) ); 185 addressee.setTitle( readTextValue( cl ) );
183 break; 186 break;
184 187
185 case EntityRole: 188 case EntityRole:
186 addressee.setRole( readTextValue( cl ) ); 189 addressee.setRole( readTextValue( cl ) );
187 break; 190 break;
188 191
189 case EntityOrganisation: 192 case EntityOrganisation:
190 addressee.setOrganization( readTextValue( cl ) ); 193 addressee.setOrganization( readTextValue( cl ) );
191 break; 194 break;
192 195
193 case EntityNote: 196 case EntityNote:
194 addressee.setNote( readTextValue( cl ) ); 197 addressee.setNote( readTextValue( cl ) );
195 break; 198 break;
196 199
197 case EntityProductID: 200 case EntityProductID:
198 addressee.setProductId( readTextValue( cl ) ); 201 addressee.setProductId( readTextValue( cl ) );
199 break; 202 break;
200 203
201 case EntitySortString: 204 case EntitySortString:
202 addressee.setSortString( readTextValue( cl ) ); 205 addressee.setSortString( readTextValue( cl ) );
203 break; 206 break;
204 207
205 case EntityN: 208 case EntityN:
206 readNValue( cl, addressee ); 209 readNValue( cl, addressee );
207 break; 210 break;
208 211
209 case EntityAddress: 212 case EntityAddress:
210 addressee.insertAddress( readAddressValue( cl ) ); 213 addressee.insertAddress( readAddressValue( cl ) );
211 break; 214 break;
212 215
213 case EntityTelephone: 216 case EntityTelephone:
214 addressee.insertPhoneNumber( readTelephoneValue( cl ) ); 217 addressee.insertPhoneNumber( readTelephoneValue( cl ) );
215 break; 218 break;
216 219
217 case EntityCategories: 220 case EntityCategories:
218 addressee.setCategories( QStringList::split( ",", readTextValue( cl ) ) ); 221 addressee.setCategories( QStringList::split( ",", readTextValue( cl ) ) );
219 break; 222 break;
220 223
221 case EntityBirthday: 224 case EntityBirthday:
222 addressee.setBirthday( readDateValue( cl ) ); 225 addressee.setBirthday( (QDateTime) readDateValue( cl ) );
223 break; 226 break;
224 227
225 case EntityRevision: 228 case EntityRevision:
226 addressee.setRevision( readDateTimeValue( cl ) ); 229 addressee.setRevision( readDateTimeValue( cl ) );
227 break; 230 break;
228 231
229 case EntityGeo: 232 case EntityGeo:
230 addressee.setGeo( readGeoValue( cl ) ); 233 addressee.setGeo( readGeoValue( cl ) );
231 break; 234 break;
232 235
233 case EntityTimeZone: 236 case EntityTimeZone:
234 addressee.setTimeZone( readUTCValue( cl ) ); 237 addressee.setTimeZone( readUTCValue( cl ) );
235 break; 238 break;
236 239
237 case EntityVersion: 240 case EntityVersion:
238 break; 241 break;
239 242
240 case EntityClass: 243 case EntityClass:
241 addressee.setSecrecy( readClassValue( cl ) ); 244 addressee.setSecrecy( readClassValue( cl ) );
242 break; 245 break;
243 246
244 case EntityKey: 247 case EntityKey:
245 addressee.insertKey( readKeyValue( cl ) ); 248 addressee.insertKey( readKeyValue( cl ) );
246 break; 249 break;
247 250
248 case EntityPhoto: 251 case EntityPhoto:
249 addressee.setPhoto( readPictureValue( cl, EntityPhoto, addressee ) ); 252 addressee.setPhoto( readPictureValue( cl, EntityPhoto, addressee ) );
250 break; 253 break;
251 254
252 case EntityLogo: 255 case EntityLogo:
253 addressee.setLogo( readPictureValue( cl, EntityLogo, addressee ) ); 256 addressee.setLogo( readPictureValue( cl, EntityLogo, addressee ) );
254 break; 257 break;
255 258
256 case EntityAgent: 259 case EntityAgent:
257 addressee.setAgent( readAgentValue( cl ) ); 260 addressee.setAgent( readAgentValue( cl ) );
258 break; 261 break;
259 262
260 case EntitySound: 263 case EntitySound:
261 addressee.setSound( readSoundValue( cl, addressee ) ); 264 addressee.setSound( readSoundValue( cl, addressee ) );
262 break; 265 break;
263 266
264 default: 267 default:
265 kdDebug(5700) << "VCardFormat::load(): Unsupported entity: " 268 kdDebug(5700) << "VCardFormat::load(): Unsupported entity: "
266 << int( type ) << ": " << cl->asString() << endl; 269 << int( type ) << ": " << cl->asString() << endl;
267 qDebug("VCardFormat::load(): Unsupported entity: %i: %s ", int(type), (const char*)cl->asString()); 270 qDebug("VCardFormat::load(): Unsupported entity: %i: %s ", int(type), (const char*)cl->asString());
268 break; 271 break;
269 } 272 }
270 } 273 }
271 274
272 for( cl = contentLines.first(); cl; cl = contentLines.next() ) { 275 for( cl = contentLines.first(); cl; cl = contentLines.next() ) {
273 EntityType type = cl->entityType(); 276 EntityType type = cl->entityType();
274 if ( type == EntityLabel ) { 277 if ( type == EntityLabel ) {
275 int type = readAddressParam( cl ); 278 int type = readAddressParam( cl );
276 Address address = addressee.address( type ); 279 Address address = addressee.address( type );
277 if ( address.isEmpty() ) 280 if ( address.isEmpty() )
278 address.setType( type ); 281 address.setType( type );
279 282
280 address.setLabel( QString::fromUtf8( cl->value()->asString() ) ); 283 address.setLabel( QString::fromUtf8( cl->value()->asString() ) );
281 addressee.insertAddress( address ); 284 addressee.insertAddress( address );
282 } 285 }
283 } 286 }
284 addressee.makePhoneNumbersOLcompatible(); 287 addressee.makePhoneNumbersOLcompatible();
285 return true; 288 return true;
286} 289}
287 290
288void VCardFormatImpl::saveAddressee( const Addressee &addressee, VCard *v, bool intern ) 291void VCardFormatImpl::saveAddressee( const Addressee &addressee, VCard *v, bool intern )
289{ 292{
290//US ContentLine cl; 293//US ContentLine cl;
291//US QString value; 294//US QString value;
292 295
293 addTextValue( v, EntityName, addressee.name() ); 296 addTextValue( v, EntityName, addressee.name() );
294 addTextValue( v, EntityUID, addressee.uid() ); 297 addTextValue( v, EntityUID, addressee.uid() );
295 addTextValue( v, EntityFullName, addressee.formattedName() ); 298 addTextValue( v, EntityFullName, addressee.formattedName() );
296 299
297 QStringList emails = addressee.emails(); 300 QStringList emails = addressee.emails();
298 QStringList::ConstIterator it4; 301 QStringList::ConstIterator it4;
299 for( it4 = emails.begin(); it4 != emails.end(); ++it4 ) { 302 for( it4 = emails.begin(); it4 != emails.end(); ++it4 ) {
300 addTextValue( v, EntityEmail, *it4 ); 303 addTextValue( v, EntityEmail, *it4 );
301 } 304 }
302 305
303 QStringList customs = addressee.customs(); 306 QStringList customs = addressee.customs();
304 QStringList::ConstIterator it5; 307 QStringList::ConstIterator it5;
305 for( it5 = customs.begin(); it5 != customs.end(); ++it5 ) { 308 for( it5 = customs.begin(); it5 != customs.end(); ++it5 ) {
306 addCustomValue( v, *it5 ); 309 addCustomValue( v, *it5 );
307 } 310 }
308 311
309 addTextValue( v, EntityURL, addressee.url().url() ); 312 addTextValue( v, EntityURL, addressee.url().url() );
310 313
311 addNValue( v, addressee ); 314 addNValue( v, addressee );
312 315
313 addTextValue( v, EntityNickname, addressee.nickName() ); 316 addTextValue( v, EntityNickname, addressee.nickName() );
314 addTextValue( v, EntityMailer, addressee.mailer() ); 317 addTextValue( v, EntityMailer, addressee.mailer() );
315 addTextValue( v, EntityTitle, addressee.title() ); 318 addTextValue( v, EntityTitle, addressee.title() );
316 addTextValue( v, EntityRole, addressee.role() ); 319 addTextValue( v, EntityRole, addressee.role() );
317 addTextValue( v, EntityOrganisation, addressee.organization() ); 320 addTextValue( v, EntityOrganisation, addressee.organization() );
318 addTextValue( v, EntityNote, addressee.note() ); 321 addTextValue( v, EntityNote, addressee.note() );
319 addTextValue( v, EntityProductID, addressee.productId() ); 322 addTextValue( v, EntityProductID, addressee.productId() );
320 addTextValue( v, EntitySortString, addressee.sortString() ); 323 addTextValue( v, EntitySortString, addressee.sortString() );
321 324
322 Address::List addresses = addressee.addresses(); 325 Address::List addresses = addressee.addresses();
323 Address::List::ConstIterator it3; 326 Address::List::ConstIterator it3;
324 for( it3 = addresses.begin(); it3 != addresses.end(); ++it3 ) { 327 for( it3 = addresses.begin(); it3 != addresses.end(); ++it3 ) {
325 addAddressValue( v, *it3 ); 328 addAddressValue( v, *it3 );
326 addLabelValue( v, *it3 ); 329 addLabelValue( v, *it3 );
327 } 330 }
328 331
329 PhoneNumber::List phoneNumbers = addressee.phoneNumbers(); 332 PhoneNumber::List phoneNumbers = addressee.phoneNumbers();
330 PhoneNumber::List::ConstIterator it2; 333 PhoneNumber::List::ConstIterator it2;
331 for( it2 = phoneNumbers.begin(); it2 != phoneNumbers.end(); ++it2 ) { 334 for( it2 = phoneNumbers.begin(); it2 != phoneNumbers.end(); ++it2 ) {
332 addTelephoneValue( v, *it2 ); 335 addTelephoneValue( v, *it2 );
333 } 336 }
334 337
335 Key::List keys = addressee.keys(); 338 Key::List keys = addressee.keys();
336 Key::List::ConstIterator it6; 339 Key::List::ConstIterator it6;
337 for( it6 = keys.begin(); it6 != keys.end(); ++it6 ) { 340 for( it6 = keys.begin(); it6 != keys.end(); ++it6 ) {
338 addKeyValue( v, *it6 ); 341 addKeyValue( v, *it6 );
339 } 342 }
340 343
341 addTextValue( v, EntityCategories, addressee.categories().join(",") ); 344 addTextValue( v, EntityCategories, addressee.categories().join(",") );
342 345
343 addDateValue( v, EntityBirthday, addressee.birthday().date() ); 346 addDateValue( v, EntityBirthday, addressee.birthday().date() );
344 addDateTimeValue( v, EntityRevision, addressee.revision() ); 347 addDateTimeValue( v, EntityRevision, addressee.revision() );
345 addGeoValue( v, addressee.geo() ); 348 addGeoValue( v, addressee.geo() );
346 addUTCValue( v, addressee.timeZone() ); 349 addUTCValue( v, addressee.timeZone() );
347 350
348 addClassValue( v, addressee.secrecy() ); 351 addClassValue( v, addressee.secrecy() );
349 352
350 addPictureValue( v, EntityPhoto, addressee.photo(), addressee, intern ); 353 addPictureValue( v, EntityPhoto, addressee.photo(), addressee, intern );
351 addPictureValue( v, EntityLogo, addressee.logo(), addressee, intern ); 354 addPictureValue( v, EntityLogo, addressee.logo(), addressee, intern );
352 355
353 addAgentValue( v, addressee.agent() ); 356 addAgentValue( v, addressee.agent() );
354 357
355 addSoundValue( v, addressee.sound(), addressee, intern ); 358 addSoundValue( v, addressee.sound(), addressee, intern );
356} 359}
357 360
358void VCardFormatImpl::addCustomValue( VCard *v, const QString &txt ) 361void VCardFormatImpl::addCustomValue( VCard *v, const QString &txt )
359{ 362{
360 if ( txt.isEmpty() ) return; 363 if ( txt.isEmpty() ) return;
361 364
362 ContentLine cl; 365 ContentLine cl;
363 cl.setName( "X-" + txt.left( txt.find( ":" ) ).utf8() ); 366 cl.setName( "X-" + txt.left( txt.find( ":" ) ).utf8() );
364 QString value = txt.mid( txt.find( ":" ) + 1 ); 367 QString value = txt.mid( txt.find( ":" ) + 1 );
365 if ( value.isEmpty() ) 368 if ( value.isEmpty() )
366 return; 369 return;
367 cl.setValue( new TextValue( value.utf8() ) ); 370 cl.setValue( new TextValue( value.utf8() ) );
368 v->add(cl); 371 v->add(cl);
369} 372}
370 373
371void VCardFormatImpl::addTextValue( VCard *v, EntityType type, const QString &txt ) 374void VCardFormatImpl::addTextValue( VCard *v, EntityType type, const QString &txt )
372{ 375{
373 if ( txt.isEmpty() ) return; 376 if ( txt.isEmpty() ) return;
374 377
375 ContentLine cl; 378 ContentLine cl;
376 cl.setName( EntityTypeToParamName( type ) ); 379 cl.setName( EntityTypeToParamName( type ) );
377 cl.setValue( new TextValue( txt.utf8() ) ); 380 cl.setValue( new TextValue( txt.utf8() ) );
378 v->add(cl); 381 v->add(cl);
379} 382}
380 383
381void VCardFormatImpl::addDateValue( VCard *vcard, EntityType type, 384void VCardFormatImpl::addDateValue( VCard *vcard, EntityType type,
382 const QDate &date ) 385 const QDate &date )
383{ 386{
384 if ( !date.isValid() ) return; 387 if ( !date.isValid() ) return;
385 388
386 ContentLine cl; 389 ContentLine cl;
387 cl.setName( EntityTypeToParamName( type ) ); 390 cl.setName( EntityTypeToParamName( type ) );
388 391
389 DateValue *v = new DateValue( date ); 392 DateValue *v = new DateValue( date );
390 cl.setValue( v ); 393 cl.setValue( v );
391 vcard->add(cl); 394 vcard->add(cl);
392} 395}
393 396
394void VCardFormatImpl::addDateTimeValue( VCard *vcard, EntityType type, 397void VCardFormatImpl::addDateTimeValue( VCard *vcard, EntityType type,
395 const QDateTime &dateTime ) 398 const QDateTime &dateTime )
396{ 399{
397 if ( !dateTime.isValid() ) return; 400 if ( !dateTime.isValid() ) return;
398 401
399 ContentLine cl; 402 ContentLine cl;
400 cl.setName( EntityTypeToParamName( type ) ); 403 cl.setName( EntityTypeToParamName( type ) );
401 404
402 DateValue *v = new DateValue( dateTime ); 405 DateValue *v = new DateValue( dateTime );
403 cl.setValue( v ); 406 cl.setValue( v );
404 vcard->add(cl); 407 vcard->add(cl);
405} 408}
406 409
407void VCardFormatImpl::addAddressValue( VCard *vcard, const Address &a ) 410void VCardFormatImpl::addAddressValue( VCard *vcard, const Address &a )
408{ 411{
409 if ( a.isEmpty() ) 412 if ( a.isEmpty() )
410 return; 413 return;
411 414
412 ContentLine cl; 415 ContentLine cl;
413 cl.setName( EntityTypeToParamName( EntityAddress ) ); 416 cl.setName( EntityTypeToParamName( EntityAddress ) );
414 417
415 AdrValue *v = new AdrValue; 418 AdrValue *v = new AdrValue;
416 v->setPOBox( a.postOfficeBox().utf8() ); 419 v->setPOBox( a.postOfficeBox().utf8() );
417 v->setExtAddress( a.extended().utf8() ); 420 v->setExtAddress( a.extended().utf8() );
418 v->setStreet( a.street().utf8() ); 421 v->setStreet( a.street().utf8() );
419 v->setLocality( a.locality().utf8() ); 422 v->setLocality( a.locality().utf8() );
420 v->setRegion( a.region().utf8() ); 423 v->setRegion( a.region().utf8() );
421 v->setPostCode( a.postalCode().utf8() ); 424 v->setPostCode( a.postalCode().utf8() );
422 v->setCountryName( a.country().utf8() ); 425 v->setCountryName( a.country().utf8() );
423 cl.setValue( v ); 426 cl.setValue( v );
424 427
425 addAddressParam( &cl, a.type() ); 428 addAddressParam( &cl, a.type() );
426 429
427 vcard->add( cl ); 430 vcard->add( cl );
428} 431}
429 432
430void VCardFormatImpl::addLabelValue( VCard *vcard, const Address &a ) 433void VCardFormatImpl::addLabelValue( VCard *vcard, const Address &a )
431{ 434{
432 if ( a.label().isEmpty() ) return; 435 if ( a.label().isEmpty() ) return;
433 436
434 ContentLine cl; 437 ContentLine cl;
435 cl.setName( EntityTypeToParamName( EntityLabel ) ); 438 cl.setName( EntityTypeToParamName( EntityLabel ) );
436 cl.setValue( new TextValue( a.label().utf8() ) ); 439 cl.setValue( new TextValue( a.label().utf8() ) );
437 440
438 addAddressParam( &cl, a.type() ); 441 addAddressParam( &cl, a.type() );
439 442
440 vcard->add( cl ); 443 vcard->add( cl );
441} 444}
442 445
443void VCardFormatImpl::addAddressParam( ContentLine *cl, int type ) 446void VCardFormatImpl::addAddressParam( ContentLine *cl, int type )
444{ 447{
445 ParamList params; 448 ParamList params;
446 if ( type & Address::Dom ) params.append( new Param( "TYPE", "dom" ) ); 449 if ( type & Address::Dom ) params.append( new Param( "TYPE", "dom" ) );
447 if ( type & Address::Intl ) params.append( new Param( "TYPE", "intl" ) ); 450 if ( type & Address::Intl ) params.append( new Param( "TYPE", "intl" ) );
448 if ( type & Address::Parcel ) params.append( new Param( "TYPE", "parcel" ) ); 451 if ( type & Address::Parcel ) params.append( new Param( "TYPE", "parcel" ) );
449 if ( type & Address::Postal ) params.append( new Param( "TYPE", "postal" ) ); 452 if ( type & Address::Postal ) params.append( new Param( "TYPE", "postal" ) );
450 if ( type & Address::Work ) params.append( new Param( "TYPE", "work" ) ); 453 if ( type & Address::Work ) params.append( new Param( "TYPE", "work" ) );
451 if ( type & Address::Home ) params.append( new Param( "TYPE", "home" ) ); 454 if ( type & Address::Home ) params.append( new Param( "TYPE", "home" ) );
452 if ( type & Address::Pref ) params.append( new Param( "TYPE", "pref" ) ); 455 if ( type & Address::Pref ) params.append( new Param( "TYPE", "pref" ) );
453 cl->setParamList( params ); 456 cl->setParamList( params );
454} 457}
455 458
456void VCardFormatImpl::addGeoValue( VCard *vcard, const Geo &geo ) 459void VCardFormatImpl::addGeoValue( VCard *vcard, const Geo &geo )
457{ 460{
458 if ( !geo.isValid() ) return; 461 if ( !geo.isValid() ) return;
459 462
460 ContentLine cl; 463 ContentLine cl;
461 cl.setName( EntityTypeToParamName( EntityGeo ) ); 464 cl.setName( EntityTypeToParamName( EntityGeo ) );
462 465
463 GeoValue *v = new GeoValue; 466 GeoValue *v = new GeoValue;
464 v->setLatitude( geo.latitude() ); 467 v->setLatitude( geo.latitude() );
465 v->setLongitude( geo.longitude() ); 468 v->setLongitude( geo.longitude() );
466 469
467 cl.setValue( v ); 470 cl.setValue( v );
468 vcard->add(cl); 471 vcard->add(cl);
469} 472}
470 473
471void VCardFormatImpl::addUTCValue( VCard *vcard, const TimeZone &tz ) 474void VCardFormatImpl::addUTCValue( VCard *vcard, const TimeZone &tz )
472{ 475{
473 if ( !tz.isValid() ) return; 476 if ( !tz.isValid() ) return;
474 477
475 ContentLine cl; 478 ContentLine cl;
476 cl.setName( EntityTypeToParamName( EntityTimeZone ) ); 479 cl.setName( EntityTypeToParamName( EntityTimeZone ) );
477 480
478 UTCValue *v = new UTCValue; 481 UTCValue *v = new UTCValue;
479 482
480 v->setPositive( tz.offset() >= 0 ); 483 v->setPositive( tz.offset() >= 0 );
481 v->setHour( (tz.offset() / 60) * ( tz.offset() >= 0 ? 1 : -1 ) ); 484 v->setHour( (tz.offset() / 60) * ( tz.offset() >= 0 ? 1 : -1 ) );
482 v->setMinute( (tz.offset() % 60) * ( tz.offset() >= 0 ? 1 : -1 ) ); 485 v->setMinute( (tz.offset() % 60) * ( tz.offset() >= 0 ? 1 : -1 ) );
483 486
484 cl.setValue( v ); 487 cl.setValue( v );
485 vcard->add(cl); 488 vcard->add(cl);
486} 489}
487 490
488void VCardFormatImpl::addClassValue( VCard *vcard, const Secrecy &secrecy ) 491void VCardFormatImpl::addClassValue( VCard *vcard, const Secrecy &secrecy )
489{ 492{
490 ContentLine cl; 493 ContentLine cl;
491 cl.setName( EntityTypeToParamName( EntityClass ) ); 494 cl.setName( EntityTypeToParamName( EntityClass ) );
492 495
493 ClassValue *v = new ClassValue; 496 ClassValue *v = new ClassValue;
494 switch ( secrecy.type() ) { 497 switch ( secrecy.type() ) {
495 case Secrecy::Public: 498 case Secrecy::Public:
496 v->setType( (int)ClassValue::Public ); 499 v->setType( (int)ClassValue::Public );
497 break; 500 break;
498 case Secrecy::Private: 501 case Secrecy::Private:
499 v->setType( (int)ClassValue::Private ); 502 v->setType( (int)ClassValue::Private );
500 break; 503 break;
501 case Secrecy::Confidential: 504 case Secrecy::Confidential:
502 v->setType( (int)ClassValue::Confidential ); 505 v->setType( (int)ClassValue::Confidential );
503 break; 506 break;
504 } 507 }
505 508
506 cl.setValue( v ); 509 cl.setValue( v );
507 vcard->add(cl); 510 vcard->add(cl);
508} 511}
509 512
510 513
511Address VCardFormatImpl::readAddressValue( ContentLine *cl ) 514Address VCardFormatImpl::readAddressValue( ContentLine *cl )
512{ 515{
513 Address a; 516 Address a;
514 AdrValue *v = (AdrValue *)cl->value(); 517 AdrValue *v = (AdrValue *)cl->value();
515 a.setPostOfficeBox( QString::fromUtf8( v->poBox() ) ); 518 a.setPostOfficeBox( QString::fromUtf8( v->poBox() ) );
516 a.setExtended( QString::fromUtf8( v->extAddress() ) ); 519 a.setExtended( QString::fromUtf8( v->extAddress() ) );
517 a.setStreet( QString::fromUtf8( v->street() ) ); 520 a.setStreet( QString::fromUtf8( v->street() ) );
518 a.setLocality( QString::fromUtf8( v->locality() ) ); 521 a.setLocality( QString::fromUtf8( v->locality() ) );
519 a.setRegion( QString::fromUtf8( v->region() ) ); 522 a.setRegion( QString::fromUtf8( v->region() ) );
520 a.setPostalCode( QString::fromUtf8( v->postCode() ) ); 523 a.setPostalCode( QString::fromUtf8( v->postCode() ) );
521 a.setCountry( QString::fromUtf8( v->countryName() ) ); 524 a.setCountry( QString::fromUtf8( v->countryName() ) );
522 525
523 a.setType( readAddressParam( cl ) ); 526 a.setType( readAddressParam( cl ) );
524 527
525 return a; 528 return a;
526} 529}
527 530
528int VCardFormatImpl::readAddressParam( ContentLine *cl ) 531int VCardFormatImpl::readAddressParam( ContentLine *cl )
529{ 532{
530 int type = 0; 533 int type = 0;
531 ParamList params = cl->paramList(); 534 ParamList params = cl->paramList();
532 ParamListIterator it( params ); 535 ParamListIterator it( params );
533 QCString tmpStr; 536 Q3CString tmpStr;
534 for( ; it.current(); ++it ) { 537 for( ; it.current(); ++it ) {
535 if ( (*it)->name().upper() == "TYPE" ) { 538 if ( (*it)->name().upper() == "TYPE" ) {
536 tmpStr = (*it)->value().lower(); 539 tmpStr = (*it)->value().lower();
537 if ( tmpStr == "dom" ) type |= Address::Dom; 540 if ( tmpStr == "dom" ) type |= Address::Dom;
538 else if ( tmpStr == "intl" ) type |= Address::Intl; 541 else if ( tmpStr == "intl" ) type |= Address::Intl;
539 else if ( tmpStr == "parcel" ) type |= Address::Parcel; 542 else if ( tmpStr == "parcel" ) type |= Address::Parcel;
540 else if ( tmpStr == "postal" ) type |= Address::Postal; 543 else if ( tmpStr == "postal" ) type |= Address::Postal;
541 else if ( tmpStr == "work" ) type |= Address::Work; 544 else if ( tmpStr == "work" ) type |= Address::Work;
542 else if ( tmpStr == "home" ) type |= Address::Home; 545 else if ( tmpStr == "home" ) type |= Address::Home;
543 else if ( tmpStr == "pref" ) type |= Address::Pref; 546 else if ( tmpStr == "pref" ) type |= Address::Pref;
544 } 547 }
545 } 548 }
546 return type; 549 return type;
547} 550}
548 551
549void VCardFormatImpl::addNValue( VCard *vcard, const Addressee &a ) 552void VCardFormatImpl::addNValue( VCard *vcard, const Addressee &a )
550{ 553{
551 ContentLine cl; 554 ContentLine cl;
552 cl.setName(EntityTypeToParamName( EntityN ) ); 555 cl.setName(EntityTypeToParamName( EntityN ) );
553 NValue *v = new NValue; 556 NValue *v = new NValue;
554 v->setFamily( a.familyName().utf8() ); 557 v->setFamily( a.familyName().utf8() );
555 v->setGiven( a.givenName().utf8() ); 558 v->setGiven( a.givenName().utf8() );
556 v->setMiddle( a.additionalName().utf8() ); 559 v->setMiddle( a.additionalName().utf8() );
557 v->setPrefix( a.prefix().utf8() ); 560 v->setPrefix( a.prefix().utf8() );
558 v->setSuffix( a.suffix().utf8() ); 561 v->setSuffix( a.suffix().utf8() );
559 562
560 cl.setValue( v ); 563 cl.setValue( v );
561 vcard->add(cl); 564 vcard->add(cl);
562} 565}
563 566
564void VCardFormatImpl::readNValue( ContentLine *cl, Addressee &a ) 567void VCardFormatImpl::readNValue( ContentLine *cl, Addressee &a )
565{ 568{
566 NValue *v = (NValue *)cl->value(); 569 NValue *v = (NValue *)cl->value();
567 a.setFamilyName( QString::fromUtf8( v->family() ) ); 570 a.setFamilyName( QString::fromUtf8( v->family() ) );
568 a.setGivenName( QString::fromUtf8( v->given() ) ); 571 a.setGivenName( QString::fromUtf8( v->given() ) );
569 a.setAdditionalName( QString::fromUtf8( v->middle() ) ); 572 a.setAdditionalName( QString::fromUtf8( v->middle() ) );
570 a.setPrefix( QString::fromUtf8( v->prefix() ) ); 573 a.setPrefix( QString::fromUtf8( v->prefix() ) );
571 a.setSuffix( QString::fromUtf8( v->suffix() ) ); 574 a.setSuffix( QString::fromUtf8( v->suffix() ) );
572} 575}
573 576
574void VCardFormatImpl::addTelephoneValue( VCard *v, const PhoneNumber &p ) 577void VCardFormatImpl::addTelephoneValue( VCard *v, const PhoneNumber &p )
575{ 578{
576 if ( p.number().isEmpty() ) 579 if ( p.number().isEmpty() )
577 return; 580 return;
578 581
579 ContentLine cl; 582 ContentLine cl;
580 cl.setName(EntityTypeToParamName(EntityTelephone)); 583 cl.setName(EntityTypeToParamName(EntityTelephone));
581 cl.setValue(new TelValue( p.number().utf8() )); 584 cl.setValue(new TelValue( p.number().utf8() ));
582 585
583 ParamList params; 586 ParamList params;
584 if( p.type() & PhoneNumber::Home ) params.append( new Param( "TYPE", "home" ) ); 587 if( p.type() & PhoneNumber::Home ) params.append( new Param( "TYPE", "home" ) );
585 if( p.type() & PhoneNumber::Work ) params.append( new Param( "TYPE", "work" ) ); 588 if( p.type() & PhoneNumber::Work ) params.append( new Param( "TYPE", "work" ) );
586 if( p.type() & PhoneNumber::Msg ) params.append( new Param( "TYPE", "msg" ) ); 589 if( p.type() & PhoneNumber::Msg ) params.append( new Param( "TYPE", "msg" ) );
587 if( p.type() & PhoneNumber::Pref ) params.append( new Param( "TYPE", "pref" ) ); 590 if( p.type() & PhoneNumber::Pref ) params.append( new Param( "TYPE", "pref" ) );
588 if( p.type() & PhoneNumber::Voice ) params.append( new Param( "TYPE", "voice" ) ); 591 if( p.type() & PhoneNumber::Voice ) params.append( new Param( "TYPE", "voice" ) );
589 if( p.type() & PhoneNumber::Fax ) params.append( new Param( "TYPE", "fax" ) ); 592 if( p.type() & PhoneNumber::Fax ) params.append( new Param( "TYPE", "fax" ) );
590 if( p.type() & PhoneNumber::Cell ) params.append( new Param( "TYPE", "cell" ) ); 593 if( p.type() & PhoneNumber::Cell ) params.append( new Param( "TYPE", "cell" ) );
591 if( p.type() & PhoneNumber::Video ) params.append( new Param( "TYPE", "video" ) ); 594 if( p.type() & PhoneNumber::Video ) params.append( new Param( "TYPE", "video" ) );
592 if( p.type() & PhoneNumber::Bbs ) params.append( new Param( "TYPE", "bbs" ) ); 595 if( p.type() & PhoneNumber::Bbs ) params.append( new Param( "TYPE", "bbs" ) );
593 if( p.type() & PhoneNumber::Modem ) params.append( new Param( "TYPE", "modem" ) ); 596 if( p.type() & PhoneNumber::Modem ) params.append( new Param( "TYPE", "modem" ) );
594 if( p.type() & PhoneNumber::Car ) params.append( new Param( "TYPE", "car" ) ); 597 if( p.type() & PhoneNumber::Car ) params.append( new Param( "TYPE", "car" ) );
595 if( p.type() & PhoneNumber::Isdn ) params.append( new Param( "TYPE", "isdn" ) ); 598 if( p.type() & PhoneNumber::Isdn ) params.append( new Param( "TYPE", "isdn" ) );
596 if( p.type() & PhoneNumber::Pcs ) params.append( new Param( "TYPE", "pcs" ) ); 599 if( p.type() & PhoneNumber::Pcs ) params.append( new Param( "TYPE", "pcs" ) );
597 if( p.type() & PhoneNumber::Pager ) params.append( new Param( "TYPE", "pager" ) ); 600 if( p.type() & PhoneNumber::Pager ) params.append( new Param( "TYPE", "pager" ) );
598 cl.setParamList( params ); 601 cl.setParamList( params );
599 602
600 v->add(cl); 603 v->add(cl);
601} 604}
602 605
603PhoneNumber VCardFormatImpl::readTelephoneValue( ContentLine *cl ) 606PhoneNumber VCardFormatImpl::readTelephoneValue( ContentLine *cl )
604{ 607{
605 PhoneNumber p; 608 PhoneNumber p;
606 TelValue *value = (TelValue *)cl->value(); 609 TelValue *value = (TelValue *)cl->value();
607 p.setNumber( QString::fromUtf8( value->asString() ) ); 610 p.setNumber( QString::fromUtf8( value->asString() ) );
608 611
609 int type = 0; 612 int type = 0;
610 ParamList params = cl->paramList(); 613 ParamList params = cl->paramList();
611 ParamListIterator it( params ); 614 ParamListIterator it( params );
612 QCString tmpStr; 615 Q3CString tmpStr;
613 for( ; it.current(); ++it ) { 616 for( ; it.current(); ++it ) {
614 if ( (*it)->name() == "TYPE" ) { 617 if ( (*it)->name() == "TYPE" ) {
615 tmpStr = (*it)->value().lower(); 618 tmpStr = (*it)->value().lower();
616 if ( tmpStr == "home" ) type |= PhoneNumber::Home; 619 if ( tmpStr == "home" ) type |= PhoneNumber::Home;
617 else if ( tmpStr == "work" ) type |= PhoneNumber::Work; 620 else if ( tmpStr == "work" ) type |= PhoneNumber::Work;
618 else if ( tmpStr == "msg" ) type |= PhoneNumber::Msg; 621 else if ( tmpStr == "msg" ) type |= PhoneNumber::Msg;
619 else if ( tmpStr == "pref" ) type |= PhoneNumber::Pref; 622 else if ( tmpStr == "pref" ) type |= PhoneNumber::Pref;
620 else if ( tmpStr == "voice" ) type |= PhoneNumber::Voice; 623 else if ( tmpStr == "voice" ) type |= PhoneNumber::Voice;
621 else if ( tmpStr == "fax" ) type |= PhoneNumber::Fax; 624 else if ( tmpStr == "fax" ) type |= PhoneNumber::Fax;
622 else if ( tmpStr == "cell" ) type |= PhoneNumber::Cell; 625 else if ( tmpStr == "cell" ) type |= PhoneNumber::Cell;
623 else if ( tmpStr == "video" ) type |= PhoneNumber::Video; 626 else if ( tmpStr == "video" ) type |= PhoneNumber::Video;
624 else if ( tmpStr == "bbs" ) type |= PhoneNumber::Bbs; 627 else if ( tmpStr == "bbs" ) type |= PhoneNumber::Bbs;
625 else if ( tmpStr == "modem" ) type |= PhoneNumber::Modem; 628 else if ( tmpStr == "modem" ) type |= PhoneNumber::Modem;
626 else if ( tmpStr == "car" ) type |= PhoneNumber::Car; 629 else if ( tmpStr == "car" ) type |= PhoneNumber::Car;
627 else if ( tmpStr == "isdn" ) type |= PhoneNumber::Isdn; 630 else if ( tmpStr == "isdn" ) type |= PhoneNumber::Isdn;
628 else if ( tmpStr == "pcs" ) type |= PhoneNumber::Pcs; 631 else if ( tmpStr == "pcs" ) type |= PhoneNumber::Pcs;
629 else if ( tmpStr == "pager" ) type |= PhoneNumber::Pager; 632 else if ( tmpStr == "pager" ) type |= PhoneNumber::Pager;
630 } 633 }
631 } 634 }
632 p.setType( type ); 635 p.setType( type );
633 636
634 return p; 637 return p;
635} 638}
636 639
637QString VCardFormatImpl::readTextValue( ContentLine *cl ) 640QString VCardFormatImpl::readTextValue( ContentLine *cl )
638{ 641{
639 VCARD::Value *value = cl->value(); 642 VCARD::Value *value = cl->value();
640 if ( value ) { 643 if ( value ) {
641 return QString::fromUtf8( value->asString() ); 644 return QString::fromUtf8( value->asString() );
642 } else { 645 } else {
643 kdDebug(5700) << "No value: " << cl->asString() << endl; 646 kdDebug(5700) << "No value: " << cl->asString() << endl;
644 qDebug("No value: %s", (const char*)(cl->asString())); 647 qDebug("No value: %s", (const char*)(cl->asString()));
645 return QString::null; 648 return QString::null;
646 } 649 }
647} 650}
648 651
649QDate VCardFormatImpl::readDateValue( ContentLine *cl ) 652QDate VCardFormatImpl::readDateValue( ContentLine *cl )
650{ 653{
651 DateValue *dateValue = (DateValue *)cl->value(); 654 DateValue *dateValue = (DateValue *)cl->value();
652 if ( dateValue ) 655 if ( dateValue )
653 return dateValue->qdate(); 656 return dateValue->qdate();
654 else 657 else
655 return QDate(); 658 return QDate();
656} 659}
657 660
658QDateTime VCardFormatImpl::readDateTimeValue( ContentLine *cl ) 661QDateTime VCardFormatImpl::readDateTimeValue( ContentLine *cl )
659{ 662{
660 DateValue *dateValue = (DateValue *)cl->value(); 663 DateValue *dateValue = (DateValue *)cl->value();
661 if ( dateValue ) 664 if ( dateValue )
662 return dateValue->qdt(); 665 return dateValue->qdt();
663 else 666 else
664 return QDateTime(); 667 return QDateTime();
665} 668}
666 669
667Geo VCardFormatImpl::readGeoValue( ContentLine *cl ) 670Geo VCardFormatImpl::readGeoValue( ContentLine *cl )
668{ 671{
669 GeoValue *geoValue = (GeoValue *)cl->value(); 672 GeoValue *geoValue = (GeoValue *)cl->value();
670 if ( geoValue ) { 673 if ( geoValue ) {
671 Geo geo( geoValue->latitude(), geoValue->longitude() ); 674 Geo geo( geoValue->latitude(), geoValue->longitude() );
672 return geo; 675 return geo;
673 } else 676 } else
674 return Geo(); 677 return Geo();
675} 678}
676 679
677TimeZone VCardFormatImpl::readUTCValue( ContentLine *cl ) 680TimeZone VCardFormatImpl::readUTCValue( ContentLine *cl )
678{ 681{
679 UTCValue *utcValue = (UTCValue *)cl->value(); 682 UTCValue *utcValue = (UTCValue *)cl->value();
680 if ( utcValue ) { 683 if ( utcValue ) {
681 TimeZone tz; 684 TimeZone tz;
682 tz.setOffset(((utcValue->hour()*60)+utcValue->minute())*(utcValue->positive() ? 1 : -1)); 685 tz.setOffset(((utcValue->hour()*60)+utcValue->minute())*(utcValue->positive() ? 1 : -1));
683 return tz; 686 return tz;
684 } else 687 } else
685 return TimeZone(); 688 return TimeZone();
686} 689}
687 690
688Secrecy VCardFormatImpl::readClassValue( ContentLine *cl ) 691Secrecy VCardFormatImpl::readClassValue( ContentLine *cl )
689{ 692{
690 ClassValue *classValue = (ClassValue *)cl->value(); 693 ClassValue *classValue = (ClassValue *)cl->value();
691 if ( classValue ) { 694 if ( classValue ) {
692 Secrecy secrecy; 695 Secrecy secrecy;
693 switch ( classValue->type() ) { 696 switch ( classValue->type() ) {
694 case ClassValue::Public: 697 case ClassValue::Public:
695 secrecy.setType( Secrecy::Public ); 698 secrecy.setType( Secrecy::Public );
696 break; 699 break;
697 case ClassValue::Private: 700 case ClassValue::Private:
698 secrecy.setType( Secrecy::Private ); 701 secrecy.setType( Secrecy::Private );
699 break; 702 break;
700 case ClassValue::Confidential: 703 case ClassValue::Confidential:
701 secrecy.setType( Secrecy::Confidential ); 704 secrecy.setType( Secrecy::Confidential );
702 break; 705 break;
703 } 706 }
704 707
705 return secrecy; 708 return secrecy;
706 } else 709 } else
707 return Secrecy(); 710 return Secrecy();
708} 711}
709 712
710void VCardFormatImpl::addKeyValue( VCARD::VCard *vcard, const Key &key ) 713void VCardFormatImpl::addKeyValue( VCARD::VCard *vcard, const Key &key )
711{ 714{
712 ContentLine cl; 715 ContentLine cl;
713 cl.setName( EntityTypeToParamName( EntityKey ) ); 716 cl.setName( EntityTypeToParamName( EntityKey ) );
714 717
715 ParamList params; 718 ParamList params;
716 if ( key.isBinary() ) { 719 if ( key.isBinary() ) {
717 cl.setValue( new TextValue( KCodecs::base64Encode( key.binaryData() ) ) ); 720 cl.setValue( new TextValue( KCodecs::base64Encode( key.binaryData() ) ) );
718 params.append( new Param( "ENCODING", "b" ) ); 721 params.append( new Param( "ENCODING", "b" ) );
719 } else { 722 } else {
720 cl.setValue( new TextValue( key.textData().utf8() ) ); 723 cl.setValue( new TextValue( key.textData().utf8() ) );
721 } 724 }
722 725
723 switch ( key.type() ) { 726 switch ( key.type() ) {
724 case Key::X509: 727 case Key::X509:
725 params.append( new Param( "TYPE", "X509" ) ); 728 params.append( new Param( "TYPE", "X509" ) );
726 break; 729 break;
727 case Key::PGP: 730 case Key::PGP:
728 params.append( new Param( "TYPE", "PGP" ) ); 731 params.append( new Param( "TYPE", "PGP" ) );
729 break; 732 break;
730 case Key::Custom: 733 case Key::Custom:
731 params.append( new Param( "TYPE", key.customTypeString().utf8() ) ); 734 params.append( new Param( "TYPE", key.customTypeString().utf8() ) );
732 break; 735 break;
733 } 736 }
734 737
735 cl.setParamList( params ); 738 cl.setParamList( params );
736 vcard->add( cl ); 739 vcard->add( cl );
737} 740}
738 741
739Key VCardFormatImpl::readKeyValue( VCARD::ContentLine *cl ) 742Key VCardFormatImpl::readKeyValue( VCARD::ContentLine *cl )
740{ 743{
741 Key key; 744 Key key;
742 bool isBinary = false; 745 bool isBinary = false;
743 TextValue *v = (TextValue *)cl->value(); 746 TextValue *v = (TextValue *)cl->value();
744 747
745 ParamList params = cl->paramList(); 748 ParamList params = cl->paramList();
746 ParamListIterator it( params ); 749 ParamListIterator it( params );
747 for( ; it.current(); ++it ) { 750 for( ; it.current(); ++it ) {
748 if ( (*it)->name() == "ENCODING" && (*it)->value() == "b" ) 751 if ( (*it)->name() == "ENCODING" && (*it)->value() == "b" )
749 isBinary = true; 752 isBinary = true;
750 if ( (*it)->name() == "TYPE" ) { 753 if ( (*it)->name() == "TYPE" ) {
751 if ( (*it)->value().isEmpty() ) 754 if ( (*it)->value().isEmpty() )
752 continue; 755 continue;
753 if ( (*it)->value() == "X509" ) 756 if ( (*it)->value() == "X509" )
754 key.setType( Key::X509 ); 757 key.setType( Key::X509 );
755 else if ( (*it)->value() == "PGP" ) 758 else if ( (*it)->value() == "PGP" )
756 key.setType( Key::PGP ); 759 key.setType( Key::PGP );
757 else { 760 else {
758 key.setType( Key::Custom ); 761 key.setType( Key::Custom );
759 key.setCustomTypeString( QString::fromUtf8( (*it)->value() ) ); 762 key.setCustomTypeString( QString::fromUtf8( (*it)->value() ) );
760 } 763 }
761 } 764 }
762 } 765 }
763 766
764 767
765 if ( isBinary ) { 768 if ( isBinary ) {
766 QByteArray data; 769 QByteArray data;
767 KCodecs::base64Decode( v->asString().stripWhiteSpace(), data ); 770 KCodecs::base64Decode( v->asString().stripWhiteSpace(), data );
768 key.setBinaryData( data ); 771 key.setBinaryData( data );
769 } else { 772 } else {
770 key.setTextData( QString::fromUtf8( v->asString() ) ); 773 key.setTextData( QString::fromUtf8( v->asString() ) );
771 } 774 }
772 775
773 return key; 776 return key;
774} 777}
775 778
776 779
777void VCardFormatImpl::addAgentValue( VCARD::VCard *vcard, const Agent &agent ) 780void VCardFormatImpl::addAgentValue( VCARD::VCard *vcard, const Agent &agent )
778{ 781{
779 if ( agent.isIntern() && !agent.addressee() ) 782 if ( agent.isIntern() && !agent.addressee() )
780 return; 783 return;
781 784
782 if ( !agent.isIntern() && agent.url().isEmpty() ) 785 if ( !agent.isIntern() && agent.url().isEmpty() )
783 return; 786 return;
784 787
785 ContentLine cl; 788 ContentLine cl;
786 cl.setName( EntityTypeToParamName( EntityAgent ) ); 789 cl.setName( EntityTypeToParamName( EntityAgent ) );
787 790
788 ParamList params; 791 ParamList params;
789 if ( agent.isIntern() ) { 792 if ( agent.isIntern() ) {
790 QString vstr; 793 QString vstr;
791 Addressee *addr = agent.addressee(); 794 Addressee *addr = agent.addressee();
792 if ( addr ) { 795 if ( addr ) {
793 writeToString( (*addr), vstr ); 796 writeToString( (*addr), vstr );
794 797
795 qDebug("VCardFormatImpl::addAgentValue please verify if replace is correct"); 798 qDebug("VCardFormatImpl::addAgentValue please verify if replace is correct");
796/*US 799/*US
797 vstr.replace( ":", "\\:" ); 800 vstr.replace( ":", "\\:" );
798 vstr.replace( ",", "\\," ); 801 vstr.replace( ",", "\\," );
799 vstr.replace( ";", "\\;" ); 802 vstr.replace( ";", "\\;" );
800 vstr.replace( "\r\n", "\\n" ); 803 vstr.replace( "\r\n", "\\n" );
801*/ 804*/
802 vstr.replace( QRegExp(":"), "\\:" ); 805 vstr.replace( QRegExp(":"), "\\:" );
803 vstr.replace( QRegExp(","), "\\," ); 806 vstr.replace( QRegExp(","), "\\," );
804 vstr.replace( QRegExp(";"), "\\;" ); 807 vstr.replace( QRegExp(";"), "\\;" );
805 vstr.replace( QRegExp("\r\n"), "\\n" ); 808 vstr.replace( QRegExp("\r\n"), "\\n" );
806 809
807 cl.setValue( new TextValue( vstr.utf8() ) ); 810 cl.setValue( new TextValue( vstr.utf8() ) );
808 } else 811 } else
809 return; 812 return;
810 } else { 813 } else {
811 cl.setValue( new TextValue( agent.url().utf8() ) ); 814 cl.setValue( new TextValue( agent.url().utf8() ) );
812 params.append( new Param( "VALUE", "uri" ) ); 815 params.append( new Param( "VALUE", "uri" ) );
813 } 816 }
814 817
815 cl.setParamList( params ); 818 cl.setParamList( params );
816 vcard->add( cl ); 819 vcard->add( cl );
817} 820}
818 821
819Agent VCardFormatImpl::readAgentValue( VCARD::ContentLine *cl ) 822Agent VCardFormatImpl::readAgentValue( VCARD::ContentLine *cl )
820{ 823{
821 Agent agent; 824 Agent agent;
822 bool isIntern = true; 825 bool isIntern = true;
823 TextValue *v = (TextValue *)cl->value(); 826 TextValue *v = (TextValue *)cl->value();
824 827
825 ParamList params = cl->paramList(); 828 ParamList params = cl->paramList();
826 ParamListIterator it( params ); 829 ParamListIterator it( params );
827 for( ; it.current(); ++it ) { 830 for( ; it.current(); ++it ) {
828 if ( (*it)->name() == "VALUE" && (*it)->value() == "uri" ) 831 if ( (*it)->name() == "VALUE" && (*it)->value() == "uri" )
829 isIntern = false; 832 isIntern = false;
830 } 833 }
831 834
832 if ( isIntern ) { 835 if ( isIntern ) {
833 QString vstr = QString::fromUtf8( v->asString() ); 836 QString vstr = QString::fromUtf8( v->asString() );
834 qDebug("VCardFormatImpl::addAgentValue please verify if replace is correct"); 837 qDebug("VCardFormatImpl::addAgentValue please verify if replace is correct");
835/*US 838/*US
836 vstr.replace( "\\n", "\r\n" ); 839 vstr.replace( "\\n", "\r\n" );
837 vstr.replace( "\\:", ":" ); 840 vstr.replace( "\\:", ":" );
838 vstr.replace( "\\,", "," ); 841 vstr.replace( "\\,", "," );
839 vstr.replace( "\\;", ";" ); 842 vstr.replace( "\\;", ";" );
840*/ 843*/
841 vstr.replace( QRegExp("\\\\n"), "\r\n" ); 844 vstr.replace( QRegExp("\\\\n"), "\r\n" );
842 vstr.replace( QRegExp("\\\\:"), ":" ); 845 vstr.replace( QRegExp("\\\\:"), ":" );
843 vstr.replace( QRegExp("\\\\,"), "," ); 846 vstr.replace( QRegExp("\\\\,"), "," );
844 vstr.replace( QRegExp("\\\\;"), ";" ); 847 vstr.replace( QRegExp("\\\\;"), ";" );
845 848
846 Addressee *addr = new Addressee; 849 Addressee *addr = new Addressee;
847 readFromString( vstr, *addr ); 850 readFromString( vstr, *addr );
848 agent.setAddressee( addr ); 851 agent.setAddressee( addr );
849 } else { 852 } else {
850 agent.setUrl( QString::fromUtf8( v->asString() ) ); 853 agent.setUrl( QString::fromUtf8( v->asString() ) );
851 } 854 }
852 855
853 return agent; 856 return agent;
854} 857}
855 858
856#include <qstringlist.h> 859#include <qstringlist.h>
857void VCardFormatImpl::addPictureValue( VCARD::VCard *vcard, VCARD::EntityType type, const Picture &pic, const Addressee &addr, bool intern ) 860void VCardFormatImpl::addPictureValue( VCARD::VCard *vcard, VCARD::EntityType type, const Picture &pic, const Addressee &addr, bool intern )
858{ 861{
859 ContentLine cl; 862 ContentLine cl;
860 cl.setName( EntityTypeToParamName( type ) ); 863 cl.setName( EntityTypeToParamName( type ) );
861 // qDebug( "IIIMMMMM %s",QImage::outputFormatList ().join("-").latin1() ); 864 // qDebug( "IIIMMMMM %s",QImage::outputFormatList ().join("-").latin1() );
862 if ( pic.isIntern() && pic.data().isNull() ) 865 if ( pic.isIntern() && pic.data().isNull() )
863 return; 866 return;
864 867
865 if ( !pic.isIntern() && pic.url().isEmpty() ) 868 if ( !pic.isIntern() && pic.url().isEmpty() )
866 return; 869 return;
867 870
868 ParamList params; 871 ParamList params;
869 if ( pic.isIntern() ) { 872 if ( pic.isIntern() ) {
870 QImage img = pic.data(); 873 QImage img = pic.data();
871 if ( intern ) { // only for vCard export we really write the data inline 874 if ( intern ) { // only for vCard export we really write the data inline
872 QByteArray data; 875 QByteArray data;
873 QDataStream s( data, IO_WriteOnly ); 876 QDataStream s( &data, QIODevice::WriteOnly );
874 s.setVersion( 4 ); // to produce valid png files 877 s.setVersion( 4 ); // to produce valid png files
875 s << img; 878 s << img;
876 cl.setValue( new TextValue( KCodecs::base64Encode( data ) ) ); 879 cl.setValue( new TextValue( KCodecs::base64Encode( data ) ) );
877 params.append( new Param( "ENCODING", "b" ) ); 880 params.append( new Param( "ENCODING", "b" ) );
878 if ( !pic.type().isEmpty() ) 881 if ( !pic.type().isEmpty() )
879 params.append( new Param( "TYPE", pic.type().utf8() ) ); 882 params.append( new Param( "TYPE", pic.type().utf8() ) );
880 } else { // save picture in cache 883 } else { // save picture in cache
881 QString dir; 884 QString dir;
882 if ( type == EntityPhoto ) 885 if ( type == EntityPhoto )
883 dir = "photos"; 886 dir = "photos";
884 if ( type == EntityLogo ) 887 if ( type == EntityLogo )
885 dir = "logos"; 888 dir = "logos";
886 QString imUrl = locateLocal( "data", "kabc/" + dir + "/" + addr.uid() ); 889 QString imUrl = locateLocal( "data", "kabc/" + dir + "/" + addr.uid() );
887 KABC::Picture* ppic =(KABC::Picture*) &pic; 890 KABC::Picture* ppic =(KABC::Picture*) &pic;
888 ppic->setUrl( imUrl ); 891 ppic->setUrl( imUrl );
889 img.save(imUrl, "PNG" ); 892 img.save(imUrl, "PNG" );
890 cl.setValue( new TextValue( pic.url().utf8() ) ); 893 cl.setValue( new TextValue( pic.url().utf8() ) );
891 params.append( new Param( "VALUE", "uri" ) ); 894 params.append( new Param( "VALUE", "uri" ) );
892 } 895 }
893 896
894 } else { 897 } else {
895 898
896 cl.setValue( new TextValue( pic.url().utf8() ) ); 899 cl.setValue( new TextValue( pic.url().utf8() ) );
897 params.append( new Param( "VALUE", "uri" ) ); 900 params.append( new Param( "VALUE", "uri" ) );
898 } 901 }
899 902
900 cl.setParamList( params ); 903 cl.setParamList( params );
901 vcard->add( cl ); 904 vcard->add( cl );
902} 905}
903 906
904Picture VCardFormatImpl::readPictureValue( VCARD::ContentLine *cl, VCARD::EntityType type, const Addressee &addr ) 907Picture VCardFormatImpl::readPictureValue( VCARD::ContentLine *cl, VCARD::EntityType type, const Addressee &addr )
905{ 908{
906 Picture pic; 909 Picture pic;
907 bool isInline = false; 910 bool isInline = false;
908 QString picType; 911 QString picType;
909 TextValue *v = (TextValue *)cl->value(); 912 TextValue *v = (TextValue *)cl->value();
910 913
911 ParamList params = cl->paramList(); 914 ParamList params = cl->paramList();
912 ParamListIterator it( params ); 915 ParamListIterator it( params );
913 for( ; it.current(); ++it ) { 916 for( ; it.current(); ++it ) {
914 if ( (*it)->name() == "ENCODING" && (*it)->value() == "b" ) 917 if ( (*it)->name() == "ENCODING" && (*it)->value() == "b" )
915 isInline = true; 918 isInline = true;
916 if ( (*it)->name() == "TYPE" && !(*it)->value().isEmpty() ) 919 if ( (*it)->name() == "TYPE" && !(*it)->value().isEmpty() )
917 picType = QString::fromUtf8( (*it)->value() ); 920 picType = QString::fromUtf8( (*it)->value() );
918 } 921 }
919 922
920 if ( isInline ) { 923 if ( isInline ) {
921 QImage img; 924 QImage img;
922 if ( v->asString() == "<dummy>" ) { // no picture inline stored => picture is in cache 925 if ( v->asString() == "<dummy>" ) { // no picture inline stored => picture is in cache
923 QString dir; 926 QString dir;
924 if ( type == EntityPhoto ) 927 if ( type == EntityPhoto )
925 dir = "photos"; 928 dir = "photos";
926 if ( type == EntityLogo ) 929 if ( type == EntityLogo )
927 dir = "logos"; 930 dir = "logos";
928 931
929 img.load( locateLocal( "data", "kabc/" + dir + "/" + addr.uid() ) ); 932 img.load( locateLocal( "data", "kabc/" + dir + "/" + addr.uid() ) );
930 } else { 933 } else {
931 QByteArray data; 934 QByteArray data;
932 KCodecs::base64Decode( v->asString(), data ); 935 KCodecs::base64Decode( v->asString(), data );
933 img.loadFromData( data ); 936 img.loadFromData( data );
934 } 937 }
935 pic.setData( img ); 938 pic.setData( img );
936 pic.setType( picType ); 939 pic.setType( picType );
937 } else { 940 } else {
938 pic.setUrl( QString::fromUtf8( v->asString() ) ); 941 pic.setUrl( QString::fromUtf8( v->asString() ) );
939 } 942 }
940 943
941 return pic; 944 return pic;
942} 945}
943 946
944void VCardFormatImpl::addSoundValue( VCARD::VCard *vcard, const Sound &sound, const Addressee &addr, bool intern ) 947void VCardFormatImpl::addSoundValue( VCARD::VCard *vcard, const Sound &sound, const Addressee &addr, bool intern )
945{ 948{
946 ContentLine cl; 949 ContentLine cl;
947 cl.setName( EntityTypeToParamName( EntitySound ) ); 950 cl.setName( EntityTypeToParamName( EntitySound ) );
948 951
949 if ( sound.isIntern() && sound.data().isNull() ) 952 if ( sound.isIntern() && sound.data().isNull() )
950 return; 953 return;
951 954
952 if ( !sound.isIntern() && sound.url().isEmpty() ) 955 if ( !sound.isIntern() && sound.url().isEmpty() )
953 return; 956 return;
954 957
955 ParamList params; 958 ParamList params;
956 if ( sound.isIntern() ) { 959 if ( sound.isIntern() ) {
957 QByteArray data = sound.data(); 960 QByteArray data = sound.data();
958 if ( intern ) { // only for vCard export we really write the data inline 961 if ( intern ) { // only for vCard export we really write the data inline
959 cl.setValue( new TextValue( KCodecs::base64Encode( data ) ) ); 962 cl.setValue( new TextValue( KCodecs::base64Encode( data ) ) );
960 } else { // save sound in cache 963 } else { // save sound in cache
961 QFile file( locateLocal( "data", "kabc/sounds/" + addr.uid() ) ); 964 QFile file( locateLocal( "data", "kabc/sounds/" + addr.uid() ) );
962 if ( file.open( IO_WriteOnly ) ) { 965 if ( file.open( QIODevice::WriteOnly ) ) {
963 file.writeBlock( data ); 966 file.writeBlock( data );
964 } 967 }
965 cl.setValue( new TextValue( "<dummy>" ) ); 968 cl.setValue( new TextValue( "<dummy>" ) );
966 } 969 }
967 params.append( new Param( "ENCODING", "b" ) ); 970 params.append( new Param( "ENCODING", "b" ) );
968 } else { 971 } else {
969 cl.setValue( new TextValue( sound.url().utf8() ) ); 972 cl.setValue( new TextValue( sound.url().utf8() ) );
970 params.append( new Param( "VALUE", "uri" ) ); 973 params.append( new Param( "VALUE", "uri" ) );
971 } 974 }
972 975
973 cl.setParamList( params ); 976 cl.setParamList( params );
974 vcard->add( cl ); 977 vcard->add( cl );
975} 978}
976 979
977Sound VCardFormatImpl::readSoundValue( VCARD::ContentLine *cl, const Addressee &addr ) 980Sound VCardFormatImpl::readSoundValue( VCARD::ContentLine *cl, const Addressee &addr )
978{ 981{
979 Sound sound; 982 Sound sound;
980 bool isInline = false; 983 bool isInline = false;
981 TextValue *v = (TextValue *)cl->value(); 984 TextValue *v = (TextValue *)cl->value();
982 985
983 ParamList params = cl->paramList(); 986 ParamList params = cl->paramList();
984 ParamListIterator it( params ); 987 ParamListIterator it( params );
985 for( ; it.current(); ++it ) { 988 for( ; it.current(); ++it ) {
986 if ( (*it)->name() == "ENCODING" && (*it)->value() == "b" ) 989 if ( (*it)->name() == "ENCODING" && (*it)->value() == "b" )
987 isInline = true; 990 isInline = true;
988 } 991 }
989 992
990 if ( isInline ) { 993 if ( isInline ) {
991 QByteArray data; 994 QByteArray data;
992 if ( v->asString() == "<dummy>" ) { // no sound inline stored => sound is in cache 995 if ( v->asString() == "<dummy>" ) { // no sound inline stored => sound is in cache
993 QFile file( locateLocal( "data", "kabc/sounds/" + addr.uid() ) ); 996 QFile file( locateLocal( "data", "kabc/sounds/" + addr.uid() ) );
994 if ( file.open( IO_ReadOnly ) ) { 997 if ( file.open( QIODevice::ReadOnly ) ) {
995 data = file.readAll(); 998 data = file.readAll();
996 file.close(); 999 file.close();
997 } 1000 }
998 } else { 1001 } else {
999 KCodecs::base64Decode( v->asString(), data ); 1002 KCodecs::base64Decode( v->asString(), data );
1000 } 1003 }
1001 sound.setData( data ); 1004 sound.setData( data );
1002 } else { 1005 } else {
1003 sound.setUrl( QString::fromUtf8( v->asString() ) ); 1006 sound.setUrl( QString::fromUtf8( v->asString() ) );
1004 } 1007 }
1005 1008
1006 return sound; 1009 return sound;
1007} 1010}
1008 1011
1009bool VCardFormatImpl::readFromString( const QString &vcard, Addressee &addressee ) 1012bool VCardFormatImpl::readFromString( const QString &vcard, Addressee &addressee )
1010{ 1013{
1011 VCardEntity e( vcard.utf8() ); 1014 VCardEntity e( vcard.utf8() );
1012 VCardListIterator it( e.cardList() ); 1015 VCardListIterator it( e.cardList() );
1013 1016
1014 if ( it.current() ) { 1017 if ( it.current() ) {
1015//US VCard v(*it.current()); 1018//US VCard v(*it.current());
1016//US loadAddressee( addressee, v ); 1019//US loadAddressee( addressee, v );
1017 loadAddressee( addressee, it.current() ); 1020 loadAddressee( addressee, it.current() );
1018 return true; 1021 return true;
1019 } 1022 }
1020 1023
1021 return false; 1024 return false;
1022} 1025}
1023 1026
1024bool VCardFormatImpl::writeToString( const Addressee &addressee, QString &vcard ) 1027bool VCardFormatImpl::writeToString( const Addressee &addressee, QString &vcard )
1025{ 1028{
1026 VCardEntity vcards; 1029 VCardEntity vcards;
1027 VCardList vcardlist; 1030 VCardList vcardlist;
1028 vcardlist.setAutoDelete( true ); 1031 vcardlist.setAutoDelete( true );
1029 1032
1030 VCard *v = new VCard; 1033 VCard *v = new VCard;
1031 1034
1032 saveAddressee( addressee, v, true ); 1035 saveAddressee( addressee, v, true );
1033 1036
1034 vcardlist.append( v ); 1037 vcardlist.append( v );
1035 vcards.setCardList( vcardlist ); 1038 vcards.setCardList( vcardlist );
1036 vcard = QString::fromUtf8( vcards.asString() ); 1039 vcard = QString::fromUtf8( vcards.asString() );
1037 1040
1038 return true; 1041 return true;
1039} 1042}
diff --git a/kabc/vcardformatplugin.cpp b/kabc/vcardformatplugin.cpp
index 8db8c11..0b97a08 100644
--- a/kabc/vcardformatplugin.cpp
+++ b/kabc/vcardformatplugin.cpp
@@ -1,70 +1,70 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#include "vcardformatplugin.h" 21#include "vcardformatplugin.h"
22#include "vcardformatimpl.h" 22#include "vcardformatimpl.h"
23 23
24using namespace KABC; 24using namespace KABC;
25 25
26VCardFormatPlugin::VCardFormatPlugin() 26VCardFormatPlugin::VCardFormatPlugin()
27{ 27{
28 mImpl = new VCardFormatImpl; 28 mImpl = new VCardFormatImpl;
29} 29}
30 30
31VCardFormatPlugin::~VCardFormatPlugin() 31VCardFormatPlugin::~VCardFormatPlugin()
32{ 32{
33 delete mImpl; 33 delete mImpl;
34} 34}
35 35
36bool VCardFormatPlugin::load( Addressee &addressee, QFile *file ) 36bool VCardFormatPlugin::load( Addressee &addressee, QFile *file )
37{ 37{
38 qDebug("VCardFormatPlugin::load"); 38 qDebug("VCardFormatPlugin::load");
39 return mImpl->load( addressee, file ); 39 return mImpl->load( addressee, file );
40} 40}
41 41
42bool VCardFormatPlugin::loadAll( AddressBook *addressBook, Resource *resource, QFile *file ) 42bool VCardFormatPlugin::loadAll( AddressBook *addressBook, Resource *resource, QFile *file )
43{ 43{
44 // qDebug("VCardFormatPlugin::loadAll"); 44 // qDebug("VCardFormatPlugin::loadAll");
45 return mImpl->loadAll( addressBook, resource, file ); 45 return mImpl->loadAll( addressBook, resource, file );
46} 46}
47 47
48void VCardFormatPlugin::save( const Addressee &addressee, QFile *file ) 48void VCardFormatPlugin::save( const Addressee &addressee, QFile *file )
49{ 49{
50 qDebug("VCardFormatPlugin::save"); 50 qDebug("VCardFormatPlugin::save");
51 mImpl->save( addressee, file ); 51 mImpl->save( addressee, file );
52} 52}
53 53
54void VCardFormatPlugin::saveAll( AddressBook *addressBook, Resource *resource, QFile *file ) 54void VCardFormatPlugin::saveAll( AddressBook *addressBook, Resource *resource, QFile *file )
55{ 55{
56 qDebug("VCardFormatPlugin::saveAll"); 56 qDebug("VCardFormatPlugin::saveAll");
57 mImpl->saveAll( addressBook, resource, file ); 57 mImpl->saveAll( addressBook, resource, file );
58} 58}
59 59
60bool VCardFormatPlugin::checkFormat( QFile *file ) const 60bool VCardFormatPlugin::checkFormat( QFile *file ) const
61{ 61{
62 QString line; 62 QString line;
63 63
64 file->readLine( line, 1024 ); 64 char tmp[1024]; file->readLine( tmp, 1024 ); line = tmp;
65 line = line.stripWhiteSpace(); 65 line = line.stripWhiteSpace();
66 if ( line == "BEGIN:VCARD" ) 66 if ( line == "BEGIN:VCARD" )
67 return true; 67 return true;
68 else 68 else
69 return false; 69 return false;
70} 70}
diff --git a/kabc/vcardparser/vcard.h b/kabc/vcardparser/vcard.h
index 0bee441..85b50e4 100644
--- a/kabc/vcardparser/vcard.h
+++ b/kabc/vcardparser/vcard.h
@@ -1,91 +1,91 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#ifndef VCARDPARSER_VCARD_H 21#ifndef VCARDPARSER_VCARD_H
22#define VCARDPARSER_VCARD_H 22#define VCARDPARSER_VCARD_H
23 23
24#include "vcardline.h" 24#include "vcardline.h"
25#include <qmap.h> 25#include <qmap.h>
26#include <qstringlist.h> 26#include <qstringlist.h>
27#include <qvaluelist.h> 27#include <q3valuelist.h>
28 28
29namespace KABC { 29namespace KABC {
30 30
31class VCard 31class VCard
32{ 32{
33 public: 33 public:
34 typedef QValueList<VCard> List; 34 typedef Q3ValueList<VCard> List;
35 typedef QMap< QString, VCardLine::List > LineMap; 35 typedef QMap< QString, VCardLine::List > LineMap;
36 36
37 enum Version { v2_1, v3_0 }; 37 enum Version { v2_1, v3_0 };
38 38
39 VCard(); 39 VCard();
40 VCard( const VCard& ); 40 VCard( const VCard& );
41 41
42 ~VCard(); 42 ~VCard();
43 43
44 VCard& operator=( const VCard& ); 44 VCard& operator=( const VCard& );
45 45
46 /** 46 /**
47 * Removes all lines from the vCard. 47 * Removes all lines from the vCard.
48 */ 48 */
49 void clear(); 49 void clear();
50 50
51 /** 51 /**
52 * Returns a list of all identifiers that exists in the 52 * Returns a list of all identifiers that exists in the
53 * vCard. 53 * vCard.
54 */ 54 */
55 QStringList identifiers() const; 55 QStringList identifiers() const;
56 56
57 /** 57 /**
58 * Adds a VCardLine to the VCard 58 * Adds a VCardLine to the VCard
59 */ 59 */
60 void addLine( const VCardLine& line ); 60 void addLine( const VCardLine& line );
61 61
62 /** 62 /**
63 * Returns all lines of the vcard with a special identifier. 63 * Returns all lines of the vcard with a special identifier.
64 */ 64 */
65 VCardLine::List lines( const QString& identifier ) const; 65 VCardLine::List lines( const QString& identifier ) const;
66 66
67 /** 67 /**
68 * Returns only the first line of the vcard with a special identifier. 68 * Returns only the first line of the vcard with a special identifier.
69 */ 69 */
70 VCardLine line( const QString& identifier ) const; 70 VCardLine line( const QString& identifier ) const;
71 71
72 /** 72 /**
73 * Set the version of the vCard. 73 * Set the version of the vCard.
74 */ 74 */
75 void setVersion( Version version ); 75 void setVersion( Version version );
76 76
77 /** 77 /**
78 * Returns the version of this vCard. 78 * Returns the version of this vCard.
79 */ 79 */
80 Version version() const; 80 Version version() const;
81 81
82 private: 82 private:
83 LineMap mLineMap; 83 LineMap mLineMap;
84 84
85 class VCardPrivate; 85 class VCardPrivate;
86 VCardPrivate *d; 86 VCardPrivate *d;
87}; 87};
88 88
89} 89}
90 90
91#endif 91#endif
diff --git a/kabc/vcardparser/vcardline.cpp b/kabc/vcardparser/vcardline.cpp
index 8df2d32..c7254a0 100644
--- a/kabc/vcardparser/vcardline.cpp
+++ b/kabc/vcardparser/vcardline.cpp
@@ -1,175 +1,177 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#include "vcardline.h" 21#include "vcardline.h"
22//Added by qt3to4:
23#include <Q3CString>
22 24
23using namespace KABC; 25using namespace KABC;
24 26
25class VCardLine::VCardLinePrivate 27class VCardLine::VCardLinePrivate
26{ 28{
27 public: 29 public:
28 QString mGroup; 30 QString mGroup;
29}; 31};
30 32
31VCardLine::VCardLine() 33VCardLine::VCardLine()
32 : d( 0 ) 34 : d( 0 )
33{ 35{
34} 36}
35 37
36VCardLine::VCardLine( const QString &identifier ) 38VCardLine::VCardLine( const QString &identifier )
37 : d( 0 ) 39 : d( 0 )
38{ 40{
39 mIdentifier = identifier; 41 mIdentifier = identifier;
40} 42}
41 43
42VCardLine::VCardLine( const QString &identifier, const QString &value ) 44VCardLine::VCardLine( const QString &identifier, const QString &value )
43 : d( 0 ) 45 : d( 0 )
44{ 46{
45 mIdentifier = identifier; 47 mIdentifier = identifier;
46 mValue.assign( value.data(), value.length() ); 48 mValue = value;
47} 49}
48 50
49VCardLine::VCardLine( const VCardLine& line ) 51VCardLine::VCardLine( const VCardLine& line )
50 : d( 0 ) 52 : d( 0 )
51{ 53{
52 mParamMap = line.mParamMap; 54 mParamMap = line.mParamMap;
53 mValue = line.mValue; 55 mValue = line.mValue;
54 mIdentifier = line.mIdentifier; 56 mIdentifier = line.mIdentifier;
55} 57}
56 58
57VCardLine::~VCardLine() 59VCardLine::~VCardLine()
58{ 60{
59 delete d; 61 delete d;
60 d = 0; 62 d = 0;
61} 63}
62 64
63VCardLine& VCardLine::operator=( const VCardLine& line ) 65VCardLine& VCardLine::operator=( const VCardLine& line )
64{ 66{
65 if ( &line == this ) 67 if ( &line == this )
66 return *this; 68 return *this;
67 69
68 mParamMap = line.mParamMap; 70 mParamMap = line.mParamMap;
69 mValue = line.mValue; 71 mValue = line.mValue;
70 mIdentifier = line.mIdentifier; 72 mIdentifier = line.mIdentifier;
71 73
72 return *this; 74 return *this;
73} 75}
74 76
75void VCardLine::setIdentifier( const QString& identifier ) 77void VCardLine::setIdentifier( const QString& identifier )
76{ 78{
77 mIdentifier = identifier; 79 mIdentifier = identifier;
78} 80}
79 81
80QString VCardLine::identifier() const 82QString VCardLine::identifier() const
81{ 83{
82 return mIdentifier; 84 return mIdentifier;
83} 85}
84 86
85void VCardLine::setValueString( const QString& value ) 87void VCardLine::setValueString( const QString& value )
86{ 88{
87 setValueCString( value.utf8() ); 89 setValueCString( value.utf8() );
88} 90}
89void VCardLine::setValueCString( const QCString& value ) 91void VCardLine::setValueCString( const Q3CString& value )
90{ 92{
91 mValue.duplicate( value.data(), value.length() ); 93 mValue.duplicate( value.data(), value.length() );
92} 94}
93 95
94void VCardLine::setValueBytes( const QByteArray& value ) 96void VCardLine::setValueBytes( const QByteArray& value )
95{ 97{
96 mValue = value; 98 mValue = value;
97} 99}
98 100
99QString VCardLine::valueString() const 101QString VCardLine::valueString() const
100{ 102{
101 return QString::fromUtf8( mValue.data(), mValue.size() ); 103 return QString::fromUtf8( mValue.data(), mValue.size() );
102} 104}
103 105
104QByteArray VCardLine::valueBytes() const 106QByteArray VCardLine::valueBytes() const
105{ 107{
106 return mValue; 108 return mValue;
107} 109}
108 110
109void VCardLine::setGroup( const QString& group ) 111void VCardLine::setGroup( const QString& group )
110{ 112{
111 if ( !d ) 113 if ( !d )
112 d = new VCardLinePrivate(); 114 d = new VCardLinePrivate();
113 115
114 d->mGroup = group; 116 d->mGroup = group;
115} 117}
116 118
117QString VCardLine::group() const 119QString VCardLine::group() const
118{ 120{
119 if ( d ) 121 if ( d )
120 return d->mGroup; 122 return d->mGroup;
121 else 123 else
122 return QString(); 124 return QString();
123} 125}
124 126
125bool VCardLine::hasGroup() const 127bool VCardLine::hasGroup() const
126{ 128{
127 if ( !d ) 129 if ( !d )
128 return false; 130 return false;
129 else 131 else
130 return d->mGroup.isEmpty(); 132 return d->mGroup.isEmpty();
131} 133}
132 134
133QStringList VCardLine::parameterList() const 135QStringList VCardLine::parameterList() const
134{ 136{
135 //return mParamMap.keys(); 137 //return mParamMap.keys();
136//US method QMap::keys() not available yet. SO collect the data manually 138//US method QMap::keys() not available yet. SO collect the data manually
137//US return mParamMap->keys(); 139//US return mParamMap->keys();
138 140
139 QStringList result; 141 QStringList result;
140 142
141 QMap<QString, QStringList>::ConstIterator it; 143 QMap<QString, QStringList>::ConstIterator it;
142 for( it = mParamMap.begin(); it != mParamMap.end(); ++it ) { 144 for( it = mParamMap.begin(); it != mParamMap.end(); ++it ) {
143 result << it.key().latin1(); 145 result << it.key().latin1();
144 } 146 }
145 return result; 147 return result;
146} 148}
147 149
148void VCardLine::addParameter( const QString& param, const QString& value ) 150void VCardLine::addParameter( const QString& param, const QString& value )
149{ 151{
150 QStringList &list = mParamMap[ param ]; 152 QStringList &list = mParamMap[ param ];
151 if ( list.findIndex( value ) == -1 ) // not included yet 153 if ( list.findIndex( value ) == -1 ) // not included yet
152 list.append( value ); 154 list.append( value );
153} 155}
154 156
155QStringList VCardLine::parameters( const QString& param ) const 157QStringList VCardLine::parameters( const QString& param ) const
156{ 158{
157 ParamMap::ConstIterator it = mParamMap.find( param ); 159 ParamMap::ConstIterator it = mParamMap.find( param );
158 if ( it == mParamMap.end() ) 160 if ( it == mParamMap.end() )
159 return QStringList(); 161 return QStringList();
160 else 162 else
161 return *it; 163 return *it;
162} 164}
163 165
164QString VCardLine::parameter( const QString& param ) const 166QString VCardLine::parameter( const QString& param ) const
165{ 167{
166 ParamMap::ConstIterator it = mParamMap.find( param ); 168 ParamMap::ConstIterator it = mParamMap.find( param );
167 if ( it == mParamMap.end() ) 169 if ( it == mParamMap.end() )
168 return QString::null; 170 return QString::null;
169 else { 171 else {
170 if ( (*it).isEmpty() ) 172 if ( (*it).isEmpty() )
171 return QString::null; 173 return QString::null;
172 else 174 else
173 return (*it).first(); 175 return (*it).first();
174 } 176 }
175} 177}
diff --git a/kabc/vcardparser/vcardline.h b/kabc/vcardparser/vcardline.h
index 8dc9322..dc4bdec 100644
--- a/kabc/vcardparser/vcardline.h
+++ b/kabc/vcardparser/vcardline.h
@@ -1,119 +1,119 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#ifndef VCARDLINE_H 21#ifndef VCARDLINE_H
22#define VCARDLINE_H 22#define VCARDLINE_H
23 23
24#include <qstringlist.h> 24#include <qstringlist.h>
25#include <qvaluelist.h> 25#include <q3valuelist.h>
26#include <qcstring.h> 26#include <q3cstring.h>
27#include <qvariant.h> 27#include <qvariant.h>
28#include <qmap.h> 28#include <qmap.h>
29#include <qstring.h> 29#include <qstring.h>
30 30
31namespace KABC { 31namespace KABC {
32 32
33class VCardLine 33class VCardLine
34{ 34{
35 public: 35 public:
36 typedef QValueList<VCardLine> List; 36 typedef Q3ValueList<VCardLine> List;
37 typedef QMap<QString, QStringList> ParamMap; 37 typedef QMap<QString, QStringList> ParamMap;
38 38
39 VCardLine(); 39 VCardLine();
40 VCardLine( const QString &identifier ); 40 VCardLine( const QString &identifier );
41 VCardLine( const QString &identifier, const QString &value ); 41 VCardLine( const QString &identifier, const QString &value );
42 VCardLine( const VCardLine& ); 42 VCardLine( const VCardLine& );
43 43
44 ~VCardLine(); 44 ~VCardLine();
45 45
46 VCardLine& operator=( const VCardLine& ); 46 VCardLine& operator=( const VCardLine& );
47 47
48 /** 48 /**
49 * Sets the identifier of this line e.g. UID, FN, CLASS 49 * Sets the identifier of this line e.g. UID, FN, CLASS
50 */ 50 */
51 void setIdentifier( const QString& identifier ); 51 void setIdentifier( const QString& identifier );
52 52
53 /** 53 /**
54 * Returns the identifier of this line. 54 * Returns the identifier of this line.
55 */ 55 */
56 QString identifier() const; 56 QString identifier() const;
57 57
58 /** 58 /**
59 * Sets the value of of this line. 59 * Sets the value of of this line.
60 */ 60 */
61 void setValueString( const QString& value ); 61 void setValueString( const QString& value );
62 void setValueCString( const QCString& value ); 62 void setValueCString( const Q3CString& value );
63 void setValueBytes( const QByteArray& value ); 63 void setValueBytes( const QByteArray& value );
64 64
65 /** 65 /**
66 * Returns the value of this line. 66 * Returns the value of this line.
67 */ 67 */
68 QString valueString() const; 68 QString valueString() const;
69 QByteArray valueBytes() const; 69 QByteArray valueBytes() const;
70 70
71 /** 71 /**
72 * Sets the group the line belongs to. 72 * Sets the group the line belongs to.
73 */ 73 */
74 void setGroup( const QString& group ); 74 void setGroup( const QString& group );
75 75
76 /** 76 /**
77 * Returns the group the line belongs to. 77 * Returns the group the line belongs to.
78 */ 78 */
79 QString group() const; 79 QString group() const;
80 80
81 /** 81 /**
82 * Returns whether the line belongs to a group. 82 * Returns whether the line belongs to a group.
83 */ 83 */
84 bool hasGroup() const; 84 bool hasGroup() const;
85 85
86 /** 86 /**
87 * Returns all parameters. 87 * Returns all parameters.
88 */ 88 */
89 QStringList parameterList() const; 89 QStringList parameterList() const;
90 90
91 /** 91 /**
92 * Add a new parameter to the line. 92 * Add a new parameter to the line.
93 */ 93 */
94 void addParameter( const QString& param, const QString& value ); 94 void addParameter( const QString& param, const QString& value );
95 95
96 /** 96 /**
97 * Returns the values of a special parameter. 97 * Returns the values of a special parameter.
98 * You can get a list of all parameters with paramList(). 98 * You can get a list of all parameters with paramList().
99 */ 99 */
100 QStringList parameters( const QString& param ) const; 100 QStringList parameters( const QString& param ) const;
101 101
102 /** 102 /**
103 * Returns only the first value of a special parameter. 103 * Returns only the first value of a special parameter.
104 * You can get a list of all parameters with paramList(). 104 * You can get a list of all parameters with paramList().
105 */ 105 */
106 QString parameter( const QString& param ) const; 106 QString parameter( const QString& param ) const;
107 107
108 private: 108 private:
109 ParamMap mParamMap; 109 ParamMap mParamMap;
110 QString mIdentifier; 110 QString mIdentifier;
111 QByteArray mValue; 111 QByteArray mValue;
112 112
113 class VCardLinePrivate; 113 class VCardLinePrivate;
114 VCardLinePrivate *d; 114 VCardLinePrivate *d;
115}; 115};
116 116
117} 117}
118 118
119#endif 119#endif
diff --git a/kabc/vcardparser/vcardparser.cpp b/kabc/vcardparser/vcardparser.cpp
index 11622a0..a319531 100644
--- a/kabc/vcardparser/vcardparser.cpp
+++ b/kabc/vcardparser/vcardparser.cpp
@@ -1,240 +1,240 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#include <qregexp.h> 21#include <qregexp.h>
22 22
23#include <kmdcodec.h> 23#include <kmdcodec.h>
24 24
25#include "vcardparser.h" 25#include "vcardparser.h"
26 26
27#define FOLD_WIDTH 75 27#define FOLD_WIDTH 75
28 28
29using namespace KABC; 29using namespace KABC;
30 30
31VCardParser::VCardParser() 31VCardParser::VCardParser()
32{ 32{
33} 33}
34 34
35VCardParser::~VCardParser() 35VCardParser::~VCardParser()
36{ 36{
37} 37}
38 38
39VCard::List VCardParser::parseVCards( const QString& text ) 39VCard::List VCardParser::parseVCards( const QString& text )
40{ 40{
41 static QRegExp sep( "[\x0d\x0a]" ); 41 static QRegExp sep( "[\x0d\x0a]" );
42 42
43 VCard currentVCard; 43 VCard currentVCard;
44 VCard::List vCardList; 44 VCard::List vCardList;
45 QString currentLine; 45 QString currentLine;
46 46
47 const QStringList lines = QStringList::split( sep, text ); 47 const QStringList lines = QStringList::split( sep, text );
48 QStringList::ConstIterator it; 48 QStringList::ConstIterator it;
49 49
50 bool inVCard = false; 50 bool inVCard = false;
51 QStringList::ConstIterator linesEnd( lines.end() ); 51 QStringList::ConstIterator linesEnd( lines.end() );
52 for ( it = lines.begin(); it != linesEnd; ++it ) { 52 for ( it = lines.begin(); it != linesEnd; ++it ) {
53 53
54 if ( (*it).isEmpty() ) // empty line 54 if ( (*it).isEmpty() ) // empty line
55 continue; 55 continue;
56 56
57 if ( (*it)[ 0 ] == ' ' || (*it)[ 0 ] == '\t' ) { // folded line => append to previous 57 if ( (*it)[ 0 ] == ' ' || (*it)[ 0 ] == '\t' ) { // folded line => append to previous
58 currentLine += QString( *it ).remove( 0, 1 ); 58 currentLine += QString( *it ).remove( 0, 1 );
59 continue; 59 continue;
60 } else { 60 } else {
61 if ( inVCard && !currentLine.isEmpty() ) { // now parse the line 61 if ( inVCard && !currentLine.isEmpty() ) { // now parse the line
62 int colon = currentLine.find( ':' ); 62 int colon = currentLine.find( ':' );
63 if ( colon == -1 ) { // invalid line 63 if ( colon == -1 ) { // invalid line
64 currentLine = (*it); 64 currentLine = (*it);
65 continue; 65 continue;
66 } 66 }
67 67
68 VCardLine vCardLine; 68 VCardLine vCardLine;
69 const QString key = currentLine.left( colon ).stripWhiteSpace(); 69 const QString key = currentLine.left( colon ).stripWhiteSpace();
70 QString value = currentLine.mid( colon + 1 ); 70 QString value = currentLine.mid( colon + 1 );
71 71
72 QStringList params = QStringList::split( ';', key ); 72 QStringList params = QStringList::split( ';', key );
73 73
74 // check for group 74 // check for group
75 if ( params[0].find( '.' ) != -1 ) { 75 if ( params[0].find( '.' ) != -1 ) {
76 const QStringList groupList = QStringList::split( '.', params[0] ); 76 const QStringList groupList = QStringList::split( '.', params[0] );
77 vCardLine.setGroup( groupList[0] ); 77 vCardLine.setGroup( groupList[0] );
78 vCardLine.setIdentifier( groupList[1] ); 78 vCardLine.setIdentifier( groupList[1] );
79 } else 79 } else
80 vCardLine.setIdentifier( params[0] ); 80 vCardLine.setIdentifier( params[0] );
81 81
82 if ( params.count() > 1 ) { // find all parameters 82 if ( params.count() > 1 ) { // find all parameters
83 QStringList::ConstIterator paramIt = params.begin(); 83 QStringList::ConstIterator paramIt = params.begin();
84 for ( ++paramIt; paramIt != params.end(); ++paramIt ) { 84 for ( ++paramIt; paramIt != params.end(); ++paramIt ) {
85 QStringList pair = QStringList::split( '=', *paramIt ); 85 QStringList pair = QStringList::split( '=', *paramIt );
86 if ( pair.count() == 1 ) { 86 if ( pair.count() == 1 ) {
87 // correct the fucking 2.1 'standard' 87 // correct the fucking 2.1 'standard'
88 if ( pair[0].lower() == "quoted-printable" ) { 88 if ( pair[0].lower() == "quoted-printable" ) {
89 pair[0] = "encoding"; 89 pair[0] = "encoding";
90 pair[1] = "quoted-printable"; 90 pair[1] = "quoted-printable";
91 } else if ( pair[0].lower() == "base64" ) { 91 } else if ( pair[0].lower() == "base64" ) {
92 pair[0] = "encoding"; 92 pair[0] = "encoding";
93 pair[1] = "base64"; 93 pair[1] = "base64";
94 } else { 94 } else {
95 pair.prepend( "type" ); 95 pair.prepend( "type" );
96 } 96 }
97 } 97 }
98 // This is pretty much a faster pair[1].contains( ',' )... 98 // This is pretty much a faster pair[1].contains( ',' )...
99 if ( pair[1].find( ',' ) != -1 ) { // parameter in type=x,y,z format 99 if ( pair[1].find( ',' ) != -1 ) { // parameter in type=x,y,z format
100 const QStringList args = QStringList::split( ',', pair[ 1 ] ); 100 const QStringList args = QStringList::split( ',', pair[ 1 ] );
101 QStringList::ConstIterator argIt; 101 QStringList::ConstIterator argIt;
102 for ( argIt = args.begin(); argIt != args.end(); ++argIt ) 102 for ( argIt = args.begin(); argIt != args.end(); ++argIt )
103 vCardLine.addParameter( pair[0].lower(), *argIt ); 103 vCardLine.addParameter( pair[0].lower(), *argIt );
104 } else 104 } else
105 vCardLine.addParameter( pair[0].lower(), pair[1] ); 105 vCardLine.addParameter( pair[0].lower(), pair[1] );
106 } 106 }
107 } 107 }
108 108
109 params = vCardLine.parameterList(); 109 params = vCardLine.parameterList();
110 if ( params.findIndex( "encoding" ) != -1 ) { // have to decode the data 110 if ( params.findIndex( "encoding" ) != -1 ) { // have to decode the data
111 QByteArray input, output; 111 QByteArray input, output;
112 if ( vCardLine.parameter( "encoding" ).lower() == "b" || 112 if ( vCardLine.parameter( "encoding" ).lower() == "b" ||
113 vCardLine.parameter( "encoding" ).lower() == "base64" ) { 113 vCardLine.parameter( "encoding" ).lower() == "base64" ) {
114 input = value.local8Bit(); 114 input = value.local8Bit();
115 KCodecs::base64Decode( input, output ); 115 KCodecs::base64Decode( input, output );
116 } else if ( vCardLine.parameter( "encoding" ).lower() == "quoted-printable" ) { 116 } else if ( vCardLine.parameter( "encoding" ).lower() == "quoted-printable" ) {
117 // join any qp-folded lines 117 // join any qp-folded lines
118 while ( value.mid(value.length()-1,1) == "=" && it != linesEnd ) { 118 while ( value.mid(value.length()-1,1) == "=" && it != linesEnd ) {
119 value = value.remove( value.length()-1, 1 ) + (*it); 119 value = value.remove( value.length()-1, 1 ) + (*it);
120 ++it; 120 ++it;
121 } 121 }
122 input = value.local8Bit(); 122 input = value.local8Bit();
123 KCodecs::quotedPrintableDecode( input, output ); 123 KCodecs::quotedPrintableDecode( input, output );
124 } 124 }
125//PP our vcards are *supposed* to be in UTF-8 125//PP our vcards are *supposed* to be in UTF-8
126// if ( vCardLine.parameter( "charset" ).lower() == "utf-8" ) { 126// if ( vCardLine.parameter( "charset" ).lower() == "utf-8" ) {
127// vCardLine.setValue( QString::fromUtf8( output.data(), output.size() ) ); 127// vCardLine.setValue( QString::fromUtf8( output.data(), output.size() ) );
128// } else 128// } else
129 vCardLine.setValueBytes( output ); 129 vCardLine.setValueBytes( output );
130//PP our vcards are *supposed* to be in UTF-8 130//PP our vcards are *supposed* to be in UTF-8
131// } else if ( vCardLine.parameter( "charset" ).lower() == "utf-8" ) { 131// } else if ( vCardLine.parameter( "charset" ).lower() == "utf-8" ) {
132// vCardLine.setValue( QString::fromUtf8( value.ascii() ) ); 132// vCardLine.setValue( QString::fromUtf8( value.ascii() ) );
133 } else 133 } else
134 vCardLine.setValueString( value.replace( QRegExp("\\\\n"), "\n" ) ); 134 vCardLine.setValueString( value.replace( QRegExp("\\\\n"), "\n" ) );
135 135
136 currentVCard.addLine( vCardLine ); 136 currentVCard.addLine( vCardLine );
137 } 137 }
138 138
139 // we do not save the start and end tag as vcardline 139 // we do not save the start and end tag as vcardline
140 if ( (*it).lower().startsWith( "begin:vcard" ) ) { 140 if ( (*it).lower().startsWith( "begin:vcard" ) ) {
141 inVCard = true; 141 inVCard = true;
142 currentLine = ""; 142 currentLine = "";
143 currentVCard.clear(); // flush vcard 143 currentVCard.clear(); // flush vcard
144 continue; 144 continue;
145 } 145 }
146 146
147 if ( (*it).lower().startsWith( "end:vcard" ) ) { 147 if ( (*it).lower().startsWith( "end:vcard" ) ) {
148 inVCard = false; 148 inVCard = false;
149 vCardList.append( currentVCard ); 149 vCardList.append( currentVCard );
150 currentLine = ""; 150 currentLine = "";
151 currentVCard.clear(); // flush vcard 151 currentVCard.clear(); // flush vcard
152 continue; 152 continue;
153 } 153 }
154 154
155 currentLine = (*it); 155 currentLine = (*it);
156 } 156 }
157 } 157 }
158 158
159 return vCardList; 159 return vCardList;
160} 160}
161 161
162QString VCardParser::createVCards( const VCard::List& list ) 162QString VCardParser::createVCards( const VCard::List& list )
163{ 163{
164 QString text; 164 QString text;
165 QString textLine; 165 QString textLine;
166 QString encodingType; 166 QString encodingType;
167 QStringList idents; 167 QStringList idents;
168 QStringList params; 168 QStringList params;
169 QStringList values; 169 QStringList values;
170 QStringList::ConstIterator identIt; 170 QStringList::ConstIterator identIt;
171 QStringList::Iterator paramIt; 171 QStringList::Iterator paramIt;
172 QStringList::ConstIterator valueIt; 172 QStringList::ConstIterator valueIt;
173 173
174 VCardLine::List lines; 174 VCardLine::List lines;
175 VCardLine::List::ConstIterator lineIt; 175 VCardLine::List::ConstIterator lineIt;
176 VCard::List::ConstIterator cardIt; 176 VCard::List::ConstIterator cardIt;
177 177
178 bool hasEncoding; 178 bool hasEncoding;
179 179
180 // iterate over the cards 180 // iterate over the cards
181 VCard::List::ConstIterator listEnd( list.end() ); 181 VCard::List::ConstIterator listEnd( list.end() );
182 for ( cardIt = list.begin(); cardIt != listEnd; ++cardIt ) { 182 for ( cardIt = list.begin(); cardIt != listEnd; ++cardIt ) {
183 text.append( "BEGIN:VCARD\r\n" ); 183 text.append( "BEGIN:VCARD\r\n" );
184 184
185 idents = (*cardIt).identifiers(); 185 idents = (*cardIt).identifiers();
186 for ( identIt = idents.begin(); identIt != idents.end(); ++identIt ) { 186 for ( identIt = idents.begin(); identIt != idents.end(); ++identIt ) {
187 lines = (*cardIt).lines( (*identIt) ); 187 lines = (*cardIt).lines( (*identIt) );
188 188
189 // iterate over the lines 189 // iterate over the lines
190 for ( lineIt = lines.begin(); lineIt != lines.end(); ++lineIt ) { 190 for ( lineIt = lines.begin(); lineIt != lines.end(); ++lineIt ) {
191 if ( !(*lineIt).valueString().isEmpty() ) { 191 if ( !(*lineIt).valueString().isEmpty() ) {
192 if ( (*lineIt).hasGroup() ) 192 if ( (*lineIt).hasGroup() )
193 textLine = (*lineIt).group() + "." + (*lineIt).identifier(); 193 textLine = (*lineIt).group() + "." + (*lineIt).identifier();
194 else 194 else
195 textLine = (*lineIt).identifier(); 195 textLine = (*lineIt).identifier();
196 196
197 params = (*lineIt).parameterList(); 197 params = (*lineIt).parameterList();
198 hasEncoding = false; 198 hasEncoding = false;
199 if ( params.count() > 0 ) { // we have parameters 199 if ( params.count() > 0 ) { // we have parameters
200 for ( paramIt = params.begin(); paramIt != params.end(); ++paramIt ) { 200 for ( paramIt = params.begin(); paramIt != params.end(); ++paramIt ) {
201 if ( (*paramIt) == "encoding" ) { 201 if ( (*paramIt) == "encoding" ) {
202 hasEncoding = true; 202 hasEncoding = true;
203 encodingType = (*lineIt).parameter( "encoding" ).lower(); 203 encodingType = (*lineIt).parameter( "encoding" ).lower();
204 } 204 }
205 205
206 values = (*lineIt).parameters( *paramIt ); 206 values = (*lineIt).parameters( *paramIt );
207 for ( valueIt = values.begin(); valueIt != values.end(); ++valueIt ) { 207 for ( valueIt = values.begin(); valueIt != values.end(); ++valueIt ) {
208 textLine.append( ";" + (*paramIt).upper() ); 208 textLine.append( ";" + (*paramIt).upper() );
209 if ( !(*valueIt).isEmpty() ) 209 if ( !(*valueIt).isEmpty() )
210 textLine.append( "=" + (*valueIt) ); 210 textLine.append( "=" + (*valueIt) );
211 } 211 }
212 } 212 }
213 } 213 }
214 214
215 if ( hasEncoding ) { // have to encode the data 215 if ( hasEncoding ) { // have to encode the data
216 QByteArray input, output; 216 QByteArray input, output;
217 input = (*lineIt).valueBytes(); 217 input = (*lineIt).valueBytes();
218 if ( encodingType == "b" ) 218 if ( encodingType == "b" )
219 KCodecs::base64Encode( input, output ); 219 KCodecs::base64Encode( input, output );
220 else if ( encodingType == "quoted-printable" ) 220 else if ( encodingType == "quoted-printable" )
221 KCodecs::quotedPrintableEncode( input, output ); 221 KCodecs::quotedPrintableEncode( input, output, true );
222 textLine.append( ":" + QString( output ) ); 222 textLine.append( ":" + QString( output ) );
223 } else 223 } else
224 textLine.append( ":" + (*lineIt).valueString().replace( QRegExp("\n"), "\\n" ) ); 224 textLine.append( ":" + (*lineIt).valueString().replace( QRegExp("\n"), "\\n" ) );
225 225
226 if ( textLine.length() > FOLD_WIDTH ) { // we have to fold the line 226 if ( textLine.length() > FOLD_WIDTH ) { // we have to fold the line
227 for ( uint i = 0; i <= ( textLine.length() / FOLD_WIDTH ); ++i ) 227 for ( uint i = 0; i <= ( textLine.length() / FOLD_WIDTH ); ++i )
228 text.append( ( i == 0 ? "" : " " ) + textLine.mid( i * FOLD_WIDTH, FOLD_WIDTH ) + "\r\n" ); 228 text.append( ( i == 0 ? "" : " " ) + textLine.mid( i * FOLD_WIDTH, FOLD_WIDTH ) + "\r\n" );
229 } else 229 } else
230 text.append( textLine + "\r\n" ); 230 text.append( textLine + "\r\n" );
231 } 231 }
232 } 232 }
233 } 233 }
234 234
235 text.append( "END:VCARD\r\n" ); 235 text.append( "END:VCARD\r\n" );
236 text.append( "\r\n" ); 236 text.append( "\r\n" );
237 } 237 }
238 238
239 return text; 239 return text;
240} 240}
diff --git a/kabc/vcardparser/vcardtool.cpp b/kabc/vcardparser/vcardtool.cpp
index 204326e..435c3b0 100644
--- a/kabc/vcardparser/vcardtool.cpp
+++ b/kabc/vcardparser/vcardtool.cpp
@@ -1,869 +1,869 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#include <qdatastream.h> 21#include <qdatastream.h>
22#include <qstring.h> 22#include <qstring.h>
23#include <qregexp.h> 23#include <qregexp.h>
24 24
25#include "agent.h" 25#include "agent.h"
26#include "key.h" 26#include "key.h"
27#include "picture.h" 27#include "picture.h"
28#include "secrecy.h" 28#include "secrecy.h"
29#include "sound.h" 29#include "sound.h"
30 30
31#include "vcardtool.h" 31#include "vcardtool.h"
32 32
33using namespace KABC; 33using namespace KABC;
34 34
35VCardTool::VCardTool() 35VCardTool::VCardTool()
36{ 36{
37 mAddressTypeMap.insert( "dom", Address::Dom ); 37 mAddressTypeMap.insert( "dom", Address::Dom );
38 mAddressTypeMap.insert( "intl", Address::Intl ); 38 mAddressTypeMap.insert( "intl", Address::Intl );
39 mAddressTypeMap.insert( "postal", Address::Postal ); 39 mAddressTypeMap.insert( "postal", Address::Postal );
40 mAddressTypeMap.insert( "parcel", Address::Parcel ); 40 mAddressTypeMap.insert( "parcel", Address::Parcel );
41 mAddressTypeMap.insert( "home", Address::Home ); 41 mAddressTypeMap.insert( "home", Address::Home );
42 mAddressTypeMap.insert( "work", Address::Work ); 42 mAddressTypeMap.insert( "work", Address::Work );
43 mAddressTypeMap.insert( "pref", Address::Pref ); 43 mAddressTypeMap.insert( "pref", Address::Pref );
44 44
45 mPhoneTypeMap.insert( "HOME", PhoneNumber::Home ); 45 mPhoneTypeMap.insert( "HOME", PhoneNumber::Home );
46 mPhoneTypeMap.insert( "WORK", PhoneNumber::Work ); 46 mPhoneTypeMap.insert( "WORK", PhoneNumber::Work );
47 mPhoneTypeMap.insert( "MSG", PhoneNumber::Msg ); 47 mPhoneTypeMap.insert( "MSG", PhoneNumber::Msg );
48 mPhoneTypeMap.insert( "PREF", PhoneNumber::Pref ); 48 mPhoneTypeMap.insert( "PREF", PhoneNumber::Pref );
49 mPhoneTypeMap.insert( "VOICE", PhoneNumber::Voice ); 49 mPhoneTypeMap.insert( "VOICE", PhoneNumber::Voice );
50 mPhoneTypeMap.insert( "FAX", PhoneNumber::Fax ); 50 mPhoneTypeMap.insert( "FAX", PhoneNumber::Fax );
51 mPhoneTypeMap.insert( "CELL", PhoneNumber::Cell ); 51 mPhoneTypeMap.insert( "CELL", PhoneNumber::Cell );
52 mPhoneTypeMap.insert( "VIDEO", PhoneNumber::Video ); 52 mPhoneTypeMap.insert( "VIDEO", PhoneNumber::Video );
53 mPhoneTypeMap.insert( "BBS", PhoneNumber::Bbs ); 53 mPhoneTypeMap.insert( "BBS", PhoneNumber::Bbs );
54 mPhoneTypeMap.insert( "MODEM", PhoneNumber::Modem ); 54 mPhoneTypeMap.insert( "MODEM", PhoneNumber::Modem );
55 mPhoneTypeMap.insert( "CAR", PhoneNumber::Car ); 55 mPhoneTypeMap.insert( "CAR", PhoneNumber::Car );
56 mPhoneTypeMap.insert( "ISDN", PhoneNumber::Isdn ); 56 mPhoneTypeMap.insert( "ISDN", PhoneNumber::Isdn );
57 mPhoneTypeMap.insert( "PCS", PhoneNumber::Pcs ); 57 mPhoneTypeMap.insert( "PCS", PhoneNumber::Pcs );
58 mPhoneTypeMap.insert( "PAGER", PhoneNumber::Pager ); 58 mPhoneTypeMap.insert( "PAGER", PhoneNumber::Pager );
59} 59}
60 60
61VCardTool::~VCardTool() 61VCardTool::~VCardTool()
62{ 62{
63} 63}
64 64
65// TODO: make list a const& 65// TODO: make list a const&
66QString VCardTool::createVCards( Addressee::List list, VCard::Version version ) 66QString VCardTool::createVCards( Addressee::List list, VCard::Version version )
67{ 67{
68 VCard::List vCardList; 68 VCard::List vCardList;
69 static const QRegExp semiExp(";"); 69 static const QRegExp semiExp(";");
70 70
71 Addressee::List::ConstIterator addrIt; 71 Addressee::List::ConstIterator addrIt;
72 Addressee::List::ConstIterator listEnd( list.end() ); 72 Addressee::List::ConstIterator listEnd( list.end() );
73 for ( addrIt = list.begin(); addrIt != listEnd; ++addrIt ) { 73 for ( addrIt = list.begin(); addrIt != listEnd; ++addrIt ) {
74 VCard card; 74 VCard card;
75 QStringList::ConstIterator strIt; 75 QStringList::ConstIterator strIt;
76 76
77 // ADR + LABEL 77 // ADR + LABEL
78 const Address::List addresses = (*addrIt).addresses(); 78 const Address::List addresses = (*addrIt).addresses();
79 for ( Address::List::ConstIterator it = addresses.begin(); it != addresses.end(); ++it ) { 79 for ( Address::List::ConstIterator it = addresses.begin(); it != addresses.end(); ++it ) {
80 QStringList address; 80 QStringList address;
81 81
82 bool isEmpty = ( (*it).postOfficeBox().isEmpty() && 82 bool isEmpty = ( (*it).postOfficeBox().isEmpty() &&
83 (*it).extended().isEmpty() && 83 (*it).extended().isEmpty() &&
84 (*it).street().isEmpty() && 84 (*it).street().isEmpty() &&
85 (*it).locality().isEmpty() && 85 (*it).locality().isEmpty() &&
86 (*it).region().isEmpty() && 86 (*it).region().isEmpty() &&
87 (*it).postalCode().isEmpty() && 87 (*it).postalCode().isEmpty() &&
88 (*it).country().isEmpty() ); 88 (*it).country().isEmpty() );
89 89
90 address.append( (*it).postOfficeBox().replace( semiExp, "\\;" ) ); 90 address.append( (*it).postOfficeBox().replace( semiExp, "\\;" ) );
91 address.append( (*it).extended().replace( semiExp, "\\;" ) ); 91 address.append( (*it).extended().replace( semiExp, "\\;" ) );
92 address.append( (*it).street().replace( semiExp, "\\;" ) ); 92 address.append( (*it).street().replace( semiExp, "\\;" ) );
93 address.append( (*it).locality().replace( semiExp, "\\;" ) ); 93 address.append( (*it).locality().replace( semiExp, "\\;" ) );
94 address.append( (*it).region().replace( semiExp, "\\;" ) ); 94 address.append( (*it).region().replace( semiExp, "\\;" ) );
95 address.append( (*it).postalCode().replace( semiExp, "\\;" ) ); 95 address.append( (*it).postalCode().replace( semiExp, "\\;" ) );
96 address.append( (*it).country().replace( semiExp, "\\;" ) ); 96 address.append( (*it).country().replace( semiExp, "\\;" ) );
97 97
98 VCardLine adrLine( "ADR", address.join( ";" ) ); 98 VCardLine adrLine( "ADR", address.join( ";" ) );
99 if ( version == VCard::v2_1 ) { 99 if ( version == VCard::v2_1 ) {
100 adrLine.addParameter( "CHARSET", "UTF-8" ); 100 adrLine.addParameter( "CHARSET", "UTF-8" );
101 adrLine.addParameter( "ENCODING", "8BIT" ); 101 adrLine.addParameter( "ENCODING", "8BIT" );
102 } 102 }
103 103
104 VCardLine labelLine( "LABEL", (*it).label() ); 104 VCardLine labelLine( "LABEL", (*it).label() );
105 if ( version == VCard::v2_1 ) { 105 if ( version == VCard::v2_1 ) {
106 labelLine.addParameter( "CHARSET", "UTF-8" ); 106 labelLine.addParameter( "CHARSET", "UTF-8" );
107 labelLine.addParameter( "ENCODING", "8BIT" ); 107 labelLine.addParameter( "ENCODING", "8BIT" );
108 } 108 }
109 109
110 bool hasLabel = !(*it).label().isEmpty(); 110 bool hasLabel = !(*it).label().isEmpty();
111 QMap<QString, int>::ConstIterator typeIt; 111 QMap<QString, int>::ConstIterator typeIt;
112 for ( typeIt = mAddressTypeMap.begin(); typeIt != mAddressTypeMap.end(); ++typeIt ) { 112 for ( typeIt = mAddressTypeMap.begin(); typeIt != mAddressTypeMap.end(); ++typeIt ) {
113 if ( typeIt.data() & (*it).type() ) { 113 if ( typeIt.data() & (*it).type() ) {
114 adrLine.addParameter( "TYPE", typeIt.key() ); 114 adrLine.addParameter( "TYPE", typeIt.key() );
115 if ( hasLabel ) 115 if ( hasLabel )
116 labelLine.addParameter( "TYPE", typeIt.key() ); 116 labelLine.addParameter( "TYPE", typeIt.key() );
117 } 117 }
118 } 118 }
119 119
120 if ( !isEmpty ) 120 if ( !isEmpty )
121 card.addLine( adrLine ); 121 card.addLine( adrLine );
122 if ( hasLabel ) 122 if ( hasLabel )
123 card.addLine( labelLine ); 123 card.addLine( labelLine );
124 } 124 }
125 125
126 // AGENT 126 // AGENT
127 card.addLine( createAgent( version, (*addrIt).agent() ) ); 127 card.addLine( createAgent( version, (*addrIt).agent() ) );
128 128
129 // BDAY 129 // BDAY
130 card.addLine( VCardLine( "BDAY", createDateTime( (*addrIt).birthday() ) ) ); 130 card.addLine( VCardLine( "BDAY", createDateTime( (*addrIt).birthday() ) ) );
131 131
132 // CATEGORIES 132 // CATEGORIES
133 if ( version == VCard::v3_0 ) { 133 if ( version == VCard::v3_0 ) {
134 QStringList categories = (*addrIt).categories(); 134 QStringList categories = (*addrIt).categories();
135 QStringList::Iterator catIt; 135 QStringList::Iterator catIt;
136 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) 136 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt )
137 (*catIt).replace( QRegExp(","), "\\," ); 137 (*catIt).replace( QRegExp(","), "\\," );
138 138
139 VCardLine catLine( "CATEGORIES", categories.join( "," ) ); 139 VCardLine catLine( "CATEGORIES", categories.join( "," ) );
140 if ( version == VCard::v2_1 ) { 140 if ( version == VCard::v2_1 ) {
141 catLine.addParameter( "CHARSET", "UTF-8" ); 141 catLine.addParameter( "CHARSET", "UTF-8" );
142 catLine.addParameter( "ENCODING", "8BIT" ); 142 catLine.addParameter( "ENCODING", "8BIT" );
143 } 143 }
144 144
145 card.addLine( catLine ); 145 card.addLine( catLine );
146 } 146 }
147 147
148 // CLASS 148 // CLASS
149 if ( version == VCard::v3_0 ) { 149 if ( version == VCard::v3_0 ) {
150 card.addLine( createSecrecy( (*addrIt).secrecy() ) ); 150 card.addLine( createSecrecy( (*addrIt).secrecy() ) );
151 } 151 }
152 152
153 // EMAIL 153 // EMAIL
154 const QStringList emails = (*addrIt).emails(); 154 const QStringList emails = (*addrIt).emails();
155 bool pref = true; 155 bool pref = true;
156 for ( strIt = emails.begin(); strIt != emails.end(); ++strIt ) { 156 for ( strIt = emails.begin(); strIt != emails.end(); ++strIt ) {
157 VCardLine line( "EMAIL", *strIt ); 157 VCardLine line( "EMAIL", *strIt );
158 if ( version == VCard::v2_1 ) { 158 if ( version == VCard::v2_1 ) {
159 line.addParameter( "CHARSET", "UTF-8" ); 159 line.addParameter( "CHARSET", "UTF-8" );
160 line.addParameter( "ENCODING", "8BIT" ); 160 line.addParameter( "ENCODING", "8BIT" );
161 } 161 }
162 if ( pref == true && emails.count() > 1 ) { 162 if ( pref == true && emails.count() > 1 ) {
163 line.addParameter( "TYPE", "PREF" ); 163 line.addParameter( "TYPE", "PREF" );
164 pref = false; 164 pref = false;
165 } 165 }
166 card.addLine( line ); 166 card.addLine( line );
167 } 167 }
168 168
169 // FN 169 // FN
170 VCardLine fnLine( "FN", (*addrIt).formattedName() ); 170 VCardLine fnLine( "FN", (*addrIt).formattedName() );
171 if ( version == VCard::v2_1 ) { 171 if ( version == VCard::v2_1 ) {
172 fnLine.addParameter( "CHARSET", "UTF-8" ); 172 fnLine.addParameter( "CHARSET", "UTF-8" );
173 fnLine.addParameter( "ENCODING", "8BIT" ); 173 fnLine.addParameter( "ENCODING", "8BIT" );
174 } 174 }
175 card.addLine( fnLine ); 175 card.addLine( fnLine );
176 176
177 // GEO 177 // GEO
178 Geo geo = (*addrIt).geo(); 178 Geo geo = (*addrIt).geo();
179 if ( geo.isValid() ) { 179 if ( geo.isValid() ) {
180 QString str; 180 QString str;
181 str.sprintf( "%.6f;%.6f", geo.latitude(), geo.longitude() ); 181 str.sprintf( "%.6f;%.6f", geo.latitude(), geo.longitude() );
182 card.addLine( VCardLine( "GEO", str ) ); 182 card.addLine( VCardLine( "GEO", str ) );
183 } 183 }
184 184
185 // KEY 185 // KEY
186 const Key::List keys = (*addrIt).keys(); 186 const Key::List keys = (*addrIt).keys();
187 Key::List::ConstIterator keyIt; 187 Key::List::ConstIterator keyIt;
188 for ( keyIt = keys.begin(); keyIt != keys.end(); ++keyIt ) 188 for ( keyIt = keys.begin(); keyIt != keys.end(); ++keyIt )
189 card.addLine( createKey( *keyIt ) ); 189 card.addLine( createKey( *keyIt ) );
190 190
191 // LOGO 191 // LOGO
192 card.addLine( createPicture( "LOGO", (*addrIt).logo() ) ); 192 card.addLine( createPicture( "LOGO", (*addrIt).logo() ) );
193 193
194 // MAILER 194 // MAILER
195 VCardLine mailerLine( "MAILER", (*addrIt).mailer() ); 195 VCardLine mailerLine( "MAILER", (*addrIt).mailer() );
196 if ( version == VCard::v2_1 ) { 196 if ( version == VCard::v2_1 ) {
197 mailerLine.addParameter( "CHARSET", "UTF-8" ); 197 mailerLine.addParameter( "CHARSET", "UTF-8" );
198 mailerLine.addParameter( "ENCODING", "8BIT" ); 198 mailerLine.addParameter( "ENCODING", "8BIT" );
199 } 199 }
200 card.addLine( mailerLine ); 200 card.addLine( mailerLine );
201 201
202 // N 202 // N
203 QStringList name; 203 QStringList name;
204 name.append( (*addrIt).familyName().replace( semiExp, "\\;" ) ); 204 name.append( (*addrIt).familyName().replace( semiExp, "\\;" ) );
205 name.append( (*addrIt).givenName().replace( semiExp, "\\;" ) ); 205 name.append( (*addrIt).givenName().replace( semiExp, "\\;" ) );
206 name.append( (*addrIt).additionalName().replace( semiExp, "\\;" ) ); 206 name.append( (*addrIt).additionalName().replace( semiExp, "\\;" ) );
207 name.append( (*addrIt).prefix().replace( semiExp, "\\;" ) ); 207 name.append( (*addrIt).prefix().replace( semiExp, "\\;" ) );
208 name.append( (*addrIt).suffix().replace( semiExp, "\\;" ) ); 208 name.append( (*addrIt).suffix().replace( semiExp, "\\;" ) );
209 209
210 VCardLine nLine( "N", name.join( ";" ) ); 210 VCardLine nLine( "N", name.join( ";" ) );
211 if ( version == VCard::v2_1 ) { 211 if ( version == VCard::v2_1 ) {
212 nLine.addParameter( "CHARSET", "UTF-8" ); 212 nLine.addParameter( "CHARSET", "UTF-8" );
213 nLine.addParameter( "ENCODING", "8BIT" ); 213 nLine.addParameter( "ENCODING", "8BIT" );
214 } 214 }
215 card.addLine( nLine ); 215 card.addLine( nLine );
216 216
217 // NAME 217 // NAME
218 VCardLine nameLine( "NAME", (*addrIt).name() ); 218 VCardLine nameLine( "NAME", (*addrIt).name() );
219 if ( version == VCard::v2_1 ) { 219 if ( version == VCard::v2_1 ) {
220 nameLine.addParameter( "CHARSET", "UTF-8" ); 220 nameLine.addParameter( "CHARSET", "UTF-8" );
221 nameLine.addParameter( "ENCODING", "8BIT" ); 221 nameLine.addParameter( "ENCODING", "8BIT" );
222 } 222 }
223 card.addLine( nameLine ); 223 card.addLine( nameLine );
224 224
225 // NICKNAME 225 // NICKNAME
226 if ( version == VCard::v3_0 ) 226 if ( version == VCard::v3_0 )
227 card.addLine( VCardLine( "NICKNAME", (*addrIt).nickName() ) ); 227 card.addLine( VCardLine( "NICKNAME", (*addrIt).nickName() ) );
228 228
229 // NOTE 229 // NOTE
230 VCardLine noteLine( "NOTE", (*addrIt).note() ); 230 VCardLine noteLine( "NOTE", (*addrIt).note() );
231 if ( version == VCard::v2_1 ) { 231 if ( version == VCard::v2_1 ) {
232 noteLine.addParameter( "CHARSET", "UTF-8" ); 232 noteLine.addParameter( "CHARSET", "UTF-8" );
233 noteLine.addParameter( "ENCODING", "8BIT" ); 233 noteLine.addParameter( "ENCODING", "8BIT" );
234 } 234 }
235 card.addLine( noteLine ); 235 card.addLine( noteLine );
236 236
237 // ORG 237 // ORG
238 VCardLine orgLine( "ORG", (*addrIt).organization() ); 238 VCardLine orgLine( "ORG", (*addrIt).organization() );
239 if ( version == VCard::v2_1 ) { 239 if ( version == VCard::v2_1 ) {
240 orgLine.addParameter( "CHARSET", "UTF-8" ); 240 orgLine.addParameter( "CHARSET", "UTF-8" );
241 orgLine.addParameter( "ENCODING", "8BIT" ); 241 orgLine.addParameter( "ENCODING", "8BIT" );
242 } 242 }
243 card.addLine( orgLine ); 243 card.addLine( orgLine );
244 244
245 // PHOTO 245 // PHOTO
246 card.addLine( createPicture( "PHOTO", (*addrIt).photo() ) ); 246 card.addLine( createPicture( "PHOTO", (*addrIt).photo() ) );
247 247
248 // PROID 248 // PROID
249 if ( version == VCard::v3_0 ) 249 if ( version == VCard::v3_0 )
250 card.addLine( VCardLine( "PRODID", (*addrIt).productId() ) ); 250 card.addLine( VCardLine( "PRODID", (*addrIt).productId() ) );
251 251
252 // REV 252 // REV
253 card.addLine( VCardLine( "REV", createDateTime( (*addrIt).revision() ) ) ); 253 card.addLine( VCardLine( "REV", createDateTime( (*addrIt).revision() ) ) );
254 254
255 // ROLE 255 // ROLE
256 VCardLine roleLine( "ROLE", (*addrIt).role() ); 256 VCardLine roleLine( "ROLE", (*addrIt).role() );
257 if ( version == VCard::v2_1 ) { 257 if ( version == VCard::v2_1 ) {
258 roleLine.addParameter( "CHARSET", "UTF-8" ); 258 roleLine.addParameter( "CHARSET", "UTF-8" );
259 roleLine.addParameter( "ENCODING", "8BIT" ); 259 roleLine.addParameter( "ENCODING", "8BIT" );
260 } 260 }
261 card.addLine( roleLine ); 261 card.addLine( roleLine );
262 262
263 // SORT-STRING 263 // SORT-STRING
264 if ( version == VCard::v3_0 ) 264 if ( version == VCard::v3_0 )
265 card.addLine( VCardLine( "SORT-STRING", (*addrIt).sortString() ) ); 265 card.addLine( VCardLine( "SORT-STRING", (*addrIt).sortString() ) );
266 266
267 // SOUND 267 // SOUND
268 card.addLine( createSound( (*addrIt).sound() ) ); 268 card.addLine( createSound( (*addrIt).sound() ) );
269 269
270 // TEL 270 // TEL
271 const PhoneNumber::List phoneNumbers = (*addrIt).phoneNumbers(); 271 const PhoneNumber::List phoneNumbers = (*addrIt).phoneNumbers();
272 PhoneNumber::List::ConstIterator phoneIt; 272 PhoneNumber::List::ConstIterator phoneIt;
273 for ( phoneIt = phoneNumbers.begin(); phoneIt != phoneNumbers.end(); ++phoneIt ) { 273 for ( phoneIt = phoneNumbers.begin(); phoneIt != phoneNumbers.end(); ++phoneIt ) {
274 VCardLine line( "TEL", (*phoneIt).number() ); 274 VCardLine line( "TEL", (*phoneIt).number() );
275 275
276 QMap<QString, int>::ConstIterator typeIt; 276 QMap<QString, int>::ConstIterator typeIt;
277 for ( typeIt = mPhoneTypeMap.begin(); typeIt != mPhoneTypeMap.end(); ++typeIt ) { 277 for ( typeIt = mPhoneTypeMap.begin(); typeIt != mPhoneTypeMap.end(); ++typeIt ) {
278 if ( typeIt.data() & (*phoneIt).type() ) 278 if ( typeIt.data() & (*phoneIt).type() )
279 line.addParameter( "TYPE", typeIt.key() ); 279 line.addParameter( "TYPE", typeIt.key() );
280 } 280 }
281 281
282 card.addLine( line ); 282 card.addLine( line );
283 } 283 }
284 284
285 // TITLE 285 // TITLE
286 VCardLine titleLine( "TITLE", (*addrIt).title() ); 286 VCardLine titleLine( "TITLE", (*addrIt).title() );
287 if ( version == VCard::v2_1 ) { 287 if ( version == VCard::v2_1 ) {
288 titleLine.addParameter( "CHARSET", "UTF-8" ); 288 titleLine.addParameter( "CHARSET", "UTF-8" );
289 titleLine.addParameter( "ENCODING", "8BIT" ); 289 titleLine.addParameter( "ENCODING", "8BIT" );
290 } 290 }
291 card.addLine( titleLine ); 291 card.addLine( titleLine );
292 292
293 // TZ 293 // TZ
294 TimeZone timeZone = (*addrIt).timeZone(); 294 TimeZone timeZone = (*addrIt).timeZone();
295 if ( timeZone.isValid() ) { 295 if ( timeZone.isValid() ) {
296 QString str; 296 QString str;
297 297
298 int neg = 1; 298 int neg = 1;
299 if ( timeZone.offset() < 0 ) 299 if ( timeZone.offset() < 0 )
300 neg = -1; 300 neg = -1;
301 301
302 str.sprintf( "%c%02d:%02d", ( timeZone.offset() >= 0 ? '+' : '-' ), 302 str.sprintf( "%c%02d:%02d", ( timeZone.offset() >= 0 ? '+' : '-' ),
303 ( timeZone.offset() / 60 ) * neg, 303 ( timeZone.offset() / 60 ) * neg,
304 ( timeZone.offset() % 60 ) * neg ); 304 ( timeZone.offset() % 60 ) * neg );
305 305
306 card.addLine( VCardLine( "TZ", str ) ); 306 card.addLine( VCardLine( "TZ", str ) );
307 } 307 }
308 308
309 // UID 309 // UID
310 card.addLine( VCardLine( "UID", (*addrIt).uid() ) ); 310 card.addLine( VCardLine( "UID", (*addrIt).uid() ) );
311 311
312 // URL 312 // URL
313 card.addLine( VCardLine( "URL", (*addrIt).url().url() ) ); 313 card.addLine( VCardLine( "URL", (*addrIt).url().url() ) );
314 314
315 // VERSION 315 // VERSION
316 if ( version == VCard::v2_1 ) 316 if ( version == VCard::v2_1 )
317 card.addLine( VCardLine( "VERSION", "2.1" ) ); 317 card.addLine( VCardLine( "VERSION", "2.1" ) );
318 if ( version == VCard::v3_0 ) 318 if ( version == VCard::v3_0 )
319 card.addLine( VCardLine( "VERSION", "3.0" ) ); 319 card.addLine( VCardLine( "VERSION", "3.0" ) );
320 320
321 // X- 321 // X-
322 const QStringList customs = (*addrIt).customs(); 322 const QStringList customs = (*addrIt).customs();
323 for ( strIt = customs.begin(); strIt != customs.end(); ++strIt ) { 323 for ( strIt = customs.begin(); strIt != customs.end(); ++strIt ) {
324 QString identifier = "X-" + (*strIt).left( (*strIt).find( ":" ) ); 324 QString identifier = "X-" + (*strIt).left( (*strIt).find( ":" ) );
325 QString value = (*strIt).mid( (*strIt).find( ":" ) + 1 ); 325 QString value = (*strIt).mid( (*strIt).find( ":" ) + 1 );
326 if ( value.isEmpty() ) 326 if ( value.isEmpty() )
327 continue; 327 continue;
328 328
329 VCardLine line( identifier, value ); 329 VCardLine line( identifier, value );
330 if ( version == VCard::v2_1 ) { 330 if ( version == VCard::v2_1 ) {
331 line.addParameter( "CHARSET", "UTF-8" ); 331 line.addParameter( "CHARSET", "UTF-8" );
332 line.addParameter( "ENCODING", "8BIT" ); 332 line.addParameter( "ENCODING", "8BIT" );
333 } 333 }
334 card.addLine( line ); 334 card.addLine( line );
335 } 335 }
336 336
337 vCardList.append( card ); 337 vCardList.append( card );
338 } 338 }
339 339
340 return VCardParser::createVCards( vCardList ); 340 return VCardParser::createVCards( vCardList );
341} 341}
342 342
343Addressee::List VCardTool::parseVCards( const QString& vcard ) 343Addressee::List VCardTool::parseVCards( const QString& vcard )
344{ 344{
345 static const QChar semicolonSep( ';' ); 345 static const QChar semicolonSep( ';' );
346 static const QChar commaSep( ',' ); 346 static const QChar commaSep( ',' );
347 QString identifier; 347 QString identifier;
348 348
349 Addressee::List addrList; 349 Addressee::List addrList;
350 const VCard::List vCardList = VCardParser::parseVCards( vcard ); 350 const VCard::List vCardList = VCardParser::parseVCards( vcard );
351 351
352 VCard::List::ConstIterator cardIt; 352 VCard::List::ConstIterator cardIt;
353 VCard::List::ConstIterator listEnd( vCardList.end() ); 353 VCard::List::ConstIterator listEnd( vCardList.end() );
354 for ( cardIt = vCardList.begin(); cardIt != listEnd; ++cardIt ) { 354 for ( cardIt = vCardList.begin(); cardIt != listEnd; ++cardIt ) {
355 Addressee addr; 355 Addressee addr;
356 356
357 const QStringList idents = (*cardIt).identifiers(); 357 const QStringList idents = (*cardIt).identifiers();
358 QStringList::ConstIterator identIt; 358 QStringList::ConstIterator identIt;
359 QStringList::ConstIterator identEnd( idents.end() ); 359 QStringList::ConstIterator identEnd( idents.end() );
360 for ( identIt = idents.begin(); identIt != identEnd; ++identIt ) { 360 for ( identIt = idents.begin(); identIt != identEnd; ++identIt ) {
361 const VCardLine::List lines = (*cardIt).lines( (*identIt) ); 361 const VCardLine::List lines = (*cardIt).lines( (*identIt) );
362 VCardLine::List::ConstIterator lineIt; 362 VCardLine::List::ConstIterator lineIt;
363 363
364 // iterate over the lines 364 // iterate over the lines
365 for ( lineIt = lines.begin(); lineIt != lines.end(); ++lineIt ) { 365 for ( lineIt = lines.begin(); lineIt != lines.end(); ++lineIt ) {
366 identifier = (*lineIt).identifier().lower(); 366 identifier = (*lineIt).identifier().lower();
367 // ADR 367 // ADR
368 if ( identifier == "adr" ) { 368 if ( identifier == "adr" ) {
369 Address address; 369 Address address;
370 const QStringList addrParts = splitString( semicolonSep, (*lineIt).valueString() ); 370 const QStringList addrParts = splitString( semicolonSep, (*lineIt).valueString() );
371 if ( addrParts.count() > 0 ) 371 if ( addrParts.count() > 0 )
372 address.setPostOfficeBox( addrParts[ 0 ] ); 372 address.setPostOfficeBox( addrParts[ 0 ] );
373 if ( addrParts.count() > 1 ) 373 if ( addrParts.count() > 1 )
374 address.setExtended( addrParts[ 1 ] ); 374 address.setExtended( addrParts[ 1 ] );
375 if ( addrParts.count() > 2 ) 375 if ( addrParts.count() > 2 )
376 address.setStreet( addrParts[ 2 ] ); 376 address.setStreet( addrParts[ 2 ] );
377 if ( addrParts.count() > 3 ) 377 if ( addrParts.count() > 3 )
378 address.setLocality( addrParts[ 3 ] ); 378 address.setLocality( addrParts[ 3 ] );
379 if ( addrParts.count() > 4 ) 379 if ( addrParts.count() > 4 )
380 address.setRegion( addrParts[ 4 ] ); 380 address.setRegion( addrParts[ 4 ] );
381 if ( addrParts.count() > 5 ) 381 if ( addrParts.count() > 5 )
382 address.setPostalCode( addrParts[ 5 ] ); 382 address.setPostalCode( addrParts[ 5 ] );
383 if ( addrParts.count() > 6 ) 383 if ( addrParts.count() > 6 )
384 address.setCountry( addrParts[ 6 ] ); 384 address.setCountry( addrParts[ 6 ] );
385 385
386 int type = 0; 386 int type = 0;
387 387
388 const QStringList types = (*lineIt).parameters( "type" ); 388 const QStringList types = (*lineIt).parameters( "type" );
389 for ( QStringList::ConstIterator it = types.begin(); it != types.end(); ++it ) 389 for ( QStringList::ConstIterator it = types.begin(); it != types.end(); ++it )
390 type += mAddressTypeMap[ (*it).lower() ]; 390 type += mAddressTypeMap[ (*it).lower() ];
391 391
392 address.setType( type ); 392 address.setType( type );
393 addr.insertAddress( address ); 393 addr.insertAddress( address );
394 } 394 }
395 395
396 // AGENT 396 // AGENT
397 else if ( identifier == "agent" ) 397 else if ( identifier == "agent" )
398 addr.setAgent( parseAgent( *lineIt ) ); 398 addr.setAgent( parseAgent( *lineIt ) );
399 399
400 // BDAY 400 // BDAY
401 else if ( identifier == "bday" ) 401 else if ( identifier == "bday" )
402 addr.setBirthday( parseDateTime( (*lineIt).valueString() ) ); 402 addr.setBirthday( parseDateTime( (*lineIt).valueString() ) );
403 403
404 // CATEGORIES 404 // CATEGORIES
405 else if ( identifier == "categories" ) { 405 else if ( identifier == "categories" ) {
406 const QStringList categories = splitString( commaSep, (*lineIt).valueString() ); 406 const QStringList categories = splitString( commaSep, (*lineIt).valueString() );
407 addr.setCategories( categories ); 407 addr.setCategories( categories );
408 } 408 }
409 409
410 // CLASS 410 // CLASS
411 else if ( identifier == "class" ) 411 else if ( identifier == "class" )
412 addr.setSecrecy( parseSecrecy( *lineIt ) ); 412 addr.setSecrecy( parseSecrecy( *lineIt ) );
413 413
414 // EMAIL 414 // EMAIL
415 else if ( identifier == "email" ) { 415 else if ( identifier == "email" ) {
416 const QStringList types = (*lineIt).parameters( "type" ); 416 const QStringList types = (*lineIt).parameters( "type" );
417 addr.insertEmail( (*lineIt).valueString(), types.findIndex( "PREF" ) != -1 ); 417 addr.insertEmail( (*lineIt).valueString(), types.findIndex( "PREF" ) != -1 );
418 } 418 }
419 419
420 // FN 420 // FN
421 else if ( identifier == "fn" ) 421 else if ( identifier == "fn" )
422 addr.setFormattedName( (*lineIt).valueString() ); 422 addr.setFormattedName( (*lineIt).valueString() );
423 423
424 // GEO 424 // GEO
425 else if ( identifier == "geo" ) { 425 else if ( identifier == "geo" ) {
426 Geo geo; 426 Geo geo;
427 427
428 const QStringList geoParts = QStringList::split( ';', (*lineIt).valueString(), true ); 428 const QStringList geoParts = QStringList::split( ';', (*lineIt).valueString(), true );
429 geo.setLatitude( geoParts[ 0 ].toFloat() ); 429 geo.setLatitude( geoParts[ 0 ].toFloat() );
430 geo.setLongitude( geoParts[ 1 ].toFloat() ); 430 geo.setLongitude( geoParts[ 1 ].toFloat() );
431 431
432 addr.setGeo( geo ); 432 addr.setGeo( geo );
433 } 433 }
434 434
435 // KEY 435 // KEY
436 else if ( identifier == "key" ) 436 else if ( identifier == "key" )
437 addr.insertKey( parseKey( *lineIt ) ); 437 addr.insertKey( parseKey( *lineIt ) );
438 438
439 // LABEL 439 // LABEL
440 else if ( identifier == "label" ) { 440 else if ( identifier == "label" ) {
441 int type = 0; 441 int type = 0;
442 442
443 const QStringList types = (*lineIt).parameters( "type" ); 443 const QStringList types = (*lineIt).parameters( "type" );
444 for ( QStringList::ConstIterator it = types.begin(); it != types.end(); ++it ) 444 for ( QStringList::ConstIterator it = types.begin(); it != types.end(); ++it )
445 type += mAddressTypeMap[ (*it).lower() ]; 445 type += mAddressTypeMap[ (*it).lower() ];
446 446
447 bool available = false; 447 bool available = false;
448 KABC::Address::List addressList = addr.addresses(); 448 KABC::Address::List addressList = addr.addresses();
449 KABC::Address::List::Iterator it; 449 KABC::Address::List::Iterator it;
450 for ( it = addressList.begin(); it != addressList.end(); ++it ) { 450 for ( it = addressList.begin(); it != addressList.end(); ++it ) {
451 if ( (*it).type() == type ) { 451 if ( (*it).type() == type ) {
452 (*it).setLabel( (*lineIt).valueString() ); 452 (*it).setLabel( (*lineIt).valueString() );
453 addr.insertAddress( *it ); 453 addr.insertAddress( *it );
454 available = true; 454 available = true;
455 break; 455 break;
456 } 456 }
457 } 457 }
458 458
459 if ( !available ) { // a standalone LABEL tag 459 if ( !available ) { // a standalone LABEL tag
460 KABC::Address address( type ); 460 KABC::Address address( type );
461 address.setLabel( (*lineIt).valueString() ); 461 address.setLabel( (*lineIt).valueString() );
462 addr.insertAddress( address ); 462 addr.insertAddress( address );
463 } 463 }
464 } 464 }
465 465
466 // LOGO 466 // LOGO
467 else if ( identifier == "logo" ) 467 else if ( identifier == "logo" )
468 addr.setLogo( parsePicture( *lineIt ) ); 468 addr.setLogo( parsePicture( *lineIt ) );
469 469
470 // MAILER 470 // MAILER
471 else if ( identifier == "mailer" ) 471 else if ( identifier == "mailer" )
472 addr.setMailer( (*lineIt).valueString() ); 472 addr.setMailer( (*lineIt).valueString() );
473 473
474 // N 474 // N
475 else if ( identifier == "n" ) { 475 else if ( identifier == "n" ) {
476 const QStringList nameParts = splitString( semicolonSep, (*lineIt).valueString() ); 476 const QStringList nameParts = splitString( semicolonSep, (*lineIt).valueString() );
477 if ( nameParts.count() > 0 ) 477 if ( nameParts.count() > 0 )
478 addr.setFamilyName( nameParts[ 0 ] ); 478 addr.setFamilyName( nameParts[ 0 ] );
479 if ( nameParts.count() > 1 ) 479 if ( nameParts.count() > 1 )
480 addr.setGivenName( nameParts[ 1 ] ); 480 addr.setGivenName( nameParts[ 1 ] );
481 if ( nameParts.count() > 2 ) 481 if ( nameParts.count() > 2 )
482 addr.setAdditionalName( nameParts[ 2 ] ); 482 addr.setAdditionalName( nameParts[ 2 ] );
483 if ( nameParts.count() > 3 ) 483 if ( nameParts.count() > 3 )
484 addr.setPrefix( nameParts[ 3 ] ); 484 addr.setPrefix( nameParts[ 3 ] );
485 if ( nameParts.count() > 4 ) 485 if ( nameParts.count() > 4 )
486 addr.setSuffix( nameParts[ 4 ] ); 486 addr.setSuffix( nameParts[ 4 ] );
487 } 487 }
488 488
489 // NAME 489 // NAME
490 else if ( identifier == "name" ) 490 else if ( identifier == "name" )
491 addr.setName( (*lineIt).valueString() ); 491 addr.setName( (*lineIt).valueString() );
492 492
493 // NICKNAME 493 // NICKNAME
494 else if ( identifier == "nickname" ) 494 else if ( identifier == "nickname" )
495 addr.setNickName( (*lineIt).valueString() ); 495 addr.setNickName( (*lineIt).valueString() );
496 496
497 // NOTE 497 // NOTE
498 else if ( identifier == "note" ) 498 else if ( identifier == "note" )
499 addr.setNote( (*lineIt).valueString() ); 499 addr.setNote( (*lineIt).valueString() );
500 500
501 // ORGANIZATION 501 // ORGANIZATION
502 else if ( identifier == "org" ) 502 else if ( identifier == "org" )
503 addr.setOrganization( (*lineIt).valueString() ); 503 addr.setOrganization( (*lineIt).valueString() );
504 504
505 // PHOTO 505 // PHOTO
506 else if ( identifier == "photo" ) 506 else if ( identifier == "photo" )
507 addr.setPhoto( parsePicture( *lineIt ) ); 507 addr.setPhoto( parsePicture( *lineIt ) );
508 508
509 // PROID 509 // PROID
510 else if ( identifier == "prodid" ) 510 else if ( identifier == "prodid" )
511 addr.setProductId( (*lineIt).valueString() ); 511 addr.setProductId( (*lineIt).valueString() );
512 512
513 // REV 513 // REV
514 else if ( identifier == "rev" ) 514 else if ( identifier == "rev" )
515 addr.setRevision( parseDateTime( (*lineIt).valueString() ) ); 515 addr.setRevision( parseDateTime( (*lineIt).valueString() ) );
516 516
517 // ROLE 517 // ROLE
518 else if ( identifier == "role" ) 518 else if ( identifier == "role" )
519 addr.setRole( (*lineIt).valueString() ); 519 addr.setRole( (*lineIt).valueString() );
520 520
521 // SORT-STRING 521 // SORT-STRING
522 else if ( identifier == "sort-string" ) 522 else if ( identifier == "sort-string" )
523 addr.setSortString( (*lineIt).valueString() ); 523 addr.setSortString( (*lineIt).valueString() );
524 524
525 // SOUND 525 // SOUND
526 else if ( identifier == "sound" ) 526 else if ( identifier == "sound" )
527 addr.setSound( parseSound( *lineIt ) ); 527 addr.setSound( parseSound( *lineIt ) );
528 528
529 // TEL 529 // TEL
530 else if ( identifier == "tel" ) { 530 else if ( identifier == "tel" ) {
531 PhoneNumber phone; 531 PhoneNumber phone;
532 phone.setNumber( (*lineIt).valueString() ); 532 phone.setNumber( (*lineIt).valueString() );
533 533
534 int type = 0; 534 int type = 0;
535 535
536 const QStringList types = (*lineIt).parameters( "type" ); 536 const QStringList types = (*lineIt).parameters( "type" );
537 for ( QStringList::ConstIterator it = types.begin(); it != types.end(); ++it ) 537 for ( QStringList::ConstIterator it = types.begin(); it != types.end(); ++it )
538 type += mPhoneTypeMap[(*it).upper()]; 538 type += mPhoneTypeMap[(*it).upper()];
539 539
540 phone.setType( type ); 540 phone.setType( type );
541 541
542 addr.insertPhoneNumber( phone ); 542 addr.insertPhoneNumber( phone );
543 } 543 }
544 544
545 // TITLE 545 // TITLE
546 else if ( identifier == "title" ) 546 else if ( identifier == "title" )
547 addr.setTitle( (*lineIt).valueString() ); 547 addr.setTitle( (*lineIt).valueString() );
548 548
549 // TZ 549 // TZ
550 else if ( identifier == "tz" ) { 550 else if ( identifier == "tz" ) {
551 TimeZone tz; 551 TimeZone tz;
552 const QString date = (*lineIt).valueString(); 552 const QString date = (*lineIt).valueString();
553 553
554 int hours = date.mid( 1, 2).toInt(); 554 int hours = date.mid( 1, 2).toInt();
555 int minutes = date.mid( 4, 2 ).toInt(); 555 int minutes = date.mid( 4, 2 ).toInt();
556 int offset = ( hours * 60 ) + minutes; 556 int offset = ( hours * 60 ) + minutes;
557 offset = offset * ( date[ 0 ] == '+' ? 1 : -1 ); 557 offset = offset * ( date[ 0 ] == '+' ? 1 : -1 );
558 558
559 tz.setOffset( offset ); 559 tz.setOffset( offset );
560 addr.setTimeZone( tz ); 560 addr.setTimeZone( tz );
561 } 561 }
562 562
563 // UID 563 // UID
564 else if ( identifier == "uid" ) 564 else if ( identifier == "uid" )
565 addr.setUid( (*lineIt).valueString() ); 565 addr.setUid( (*lineIt).valueString() );
566 566
567 // URL 567 // URL
568 else if ( identifier == "url" ) 568 else if ( identifier == "url" )
569 addr.setUrl( KURL( (*lineIt).valueString() ) ); 569 addr.setUrl( KURL( (*lineIt).valueString() ) );
570 570
571 // X- 571 // X-
572 else if ( identifier.startsWith( "x-" ) ) { 572 else if ( identifier.startsWith( "x-" ) ) {
573 const QString key = (*lineIt).identifier().mid( 2 ); 573 const QString key = (*lineIt).identifier().mid( 2 );
574 int dash = key.find( "-" ); 574 int dash = key.find( "-" );
575 addr.insertCustom( key.left( dash ), key.mid( dash + 1 ), (*lineIt).valueString() ); 575 addr.insertCustom( key.left( dash ), key.mid( dash + 1 ), (*lineIt).valueString() );
576 } 576 }
577 } 577 }
578 } 578 }
579 addr.makePhoneNumbersOLcompatible(); 579 addr.makePhoneNumbersOLcompatible();
580 addrList.append( addr ); 580 addrList.append( addr );
581 } 581 }
582 582
583 return addrList; 583 return addrList;
584} 584}
585 585
586QDateTime VCardTool::parseDateTime( const QString &str ) 586QDateTime VCardTool::parseDateTime( const QString &str )
587{ 587{
588 QDateTime dateTime; 588 QDateTime dateTime;
589 589
590 if ( str.find( '-' ) == -1 ) { // is base format (yyyymmdd) 590 if ( str.find( '-' ) == -1 ) { // is base format (yyyymmdd)
591 dateTime.setDate( QDate( str.left( 4 ).toInt(), str.mid( 4, 2 ).toInt(), 591 dateTime.setDate( QDate( str.left( 4 ).toInt(), str.mid( 4, 2 ).toInt(),
592 str.mid( 6, 2 ).toInt() ) ); 592 str.mid( 6, 2 ).toInt() ) );
593 593
594 if ( str.find( 'T' ) ) // has time information yyyymmddThh:mm:ss 594 if ( str.find( 'T' ) ) // has time information yyyymmddThh:mm:ss
595 dateTime.setTime( QTime( str.mid( 11, 2 ).toInt(), str.mid( 14, 2 ).toInt(), 595 dateTime.setTime( QTime( str.mid( 11, 2 ).toInt(), str.mid( 14, 2 ).toInt(),
596 str.mid( 17, 2 ).toInt() ) ); 596 str.mid( 17, 2 ).toInt() ) );
597 597
598 } else { // is extended format yyyy-mm-dd 598 } else { // is extended format yyyy-mm-dd
599 dateTime.setDate( QDate( str.left( 4 ).toInt(), str.mid( 5, 2 ).toInt(), 599 dateTime.setDate( QDate( str.left( 4 ).toInt(), str.mid( 5, 2 ).toInt(),
600 str.mid( 8, 2 ).toInt() ) ); 600 str.mid( 8, 2 ).toInt() ) );
601 601
602 if ( str.find( 'T' ) ) // has time information yyyy-mm-ddThh:mm:ss 602 if ( str.find( 'T' ) ) // has time information yyyy-mm-ddThh:mm:ss
603 dateTime.setTime( QTime( str.mid( 11, 2 ).toInt(), str.mid( 14, 2 ).toInt(), 603 dateTime.setTime( QTime( str.mid( 11, 2 ).toInt(), str.mid( 14, 2 ).toInt(),
604 str.mid( 17, 2 ).toInt() ) ); 604 str.mid( 17, 2 ).toInt() ) );
605 } 605 }
606 606
607 return dateTime; 607 return dateTime;
608} 608}
609 609
610QString VCardTool::createDateTime( const QDateTime &dateTime ) 610QString VCardTool::createDateTime( const QDateTime &dateTime )
611{ 611{
612 QString str; 612 QString str;
613 613
614 if ( dateTime.date().isValid() ) { 614 if ( dateTime.date().isValid() ) {
615 str.sprintf( "%4d-%02d-%02d", dateTime.date().year(), dateTime.date().month(), 615 str.sprintf( "%4d-%02d-%02d", dateTime.date().year(), dateTime.date().month(),
616 dateTime.date().day() ); 616 dateTime.date().day() );
617 if ( dateTime.time().isValid() ) { 617 if ( dateTime.time().isValid() ) {
618 QString tmp; 618 QString tmp;
619 tmp.sprintf( "T%02d:%02d:%02dZ", dateTime.time().hour(), dateTime.time().minute(), 619 tmp.sprintf( "T%02d:%02d:%02dZ", dateTime.time().hour(), dateTime.time().minute(),
620 dateTime.time().second() ); 620 dateTime.time().second() );
621 str += tmp; 621 str += tmp;
622 } 622 }
623 } 623 }
624 624
625 return str; 625 return str;
626} 626}
627 627
628Picture VCardTool::parsePicture( const VCardLine &line ) 628Picture VCardTool::parsePicture( const VCardLine &line )
629{ 629{
630 Picture pic; 630 Picture pic;
631 631
632 const QStringList params = line.parameterList(); 632 const QStringList params = line.parameterList();
633 if ( params.findIndex( "encoding" ) != -1 ) { 633 if ( params.findIndex( "encoding" ) != -1 ) {
634 QImage img; 634 QImage img;
635 img.loadFromData( line.valueBytes() ); 635 img.loadFromData( line.valueBytes() );
636 pic.setData( img ); 636 pic.setData( img );
637 } else if ( params.findIndex( "value" ) != -1 ) { 637 } else if ( params.findIndex( "value" ) != -1 ) {
638 if ( line.parameter( "value" ).lower() == "uri" ) 638 if ( line.parameter( "value" ).lower() == "uri" )
639 pic.setUrl( line.valueString() ); 639 pic.setUrl( line.valueString() );
640 } 640 }
641 641
642 if ( params.findIndex( "type" ) != -1 ) 642 if ( params.findIndex( "type" ) != -1 )
643 pic.setType( line.parameter( "type" ) ); 643 pic.setType( line.parameter( "type" ) );
644 644
645 return pic; 645 return pic;
646} 646}
647 647
648VCardLine VCardTool::createPicture( const QString &identifier, const Picture &pic ) 648VCardLine VCardTool::createPicture( const QString &identifier, const Picture &pic )
649{ 649{
650 VCardLine line( identifier ); 650 VCardLine line( identifier );
651 651
652 if ( pic.isIntern() ) { 652 if ( pic.isIntern() ) {
653 if ( !pic.data().isNull() ) { 653 if ( !pic.data().isNull() ) {
654 QByteArray input; 654 QByteArray input;
655 QDataStream s( input, IO_WriteOnly ); 655 QDataStream s( &input, QIODevice::WriteOnly );
656 s.setVersion( 4 ); 656 s.setVersion( 4 );
657 s << pic.data(); 657 s << pic.data();
658 line.setValueBytes( input ); 658 line.setValueBytes( input );
659 line.addParameter( "encoding", "b" ); 659 line.addParameter( "encoding", "b" );
660 line.addParameter( "type", "image/png" ); 660 line.addParameter( "type", "image/png" );
661 } 661 }
662 } else if ( !pic.url().isEmpty() ) { 662 } else if ( !pic.url().isEmpty() ) {
663 QByteArray ba; 663 QByteArray ba;
664 line.setValueString( pic.url() ); 664 line.setValueString( pic.url() );
665 line.addParameter( "value", "URI" ); 665 line.addParameter( "value", "URI" );
666 } 666 }
667 667
668 return line; 668 return line;
669} 669}
670 670
671Sound VCardTool::parseSound( const VCardLine &line ) 671Sound VCardTool::parseSound( const VCardLine &line )
672{ 672{
673 Sound snd; 673 Sound snd;
674 674
675 const QStringList params = line.parameterList(); 675 const QStringList params = line.parameterList();
676 if ( params.findIndex( "encoding" ) != -1 ) 676 if ( params.findIndex( "encoding" ) != -1 )
677 snd.setData( line.valueBytes() ); 677 snd.setData( line.valueBytes() );
678 else if ( params.findIndex( "value" ) != -1 ) { 678 else if ( params.findIndex( "value" ) != -1 ) {
679 if ( line.parameter( "value" ).lower() == "uri" ) 679 if ( line.parameter( "value" ).lower() == "uri" )
680 snd.setUrl( line.valueString() ); 680 snd.setUrl( line.valueString() );
681 } 681 }
682 682
683/* TODO: support sound types 683/* TODO: support sound types
684 if ( params.contains( "type" ) ) 684 if ( params.contains( "type" ) )
685 snd.setType( line.parameter( "type" ) ); 685 snd.setType( line.parameter( "type" ) );
686*/ 686*/
687 687
688 return snd; 688 return snd;
689} 689}
690 690
691VCardLine VCardTool::createSound( const Sound &snd ) 691VCardLine VCardTool::createSound( const Sound &snd )
692{ 692{
693 VCardLine line( "SOUND" ); 693 VCardLine line( "SOUND" );
694 694
695 if ( snd.isIntern() ) { 695 if ( snd.isIntern() ) {
696 if ( !snd.data().isEmpty() ) { 696 if ( !snd.data().isEmpty() ) {
697 line.setValueBytes( snd.data() ); 697 line.setValueBytes( snd.data() );
698 line.addParameter( "encoding", "b" ); 698 line.addParameter( "encoding", "b" );
699 // TODO: need to store sound type!!! 699 // TODO: need to store sound type!!!
700 } 700 }
701 } else if ( !snd.url().isEmpty() ) { 701 } else if ( !snd.url().isEmpty() ) {
702 line.setValueString( snd.url() ); 702 line.setValueString( snd.url() );
703 line.addParameter( "value", "URI" ); 703 line.addParameter( "value", "URI" );
704 } 704 }
705 705
706 return line; 706 return line;
707} 707}
708 708
709Key VCardTool::parseKey( const VCardLine &line ) 709Key VCardTool::parseKey( const VCardLine &line )
710{ 710{
711 Key key; 711 Key key;
712 712
713 const QStringList params = line.parameterList(); 713 const QStringList params = line.parameterList();
714 if ( params.findIndex( "encoding" ) != -1 ) 714 if ( params.findIndex( "encoding" ) != -1 )
715 key.setBinaryData( line.valueBytes() ); 715 key.setBinaryData( line.valueBytes() );
716 else 716 else
717 key.setTextData( line.valueString() ); 717 key.setTextData( line.valueString() );
718 718
719 if ( params.findIndex( "type" ) != -1 ) { 719 if ( params.findIndex( "type" ) != -1 ) {
720 if ( line.parameter( "type" ).lower() == "x509" ) 720 if ( line.parameter( "type" ).lower() == "x509" )
721 key.setType( Key::X509 ); 721 key.setType( Key::X509 );
722 else if ( line.parameter( "type" ).lower() == "pgp" ) 722 else if ( line.parameter( "type" ).lower() == "pgp" )
723 key.setType( Key::PGP ); 723 key.setType( Key::PGP );
724 else { 724 else {
725 key.setType( Key::Custom ); 725 key.setType( Key::Custom );
726 key.setCustomTypeString( line.parameter( "type" ) ); 726 key.setCustomTypeString( line.parameter( "type" ) );
727 } 727 }
728 } 728 }
729 729
730 return key; 730 return key;
731} 731}
732 732
733VCardLine VCardTool::createKey( const Key &key ) 733VCardLine VCardTool::createKey( const Key &key )
734{ 734{
735 VCardLine line( "KEY" ); 735 VCardLine line( "KEY" );
736 736
737 if ( key.isBinary() ) { 737 if ( key.isBinary() ) {
738 if ( !key.binaryData().isEmpty() ) { 738 if ( !key.binaryData().isEmpty() ) {
739 line.setValueBytes( key.binaryData() ); 739 line.setValueBytes( key.binaryData() );
740 line.addParameter( "encoding", "b" ); 740 line.addParameter( "encoding", "b" );
741 } 741 }
742 } else if ( !key.textData().isEmpty() ) 742 } else if ( !key.textData().isEmpty() )
743 line.setValueString( key.textData() ); 743 line.setValueString( key.textData() );
744 744
745 if ( key.type() == Key::X509 ) 745 if ( key.type() == Key::X509 )
746 line.addParameter( "type", "X509" ); 746 line.addParameter( "type", "X509" );
747 else if ( key.type() == Key::PGP ) 747 else if ( key.type() == Key::PGP )
748 line.addParameter( "type", "PGP" ); 748 line.addParameter( "type", "PGP" );
749 else if ( key.type() == Key::Custom ) 749 else if ( key.type() == Key::Custom )
750 line.addParameter( "type", key.customTypeString() ); 750 line.addParameter( "type", key.customTypeString() );
751 751
752 return line; 752 return line;
753} 753}
754 754
755Secrecy VCardTool::parseSecrecy( const VCardLine &line ) 755Secrecy VCardTool::parseSecrecy( const VCardLine &line )
756{ 756{
757 Secrecy secrecy; 757 Secrecy secrecy;
758 758
759 if ( line.valueString().lower() == "public" ) 759 if ( line.valueString().lower() == "public" )
760 secrecy.setType( Secrecy::Public ); 760 secrecy.setType( Secrecy::Public );
761 if ( line.valueString().lower() == "private" ) 761 if ( line.valueString().lower() == "private" )
762 secrecy.setType( Secrecy::Private ); 762 secrecy.setType( Secrecy::Private );
763 if ( line.valueString().lower() == "confidential" ) 763 if ( line.valueString().lower() == "confidential" )
764 secrecy.setType( Secrecy::Confidential ); 764 secrecy.setType( Secrecy::Confidential );
765 765
766 return secrecy; 766 return secrecy;
767} 767}
768 768
769VCardLine VCardTool::createSecrecy( const Secrecy &secrecy ) 769VCardLine VCardTool::createSecrecy( const Secrecy &secrecy )
770{ 770{
771 VCardLine line( "CLASS" ); 771 VCardLine line( "CLASS" );
772 772
773 int type = secrecy.type(); 773 int type = secrecy.type();
774 774
775 if ( type == Secrecy::Public ) 775 if ( type == Secrecy::Public )
776 line.setValueString( "PUBLIC" ); 776 line.setValueString( "PUBLIC" );
777 else if ( type == Secrecy::Private ) 777 else if ( type == Secrecy::Private )
778 line.setValueString( "PRIVATE" ); 778 line.setValueString( "PRIVATE" );
779 else if ( type == Secrecy::Confidential ) 779 else if ( type == Secrecy::Confidential )
780 line.setValueString( "CONFIDENTIAL" ); 780 line.setValueString( "CONFIDENTIAL" );
781 781
782 return line; 782 return line;
783} 783}
784 784
785Agent VCardTool::parseAgent( const VCardLine &line ) 785Agent VCardTool::parseAgent( const VCardLine &line )
786{ 786{
787 Agent agent; 787 Agent agent;
788 788
789 const QStringList params = line.parameterList(); 789 const QStringList params = line.parameterList();
790 if ( params.findIndex( "value" ) != -1 ) { 790 if ( params.findIndex( "value" ) != -1 ) {
791 if ( line.parameter( "value" ).lower() == "uri" ) 791 if ( line.parameter( "value" ).lower() == "uri" )
792 agent.setUrl( line.valueString() ); 792 agent.setUrl( line.valueString() );
793 } else { 793 } else {
794 QString str = line.valueString(); 794 QString str = line.valueString();
795 str.replace( QRegExp("\\\\n"), "\r\n" ); 795 str.replace( QRegExp("\\\\n"), "\r\n" );
796 str.replace( QRegExp("\\\\N"), "\r\n" ); 796 str.replace( QRegExp("\\\\N"), "\r\n" );
797 str.replace( QRegExp("\\\\;"), ";" ); 797 str.replace( QRegExp("\\\\;"), ";" );
798 str.replace( QRegExp("\\\\:"), ":" ); 798 str.replace( QRegExp("\\\\:"), ":" );
799 str.replace( QRegExp("\\\\,"), "," ); 799 str.replace( QRegExp("\\\\,"), "," );
800 800
801 const Addressee::List list = parseVCards( str ); 801 const Addressee::List list = parseVCards( str );
802 if ( list.count() > 0 ) { 802 if ( list.count() > 0 ) {
803 Addressee *addr = new Addressee; 803 Addressee *addr = new Addressee;
804 *addr = list[ 0 ]; 804 *addr = list[ 0 ];
805 agent.setAddressee( addr ); 805 agent.setAddressee( addr );
806 } 806 }
807 } 807 }
808 808
809 return agent; 809 return agent;
810} 810}
811 811
812VCardLine VCardTool::createAgent( VCard::Version version, const Agent &agent ) 812VCardLine VCardTool::createAgent( VCard::Version version, const Agent &agent )
813{ 813{
814 VCardLine line( "AGENT" ); 814 VCardLine line( "AGENT" );
815 815
816 if ( agent.isIntern() ) { 816 if ( agent.isIntern() ) {
817 if ( agent.addressee() != 0 ) { 817 if ( agent.addressee() != 0 ) {
818 Addressee::List list; 818 Addressee::List list;
819 list.append( *agent.addressee() ); 819 list.append( *agent.addressee() );
820 820
821 QString str = createVCards( list, version ); 821 QString str = createVCards( list, version );
822 str.replace( QRegExp("\\r\\n"), "\\n" ); 822 str.replace( QRegExp("\\r\\n"), "\\n" );
823 str.replace( QRegExp(";"), "\\;" ); 823 str.replace( QRegExp(";"), "\\;" );
824 str.replace( QRegExp(":"), "\\:" ); 824 str.replace( QRegExp(":"), "\\:" );
825 str.replace( QRegExp(","), "\\," ); 825 str.replace( QRegExp(","), "\\," );
826 line.setValueString( str ); 826 line.setValueString( str );
827 } 827 }
828 } else if ( !agent.url().isEmpty() ) { 828 } else if ( !agent.url().isEmpty() ) {
829 line.setValueString( agent.url() ); 829 line.setValueString( agent.url() );
830 line.addParameter( "value", "URI" ); 830 line.addParameter( "value", "URI" );
831 } 831 }
832 832
833 return line; 833 return line;
834} 834}
835 835
836QStringList VCardTool::splitString( const QChar &sep, const QString &str ) 836QStringList VCardTool::splitString( const QChar &sep, const QString &str )
837{ 837{
838 QStringList list; 838 QStringList list;
839 QString value( str ); 839 QString value( str );
840 840
841 int start = 0; 841 int start = 0;
842 int pos = value.find( sep, start ); 842 int pos = value.find( sep, start );
843 843
844 while ( pos != -1 ) { 844 while ( pos != -1 ) {
845 if ( value[ pos - 1 ] != '\\' ) { 845 if ( value[ pos - 1 ] != '\\' ) {
846 if ( pos > start && pos <= (int)value.length() ) 846 if ( pos > start && pos <= (int)value.length() )
847 list << value.mid( start, pos - start ); 847 list << value.mid( start, pos - start );
848 else 848 else
849 list << QString::null; 849 list << QString::null;
850 850
851 start = pos + 1; 851 start = pos + 1;
852 pos = value.find( sep, start ); 852 pos = value.find( sep, start );
853 } else { 853 } else {
854 if ( pos != 0 ) { 854 if ( pos != 0 ) {
855 value.replace( pos - 1, 2, sep ); 855 value.replace( pos - 1, 2, sep );
856 pos = value.find( sep, pos ); 856 pos = value.find( sep, pos );
857 } else 857 } else
858 pos = value.find( sep, pos + 1 ); 858 pos = value.find( sep, pos + 1 );
859 } 859 }
860 } 860 }
861 861
862 int l = value.length() - 1; 862 int l = value.length() - 1;
863 if ( value.mid( start, l - start + 1 ).length() > 0 ) 863 if ( value.mid( start, l - start + 1 ).length() > 0 )
864 list << value.mid( start, l - start + 1 ); 864 list << value.mid( start, l - start + 1 );
865 else 865 else
866 list << QString::null; 866 list << QString::null;
867 867
868 return list; 868 return list;
869} 869}