-rw-r--r-- | kabc/phonenumber.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/kabc/phonenumber.cpp b/kabc/phonenumber.cpp index 0d46ba7..eee25a5 100644 --- a/kabc/phonenumber.cpp +++ b/kabc/phonenumber.cpp | |||
@@ -97,247 +97,273 @@ int PhoneNumber::getCompatType( int type ) | |||
97 | return Work; | 97 | return Work; |
98 | } | 98 | } |
99 | if ((type & Pcs) == Pcs) { | 99 | if ((type & Pcs) == Pcs) { |
100 | if ((type & Pref) == Pref) | 100 | if ((type & Pref) == Pref) |
101 | return Pcs | Pref; | 101 | return Pcs | Pref; |
102 | return Pcs; | 102 | return Pcs; |
103 | } | 103 | } |
104 | if ((type & Car) == Car) | 104 | if ((type & Car) == Car) |
105 | return Car; | 105 | return Car; |
106 | if ((type & Pager) == Pager) | 106 | if ((type & Pager) == Pager) |
107 | return Pager; | 107 | return Pager; |
108 | if ((type & Isdn) == Isdn) | 108 | if ((type & Isdn) == Isdn) |
109 | return Isdn; | 109 | return Isdn; |
110 | if ((type & Video) == Video) | 110 | if ((type & Video) == Video) |
111 | return Video; | 111 | return Video; |
112 | 112 | ||
113 | if ((type & Msg) == Msg) | 113 | if ((type & Msg) == Msg) |
114 | return Msg; | 114 | return Msg; |
115 | if ((type & Fax) == Fax) | 115 | if ((type & Fax) == Fax) |
116 | return Fax; | 116 | return Fax; |
117 | 117 | ||
118 | if ((type & Pref) == Pref) | 118 | if ((type & Pref) == Pref) |
119 | return Pref; | 119 | return Pref; |
120 | 120 | ||
121 | return Voice; | 121 | return Voice; |
122 | 122 | ||
123 | } | 123 | } |
124 | bool PhoneNumber::simplifyNumber() | 124 | bool PhoneNumber::simplifyNumber() |
125 | { | 125 | { |
126 | QString Number; | 126 | QString Number; |
127 | int i; | 127 | int i; |
128 | Number = mNumber.stripWhiteSpace (); | 128 | Number = mNumber.stripWhiteSpace (); |
129 | mNumber = ""; | 129 | mNumber = ""; |
130 | for ( i = 0; i < Number.length(); ++i) { | 130 | for ( i = 0; i < Number.length(); ++i) { |
131 | if ( Number.at(i).isDigit() || Number.at(i) == '+'|| Number.at(i) == '*'|| Number.at(i) == '#' ) | 131 | if ( Number.at(i).isDigit() || Number.at(i) == '+'|| Number.at(i) == '*'|| Number.at(i) == '#' ) |
132 | mNumber += Number.at(i); | 132 | mNumber += Number.at(i); |
133 | } | 133 | } |
134 | return ( mNumber.length() > 0 ); | 134 | return ( mNumber.length() > 0 ); |
135 | } | 135 | } |
136 | // make cellphone compatible | 136 | // make cellphone compatible |
137 | void PhoneNumber::simplifyType() | 137 | void PhoneNumber::simplifyType() |
138 | { | 138 | { |
139 | if ( mType & Fax ) mType = Fax; | 139 | if ( mType & Fax ) mType = Fax; |
140 | else if ( mType & Cell ) mType = Cell; | 140 | else if ( mType & Cell ) mType = Cell; |
141 | else if ( mType & Work ) mType = Work ; | 141 | else if ( mType & Work ) mType = Work ; |
142 | else if ( mType & Home ) mType = Home; | 142 | else if ( mType & Home ) mType = Home; |
143 | else mType = Pref; | 143 | else mType = Pref; |
144 | } | 144 | } |
145 | bool PhoneNumber::contains( const PhoneNumber &p ) | 145 | bool PhoneNumber::contains( const PhoneNumber &p ) |
146 | { | 146 | { |
147 | PhoneNumber myself; | 147 | PhoneNumber myself; |
148 | PhoneNumber other; | 148 | PhoneNumber other; |
149 | myself = *this; | 149 | myself = *this; |
150 | other = p; | 150 | other = p; |
151 | myself.simplifyNumber(); | 151 | myself.simplifyNumber(); |
152 | other.simplifyNumber(); | 152 | other.simplifyNumber(); |
153 | if ( myself.number() != other.number ()) | 153 | if ( myself.number() != other.number ()) |
154 | return false; | 154 | return false; |
155 | myself.simplifyType(); | 155 | myself.simplifyType(); |
156 | other.simplifyType(); | 156 | other.simplifyType(); |
157 | if ( myself.type() == other.type()) | 157 | if ( myself.type() == other.type()) |
158 | return true; | 158 | return true; |
159 | return false; | 159 | return false; |
160 | } | 160 | } |
161 | 161 | ||
162 | void PhoneNumber::setId( const QString &id ) | 162 | void PhoneNumber::setId( const QString &id ) |
163 | { | 163 | { |
164 | mId = id; | 164 | mId = id; |
165 | } | 165 | } |
166 | 166 | ||
167 | QString PhoneNumber::id() const | 167 | QString PhoneNumber::id() const |
168 | { | 168 | { |
169 | return mId; | 169 | return mId; |
170 | } | 170 | } |
171 | 171 | ||
172 | void PhoneNumber::setNumber( const QString &number ) | 172 | void PhoneNumber::setNumber( const QString &number ) |
173 | { | 173 | { |
174 | mNumber = number; | 174 | mNumber = number; |
175 | } | 175 | } |
176 | 176 | ||
177 | QString PhoneNumber::number() const | 177 | QString PhoneNumber::number() const |
178 | { | 178 | { |
179 | return mNumber; | 179 | return mNumber; |
180 | } | 180 | } |
181 | 181 | ||
182 | void PhoneNumber::setType( int type ) | 182 | void PhoneNumber::setType( int type ) |
183 | { | 183 | { |
184 | mType = type; | 184 | mType = type; |
185 | } | 185 | } |
186 | 186 | ||
187 | int PhoneNumber::type() const | 187 | int PhoneNumber::type() const |
188 | { | 188 | { |
189 | return mType; | 189 | return mType; |
190 | } | 190 | } |
191 | 191 | ||
192 | QString PhoneNumber::typeLabel() const | 192 | QString PhoneNumber::typeLabel() const |
193 | { | 193 | { |
194 | QString label; | 194 | QString label; |
195 | bool first = true; | 195 | bool first = true; |
196 | 196 | ||
197 | TypeList list = typeList(); | 197 | TypeList list = typeList(); |
198 | 198 | ||
199 | TypeList::Iterator it; | 199 | TypeList::Iterator it; |
200 | for ( it = list.begin(); it != list.end(); ++it ) { | 200 | for ( it = list.begin(); it != list.end(); ++it ) { |
201 | if ( ( type() & (*it) ) && ( (*it) != Pref ) ) { | 201 | if ( ( type() & (*it) ) && ( (*it) != Pref ) ) { |
202 | label.append( ( first ? "" : "/" ) + typeLabel( *it ) ); | 202 | label.append( ( first ? "" : "/" ) + typeLabel( *it ) ); |
203 | if ( first ) | 203 | if ( first ) |
204 | first = false; | 204 | first = false; |
205 | } | 205 | } |
206 | } | 206 | } |
207 | 207 | ||
208 | return label; | 208 | return label; |
209 | } | 209 | } |
210 | 210 | ||
211 | QString PhoneNumber::label() const | 211 | QString PhoneNumber::label() const |
212 | { | 212 | { |
213 | return typeLabel( type() ); | 213 | return typeLabel( type() ); |
214 | } | 214 | } |
215 | 215 | ||
216 | PhoneNumber::TypeList PhoneNumber::typeList() | 216 | PhoneNumber::TypeList PhoneNumber::typeList() |
217 | { | 217 | { |
218 | TypeList list; | 218 | TypeList list; |
219 | 219 | ||
220 | list << Home << Work << Msg << Pref << Voice << Fax << Cell << Video | 220 | list << Home << Work << Msg << Pref << Voice << Fax << Cell << Video |
221 | << Bbs << Modem << Car << Isdn << Pcs << Pager; | 221 | << Bbs << Modem << Car << Isdn << Pcs << Pager; |
222 | 222 | ||
223 | return list; | 223 | return list; |
224 | } | 224 | } |
225 | PhoneNumber::TypeList PhoneNumber::supportedTypeList() | ||
226 | { | ||
227 | static TypeList list; | ||
228 | if ( list.count() == 0 ) | ||
229 | list << (Home| Pref) << (Work| Pref) << Cell << Home << Work << Car << (Work| Msg | Voice) << (Work| Msg) << (Home | Fax) << (Work| Fax) << Fax<< (Pcs|Pref)<< Pcs<< Pager << Isdn << Video << Msg << Pref << Voice; | ||
230 | return list; | ||
231 | } | ||
232 | QStringList PhoneNumber::supportedTypeListNames() | ||
233 | { | ||
234 | static QStringList list; | ||
235 | if ( list.count() == 0 ) | ||
236 | list << i18n("Home") << i18n("Work") << i18n("Mobile") << i18n("Home2")<< i18n("Work2") << i18n("Mobile2 (Work)") << i18n("Assistent") << i18n("Company") << i18n("Fax (Home)") << i18n("Fax (Work)") << i18n("Fax (Other)") << i18n("SIP") << i18n("VoIP") << i18n("Pager") << i18n("ISDN") << i18n("Video") << i18n("Callback") << i18n("Primary")<< i18n("Other"); | ||
237 | return list; | ||
238 | } | ||
239 | |||
240 | int PhoneNumber::typeListIndex4Type(int type ) | ||
241 | { | ||
242 | TypeList list = supportedTypeList(); | ||
243 | int i = 0; | ||
244 | while ( i < list.count() ) { | ||
245 | if ( list [i] == type ) | ||
246 | return i; | ||
247 | ++i; | ||
248 | } | ||
249 | return list.count()-1; | ||
250 | } | ||
225 | 251 | ||
226 | QString PhoneNumber::label( int type ) | 252 | QString PhoneNumber::label( int type ) |
227 | { | 253 | { |
228 | return typeLabel( type ); | 254 | return typeLabel( type ); |
229 | } | 255 | } |
230 | 256 | ||
231 | QString PhoneNumber::typeLabel( int type ) | 257 | QString PhoneNumber::typeLabel( int type ) |
232 | { | 258 | { |
233 | if ((type & Cell) == Cell) | 259 | if ((type & Cell) == Cell) |
234 | return i18n("Mobile"); | 260 | return i18n("Mobile"); |
235 | if ((type & Home) == Home) { | 261 | if ((type & Home) == Home) { |
236 | if ((type & Pref) == Pref) | 262 | if ((type & Pref) == Pref) |
237 | return i18n("Home"); | 263 | return i18n("Home"); |
238 | if ((type & Fax) == Fax) | 264 | if ((type & Fax) == Fax) |
239 | return i18n("Fax (Home)"); | 265 | return i18n("Fax (Home)"); |
240 | return i18n("Home2"); | 266 | return i18n("Home2"); |
241 | } | 267 | } |
242 | 268 | ||
243 | if ((type & Work) == Work) { | 269 | if ((type & Work) == Work) { |
244 | if ((type & Pref) == Pref) | 270 | if ((type & Pref) == Pref) |
245 | return i18n("Work"); | 271 | return i18n("Work"); |
246 | if ((type & Fax) == Fax) | 272 | if ((type & Fax) == Fax) |
247 | return i18n("Fax (Work)"); | 273 | return i18n("Fax (Work)"); |
248 | if ((type & Msg) == Msg) { | 274 | if ((type & Msg) == Msg) { |
249 | if ((type & Voice) == Voice) | 275 | if ((type & Voice) == Voice) |
250 | return i18n("Assistent"); | 276 | return i18n("Assistent"); |
251 | return i18n("Company"); | 277 | return i18n("Company"); |
252 | } | 278 | } |
253 | return i18n("Work2"); | 279 | return i18n("Work2"); |
254 | } | 280 | } |
255 | if ((type & Pcs) == Pcs) { | 281 | if ((type & Pcs) == Pcs) { |
256 | if ((type & Pref) == Pref) | 282 | if ((type & Pref) == Pref) |
257 | return i18n("SIP"); | 283 | return i18n("SIP"); |
258 | return i18n("VoIP"); | 284 | return i18n("VoIP"); |
259 | } | 285 | } |
260 | if ((type & Car) == Car) | 286 | if ((type & Car) == Car) |
261 | return i18n("Mobile2 (Work)"); | 287 | return i18n("Mobile2 (Work)"); |
262 | if ((type & Pager) == Pager) | 288 | if ((type & Pager) == Pager) |
263 | return i18n("Pager"); | 289 | return i18n("Pager"); |
264 | if ((type & Isdn) == Isdn) | 290 | if ((type & Isdn) == Isdn) |
265 | return i18n("ISDN"); | 291 | return i18n("ISDN"); |
266 | if ((type & Video) == Video) | 292 | if ((type & Video) == Video) |
267 | return i18n("Video"); | 293 | return i18n("Video"); |
268 | 294 | ||
269 | if ((type & Msg) == Msg) | 295 | if ((type & Msg) == Msg) |
270 | return i18n("Callback"); | 296 | return i18n("Callback"); |
271 | if ((type & Fax) == Fax) | 297 | if ((type & Fax) == Fax) |
272 | return i18n("Fax (Other)"); | 298 | return i18n("Fax (Other)"); |
273 | 299 | ||
274 | if ((type & Pref) == Pref) | 300 | if ((type & Pref) == Pref) |
275 | return i18n("Primary"); | 301 | return i18n("Primary"); |
276 | 302 | ||
277 | 303 | ||
278 | return i18n("Other"); | 304 | return i18n("Other"); |
279 | 305 | ||
280 | 306 | ||
281 | #if 0 | 307 | #if 0 |
282 | 308 | ||
283 | 309 | ||
284 | 310 | ||
285 | QString typeString; | 311 | QString typeString; |
286 | 312 | ||
287 | 313 | ||
288 | if ((type & Cell) == Cell) | 314 | if ((type & Cell) == Cell) |
289 | typeString += i18n("Mobile") +" "; | 315 | typeString += i18n("Mobile") +" "; |
290 | if ((type & Home) == Home) | 316 | if ((type & Home) == Home) |
291 | typeString += i18n("Home")+" "; | 317 | typeString += i18n("Home")+" "; |
292 | else if ((type & Work) == Work) | 318 | else if ((type & Work) == Work) |
293 | typeString += i18n("Work")+" "; | 319 | typeString += i18n("Work")+" "; |
294 | 320 | ||
295 | if ((type & Sip) == Sip) | 321 | if ((type & Sip) == Sip) |
296 | typeString += i18n("SIP")+" "; | 322 | typeString += i18n("SIP")+" "; |
297 | if ((type & Car) == Car) | 323 | if ((type & Car) == Car) |
298 | typeString += i18n("Car")+" "; | 324 | typeString += i18n("Car")+" "; |
299 | 325 | ||
300 | if ((type & Fax) == Fax) | 326 | if ((type & Fax) == Fax) |
301 | typeString += i18n("Fax"); | 327 | typeString += i18n("Fax"); |
302 | else if ((type & Msg) == Msg) | 328 | else if ((type & Msg) == Msg) |
303 | typeString += i18n("Messenger"); | 329 | typeString += i18n("Messenger"); |
304 | else if ((type & Video) == Video) | 330 | else if ((type & Video) == Video) |
305 | typeString += i18n("Video"); | 331 | typeString += i18n("Video"); |
306 | else if ((type & Bbs) == Bbs) | 332 | else if ((type & Bbs) == Bbs) |
307 | typeString += i18n("Mailbox"); | 333 | typeString += i18n("Mailbox"); |
308 | else if ((type & Modem) == Modem) | 334 | else if ((type & Modem) == Modem) |
309 | typeString += i18n("Modem"); | 335 | typeString += i18n("Modem"); |
310 | else if ((type & Isdn) == Isdn) | 336 | else if ((type & Isdn) == Isdn) |
311 | typeString += i18n("ISDN"); | 337 | typeString += i18n("ISDN"); |
312 | else if ((type & Pcs) == Pcs) | 338 | else if ((type & Pcs) == Pcs) |
313 | typeString += i18n("PCS"); | 339 | typeString += i18n("PCS"); |
314 | else if ((type & Pager) == Pager) | 340 | else if ((type & Pager) == Pager) |
315 | typeString += i18n("Pager"); | 341 | typeString += i18n("Pager"); |
316 | // add the prefered flag | 342 | // add the prefered flag |
317 | /* | 343 | /* |
318 | if ((type & Pref) == Pref) | 344 | if ((type & Pref) == Pref) |
319 | typeString += i18n("(p)"); | 345 | typeString += i18n("(p)"); |
320 | */ | 346 | */ |
321 | //if we still have no match, return "other" | 347 | //if we still have no match, return "other" |
322 | if (typeString.isEmpty()) { | 348 | if (typeString.isEmpty()) { |
323 | if ((type & Voice) == Voice) | 349 | if ((type & Voice) == Voice) |
324 | return i18n("Voice"); | 350 | return i18n("Voice"); |
325 | else | 351 | else |
326 | return i18n("Other"); | 352 | return i18n("Other"); |
327 | } | 353 | } |
328 | 354 | ||
329 | return typeString.stripWhiteSpace(); | 355 | return typeString.stripWhiteSpace(); |
330 | #endif | 356 | #endif |
331 | } | 357 | } |
332 | 358 | ||
333 | QDataStream &KABC::operator<<( QDataStream &s, const PhoneNumber &phone ) | 359 | QDataStream &KABC::operator<<( QDataStream &s, const PhoneNumber &phone ) |
334 | { | 360 | { |
335 | return s << phone.mId << phone.mType << phone.mNumber; | 361 | return s << phone.mId << phone.mType << phone.mNumber; |
336 | } | 362 | } |
337 | 363 | ||
338 | QDataStream &KABC::operator>>( QDataStream &s, PhoneNumber &phone ) | 364 | QDataStream &KABC::operator>>( QDataStream &s, PhoneNumber &phone ) |
339 | { | 365 | { |
340 | s >> phone.mId >> phone.mType >> phone.mNumber; | 366 | s >> phone.mId >> phone.mType >> phone.mNumber; |
341 | 367 | ||
342 | return s; | 368 | return s; |
343 | } | 369 | } |