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