• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • tdeabc
 

tdeabc

  • tdeabc
  • scripts
field.src.cpp
1/*
2 This file is part of libtdeabc.
3 Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org>
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details.
14
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
17 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 Boston, MA 02110-1301, USA.
19*/
20
21#include <tdelocale.h>
22#include <tdeconfig.h>
23#include <tdeglobal.h>
24
25#include "field.h"
26#include "address.h"
27
28using namespace TDEABC;
29
30class Field::FieldImpl
31{
32 public:
33 FieldImpl( int fieldId, int category = 0,
34 const TQString &label = TQString::null,
35 const TQString &key = TQString::null,
36 const TQString &app = TQString::null )
37 : mFieldId( fieldId ), mCategory( category ), mLabel( label ),
38 mKey( key ), mApp( app ) {}
39
40 enum FieldId
41 {
42 CustomField,
43 --ENUMS--
44 };
45
46 int fieldId() { return mFieldId; }
47 int category() { return mCategory; }
48
49 TQString label() { return mLabel; }
50 TQString key() { return mKey; }
51 TQString app() { return mApp; }
52
53 private:
54 int mFieldId;
55 int mCategory;
56
57 TQString mLabel;
58 TQString mKey;
59 TQString mApp;
60};
61
62
63Field::List Field::mAllFields;
64Field::List Field::mDefaultFields;
65Field::List Field::mCustomFields;
66
67
68Field::Field( FieldImpl *impl )
69{
70 mImpl = impl;
71}
72
73Field::~Field()
74{
75 delete mImpl;
76}
77
78TQString Field::label()
79{
80 switch ( mImpl->fieldId() ) {
81 --CASELABEL--
82 case FieldImpl::CustomField:
83 return mImpl->label();
84 default:
85 return i18n("Unknown Field");
86 }
87}
88
89int Field::category()
90{
91 return mImpl->category();
92}
93
94TQString Field::categoryLabel( int category )
95{
96 switch ( category ) {
97 case All:
98 return i18n("All");
99 case Frequent:
100 return i18n("Frequent");
101 case Address:
102 return i18n("street/postal","Address");
103 case Email:
104 return i18n("Email");
105 case Personal:
106 return i18n("Personal");
107 case Organization:
108 return i18n("Organization");
109 case CustomCategory:
110 return i18n("Custom");
111 default:
112 return i18n("Undefined");
113 }
114}
115
116TQString Field::value( const TDEABC::Addressee &a )
117{
118 switch ( mImpl->fieldId() ) {
119 --CASEVALUE--
120 case FieldImpl::Email:
121 return a.preferredEmail();
122 case FieldImpl::Birthday:
123 if ( a.birthday().isValid() )
124 return a.birthday().date().toString( TQt::ISODate );
125 else
126 return TQString::null;
127 case FieldImpl::Url:
128 return a.url().prettyURL();
129 case FieldImpl::HomePhone:
130 {
131 PhoneNumber::List::ConstIterator it;
132
133 {
134 // check for preferred number
135 const PhoneNumber::List list = a.phoneNumbers( PhoneNumber::Home | PhoneNumber::Pref );
136 for ( it = list.begin(); it != list.end(); ++it )
137 if ( ((*it).type() & ~(PhoneNumber::Pref)) == PhoneNumber::Home )
138 return (*it).number();
139 }
140
141 {
142 // check for normal home number
143 const PhoneNumber::List list = a.phoneNumbers( PhoneNumber::Home );
144 for ( it = list.begin(); it != list.end(); ++it )
145 if ( ((*it).type() & ~(PhoneNumber::Pref)) == PhoneNumber::Home )
146 return (*it).number();
147 }
148
149 return TQString::null;
150 }
151 case FieldImpl::BusinessPhone:
152 {
153 PhoneNumber::List::ConstIterator it;
154
155 {
156 // check for preferred number
157 const PhoneNumber::List list = a.phoneNumbers( PhoneNumber::Work | PhoneNumber::Pref );
158 for ( it = list.begin(); it != list.end(); ++it )
159 if ( ((*it).type() & ~(PhoneNumber::Pref)) == PhoneNumber::Work )
160 return (*it).number();
161 }
162
163 {
164 // check for normal work number
165 const PhoneNumber::List list = a.phoneNumbers( PhoneNumber::Work );
166 for ( it = list.begin(); it != list.end(); ++it )
167 if ( ((*it).type() & ~(PhoneNumber::Pref)) == PhoneNumber::Work )
168 return (*it).number();
169 }
170
171 return TQString::null;
172 }
173 case FieldImpl::MobilePhone:
174 return a.phoneNumber( PhoneNumber::Cell ).number();
175 case FieldImpl::HomeFax:
176 return a.phoneNumber( PhoneNumber::Home | PhoneNumber::Fax ).number();
177 case FieldImpl::BusinessFax:
178 return a.phoneNumber( PhoneNumber::Work | PhoneNumber::Fax ).number();
179 case FieldImpl::CarPhone:
180 return a.phoneNumber( PhoneNumber::Car ).number();
181 case FieldImpl::Isdn:
182 return a.phoneNumber( PhoneNumber::Isdn ).number();
183 case FieldImpl::Pager:
184 return a.phoneNumber( PhoneNumber::Pager ).number();
185 case FieldImpl::HomeAddressStreet:
186 return a.address( Address::Home ).street();
187 case FieldImpl::HomeAddressPostOfficeBox:
188 return a.address( Address::Home ).postOfficeBox();
189 case FieldImpl::HomeAddressLocality:
190 return a.address( Address::Home ).locality();
191 case FieldImpl::HomeAddressRegion:
192 return a.address( Address::Home ).region();
193 case FieldImpl::HomeAddressPostalCode:
194 return a.address( Address::Home ).postalCode();
195 case FieldImpl::HomeAddressCountry:
196 return a.address( Address::Home ).country();
197 case FieldImpl::HomeAddressLabel:
198 return a.address( Address::Home ).label();
199 case FieldImpl::BusinessAddressStreet:
200 return a.address( Address::Work ).street();
201 case FieldImpl::BusinessAddressPostOfficeBox:
202 return a.address( Address::Work ).postOfficeBox();
203 case FieldImpl::BusinessAddressLocality:
204 return a.address( Address::Work ).locality();
205 case FieldImpl::BusinessAddressRegion:
206 return a.address( Address::Work ).region();
207 case FieldImpl::BusinessAddressPostalCode:
208 return a.address( Address::Work ).postalCode();
209 case FieldImpl::BusinessAddressCountry:
210 return a.address( Address::Work ).country();
211 case FieldImpl::BusinessAddressLabel:
212 return a.address( Address::Work ).label();
213 case FieldImpl::CustomField:
214 return a.custom( mImpl->app(), mImpl->key() );
215 default:
216 return TQString::null;
217 }
218}
219
220bool Field::setValue( TDEABC::Addressee &a, const TQString &value )
221{
222 switch ( mImpl->fieldId() ) {
223 --CASESETVALUE--
224 case FieldImpl::MobilePhone:
225 {
226 PhoneNumber number = a.phoneNumber( PhoneNumber::Cell );
227 number.setNumber( value );
228 a.insertPhoneNumber( number );
229 return true;
230 }
231 case FieldImpl::HomeFax:
232 {
233 PhoneNumber number = a.phoneNumber( PhoneNumber::Home | PhoneNumber::Fax );
234 number.setNumber( value );
235 a.insertPhoneNumber( number );
236 return true;
237 }
238 case FieldImpl::BusinessFax:
239 {
240 PhoneNumber number = a.phoneNumber( PhoneNumber::Work | PhoneNumber::Fax );
241 number.setNumber( value );
242 a.insertPhoneNumber( number );
243 return true;
244 }
245 case FieldImpl::CarPhone:
246 {
247 PhoneNumber number = a.phoneNumber( PhoneNumber::Car );
248 number.setNumber( value );
249 a.insertPhoneNumber( number );
250 return true;
251 }
252 case FieldImpl::Isdn:
253 {
254 PhoneNumber number = a.phoneNumber( PhoneNumber::Isdn );
255 number.setNumber( value );
256 a.insertPhoneNumber( number );
257 return true;
258 }
259 case FieldImpl::Pager:
260 {
261 PhoneNumber number = a.phoneNumber( PhoneNumber::Pager );
262 number.setNumber( value );
263 a.insertPhoneNumber( number );
264 return true;
265 }
266 case FieldImpl::HomeAddressStreet:
267 {
268 TDEABC::Address address = a.address( Address::Home );
269 address.setStreet( value );
270 a.insertAddress( address );
271 return true;
272 }
273 case FieldImpl::HomeAddressPostOfficeBox:
274 {
275 TDEABC::Address address = a.address( Address::Home );
276 address.setPostOfficeBox( value );
277 a.insertAddress( address );
278 return true;
279 }
280 case FieldImpl::HomeAddressLocality:
281 {
282 TDEABC::Address address = a.address( Address::Home );
283 address.setLocality( value );
284 a.insertAddress( address );
285 return true;
286 }
287 case FieldImpl::HomeAddressRegion:
288 {
289 TDEABC::Address address = a.address( Address::Home );
290 address.setRegion( value );
291 a.insertAddress( address );
292 return true;
293 }
294 case FieldImpl::HomeAddressPostalCode:
295 {
296 TDEABC::Address address = a.address( Address::Home );
297 address.setPostalCode( value );
298 a.insertAddress( address );
299 return true;
300 }
301 case FieldImpl::HomeAddressCountry:
302 {
303 TDEABC::Address address = a.address( Address::Home );
304 address.setCountry( value );
305 a.insertAddress( address );
306 return true;
307 }
308 case FieldImpl::HomeAddressLabel:
309 {
310 TDEABC::Address address = a.address( Address::Home );
311 address.setLabel( value );
312 a.insertAddress( address );
313 return true;
314 }
315 case FieldImpl::BusinessAddressStreet:
316 {
317 TDEABC::Address address = a.address( Address::Work );
318 address.setStreet( value );
319 a.insertAddress( address );
320 return true;
321 }
322 case FieldImpl::BusinessAddressPostOfficeBox:
323 {
324 TDEABC::Address address = a.address( Address::Work );
325 address.setPostOfficeBox( value );
326 a.insertAddress( address );
327 return true;
328 }
329 case FieldImpl::BusinessAddressLocality:
330 {
331 TDEABC::Address address = a.address( Address::Work );
332 address.setLocality( value );
333 a.insertAddress( address );
334 return true;
335 }
336 case FieldImpl::BusinessAddressRegion:
337 {
338 TDEABC::Address address = a.address( Address::Work );
339 address.setRegion( value );
340 a.insertAddress( address );
341 return true;
342 }
343 case FieldImpl::BusinessAddressPostalCode:
344 {
345 TDEABC::Address address = a.address( Address::Work );
346 address.setPostalCode( value );
347 a.insertAddress( address );
348 return true;
349 }
350 case FieldImpl::BusinessAddressCountry:
351 {
352 TDEABC::Address address = a.address( Address::Work );
353 address.setCountry( value );
354 a.insertAddress( address );
355 return true;
356 }
357 case FieldImpl::BusinessAddressLabel:
358 {
359 TDEABC::Address address = a.address( Address::Work );
360 address.setLabel( value );
361 a.insertAddress( address );
362 return true;
363 }
364 case FieldImpl::Birthday:
365 a.setBirthday( TQDate::fromString( value, TQt::ISODate ) );
366 return true;
367 case FieldImpl::CustomField:
368 a.insertCustom( mImpl->app(), mImpl->key(), value );
369 return true;
370 default:
371 return false;
372 }
373}
374
375TQString Field::sortKey( const TDEABC::Addressee &a )
376{
377 switch ( mImpl->fieldId() ) {
378 --CASEVALUE--
379 case FieldImpl::Birthday:
380 if ( a.birthday().isValid() ) {
381 TQDate date = a.birthday().date();
382 TQString key;
383 key.sprintf( "%02d-%02d", date.month(), date.day() );
384 return key;
385 } else
386 return TQString( "00-00" );
387 default:
388 return value( a ).lower();
389 }
390}
391
392bool Field::isCustom()
393{
394 return mImpl->fieldId() == FieldImpl::CustomField;
395}
396
397Field::List Field::allFields()
398{
399 if ( mAllFields.isEmpty() ) {
400 --CREATEFIELDS--
401 }
402
403 return mAllFields;
404}
405
406Field::List Field::defaultFields()
407{
408 if ( mDefaultFields.isEmpty() ) {
409 createDefaultField( FieldImpl::FormattedName );
410 createDefaultField( FieldImpl::Email );
411 }
412
413 return mDefaultFields;
414}
415
416void Field::createField( int id, int category )
417{
418 mAllFields.append( new Field( new FieldImpl( id, category ) ) );
419}
420
421void Field::createDefaultField( int id, int category )
422{
423 mDefaultFields.append( new Field( new FieldImpl( id, category ) ) );
424}
425
426void Field::deleteFields()
427{
428 Field::List::ConstIterator it;
429
430 for ( it = mAllFields.constBegin(); it != mAllFields.constEnd(); ++it ) {
431 delete (*it);
432 }
433 mAllFields.clear();
434
435 for ( it = mDefaultFields.constBegin(); it != mDefaultFields.constEnd(); ++it ) {
436 delete (*it);
437 }
438 mDefaultFields.clear();
439
440 for ( it = mCustomFields.constBegin(); it != mCustomFields.constEnd(); ++it ) {
441 delete (*it);
442 }
443 mCustomFields.clear();
444}
445
446void Field::saveFields( const TQString &identifier,
447 const Field::List &fields )
448{
449 TDEConfig *cfg = TDEGlobal::config();
450 TDEConfigGroupSaver( cfg, "KABCFields" );
451
452 saveFields( cfg, identifier, fields );
453}
454
455void Field::saveFields( TDEConfig *cfg, const TQString &identifier,
456 const Field::List &fields )
457{
458 TQValueList<int> fieldIds;
459
460 int custom = 0;
461 Field::List::ConstIterator it;
462 for( it = fields.begin(); it != fields.end(); ++it ) {
463 fieldIds.append( (*it)->mImpl->fieldId() );
464 if( (*it)->isCustom() ) {
465 TQStringList customEntry;
466 customEntry << (*it)->mImpl->label();
467 customEntry << (*it)->mImpl->key();
468 customEntry << (*it)->mImpl->app();
469 cfg->writeEntry( "KABC_CustomEntry_" + identifier + "_" +
470 TQString::number( custom++ ), customEntry );
471 }
472 }
473
474 cfg->writeEntry( identifier, fieldIds );
475}
476
477Field::List Field::restoreFields( const TQString &identifier )
478{
479 TDEConfig *cfg = TDEGlobal::config();
480 TDEConfigGroupSaver( cfg, "KABCFields" );
481
482 return restoreFields( cfg, identifier );
483}
484
485Field::List Field::restoreFields( TDEConfig *cfg, const TQString &identifier )
486{
487 const TQValueList<int> fieldIds = cfg->readIntListEntry( identifier );
488
489 Field::List fields;
490
491 int custom = 0;
492 TQValueList<int>::ConstIterator it;
493 for( it = fieldIds.begin(); it != fieldIds.end(); ++it ) {
494 FieldImpl *f = 0;
495 if ( (*it) == FieldImpl::CustomField ) {
496 TQStringList customEntry = cfg->readListEntry( "KABC_CustomEntry_" +
497 identifier + "_" +
498 TQString::number( custom++ ) );
499 f = new FieldImpl( *it, CustomCategory, customEntry[ 0 ],
500 customEntry[ 1 ], customEntry[ 2 ] );
501 } else {
502 f = new FieldImpl( *it );
503 }
504 fields.append( new Field( f ) );
505 }
506
507 return fields;
508}
509
510bool Field::equals( Field *field )
511{
512 bool sameId = ( mImpl->fieldId() == field->mImpl->fieldId() );
513
514 if ( !sameId ) return false;
515
516 if ( mImpl->fieldId() != FieldImpl::CustomField ) return true;
517
518 return mImpl->key() == field->mImpl->key();
519}
520
521Field *Field::createCustomField( const TQString &label, int category,
522 const TQString &key, const TQString &app )
523{
524 Field *field = new Field( new FieldImpl( FieldImpl::CustomField,
525 category | CustomCategory,
526 label, key, app ) );
527 mCustomFields.append( field );
528
529 return field;
530}
TDEABC::Address
Postal address information.
Definition: address.h:56
TDEABC::Address::street
TQString street() const
Returns the street.
Definition: address.cpp:174
TDEABC::Address::postOfficeBox
TQString postOfficeBox() const
Returns the post office box.
Definition: address.cpp:138
TDEABC::Address::setPostalCode
void setPostalCode(const TQString &)
Sets the postal code.
Definition: address.cpp:221
TDEABC::Address::country
TQString country() const
Returns the country.
Definition: address.cpp:246
TDEABC::Address::setLocality
void setLocality(const TQString &)
Sets the locality, e.g.
Definition: address.cpp:185
TDEABC::Address::postalCode
TQString postalCode() const
Returns the postal code.
Definition: address.cpp:228
TDEABC::Address::label
TQString label() const
Returns the delivery label.
Definition: address.cpp:264
TDEABC::Address::setRegion
void setRegion(const TQString &)
Sets the region, e.g.
Definition: address.cpp:203
TDEABC::Address::setLabel
void setLabel(const TQString &)
Sets the delivery label.
Definition: address.cpp:257
TDEABC::Address::region
TQString region() const
Returns the region.
Definition: address.cpp:210
TDEABC::Address::setStreet
void setStreet(const TQString &)
Sets the street (including number).
Definition: address.cpp:167
TDEABC::Address::locality
TQString locality() const
Returns the locality.
Definition: address.cpp:192
TDEABC::Address::setCountry
void setCountry(const TQString &)
Sets the country.
Definition: address.cpp:239
TDEABC::Address::setPostOfficeBox
void setPostOfficeBox(const TQString &)
Sets the post office box.
Definition: address.cpp:131
TDEABC::Addressee
address book entry
Definition: addressee.src.h:75
TDEABC::Addressee::insertPhoneNumber
void insertPhoneNumber(const PhoneNumber &phoneNumber)
Insert a phone number.
Definition: addressee.src.cpp:460
TDEABC::Addressee::insertCustom
void insertCustom(const TQString &app, const TQString &name, const TQString &value)
Insert custom entry.
Definition: addressee.src.cpp:791
TDEABC::Addressee::address
Address address(int type) const
Return address, which matches the given type.
Definition: addressee.src.cpp:707
TDEABC::Addressee::insertAddress
void insertAddress(const Address &address)
Insert an address.
Definition: addressee.src.cpp:675
TDEABC::Addressee::phoneNumber
PhoneNumber phoneNumber(int type) const
Return phone number, which matches the given type.
Definition: addressee.src.cpp:489
TDEABC::Addressee::custom
TQString custom(const TQString &app, const TQString &name) const
Return value of custom entry, identified by app and entry name.
Definition: addressee.src.cpp:827
TDEABC::Addressee::preferredEmail
TQString preferredEmail() const
Return preferred email address.
Definition: addressee.src.cpp:445
TDEABC::Addressee::phoneNumbers
PhoneNumber::List phoneNumbers() const
Return list of all phone numbers.
Definition: addressee.src.cpp:505
TDEABC::PhoneNumber
Phonenumber information.
Definition: phonenumber.h:39
TDEABC::PhoneNumber::number
TQString number() const
Returns the number.
Definition: phonenumber.cpp:88
TDEABC::PhoneNumber::setNumber
void setNumber(const TQString &)
Sets the number.
Definition: phonenumber.cpp:83
TDEConfigBase::readIntListEntry
TQValueList< int > readIntListEntry(const TQString &pKey) const
TDEConfigBase::readListEntry
int readListEntry(const TQString &pKey, TQStrList &list, char sep=',') const
TDEConfigBase::writeEntry
void writeEntry(const TQString &pKey, const TQString &pValue, bool bPersistent=true, bool bGlobal=false, bool bNLS=false)
TDEConfigGroupSaver
TDEConfig
TDEGlobal::config
static TDEConfig * config()
TDEABC
static data, shared by ALL addressee objects
Definition: address.h:48
TDEStdAccel::key
int key(StdAccel id)
TDEStdAccel::label
TQString label(StdAccel id)
tdelocale.h

tdeabc

Skip menu "tdeabc"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

tdeabc

Skip menu "tdeabc"
  • arts
  • dcop
  • dnssd
  • interfaces
  •   kspeech
  •     interface
  •     library
  •   tdetexteditor
  • kate
  • kded
  • kdoctools
  • kimgio
  • kjs
  • libtdemid
  • libtdescreensaver
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdeioslave
  •   http
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for tdeabc by doxygen 1.9.4
This website is maintained by Timothy Pearson.