summaryrefslogtreecommitdiffstats
path: root/kword/mailmerge/kabc/KWMailMergeKABC.cpp
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-01-20 01:29:50 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-01-20 01:29:50 +0000
commit8362bf63dea22bbf6736609b0f49c152f975eb63 (patch)
tree0eea3928e39e50fae91d4e68b21b1e6cbae25604 /kword/mailmerge/kabc/KWMailMergeKABC.cpp
downloadkoffice-8362bf63dea22bbf6736609b0f49c152f975eb63.tar.gz
koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.zip
Added old abandoned KDE3 version of koffice
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kword/mailmerge/kabc/KWMailMergeKABC.cpp')
-rw-r--r--kword/mailmerge/kabc/KWMailMergeKABC.cpp551
1 files changed, 551 insertions, 0 deletions
diff --git a/kword/mailmerge/kabc/KWMailMergeKABC.cpp b/kword/mailmerge/kabc/KWMailMergeKABC.cpp
new file mode 100644
index 00000000..a5df7e73
--- /dev/null
+++ b/kword/mailmerge/kabc/KWMailMergeKABC.cpp
@@ -0,0 +1,551 @@
+/*
+ This file is part of the KDE project
+ Copyright (C) 2003 Tobias Koenig <[email protected]>
+ Joseph Wenninger <[email protected]>
+ Ingo Kloecker <[email protected]>
+ Copyright (C) 2004 Tobias Koenig <[email protected]>
+ Joseph Wenninger <[email protected]>
+ Ingo Kloecker <[email protected]>
+ Dirk Schmidt <[email protected]>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+*/
+
+#include <kdebug.h>
+#include <kglobal.h>
+#include <klocale.h>
+#include <kabc/distributionlist.h>
+#include <kabc/stdaddressbook.h>
+
+#include "KWMailMergeKABC.h"
+#include "KWMailMergeKABCConfig.h"
+
+KWMailMergeKABC::KWMailMergeKABC( KInstance *inst, QObject *parent )
+ : KWMailMergeDataSource( inst, parent )
+{
+ _addressBook = KABC::StdAddressBook::self();
+ _iterator = _addressBook->begin();
+
+
+ // init record list
+ // Using names from kaddressbook.
+ sampleRecord[ ("KAddressbook identifier") ] = KABC::Addressee::uidLabel();
+ sampleRecord[ ("Name" ) ] = KABC::Addressee::nameLabel();
+ sampleRecord[ ("Formatted name" ) ] = KABC::Addressee::formattedNameLabel();
+ sampleRecord[ ("Family names" ) ] = KABC::Addressee::familyNameLabel();
+ sampleRecord[ ("Given name" ) ] = KABC::Addressee::givenNameLabel();
+ sampleRecord[ ("Additional names" ) ] = KABC::Addressee::additionalNameLabel();
+ sampleRecord[ ("Honorific prefixes" ) ] = KABC::Addressee::prefixLabel();
+ sampleRecord[ ("Honorific suffixes" ) ] = KABC::Addressee::suffixLabel();
+ sampleRecord[ ("Nick name" ) ] = KABC::Addressee::nickNameLabel();
+ sampleRecord[ ("Birthday" ) ] = KABC::Addressee::birthdayLabel();
+ sampleRecord[ ("Home address: Street" ) ] = KABC::Addressee::homeAddressStreetLabel();
+ sampleRecord[ ("Home address: Locality" ) ] = KABC::Addressee::homeAddressLocalityLabel();
+ sampleRecord[ ("Home address: Region" ) ] = KABC::Addressee::homeAddressRegionLabel();
+ sampleRecord[ ("Home address: Postal code" ) ] = KABC::Addressee::homeAddressPostalCodeLabel();
+ sampleRecord[ ("Home address: Country" ) ] = KABC::Addressee::homeAddressCountryLabel();
+ sampleRecord[ ("Home address: Label" ) ] = KABC::Addressee::homeAddressLabelLabel();
+ sampleRecord[ ("Business address: Street" ) ] = KABC::Addressee::businessAddressStreetLabel();
+ sampleRecord[ ("Business address: Locality" ) ] = KABC::Addressee::businessAddressLocalityLabel();
+ sampleRecord[ ("Business address: Region" ) ] = KABC::Addressee::businessAddressRegionLabel();
+ sampleRecord[ ("Business address: Postal code" ) ] = KABC::Addressee::businessAddressPostalCodeLabel();
+ sampleRecord[ ("Business address: Country" ) ] = KABC::Addressee::businessAddressCountryLabel();
+ sampleRecord[ ("Business address: Label" ) ] = KABC::Addressee::businessAddressLabelLabel();
+ sampleRecord[ ("Home phone" ) ] = KABC::Addressee::homePhoneLabel();
+ sampleRecord[ ("Business phone" ) ] = KABC::Addressee::businessPhoneLabel();
+ sampleRecord[ ("Mobile phone" ) ] = KABC::Addressee::mobilePhoneLabel();
+ sampleRecord[ ("Home fax" ) ] = KABC::Addressee::homeFaxLabel();
+ sampleRecord[ ("Business fax" ) ] = KABC::Addressee::businessFaxLabel();
+ sampleRecord[ ("Car phone" ) ] = KABC::Addressee::carPhoneLabel();
+ sampleRecord[ ("ISDN" ) ] = KABC::Addressee::isdnLabel();
+ sampleRecord[ ("Pager" ) ] = KABC::Addressee::pagerLabel();
+ sampleRecord[ ("Email" ) ] = KABC::Addressee::emailLabel();
+ sampleRecord[ ("Mailer" ) ] = KABC::Addressee::mailerLabel();
+ sampleRecord[ ("Time zone" ) ] = KABC::Addressee::timeZoneLabel();
+ sampleRecord[ ("Geographic position" ) ] = KABC::Addressee::geoLabel();
+ sampleRecord[ ("Title" ) ] = KABC::Addressee::titleLabel();
+ sampleRecord[ ("Role" ) ] = KABC::Addressee::roleLabel();
+ sampleRecord[ ("Organization" ) ] = KABC::Addressee::organizationLabel();
+ sampleRecord[ ("Note" ) ] = KABC::Addressee::noteLabel();
+ sampleRecord[ ("productId" ) ] = KABC::Addressee::productIdLabel();
+ sampleRecord[ ("Revision" ) ] = KABC::Addressee::revisionLabel();
+ sampleRecord[ ("sortString" ) ] = KABC::Addressee::sortStringLabel();
+ sampleRecord[ ("URL" ) ] = KABC::Addressee::urlLabel();
+ sampleRecord[ ("Secrecy" ) ] = KABC::Addressee::secrecyLabel();
+ sampleRecord[ ("Preferred address: Street" ) ] = QString( "preferedAddressStreet" );
+ sampleRecord[ ("Preferred address: Locality" ) ] = QString( "preferedAddressLocality" );
+ sampleRecord[ ("Preferred address: Region" ) ] = QString( "preferedAddressRegion" );
+ sampleRecord[ ("Preferred address: Postal code" ) ] = QString( "preferedAddressPostalCode" );
+ sampleRecord[ ("Preferred address: Country" ) ] = QString( "preferedAddressCountry" );
+ sampleRecord[ ("Preferred address: Label" ) ] = QString( "preferedAddressLabel" );
+}
+
+
+KWMailMergeKABC::~KWMailMergeKABC()
+{
+ ;
+}
+
+
+void KWMailMergeKABC::addEntry( const QString &uid )
+{
+ _individualUIDs.append( uid );
+ makeUIDsExclusive();
+}
+
+
+void KWMailMergeKABC::addList( const QString &id )
+{
+ _lists.append( id );
+ parseList( id );
+ makeUIDsExclusive();
+}
+
+
+void KWMailMergeKABC::clear()
+{
+ _exclusiveUIDs.clear();
+ _individualUIDs.clear();
+ _listUIDs.clear();
+ _lists.clear();
+}
+
+
+int KWMailMergeKABC::getNumRecords() const
+{
+ kdDebug() << "KWMailMergeKABC::getNumRecords(): " << _exclusiveUIDs.count() << endl;
+ return _exclusiveUIDs.count();
+}
+
+
+QString KWMailMergeKABC::getValue( const QString &name, int record ) const
+{
+ kdDebug() << "KWMailMergeKABC::getValue(" << name << ", " << record << ")" << endl;
+ if ( record < 0 )
+ return name;
+
+ // This doesn't ever happen, right? So why is it there? Dirk Schmidt
+ if ( record == -1 && _iterator == _addressBook->end() )
+ return "";
+
+ //
+ // Set the iterator to the asked Addressee.
+ //
+ bool uidAvailable = false;
+ if ( record != -1 )
+ {
+ int counter = 0;
+
+ for ( _UIDIterator = _exclusiveUIDs.begin(); _UIDIterator != _exclusiveUIDs.end()
+ && counter < record; _UIDIterator++ )
+ {
+ counter++;
+ }
+
+ for ( _iterator = _addressBook->begin(); _iterator != _addressBook->end(); ++_iterator )
+ {
+
+ if( _iterator->uid() == *_UIDIterator )
+ {
+ uidAvailable = true;
+ break;
+ }
+ }
+ }
+
+ if( !uidAvailable )
+ {
+ return ( i18n ( "KAddressbook entry '%1' not available." ).arg( *_UIDIterator ) );
+ }
+
+
+ KABC::Addressee addr = *_iterator;
+ _iterator++; // Don't know why. Could be removed? Dirk Schmidt
+
+
+ //
+ // Return the asked variable.
+ //
+ if ( name == "KAddressbook identifier" )
+ return addr.uid();
+ if ( name == "Name" )
+ return addr.name();
+ if ( name == "Formatted name" )
+ return addr.formattedName();
+ if ( name == "Family names" )
+ return addr.familyName();
+ if ( name == "Given name" )
+ return addr.givenName();
+ if ( name == "Additional names" )
+ return addr.additionalName();
+ if ( name == "Honorific prefixes" )
+ return addr.prefix();
+ if ( name == "Honorific suffixes" )
+ return addr.suffix();
+ if ( name == "Nick name" )
+ return addr.nickName();
+ if ( name == "Birthday" )
+ return KGlobal::locale()->formatDate( addr.birthday().date() );
+
+ if ( name == "Home address: Street" )
+ {
+ KABC::Address a = addr.address( KABC::Address::Home );
+ return a.street();
+ }
+ if ( name == "Home address: Locality" )
+ {
+ KABC::Address a = addr.address( KABC::Address::Home );
+ return a.locality();
+ }
+ if ( name == "Home address: Region" )
+ {
+ KABC::Address a = addr.address( KABC::Address::Home );
+ return a.region();
+ }
+ if ( name == "Home address: Postal code" )
+ {
+ KABC::Address a = addr.address( KABC::Address::Home );
+ return a.postalCode();
+ }
+ if ( name == "Home address: Country" )
+ {
+ KABC::Address a = addr.address( KABC::Address::Home );
+ return a.country();
+ }
+ if ( name == "Home address: Label" )
+ {
+ KABC::Address a = addr.address( KABC::Address::Home );
+ return a.label();
+ }
+
+ if ( name == "Business address: Street" )
+ {
+ KABC::Address a = addr.address( KABC::Address::Work );
+ return a.street();
+ }
+ if ( name == "Business address: Locality" )
+ {
+ KABC::Address a = addr.address( KABC::Address::Work );
+ return a.locality();
+ }
+ if ( name == "Business address: Region" )
+ {
+ KABC::Address a = addr.address( KABC::Address::Work );
+ return a.region();
+ }
+ if ( name == "Business address: Postal code" )
+ {
+ KABC::Address a = addr.address( KABC::Address::Work );
+ return a.postalCode();
+ }
+ if ( name == "Business address: Country" )
+ {
+ KABC::Address a = addr.address( KABC::Address::Work );
+ return a.country();
+ }
+ if ( name == "Business address: Label" )
+ {
+ KABC::Address a = addr.address( KABC::Address::Work );
+ return a.label();
+ }
+
+ if ( name == "Prefered address: Street" )
+ {
+ KABC::Address a = addr.address( KABC::Address::Pref );
+ return a.street();
+ }
+
+ if ( name == "Prefered address: Locality" )
+ {
+ KABC::Address a = addr.address( KABC::Address::Pref );
+ return a.locality();
+ }
+ if ( name == "Prefered address: Region" )
+ {
+ KABC::Address a = addr.address( KABC::Address::Pref );
+ return a.region();
+ }
+ if ( name == "Prefered address: Postal code" )
+ {
+ KABC::Address a = addr.address( KABC::Address::Pref );
+ return a.postalCode();
+ }
+ if ( name == "Prefered address: Country" )
+ {
+ KABC::Address a = addr.address( KABC::Address::Pref );
+ return a.country();
+ }
+ if ( name == "Prefered address: Label" )
+ {
+ KABC::Address a = addr.address( KABC::Address::Pref );
+ return a.label();
+ }
+
+ if ( name == "Home phone" )
+ {
+ KABC::PhoneNumber phone = addr.phoneNumber( KABC::PhoneNumber::Home );
+ return phone.number();
+ }
+ if ( name == "Business phone" )
+ {
+ KABC::PhoneNumber phone = addr.phoneNumber( KABC::PhoneNumber::Work );
+ return phone.number();
+ }
+ if ( name == "Mobile phone" )
+ {
+ KABC::PhoneNumber phone = addr.phoneNumber( KABC::PhoneNumber::Cell );
+ return phone.number();
+ }
+ if ( name == "Home fax" )
+ {
+ KABC::PhoneNumber phone = addr.phoneNumber( KABC::PhoneNumber::Home | KABC::PhoneNumber::Fax );
+ return phone.number();
+ }
+ if ( name == "Business fax" )
+ {
+ KABC::PhoneNumber phone = addr.phoneNumber( KABC::PhoneNumber::Work | KABC::PhoneNumber::Fax );
+ return phone.number();
+ }
+ if ( name == "Car phone" )
+ {
+ KABC::PhoneNumber phone = addr.phoneNumber( KABC::PhoneNumber::Car );
+ return phone.number();
+ }
+ if ( name == "ISDN" )
+ {
+ KABC::PhoneNumber phone = addr.phoneNumber( KABC::PhoneNumber::Isdn );
+ return phone.number();
+ }
+ if ( name == "Pager" )
+ {
+ KABC::PhoneNumber phone = addr.phoneNumber( KABC::PhoneNumber::Pager );
+ return phone.number();
+ }
+
+ if ( name == "Email" )
+ return addr.preferredEmail();
+ if ( name == "Mailer" )
+ return addr.mailer();
+ if ( name == "Time zone" )
+ {
+ KABC::TimeZone zone = addr.timeZone();
+ return QString::number( zone.offset() );
+ }
+ if ( name == "Geographic position" )
+ {
+ KABC::Geo geo = addr.geo();
+ QString lat;
+ QString longi;
+ if( geo.latitude()<0 )
+ lat = QString( i18n("%1 South") ).arg( -geo.latitude() );
+ else
+ lat = QString( i18n("%1 North") ).arg( geo.latitude() );
+
+ if( geo.longitude()<0 )
+ // There is something going wrong, because "W" is replaced by "q ".
+ // Needs fix.
+ longi = QString( i18n("%1 West") ).arg( -geo.longitude() );
+ else
+ longi = QString( i18n("%1 East") ).arg( geo.longitude() );
+
+ return i18n( "Geographic coordinates", "%1, %2" ).arg ( lat, longi );
+ }
+
+ if ( name == "Title" )
+ return addr.title();
+ if ( name == "Role" )
+ return addr.role();
+ if ( name == "Organization" )
+ return addr.organization();
+ if ( name == "Note" )
+ return addr.note();
+ if ( name == "productId" )
+ return addr.productId();
+ if ( name == "Revision" )
+ return KGlobal::locale()->formatDate( addr.revision().date() );
+ if ( name == "sortString" )
+ return addr.sortString();
+ if ( name == "URL" )
+ return addr.url().url();
+ if ( name == "Secrecy" )
+ {
+ KABC::Secrecy secrecy = addr.secrecy();
+ return KABC::Secrecy::typeLabel( secrecy.type() );
+ }
+
+ return ( i18n("Unkown mail merge variable: %1").arg ( name ) ) ;
+}
+
+
+QStringList KWMailMergeKABC::lists() const
+{
+ return _lists;
+}
+
+
+void KWMailMergeKABC::load( QDomElement& parentElem )
+{
+ clear();
+ QDomNode contentNode=parentElem.namedItem("CONTENT");
+ if( contentNode.isNull() )
+ return;
+ for( QDomNode rec=contentNode.firstChild(); !rec.isNull(); rec=rec.nextSibling() )
+ {
+ if( rec.nodeName()== "RECORD" )
+ {
+ for( QDomElement recEnt=rec.firstChild().toElement(); !recEnt.isNull();
+ recEnt=recEnt.nextSibling().toElement() )
+ {
+ addEntry( recEnt.attribute( QString::fromLatin1("uid") ) );
+ }
+ }
+ else if( rec.nodeName() == "LIST" )
+ {
+ for( QDomElement recEnt=rec.firstChild().toElement(); !recEnt.isNull();
+ recEnt=recEnt.nextSibling().toElement() )
+ {
+ addList( recEnt.attribute( QString::fromLatin1("listid") ) );
+ }
+ }
+ else
+ kdDebug() << "rec.nodeName(): " << rec.nodeName() << endl;
+ }
+}
+
+
+void KWMailMergeKABC::makeUIDsExclusive()
+{
+ _exclusiveUIDs = _individualUIDs + _listUIDs;
+ _exclusiveUIDs.sort();
+ kdDebug() << "KWMailMergeKABC::makeUIDsExclusive(): before: " << _exclusiveUIDs.join(",")
+ << endl;
+ QString uid;
+ for( QStringList::Iterator it=_exclusiveUIDs.begin();
+ it!=_exclusiveUIDs.end(); ++it )
+ {
+ if( *it == uid )
+ {
+ it = _exclusiveUIDs.remove( it );
+ }
+ uid = *it;
+ }
+ kdDebug() << "KWMailMergeKABC::makeUIDsExclusive(): after: " << _exclusiveUIDs.join(",")
+ << endl;
+}
+
+
+void KWMailMergeKABC::parseList( const QString& listName )
+{
+ if( listName.isEmpty() )
+ return;
+
+ kdDebug() << "KWMailMergeKABC::parseList: " << listName << endl;
+ KABC::DistributionListManager dlm ( _addressBook );
+ dlm.load();
+
+ QStringList::Iterator listIt;
+
+ KABC::DistributionList* list = dlm.list( listName );
+ KABC::DistributionList::Entry::List entries = list->entries();
+
+ KABC::DistributionList::Entry::List::Iterator itemIt;
+ for ( itemIt = entries.begin(); itemIt != entries.end(); ++itemIt )
+ {
+ kdDebug() << "WMailMergeKABC::parseList: Listentry UID: " <<
+ (*itemIt).addressee.uid() << endl;
+ _listUIDs.append( (*itemIt).addressee.uid() );
+ }
+}
+
+
+void KWMailMergeKABC::refresh( bool )
+{
+ kdDebug() << "KWMailMergeKABC::refresh()" << endl;
+ _iterator = _addressBook->begin();
+ _UIDIterator = _individualUIDs.begin();
+
+}
+
+
+void KWMailMergeKABC::save( QDomDocument& doc, QDomElement& parent)
+{
+ QDomElement cont=doc.createElement(QString::fromLatin1("CONTENT"));
+ parent.appendChild(cont);
+
+ QValueList<QString>::ConstIterator it = _individualUIDs.begin();
+ for( ; it != _individualUIDs.end(); ++it )
+ {
+ QDomElement rec=doc.createElement(QString::fromLatin1("RECORD"));
+ cont.appendChild(rec);
+ QDomElement recEnt=doc.createElement(QString::fromLatin1("ITEM"));
+ recEnt.setAttribute(QString::fromLatin1("uid"),*it);
+ rec.appendChild(recEnt);
+ }
+
+ it = _lists.begin();
+ for( ; !(it == _lists.end()); ++it )
+ {
+ QDomElement rec=doc.createElement(QString::fromLatin1("LIST"));
+ cont.appendChild(rec);
+ QDomElement recEnt=doc.createElement(QString::fromLatin1("ITEM"));
+ recEnt.setAttribute(QString::fromLatin1("listid"),*it);
+ rec.appendChild(recEnt);
+ }
+}
+
+bool KWMailMergeKABC::showConfigDialog( QWidget* par, int action )
+{
+ bool ret=false;
+ if (action == KWSLCreate )
+ {
+ clear();
+ }
+
+ //if (action==KWSLOpen)
+ {
+ KWMailMergeKABCConfig *dia=new KWMailMergeKABCConfig( par, this );
+
+ ret=( dia->exec() == QDialog::Accepted );
+ kdDebug() << "KWMailMergeKABCConfig::Accepted " << ret << endl;
+ delete dia;
+ }
+ refresh(false);
+
+ return ret;
+}
+
+
+QStringList KWMailMergeKABC::singleRecords() const
+{
+ return _individualUIDs;
+}
+
+
+
+extern "C"
+{
+ KWORD_MAILMERGE_EXPORT KWMailMergeDataSource *create_kwmailmerge_kabc( KInstance *inst, QObject *parent )
+ {
+ return new KWMailMergeKABC( inst, parent );
+ }
+}
+
+
+
+
+#include "KWMailMergeKABC.moc"
+
+