summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/phonenumber.cpp107
1 files changed, 47 insertions, 60 deletions
diff --git a/kabc/phonenumber.cpp b/kabc/phonenumber.cpp
index 04b1168..3f641d1 100644
--- a/kabc/phonenumber.cpp
+++ b/kabc/phonenumber.cpp
@@ -44,170 +44,157 @@ PhoneNumber::PhoneNumber( const QString &number, int type ) :
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}
68 68
69void PhoneNumber::setId( const QString &id ) 69void PhoneNumber::setId( const QString &id )
70{ 70{
71 mId = id; 71 mId = id;
72} 72}
73 73
74QString PhoneNumber::id() const 74QString PhoneNumber::id() const
75{ 75{
76 return mId; 76 return mId;
77} 77}
78 78
79void PhoneNumber::setNumber( const QString &number ) 79void PhoneNumber::setNumber( const QString &number )
80{ 80{
81 mNumber = number; 81 mNumber = number;
82} 82}
83 83
84QString PhoneNumber::number() const 84QString PhoneNumber::number() const
85{ 85{
86 return mNumber; 86 return mNumber;
87} 87}
88 88
89void PhoneNumber::setType( int type ) 89void PhoneNumber::setType( int type )
90{ 90{
91 mType = type; 91 mType = type;
92} 92}
93 93
94int PhoneNumber::type() const 94int PhoneNumber::type() const
95{ 95{
96 return mType; 96 return mType;
97} 97}
98 98
99QString PhoneNumber::typeLabel() const 99QString PhoneNumber::typeLabel() const
100{ 100{
101 QString label; 101 QString label;
102 bool first = true; 102 bool first = true;
103 103
104 TypeList list = typeList(); 104 TypeList list = typeList();
105 105
106 TypeList::Iterator it; 106 TypeList::Iterator it;
107 for ( it = list.begin(); it != list.end(); ++it ) { 107 for ( it = list.begin(); it != list.end(); ++it ) {
108 if ( ( type() & (*it) ) && ( (*it) != Pref ) ) { 108 if ( ( type() & (*it) ) && ( (*it) != Pref ) ) {
109 label.append( ( first ? "" : "/" ) + typeLabel( *it ) ); 109 label.append( ( first ? "" : "/" ) + typeLabel( *it ) );
110 if ( first ) 110 if ( first )
111 first = false; 111 first = false;
112 } 112 }
113 } 113 }
114 114
115 return label; 115 return label;
116} 116}
117 117
118QString PhoneNumber::label() const 118QString PhoneNumber::label() const
119{ 119{
120 return typeLabel( type() ); 120 return typeLabel( type() );
121} 121}
122 122
123PhoneNumber::TypeList PhoneNumber::typeList() 123PhoneNumber::TypeList PhoneNumber::typeList()
124{ 124{
125 TypeList list; 125 TypeList list;
126 126
127 list << Home << Work << Msg << Pref << Voice << Fax << Cell << Video 127 list << Home << Work << Msg << Pref << Voice << Fax << Cell << Video
128 << Bbs << Modem << Car << Isdn << Pcs << Pager; 128 << Bbs << Modem << Car << Isdn << Pcs << Pager;
129 129
130 return list; 130 return list;
131} 131}
132 132
133QString PhoneNumber::label( int type ) 133QString PhoneNumber::label( int type )
134{ 134{
135 return typeLabel( type ); 135 return typeLabel( type );
136} 136}
137 137
138QString PhoneNumber::typeLabel( int type ) 138QString PhoneNumber::typeLabel( int type )
139{ 139{
140 switch ( type ) { 140 QString typeString;
141 case Home: 141
142 return i18n("Home phone", "Home"); 142 if ((type & Home) == Home)
143 break; 143 typeString += i18n("Home");
144 case Work: 144 else if ((type & Work) == Work)
145 return i18n("Work phone", "Work"); 145 typeString += i18n("Work");
146 break; 146
147 case Msg: 147 if (!typeString.isEmpty())
148 return i18n("Messenger"); 148 typeString += " ";
149 break; 149
150 case Pref: 150 if ((type & Cell) == Cell)
151 return i18n("Preferred Number"); 151 typeString += i18n("Mobile");
152 break; 152 else if ((type & Fax) == Fax)
153 case Voice: 153 typeString += i18n("Fax");
154 return i18n("Voice"); 154 else if ((type & Msg) == Msg)
155 break; 155 typeString += i18n("Messenger");
156 case Fax: 156 else if ((type & Voice) == Voice) {
157 return i18n("Fax"); 157// add nothing in case of the Voice flag
158 break; 158// typeString += i18n("Voice");
159 case Cell:
160 return i18n("Mobile Phone" );
161 break;
162 case Cell | Home:
163 return i18n("Home Mobile" );
164 break;
165 case Cell | Work:
166 return i18n("Home Mobile" );
167 break;
168 case Video:
169 return i18n("Video");
170 break;
171 case Bbs:
172 return i18n("Mailbox");
173 break;
174 case Modem:
175 return i18n("Modem");
176 break;
177 case Car:
178 return i18n("Car Phone", "Car" );
179 break;
180 case Isdn:
181 return i18n("ISDN");
182 break;
183 case Pcs:
184 return i18n("PCS");
185 break;
186 case Pager:
187 return i18n("Pager");
188 break;
189 case Work | Pager:
190 return i18n("Work Pager");
191 break;
192 case Home | Fax:
193 return i18n("Home Fax");
194 break;
195 case Work | Fax:
196 return i18n("Work Fax");
197 break;
198 default:
199 return i18n("Other");
200 } 159 }
160 else if ((type & Video) == Video)
161 typeString += i18n("Video");
162 else if ((type & Bbs) == Bbs)
163 typeString += i18n("Mailbox");
164 else if ((type & Modem) == Modem)
165 typeString += i18n("Modem");
166 else if ((type & Car) == Car)
167 typeString += i18n("Car");
168 else if ((type & Isdn) == Isdn)
169 typeString += i18n("ISDN");
170 else if ((type & Pcs) == Pcs)
171 typeString += i18n("PCS");
172 else if ((type & Pager) == Pager)
173 typeString += i18n("Pager");
174
175 // add the prefered flag
176 if (!typeString.isEmpty())
177 typeString += " ";
178
179 if ((type & Pref) == Pref)
180 typeString += i18n("(Preferred)");
181
182 //if we still have no match, return "other"
183 if (typeString.isEmpty())
184 return i18n("Other");
185
186
187 return typeString;
201} 188}
202 189
203QDataStream &KABC::operator<<( QDataStream &s, const PhoneNumber &phone ) 190QDataStream &KABC::operator<<( QDataStream &s, const PhoneNumber &phone )
204{ 191{
205 return s << phone.mId << phone.mType << phone.mNumber; 192 return s << phone.mId << phone.mType << phone.mNumber;
206} 193}
207 194
208QDataStream &KABC::operator>>( QDataStream &s, PhoneNumber &phone ) 195QDataStream &KABC::operator>>( QDataStream &s, PhoneNumber &phone )
209{ 196{
210 s >> phone.mId >> phone.mType >> phone.mNumber; 197 s >> phone.mId >> phone.mType >> phone.mNumber;
211 198
212 return s; 199 return s;
213} 200}