30#include <tdeabc/distributionlist.h>
31#include <tdeabc/stdaddressbook.h>
33#include "KWMailMergeTDEABC.h"
34#include "KWMailMergeTDEABCConfig.h"
36KWMailMergeTDEABC::KWMailMergeTDEABC( TDEInstance *inst, TQObject *parent )
37 : KWMailMergeDataSource( inst, parent )
39 _addressBook = TDEABC::StdAddressBook::self();
40 _iterator = _addressBook->begin();
45 sampleRecord[ (
"KAddressbook identifier") ] = TDEABC::Addressee::uidLabel();
46 sampleRecord[ (
"Name" ) ] = TDEABC::Addressee::nameLabel();
47 sampleRecord[ (
"Formatted name" ) ] = TDEABC::Addressee::formattedNameLabel();
48 sampleRecord[ (
"Family names" ) ] = TDEABC::Addressee::familyNameLabel();
49 sampleRecord[ (
"Given name" ) ] = TDEABC::Addressee::givenNameLabel();
50 sampleRecord[ (
"Additional names" ) ] = TDEABC::Addressee::additionalNameLabel();
51 sampleRecord[ (
"Honorific prefixes" ) ] = TDEABC::Addressee::prefixLabel();
52 sampleRecord[ (
"Honorific suffixes" ) ] = TDEABC::Addressee::suffixLabel();
53 sampleRecord[ (
"Nick name" ) ] = TDEABC::Addressee::nickNameLabel();
54 sampleRecord[ (
"Birthday" ) ] = TDEABC::Addressee::birthdayLabel();
55 sampleRecord[ (
"Home address: Street" ) ] = TDEABC::Addressee::homeAddressStreetLabel();
56 sampleRecord[ (
"Home address: Locality" ) ] = TDEABC::Addressee::homeAddressLocalityLabel();
57 sampleRecord[ (
"Home address: Region" ) ] = TDEABC::Addressee::homeAddressRegionLabel();
58 sampleRecord[ (
"Home address: Postal code" ) ] = TDEABC::Addressee::homeAddressPostalCodeLabel();
59 sampleRecord[ (
"Home address: Country" ) ] = TDEABC::Addressee::homeAddressCountryLabel();
60 sampleRecord[ (
"Home address: Label" ) ] = TDEABC::Addressee::homeAddressLabelLabel();
61 sampleRecord[ (
"Business address: Street" ) ] = TDEABC::Addressee::businessAddressStreetLabel();
62 sampleRecord[ (
"Business address: Locality" ) ] = TDEABC::Addressee::businessAddressLocalityLabel();
63 sampleRecord[ (
"Business address: Region" ) ] = TDEABC::Addressee::businessAddressRegionLabel();
64 sampleRecord[ (
"Business address: Postal code" ) ] = TDEABC::Addressee::businessAddressPostalCodeLabel();
65 sampleRecord[ (
"Business address: Country" ) ] = TDEABC::Addressee::businessAddressCountryLabel();
66 sampleRecord[ (
"Business address: Label" ) ] = TDEABC::Addressee::businessAddressLabelLabel();
67 sampleRecord[ (
"Home phone" ) ] = TDEABC::Addressee::homePhoneLabel();
68 sampleRecord[ (
"Business phone" ) ] = TDEABC::Addressee::businessPhoneLabel();
69 sampleRecord[ (
"Mobile phone" ) ] = TDEABC::Addressee::mobilePhoneLabel();
70 sampleRecord[ (
"Home fax" ) ] = TDEABC::Addressee::homeFaxLabel();
71 sampleRecord[ (
"Business fax" ) ] = TDEABC::Addressee::businessFaxLabel();
72 sampleRecord[ (
"Car phone" ) ] = TDEABC::Addressee::carPhoneLabel();
73 sampleRecord[ (
"ISDN" ) ] = TDEABC::Addressee::isdnLabel();
74 sampleRecord[ (
"Pager" ) ] = TDEABC::Addressee::pagerLabel();
75 sampleRecord[ (
"Email" ) ] = TDEABC::Addressee::emailLabel();
76 sampleRecord[ (
"Mailer" ) ] = TDEABC::Addressee::mailerLabel();
77 sampleRecord[ (
"Time zone" ) ] = TDEABC::Addressee::timeZoneLabel();
78 sampleRecord[ (
"Geographic position" ) ] = TDEABC::Addressee::geoLabel();
79 sampleRecord[ (
"Title" ) ] = TDEABC::Addressee::titleLabel();
80 sampleRecord[ (
"Role" ) ] = TDEABC::Addressee::roleLabel();
81 sampleRecord[ (
"Organization" ) ] = TDEABC::Addressee::organizationLabel();
82 sampleRecord[ (
"Note" ) ] = TDEABC::Addressee::noteLabel();
83 sampleRecord[ (
"productId" ) ] = TDEABC::Addressee::productIdLabel();
84 sampleRecord[ (
"Revision" ) ] = TDEABC::Addressee::revisionLabel();
85 sampleRecord[ (
"sortString" ) ] = TDEABC::Addressee::sortStringLabel();
86 sampleRecord[ (
"URL" ) ] = TDEABC::Addressee::urlLabel();
87 sampleRecord[ (
"Secrecy" ) ] = TDEABC::Addressee::secrecyLabel();
88 sampleRecord[ (
"Preferred address: Street" ) ] = TQString(
"preferedAddressStreet" );
89 sampleRecord[ (
"Preferred address: Locality" ) ] = TQString(
"preferedAddressLocality" );
90 sampleRecord[ (
"Preferred address: Region" ) ] = TQString(
"preferedAddressRegion" );
91 sampleRecord[ (
"Preferred address: Postal code" ) ] = TQString(
"preferedAddressPostalCode" );
92 sampleRecord[ (
"Preferred address: Country" ) ] = TQString(
"preferedAddressCountry" );
93 sampleRecord[ (
"Preferred address: Label" ) ] = TQString(
"preferedAddressLabel" );
97KWMailMergeTDEABC::~KWMailMergeTDEABC()
103void KWMailMergeTDEABC::addEntry(
const TQString &uid )
105 _individualUIDs.append( uid );
110void KWMailMergeTDEABC::addList(
const TQString &
id )
118void KWMailMergeTDEABC::clear()
120 _exclusiveUIDs.clear();
121 _individualUIDs.clear();
127int KWMailMergeTDEABC::getNumRecords()
const
129 kdDebug() <<
"KWMailMergeTDEABC::getNumRecords(): " << _exclusiveUIDs.count() << endl;
130 return _exclusiveUIDs.count();
134TQString KWMailMergeTDEABC::getValue(
const TQString &name,
int record )
const
136 kdDebug() <<
"KWMailMergeTDEABC::getValue(" << name <<
", " << record <<
")" << endl;
141 if ( record == -1 && _iterator == _addressBook->end() )
147 bool uidAvailable =
false;
152 for ( _UIDIterator = _exclusiveUIDs.begin(); _UIDIterator != _exclusiveUIDs.end()
153 && counter < record; _UIDIterator++ )
158 for ( _iterator = _addressBook->begin(); _iterator != _addressBook->end(); ++_iterator )
161 if( _iterator->uid() == *_UIDIterator )
171 return ( i18n (
"KAddressbook entry '%1' not available." ).arg( *_UIDIterator ) );
175 TDEABC::Addressee addr = *_iterator;
182 if ( name ==
"KAddressbook identifier" )
184 if ( name ==
"Name" )
186 if ( name ==
"Formatted name" )
187 return addr.formattedName();
188 if ( name ==
"Family names" )
189 return addr.familyName();
190 if ( name ==
"Given name" )
191 return addr.givenName();
192 if ( name ==
"Additional names" )
193 return addr.additionalName();
194 if ( name ==
"Honorific prefixes" )
195 return addr.prefix();
196 if ( name ==
"Honorific suffixes" )
197 return addr.suffix();
198 if ( name ==
"Nick name" )
199 return addr.nickName();
200 if ( name ==
"Birthday" )
201 return TDEGlobal::locale()->formatDate( addr.birthday().date() );
203 if ( name ==
"Home address: Street" )
205 TDEABC::Address a = addr.address( TDEABC::Address::Home );
208 if ( name ==
"Home address: Locality" )
210 TDEABC::Address a = addr.address( TDEABC::Address::Home );
213 if ( name ==
"Home address: Region" )
215 TDEABC::Address a = addr.address( TDEABC::Address::Home );
218 if ( name ==
"Home address: Postal code" )
220 TDEABC::Address a = addr.address( TDEABC::Address::Home );
221 return a.postalCode();
223 if ( name ==
"Home address: Country" )
225 TDEABC::Address a = addr.address( TDEABC::Address::Home );
228 if ( name ==
"Home address: Label" )
230 TDEABC::Address a = addr.address( TDEABC::Address::Home );
234 if ( name ==
"Business address: Street" )
236 TDEABC::Address a = addr.address( TDEABC::Address::Work );
239 if ( name ==
"Business address: Locality" )
241 TDEABC::Address a = addr.address( TDEABC::Address::Work );
244 if ( name ==
"Business address: Region" )
246 TDEABC::Address a = addr.address( TDEABC::Address::Work );
249 if ( name ==
"Business address: Postal code" )
251 TDEABC::Address a = addr.address( TDEABC::Address::Work );
252 return a.postalCode();
254 if ( name ==
"Business address: Country" )
256 TDEABC::Address a = addr.address( TDEABC::Address::Work );
259 if ( name ==
"Business address: Label" )
261 TDEABC::Address a = addr.address( TDEABC::Address::Work );
265 if ( name ==
"Prefered address: Street" )
267 TDEABC::Address a = addr.address( TDEABC::Address::Pref );
271 if ( name ==
"Prefered address: Locality" )
273 TDEABC::Address a = addr.address( TDEABC::Address::Pref );
276 if ( name ==
"Prefered address: Region" )
278 TDEABC::Address a = addr.address( TDEABC::Address::Pref );
281 if ( name ==
"Prefered address: Postal code" )
283 TDEABC::Address a = addr.address( TDEABC::Address::Pref );
284 return a.postalCode();
286 if ( name ==
"Prefered address: Country" )
288 TDEABC::Address a = addr.address( TDEABC::Address::Pref );
291 if ( name ==
"Prefered address: Label" )
293 TDEABC::Address a = addr.address( TDEABC::Address::Pref );
297 if ( name ==
"Home phone" )
299 TDEABC::PhoneNumber phone = addr.phoneNumber( TDEABC::PhoneNumber::Home );
300 return phone.number();
302 if ( name ==
"Business phone" )
304 TDEABC::PhoneNumber phone = addr.phoneNumber( TDEABC::PhoneNumber::Work );
305 return phone.number();
307 if ( name ==
"Mobile phone" )
309 TDEABC::PhoneNumber phone = addr.phoneNumber( TDEABC::PhoneNumber::Cell );
310 return phone.number();
312 if ( name ==
"Home fax" )
314 TDEABC::PhoneNumber phone = addr.phoneNumber( TDEABC::PhoneNumber::Home | TDEABC::PhoneNumber::Fax );
315 return phone.number();
317 if ( name ==
"Business fax" )
319 TDEABC::PhoneNumber phone = addr.phoneNumber( TDEABC::PhoneNumber::Work | TDEABC::PhoneNumber::Fax );
320 return phone.number();
322 if ( name ==
"Car phone" )
324 TDEABC::PhoneNumber phone = addr.phoneNumber( TDEABC::PhoneNumber::Car );
325 return phone.number();
327 if ( name ==
"ISDN" )
329 TDEABC::PhoneNumber phone = addr.phoneNumber( TDEABC::PhoneNumber::Isdn );
330 return phone.number();
332 if ( name ==
"Pager" )
334 TDEABC::PhoneNumber phone = addr.phoneNumber( TDEABC::PhoneNumber::Pager );
335 return phone.number();
338 if ( name ==
"Email" )
339 return addr.preferredEmail();
340 if ( name ==
"Mailer" )
341 return addr.mailer();
342 if ( name ==
"Time zone" )
344 TDEABC::TimeZone zone = addr.timeZone();
345 return TQString::number( zone.offset() );
347 if ( name ==
"Geographic position" )
349 TDEABC::Geo geo = addr.geo();
352 if( geo.latitude()<0 )
353 lat = TQString( i18n(
"%1 South") ).arg( -geo.latitude() );
355 lat = TQString( i18n(
"%1 North") ).arg( geo.latitude() );
357 if( geo.longitude()<0 )
360 longi = TQString( i18n(
"%1 West") ).arg( -geo.longitude() );
362 longi = TQString( i18n(
"%1 East") ).arg( geo.longitude() );
364 return i18n(
"Geographic coordinates",
"%1, %2" ).arg ( lat, longi );
367 if ( name ==
"Title" )
369 if ( name ==
"Role" )
371 if ( name ==
"Organization" )
372 return addr.organization();
373 if ( name ==
"Note" )
375 if ( name ==
"productId" )
376 return addr.productId();
377 if ( name ==
"Revision" )
378 return TDEGlobal::locale()->formatDate( addr.revision().date() );
379 if ( name ==
"sortString" )
380 return addr.sortString();
382 return addr.url().url();
383 if ( name ==
"Secrecy" )
385 TDEABC::Secrecy secrecy = addr.secrecy();
386 return TDEABC::Secrecy::typeLabel( secrecy.type() );
389 return ( i18n(
"Unkown mail merge variable: %1").arg ( name ) ) ;
393TQStringList KWMailMergeTDEABC::lists()
const
399void KWMailMergeTDEABC::load( TQDomElement& parentElem )
402 TQDomNode contentNode=parentElem.namedItem(
"CONTENT");
403 if( contentNode.isNull() )
405 for( TQDomNode rec=contentNode.firstChild(); !rec.isNull(); rec=rec.nextSibling() )
407 if( rec.nodeName()==
"RECORD" )
409 for( TQDomElement recEnt=rec.firstChild().toElement(); !recEnt.isNull();
410 recEnt=recEnt.nextSibling().toElement() )
412 addEntry( recEnt.attribute( TQString::fromLatin1(
"uid") ) );
415 else if( rec.nodeName() ==
"LIST" )
417 for( TQDomElement recEnt=rec.firstChild().toElement(); !recEnt.isNull();
418 recEnt=recEnt.nextSibling().toElement() )
420 addList( recEnt.attribute( TQString::fromLatin1(
"listid") ) );
424 kdDebug() <<
"rec.nodeName(): " << rec.nodeName() << endl;
429void KWMailMergeTDEABC::makeUIDsExclusive()
431 _exclusiveUIDs = _individualUIDs + _listUIDs;
432 _exclusiveUIDs.sort();
433 kdDebug() <<
"KWMailMergeTDEABC::makeUIDsExclusive(): before: " << _exclusiveUIDs.join(
",")
436 for( TQStringList::Iterator it=_exclusiveUIDs.begin();
437 it!=_exclusiveUIDs.end(); ++it )
441 it = _exclusiveUIDs.remove( it );
445 kdDebug() <<
"KWMailMergeTDEABC::makeUIDsExclusive(): after: " << _exclusiveUIDs.join(
",")
450void KWMailMergeTDEABC::parseList(
const TQString& listName )
452 if( listName.isEmpty() )
455 kdDebug() <<
"KWMailMergeTDEABC::parseList: " << listName << endl;
456 TDEABC::DistributionListManager dlm ( _addressBook );
459 TQStringList::Iterator listIt;
461 TDEABC::DistributionList* list = dlm.list( listName );
462 TDEABC::DistributionList::Entry::List entries = list->entries();
464 TDEABC::DistributionList::Entry::List::Iterator itemIt;
465 for ( itemIt = entries.begin(); itemIt != entries.end(); ++itemIt )
467 kdDebug() <<
"WMailMergeTDEABC::parseList: Listentry UID: " <<
468 (*itemIt).addressee.uid() << endl;
469 _listUIDs.append( (*itemIt).addressee.uid() );
474void KWMailMergeTDEABC::refresh(
bool )
476 kdDebug() <<
"KWMailMergeTDEABC::refresh()" << endl;
477 _iterator = _addressBook->begin();
478 _UIDIterator = _individualUIDs.begin();
483void KWMailMergeTDEABC::save( TQDomDocument& doc, TQDomElement& parent)
485 TQDomElement cont=doc.createElement(TQString::fromLatin1(
"CONTENT"));
486 parent.appendChild(cont);
488 TQValueList<TQString>::ConstIterator it = _individualUIDs.begin();
489 for( ; it != _individualUIDs.end(); ++it )
491 TQDomElement rec=doc.createElement(TQString::fromLatin1(
"RECORD"));
492 cont.appendChild(rec);
493 TQDomElement recEnt=doc.createElement(TQString::fromLatin1(
"ITEM"));
494 recEnt.setAttribute(TQString::fromLatin1(
"uid"),*it);
495 rec.appendChild(recEnt);
499 for( ; !(it == _lists.end()); ++it )
501 TQDomElement rec=doc.createElement(TQString::fromLatin1(
"LIST"));
502 cont.appendChild(rec);
503 TQDomElement recEnt=doc.createElement(TQString::fromLatin1(
"ITEM"));
504 recEnt.setAttribute(TQString::fromLatin1(
"listid"),*it);
505 rec.appendChild(recEnt);
509bool KWMailMergeTDEABC::showConfigDialog( TQWidget* par,
int action )
512 if (action == KWSLCreate )
519 KWMailMergeTDEABCConfig *dia=
new KWMailMergeTDEABCConfig( par,
this );
521 ret=( dia->exec() == TQDialog::Accepted );
522 kdDebug() <<
"KWMailMergeTDEABCConfig::Accepted " << ret << endl;
531TQStringList KWMailMergeTDEABC::singleRecords()
const
533 return _individualUIDs;
540 KWORD_MAILMERGE_EXPORT KWMailMergeDataSource *create_kwmailmerge_tdeabc( TDEInstance *inst, TQObject *parent )
542 return new KWMailMergeTDEABC( inst, parent );
549#include "KWMailMergeTDEABC.moc"