• 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 
28 using namespace TDEABC;
29 
30 class 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 
63 Field::List Field::mAllFields;
64 Field::List Field::mDefaultFields;
65 Field::List Field::mCustomFields;
66 
67 
68 Field::Field( FieldImpl *impl )
69 {
70  mImpl = impl;
71 }
72 
73 Field::~Field()
74 {
75  delete mImpl;
76 }
77 
78 TQString 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 
89 int Field::category()
90 {
91  return mImpl->category();
92 }
93 
94 TQString 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 
116 TQString 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 
220 bool 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 
375 TQString 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 
392 bool Field::isCustom()
393 {
394  return mImpl->fieldId() == FieldImpl::CustomField;
395 }
396 
397 Field::List Field::allFields()
398 {
399  if ( mAllFields.isEmpty() ) {
400  --CREATEFIELDS--
401  }
402 
403  return mAllFields;
404 }
405 
406 Field::List Field::defaultFields()
407 {
408  if ( mDefaultFields.isEmpty() ) {
409  createDefaultField( FieldImpl::FormattedName );
410  createDefaultField( FieldImpl::Email );
411  }
412 
413  return mDefaultFields;
414 }
415 
416 void Field::createField( int id, int category )
417 {
418  mAllFields.append( new Field( new FieldImpl( id, category ) ) );
419 }
420 
421 void Field::createDefaultField( int id, int category )
422 {
423  mDefaultFields.append( new Field( new FieldImpl( id, category ) ) );
424 }
425 
426 void 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 
446 void 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 
455 void 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 
477 Field::List Field::restoreFields( const TQString &identifier )
478 {
479  TDEConfig *cfg = TDEGlobal::config();
480  TDEConfigGroupSaver( cfg, "KABCFields" );
481 
482  return restoreFields( cfg, identifier );
483 }
484 
485 Field::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 
510 bool 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 
521 Field *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.1
This website is maintained by Timothy Pearson.