summaryrefslogtreecommitdiffabout
path: root/kabc/phonenumber.cpp
Unidiff
Diffstat (limited to 'kabc/phonenumber.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/phonenumber.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/kabc/phonenumber.cpp b/kabc/phonenumber.cpp
index 897c56d..12b9b09 100644
--- a/kabc/phonenumber.cpp
+++ b/kabc/phonenumber.cpp
@@ -1,374 +1,374 @@
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 <kapplication.h> 28#include <kapplication.h>
29#include <klocale.h> 29#include <klocale.h>
30 30
31#include "phonenumber.h" 31#include "phonenumber.h"
32 32
33using namespace KABC; 33using namespace KABC;
34 34
35PhoneNumber::PhoneNumber() : 35PhoneNumber::PhoneNumber() :
36 mType( Home ) 36 mType( Home )
37{ 37{
38 init(); 38 init();
39} 39}
40 40
41PhoneNumber::PhoneNumber( const QString &number, int type ) : 41PhoneNumber::PhoneNumber( const QString &number, int type ) :
42 mType( type ), mNumber( number ) 42 mType( type ), mNumber( number )
43{ 43{
44 init(); 44 init();
45} 45}
46 46
47PhoneNumber::~PhoneNumber() 47PhoneNumber::~PhoneNumber()
48{ 48{
49} 49}
50 50
51void PhoneNumber::init() 51void PhoneNumber::init()
52{ 52{
53 mId = KApplication::randomString( 8 ); 53 mId = KApplication::randomString( 8 );
54} 54}
55 55
56bool PhoneNumber::operator==( const PhoneNumber &p ) const 56bool PhoneNumber::operator==( const PhoneNumber &p ) const
57{ 57{
58 if ( mNumber != p.mNumber ) return false; 58 if ( mNumber != p.mNumber ) return false;
59 if ( mType != p.mType ) return false; 59 if ( mType != p.mType ) return false;
60 60
61 return true; 61 return true;
62} 62}
63 63
64bool PhoneNumber::operator!=( const PhoneNumber &p ) const 64bool PhoneNumber::operator!=( const PhoneNumber &p ) const
65{ 65{
66 return !( p == *this ); 66 return !( p == *this );
67} 67}
68void PhoneNumber::makeCompat() 68void PhoneNumber::makeCompat()
69{ 69{
70 mType = getCompatType( mType ); 70 mType = getCompatType( mType );
71} 71}
72int PhoneNumber::getCompatType( int type ) 72int PhoneNumber::getCompatType( int type )
73{ 73{
74 74
75 if ((type & Cell) == Cell) { 75 if ((type & Cell) == Cell) {
76 if ((type & Work) == Work) 76 if ((type & Work) == Work)
77 return Car; 77 return Car;
78 return Cell; 78 return Cell;
79 } 79 }
80 if ((type & Home) == Home) { 80 if ((type & Home) == Home) {
81 if ((type & Pref) == Pref) 81 if ((type & Pref) == Pref)
82 return (Home | Pref); 82 return (Home | Pref);
83 if ((type & Fax) == Fax) 83 if ((type & Fax) == Fax)
84 return (Home | Fax); 84 return (Home | Fax);
85 return (Home); 85 return (Home);
86 } 86 }
87 if ((type & Work) == Work) { 87 if ((type & Work) == Work) {
88 if ((type & Pref) == Pref) 88 if ((type & Pref) == Pref)
89 return (Work| Pref); 89 return (Work| Pref);
90 if ((type & Fax) == Fax) 90 if ((type & Fax) == Fax)
91 return (Fax |Work); 91 return (Fax |Work);
92 if ((type & Msg) == Msg) { 92 if ((type & Msg) == Msg) {
93 if ((type & Voice) == Voice) 93 if ((type & Voice) == Voice)
94 return ( Msg | Voice |Work); 94 return ( Msg | Voice |Work);
95 return ( Msg | Work); 95 return ( Msg | Work);
96 } 96 }
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 if ((type & Voice) == Voice) 102 if ((type & Voice) == Voice)
103 return Pcs | Voice; 103 return Pcs | Voice;
104 return Pcs; 104 return Pcs;
105 } 105 }
106 if ((type & Car) == Car) 106 if ((type & Car) == Car)
107 return Car; 107 return Car;
108 if ((type & Pager) == Pager) 108 if ((type & Pager) == Pager)
109 return Pager; 109 return Pager;
110 if ((type & Isdn) == Isdn) 110 if ((type & Isdn) == Isdn)
111 return Isdn; 111 return Isdn;
112#if 0 112#if 0
113 if ((type & Video) == Video) 113 if ((type & Video) == Video)
114 return Video; 114 return Video;
115#endif 115#endif
116 if ((type & Msg) == Msg) 116 if ((type & Msg) == Msg)
117 return Msg; 117 return Msg;
118 if ((type & Fax) == Fax) 118 if ((type & Fax) == Fax)
119 return Fax; 119 return Fax;
120 120
121 if ((type & Pref) == Pref) 121 if ((type & Pref) == Pref)
122 return Pref; 122 return Pref;
123 123
124 return Voice; 124 return Voice;
125 125
126} 126}
127bool PhoneNumber::simplifyNumber() 127bool PhoneNumber::simplifyNumber()
128{ 128{
129 QString Number; 129 QString Number;
130 int i; 130 int i;
131 Number = mNumber.stripWhiteSpace (); 131 Number = mNumber.stripWhiteSpace ();
132 mNumber = ""; 132 mNumber = "";
133 for ( i = 0; i < Number.length(); ++i) { 133 for ( i = 0; i < Number.length(); ++i) {
134 if ( Number.at(i).isDigit() || Number.at(i) == '+'|| Number.at(i) == '*'|| Number.at(i) == '#' ) 134 if ( Number.at(i).isDigit() || Number.at(i) == '+'|| Number.at(i) == '*'|| Number.at(i) == '#' )
135 mNumber += Number.at(i); 135 mNumber += Number.at(i);
136 } 136 }
137 return ( mNumber.length() > 0 ); 137 return ( mNumber.length() > 0 );
138} 138}
139// make cellphone compatible 139// make cellphone compatible
140void PhoneNumber::simplifyType() 140void PhoneNumber::simplifyType()
141{ 141{
142 if ( mType & Fax ) mType = Fax; 142 if ( mType & Fax ) mType = Fax;
143 else if ( mType & Cell ) mType = Cell; 143 else if ( mType & Cell ) mType = Cell;
144 else if ( mType & Work ) mType = Work ; 144 else if ( mType & Work ) mType = Work ;
145 else if ( mType & Home ) mType = Home; 145 else if ( mType & Home ) mType = Home;
146 else mType = Pref; 146 else mType = Pref;
147} 147}
148bool PhoneNumber::contains( const PhoneNumber &p ) 148bool PhoneNumber::contains( const PhoneNumber &p )
149{ 149{
150 PhoneNumber myself; 150 PhoneNumber myself;
151 PhoneNumber other; 151 PhoneNumber other;
152 myself = *this; 152 myself = *this;
153 other = p; 153 other = p;
154 myself.simplifyNumber(); 154 myself.simplifyNumber();
155 other.simplifyNumber(); 155 other.simplifyNumber();
156 if ( myself.number() != other.number ()) 156 if ( myself.number() != other.number ())
157 return false; 157 return false;
158 myself.simplifyType(); 158 myself.simplifyType();
159 other.simplifyType(); 159 other.simplifyType();
160 if ( myself.type() == other.type()) 160 if ( myself.type() == other.type())
161 return true; 161 return true;
162 return false; 162 return false;
163} 163}
164 164
165void PhoneNumber::setId( const QString &id ) 165void PhoneNumber::setId( const QString &id )
166{ 166{
167 mId = id; 167 mId = id;
168} 168}
169 169
170QString PhoneNumber::id() const 170QString PhoneNumber::id() const
171{ 171{
172 return mId; 172 return mId;
173} 173}
174 174
175void PhoneNumber::setNumber( const QString &number ) 175void PhoneNumber::setNumber( const QString &number )
176{ 176{
177 mNumber = number; 177 mNumber = number;
178} 178}
179 179
180QString PhoneNumber::number() const 180QString PhoneNumber::number() const
181{ 181{
182 return mNumber; 182 return mNumber;
183} 183}
184 184
185void PhoneNumber::setType( int type ) 185void PhoneNumber::setType( int type )
186{ 186{
187 mType = type; 187 mType = type;
188} 188}
189 189
190int PhoneNumber::type() const 190int PhoneNumber::type() const
191{ 191{
192 return mType; 192 return mType;
193} 193}
194 194
195QString PhoneNumber::typeLabel() const 195QString PhoneNumber::typeLabel() const
196{ 196{
197 QString label; 197 QString label;
198 bool first = true; 198 bool first = true;
199 199
200 TypeList list = typeList(); 200 TypeList list = typeList();
201 201
202 TypeList::Iterator it; 202 TypeList::Iterator it;
203 for ( it = list.begin(); it != list.end(); ++it ) { 203 for ( it = list.begin(); it != list.end(); ++it ) {
204 if ( ( type() & (*it) ) && ( (*it) != Pref ) ) { 204 if ( ( type() & (*it) ) && ( (*it) != Pref ) ) {
205 label.append( ( first ? "" : "/" ) + typeLabel( *it ) ); 205 label.append( ( first ? "" : "/" ) + typeLabel( *it ) );
206 if ( first ) 206 if ( first )
207 first = false; 207 first = false;
208 } 208 }
209 } 209 }
210 210
211 return label; 211 return label;
212} 212}
213 213
214QString PhoneNumber::label() const 214QString PhoneNumber::label() const
215{ 215{
216 return typeLabel( type() ); 216 return typeLabel( type() );
217} 217}
218 218
219PhoneNumber::TypeList PhoneNumber::typeList() 219PhoneNumber::TypeList PhoneNumber::typeList()
220{ 220{
221 TypeList list; 221 TypeList list;
222 222
223 list << Home << Work << Msg << Pref << Voice << Fax << Cell << Video 223 list << Home << Work << Msg << Pref << Voice << Fax << Cell << Video
224 << Bbs << Modem << Car << Isdn << Pcs << Pager; 224 << Bbs << Modem << Car << Isdn << Pcs << Pager;
225 225
226 return list; 226 return list;
227} 227}
228PhoneNumber::TypeList PhoneNumber::supportedTypeList() 228PhoneNumber::TypeList PhoneNumber::supportedTypeList()
229{ 229{
230 static TypeList list; 230 static TypeList list;
231 if ( list.count() == 0 ) 231 if ( list.count() == 0 )
232 list << (Home| Pref) << (Work| Pref) << Cell <<(Pcs|Pref)<< (Pcs|Voice)<< Home << Work << Car << Pcs <<(Work| Msg | Voice) << (Work| Msg) << (Home | Fax) << (Work| Fax) << Fax<< Pager << Isdn << Msg << Pref << Voice; 232 list << (Home| Pref) << (Work| Pref) << Cell <<(Pcs|Pref)<< (Pcs|Voice)<< Home << Work << Car << Pcs <<(Work| Msg | Voice) << (Work| Msg) << (Home | Fax) << (Work| Fax) << Fax<< Pager << Isdn << Msg << Pref << Voice;
233 return list; 233 return list;
234} 234}
235QStringList PhoneNumber::supportedTypeListNames() 235QStringList PhoneNumber::supportedTypeListNames()
236{ 236{
237 static QStringList list; 237 static QStringList list;
238 if ( list.count() == 0 ) 238 if ( list.count() == 0 )
239 list << i18n("Home") << i18n("Work") << i18n("Mobile") << i18n("SIP") << i18n("VoIP") <<i18n("Home2")<< i18n("Work2") << i18n("Mobile2") << i18n("SIP2") << i18n("Assistent") << i18n("Company") << i18n("Fax (Home)") << i18n("Fax (Work)") << i18n("Fax (Other)") << i18n("Pager") << i18n("ISDN") << i18n("Callback") << i18n("Primary")<< i18n("Other"); 239 list << i18n("Home") << i18n("Work") << i18n("Mobile") << i18n("SiP") << i18n("VoIP") <<i18n("Home2")<< i18n("Work2") << i18n("Mobile2") << i18n("SiP2") << i18n("Assistent") << i18n("Company") << i18n("Fax (Home)") << i18n("Fax (Work)") << i18n("Fax (Other)") << i18n("Pager") << i18n("ISDN") << i18n("Callback") << i18n("Primary")<< i18n("Other");
240 return list; 240 return list;
241} 241}
242 242
243int PhoneNumber::typeListIndex4Type(int type ) 243int PhoneNumber::typeListIndex4Type(int type )
244{ 244{
245 TypeList list = supportedTypeList(); 245 TypeList list = supportedTypeList();
246 int i = 0; 246 int i = 0;
247 while ( i < list.count() ) { 247 while ( i < list.count() ) {
248 if ( list [i] == type ) 248 if ( list [i] == type )
249 return i; 249 return i;
250 ++i; 250 ++i;
251 } 251 }
252 return list.count()-1; 252 return list.count()-1;
253} 253}
254 254
255QString PhoneNumber::label( int type ) 255QString PhoneNumber::label( int type )
256{ 256{
257 return typeLabel( type ); 257 return typeLabel( type );
258} 258}
259 259
260QString PhoneNumber::typeLabel( int type ) 260QString PhoneNumber::typeLabel( int type )
261{ 261{
262 if ((type & Cell) == Cell) 262 if ((type & Cell) == Cell)
263 return i18n("Mobile"); 263 return i18n("Mobile");
264 if ((type & Home) == Home) { 264 if ((type & Home) == Home) {
265 if ((type & Pref) == Pref) 265 if ((type & Pref) == Pref)
266 return i18n("Home"); 266 return i18n("Home");
267 if ((type & Fax) == Fax) 267 if ((type & Fax) == Fax)
268 return i18n("Fax (Home)"); 268 return i18n("Fax (Home)");
269 return i18n("Home2"); 269 return i18n("Home2");
270 } 270 }
271 271
272 if ((type & Work) == Work) { 272 if ((type & Work) == Work) {
273 if ((type & Pref) == Pref) 273 if ((type & Pref) == Pref)
274 return i18n("Work"); 274 return i18n("Work");
275 if ((type & Fax) == Fax) 275 if ((type & Fax) == Fax)
276 return i18n("Fax (Work)"); 276 return i18n("Fax (Work)");
277 if ((type & Msg) == Msg) { 277 if ((type & Msg) == Msg) {
278 if ((type & Voice) == Voice) 278 if ((type & Voice) == Voice)
279 return i18n("Assistent"); 279 return i18n("Assistent");
280 return i18n("Company"); 280 return i18n("Company");
281 } 281 }
282 return i18n("Work2"); 282 return i18n("Work2");
283 } 283 }
284 if ((type & Pcs) == Pcs) { 284 if ((type & Pcs) == Pcs) {
285 if ((type & Pref) == Pref) 285 if ((type & Pref) == Pref)
286 return i18n("SiP"); 286 return i18n("SiP");
287 if ((type & Voice) == Voice) 287 if ((type & Voice) == Voice)
288 return i18n("VoIP"); 288 return i18n("VoIP");
289 return i18n("SiP2"); 289 return i18n("SiP2");
290 } 290 }
291 if ((type & Car) == Car) 291 if ((type & Car) == Car)
292 return i18n("Mobile2"); 292 return i18n("Mobile2");
293 if ((type & Pager) == Pager) 293 if ((type & Pager) == Pager)
294 return i18n("Pager"); 294 return i18n("Pager");
295 if ((type & Isdn) == Isdn) 295 if ((type & Isdn) == Isdn)
296 return i18n("ISDN"); 296 return i18n("ISDN");
297 if ((type & Video) == Video) 297 if ((type & Video) == Video)
298 return i18n("Video"); 298 return i18n("Video");
299 299
300 if ((type & Msg) == Msg) 300 if ((type & Msg) == Msg)
301 return i18n("Callback"); 301 return i18n("Callback");
302 if ((type & Fax) == Fax) 302 if ((type & Fax) == Fax)
303 return i18n("Fax (Other)"); 303 return i18n("Fax (Other)");
304 304
305 if ((type & Pref) == Pref) 305 if ((type & Pref) == Pref)
306 return i18n("Primary"); 306 return i18n("Primary");
307 307
308 308
309 return i18n("Other"); 309 return i18n("Other");
310 310
311 311
312#if 0 312#if 0
313 313
314 314
315 315
316 QString typeString; 316 QString typeString;
317 317
318 318
319 if ((type & Cell) == Cell) 319 if ((type & Cell) == Cell)
320 typeString += i18n("Mobile") +" "; 320 typeString += i18n("Mobile") +" ";
321 if ((type & Home) == Home) 321 if ((type & Home) == Home)
322 typeString += i18n("Home")+" "; 322 typeString += i18n("Home")+" ";
323 else if ((type & Work) == Work) 323 else if ((type & Work) == Work)
324 typeString += i18n("Work")+" "; 324 typeString += i18n("Work")+" ";
325 325
326 if ((type & Sip) == Sip) 326 if ((type & Sip) == Sip)
327 typeString += i18n("SIP")+" "; 327 typeString += i18n("SIP")+" ";
328 if ((type & Car) == Car) 328 if ((type & Car) == Car)
329 typeString += i18n("Car")+" "; 329 typeString += i18n("Car")+" ";
330 330
331 if ((type & Fax) == Fax) 331 if ((type & Fax) == Fax)
332 typeString += i18n("Fax"); 332 typeString += i18n("Fax");
333 else if ((type & Msg) == Msg) 333 else if ((type & Msg) == Msg)
334 typeString += i18n("Messenger"); 334 typeString += i18n("Messenger");
335 else if ((type & Video) == Video) 335 else if ((type & Video) == Video)
336 typeString += i18n("Video"); 336 typeString += i18n("Video");
337 else if ((type & Bbs) == Bbs) 337 else if ((type & Bbs) == Bbs)
338 typeString += i18n("Mailbox"); 338 typeString += i18n("Mailbox");
339 else if ((type & Modem) == Modem) 339 else if ((type & Modem) == Modem)
340 typeString += i18n("Modem"); 340 typeString += i18n("Modem");
341 else if ((type & Isdn) == Isdn) 341 else if ((type & Isdn) == Isdn)
342 typeString += i18n("ISDN"); 342 typeString += i18n("ISDN");
343 else if ((type & Pcs) == Pcs) 343 else if ((type & Pcs) == Pcs)
344 typeString += i18n("PCS"); 344 typeString += i18n("PCS");
345 else if ((type & Pager) == Pager) 345 else if ((type & Pager) == Pager)
346 typeString += i18n("Pager"); 346 typeString += i18n("Pager");
347 // add the prefered flag 347 // add the prefered flag
348 /* 348 /*
349 if ((type & Pref) == Pref) 349 if ((type & Pref) == Pref)
350 typeString += i18n("(p)"); 350 typeString += i18n("(p)");
351 */ 351 */
352 //if we still have no match, return "other" 352 //if we still have no match, return "other"
353 if (typeString.isEmpty()) { 353 if (typeString.isEmpty()) {
354 if ((type & Voice) == Voice) 354 if ((type & Voice) == Voice)
355 return i18n("Voice"); 355 return i18n("Voice");
356 else 356 else
357 return i18n("Other"); 357 return i18n("Other");
358 } 358 }
359 359
360 return typeString.stripWhiteSpace(); 360 return typeString.stripWhiteSpace();
361#endif 361#endif
362} 362}
363 363
364QDataStream &KABC::operator<<( QDataStream &s, const PhoneNumber &phone ) 364QDataStream &KABC::operator<<( QDataStream &s, const PhoneNumber &phone )
365{ 365{
366 return s << phone.mId << phone.mType << phone.mNumber; 366 return s << phone.mId << phone.mType << phone.mNumber;
367} 367}
368 368
369QDataStream &KABC::operator>>( QDataStream &s, PhoneNumber &phone ) 369QDataStream &KABC::operator>>( QDataStream &s, PhoneNumber &phone )
370{ 370{
371 s >> phone.mId >> phone.mType >> phone.mNumber; 371 s >> phone.mId >> phone.mType >> phone.mNumber;
372 372
373 return s; 373 return s;
374} 374}