summaryrefslogtreecommitdiffstats
path: root/kresources/newexchange/exchangeconvertercontact.cpp
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2013-01-26 13:17:50 -0600
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2013-01-26 13:17:50 -0600
commitb363d2579af0a11b77e698aed2e1021c2233b644 (patch)
treef4a47b87354b7a6a3b266c8121bd8ddaeb7accaa /kresources/newexchange/exchangeconvertercontact.cpp
parent61bddfe3a7226b18c68a76124b727c736f431688 (diff)
downloadtdepim-b363d2579af0a11b77e698aed2e1021c2233b644.tar.gz
tdepim-b363d2579af0a11b77e698aed2e1021c2233b644.zip
Rename a number of libraries and executables to avoid conflicts with KDE4
Diffstat (limited to 'kresources/newexchange/exchangeconvertercontact.cpp')
-rw-r--r--kresources/newexchange/exchangeconvertercontact.cpp625
1 files changed, 0 insertions, 625 deletions
diff --git a/kresources/newexchange/exchangeconvertercontact.cpp b/kresources/newexchange/exchangeconvertercontact.cpp
deleted file mode 100644
index e8de19cb8..000000000
--- a/kresources/newexchange/exchangeconvertercontact.cpp
+++ /dev/null
@@ -1,625 +0,0 @@
-/*
- This file is part of the exchange resource.
- Copyright (c) 2004 Reinhold Kainhofer <reinhold@kainhofer.com>
-
- 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 "exchangeconvertercontact.h"
-#include <libkcal/freebusyurlstore.h>
-#include <webdavhandler.h>
-#include <kdebug.h>
-
-
-using namespace KABC;
-
-ExchangeConverterContact::ExchangeConverterContact()
-{
-}
-
-
-#define propertyDAV( prop ) \
- WebdavHandler::addElement( doc, props, "d:" prop )
-#define propertyNS( ns, prop ) \
- WebdavHandler::addElementNS( doc, props, ns, prop )
-#define propertyContact( prop ) \
- WebdavHandler::addElement( doc, props, "c:" prop )
-#define propertyCalendar( prop ) \
- WebdavHandler::addElement( doc, props, "cal:" prop )
-#define propertyHTTPMail( prop ) \
- WebdavHandler::addElement( doc, props, "m:" prop )
-#define property( prop ) \
- Webdavhandler::addElement( doc, props, prop )
-
-void ExchangeConverterContact::createRequest( TQDomDocument &doc, TQDomElement &props )
-{
- TQDomAttr att_c = doc.createAttribute( "xmlns:c" );
- att_c.setValue( "urn:schemas:contacts:" );
- doc.documentElement().setAttributeNode( att_c );
- TQDomAttr att_cal = doc.createAttribute( "xmlns:cal" );
- att_cal.setValue( "urn:schemas:calendar:" );
- doc.documentElement().setAttributeNode( att_cal );
-
- propertyDAV( "contentclass" );
- propertyDAV( "getcontenttype" );
- propertyNS( "http://schemas.microsoft.com/exchange/", "outlookmessageclass" );
- propertyDAV( "getetag" );
- propertyDAV( "href" );
- propertyDAV( "creationdate" );
- propertyDAV( "getlastmodified" );
- propertyDAV( "isreadonly" );
- propertyContact( "cn" );
-// propertyContact( "uid" );
- propertyDAV( "uid" );
- propertyContact( "fileas" );
- propertyContact( "cn" );
- propertyContact( "givenName" );
- propertyContact( "initials" );
- propertyContact( "middlename" );
- propertyContact( "namesuffix" );
- propertyContact( "personaltitle" );
- propertyContact( "sn" );
- propertyContact( "title" );
- propertyContact( "o" );
- propertyContact( "department" );
- propertyContact( "roomnumber" );
- propertyContact( "profession" );
- propertyContact( "manager" );
- propertyContact( "secretarycn" );
- propertyContact( "email1" );
- propertyContact( "email2" );
- propertyContact( "email3" );
- propertyContact( "personalHomePage" );
- propertyContact( "businesshomepage" );
- propertyContact( "fburl" );
- // TODO: Does this work?
-// propertyNS( "urn:schemas-microsoft-com:office:office", "Keywords" );
- propertyDAV( "sensitivity" );
- propertyContact( "telephoneNumber" );
- propertyContact( "telephonenumber2" );
- propertyContact( "officetelephonenumber" );
- propertyContact( "office2telephonenumber" );
- propertyContact( "secretaryphone" );
- propertyContact( "organizationmainphone" );
- propertyContact( "otherTelephone" );
- propertyContact( "homePhone" );
- propertyContact( "homephone2" );
- propertyContact( "mobile" );
- propertyContact( "othermobile" );
- propertyContact( "facsimiletelephonenumber" );
- propertyContact( "homefax" );
- propertyContact( "otherfax" );
- propertyContact( "pager" );
- propertyContact( "otherpager" );
- propertyContact( "internationalisdnnumber" );
- propertyContact( "callbackphone" );
- propertyContact( "telexnumber" );
- propertyContact( "ttytddphone" );
- propertyContact( "workaddress" );
- propertyContact( "street" );
- propertyContact( "postofficebox" );
- propertyContact( "l" );
- propertyContact( "postalcode" );
- propertyContact( "st" );
- propertyContact( "co" );
- propertyContact( "c" );
- propertyContact( "homepostaladdress" );
- propertyContact( "homeStreet" );
- propertyContact( "homepostofficebox" );
- propertyContact( "homeCity" );
- propertyContact( "homePostalCode" );
- propertyContact( "homeState" );
- propertyContact( "homeCountry" );
- propertyContact( "homeCountrycode" );
- propertyContact( "mailingpostaladdress" );
- propertyContact( "mailingstreet" );
- propertyContact( "mailingpostofficebox" );
- propertyContact( "mailingcity" );
- propertyContact( "mailingpostalcode" );
- propertyContact( "mailingstate" );
- propertyContact( "mailingcountry" );
- propertyContact( "mailingcountrycode" );
- propertyContact( "otherpostaladdress" );
- propertyContact( "otherstreet" );
- propertyContact( "otherpostofficebox" );
- propertyContact( "othercity" );
- propertyContact( "otherpostalcode" );
- propertyContact( "otherstate" );
- propertyContact( "othercountry" );
- propertyContact( "othercountrycode" );
- propertyContact( "nickname" );
- propertyContact( "spousecn" );
- propertyContact( "bday" );
- propertyContact( "weddinganniversary" );
- propertyCalendar( "geolatitude" );
- propertyCalendar( "geolongitude" );
- propertyContact( "mapurl" );
- propertyContact( "location" );
- propertyHTTPMail( "textdescription" );
- propertyHTTPMail( "date" );
- propertyContact( "usercertificate" );
-}
-#undef propertyDAV
-#undef propertyNS
-#undef propertyContact
-#undef propertyCalendar
-#undef propertyHTTPMail
-#undef property
-
-
-bool ExchangeConverterContact::extractAddress( const TQDomElement &node,
- Addressee &addressee, int type,
- const TQString &street, const TQString &pobox, const TQString &location,
- const TQString &postalcode, const TQString &state, const TQString &country,
- const TQString &/*countycode*/ )
-{
- bool haveAddr = false;
- Address addr( type );
- TQString tmpstr;
-
- if ( WebdavHandler::extractString( node, street, tmpstr ) ) {
- addr.setStreet( tmpstr );
- haveAddr = true;
- }
- if ( WebdavHandler::extractString( node, pobox, tmpstr ) ) {
- addr.setPostOfficeBox( tmpstr );
- haveAddr = true;
- }
- if ( WebdavHandler::extractString( node, location, tmpstr ) ) {
- addr.setLocality( tmpstr );
- haveAddr = true;
- }
- if ( WebdavHandler::extractString( node, postalcode, tmpstr ) ) {
- addr.setPostalCode( tmpstr );
- haveAddr = true;
- }
- if ( WebdavHandler::extractString( node, state, tmpstr ) ) {
- addr.setRegion( tmpstr );
- haveAddr = true;
- }
- if ( WebdavHandler::extractString( node, country, tmpstr ) ) {
- addr.setCountry( tmpstr );
- haveAddr = true;
- }
-// if ( WebdavHandler::extractString( node, countrycode, tmpstr ) ) {
-// addr.setCountryCode( tmpstr );
-// haveAddr = true;
-// }
- if ( haveAddr ) {
- addressee.insertAddress( addr );
- }
- return haveAddr;
-}
-
-
-/**
-For the complete list of Exchange <=> KABC field mappings see the file
-Person.mapping */
-bool ExchangeConverterContact::readAddressee( const TQDomElement &node, Addressee &addressee )
-{
- TQString tmpstr;
- long tmplng;
-
- // The UID is absolutely required!
- if ( WebdavHandler::extractString( node, "uid", tmpstr ) ) {
- addressee.setUid( tmpstr );
- } else {
- kdDebug()<<"Addressee does not have a UID"<<endl;
- return false;
- }
- if ( WebdavHandler::extractString( node, "getetag", tmpstr ) )
- addressee.insertCustom( "TDEPIM-Exchange-Resource", "fingerprint", tmpstr );
- if ( WebdavHandler::extractString( node, "href", tmpstr ) )
- addressee.insertCustom( "TDEPIM-Exchange-Resource", "href", tmpstr );
-
-/* KDE4: addressee does not have any creation or modification date :-(( */
-/* KDE4: read-only not supported by libkabc */
-
- // Name: first, family, pre/postfixes, common name
- if ( WebdavHandler::extractString( node, "fileas", tmpstr ) ||
- WebdavHandler::extractString( node, "cn", tmpstr ) )
- addressee.setFormattedName( tmpstr );
- if ( WebdavHandler::extractString( node, "givenName", tmpstr ) )
- addressee.setGivenName( tmpstr );
- if ( WebdavHandler::extractString( node, "middlename", tmpstr ) )
- addressee.setAdditionalName( tmpstr );
- if ( WebdavHandler::extractString( node, "sn", tmpstr ) )
- addressee.setFamilyName( tmpstr );
- //urn:schemas:contacts:initials not used -
- if ( WebdavHandler::extractString( node, "namesuffix", tmpstr ) )
- addressee.setSuffix( tmpstr );
- if ( WebdavHandler::extractString( node, "personaltitle", tmpstr ) )
- addressee.setPrefix( tmpstr );
-
- // Role
- if ( WebdavHandler::extractString( node, "title", tmpstr ) )
- addressee.setRole( tmpstr );
-
- // Company-Related settings
- if ( WebdavHandler::extractString( node, "o", tmpstr ) )
- addressee.setOrganization( tmpstr );
- if ( WebdavHandler::extractString( node, "department", tmpstr ) )
- {
-#if KDE_IS_VERSION(3,5,8)
- addressee.setDepartment( tmpstr );
-#else
- addressee.insertCustom( "KADDRESSBOOK", "X-Department", tmpstr );
-#endif
- }
- if ( WebdavHandler::extractString( node, "roomnumber", tmpstr ) )
- addressee.insertCustom( "KADDRESSBOOK", "X-Office", tmpstr );
- if ( WebdavHandler::extractString( node, "profession", tmpstr ) )
- addressee.insertCustom( "KADDRESSBOOK", "X-Profession", tmpstr );
- if ( WebdavHandler::extractString( node, "manager", tmpstr ) )
- addressee.insertCustom( "KADDRESSBOOK", "X-ManagersName", tmpstr );
-
- if ( WebdavHandler::extractString( node, "secretarycn", tmpstr ) )
- addressee.insertCustom( "KADDRESSBOOK", "X-AssistantsName", tmpstr );
-
-
- // Web-Related settings
- if ( WebdavHandler::extractString( node, "email1", tmpstr ) )
- addressee.insertEmail( tmpstr, true );
- if ( WebdavHandler::extractString( node, "email2", tmpstr ) )
- addressee.insertEmail( tmpstr );
- if ( WebdavHandler::extractString( node, "email3", tmpstr ) )
- addressee.insertEmail( tmpstr );
-
- // No kabc field for personalHomePage
- if ( WebdavHandler::extractString( node, "businesshomepage", tmpstr ) )
- addressee.setUrl( tmpstr );
-
- if ( WebdavHandler::extractString( node, "fburl", tmpstr ) ) {
- KCal::FreeBusyUrlStore::self()->writeUrl( addressee.preferredEmail(), tmpstr );
- KCal::FreeBusyUrlStore::self()->sync();
- }
-
-
- // General stuff:
- TQStringList tmplst;
- if ( WebdavHandler::extractStringList( node, "Keywords", tmplst ) )
- addressee.setCategories( tmplst );
- // Exchange sentitivity values:
- // 0 None, 1 Personal, 2 Private, 3 Company Confidential
- if ( WebdavHandler::extractLong( node, "sensitivity", tmplng ) ) {
- switch( tmplng ) {
- case 0: addressee.setSecrecy( KABC::Secrecy::Public ); break;
- case 1:
- case 2: addressee.setSecrecy( KABC::Secrecy::Private ); break;
- case 3: addressee.setSecrecy( KABC::Secrecy::Confidential ); break;
- default: kdWarning() << "Unknown sensitivity: " << tmplng << endl;
- }
- }
-
-#define insertPhone( name, type ) \
- if ( WebdavHandler::extractString( node, name, tmpstr ) ) \
- addressee.insertPhoneNumber( KABC::PhoneNumber( tmpstr, type ) );
- // Phone numbers
- insertPhone( "telephoneNumber", PhoneNumber::Work );
-//insertPhone( "telephonenumber2", PhoneNumber::Work );
- insertPhone( "officetelephonenumber", PhoneNumber::Work );
-//insertPhone( "office2telephonenumber", PhoneNumber::Work );
-//insertPhone( "secretaryphone", PhoneNumber::Work );
-//insertPhone( "organizationmainphone", PhoneNumber::Work );
- insertPhone( "otherTelephone", 0 );
- insertPhone( "homePhone", PhoneNumber::Home );
-//insertPhone( "homephone2", PhoneNumber::Home );
- insertPhone( "mobile", PhoneNumber::Cell );
-//insertPhone( "othermobile", PhoneNumber::Cell );
- insertPhone( "facsimiletelephonenumber",PhoneNumber::Fax );
- insertPhone( "homefax", PhoneNumber::Fax | PhoneNumber::Home );
- insertPhone( "otherfax", PhoneNumber::Fax | PhoneNumber::Work );
- insertPhone( "pager", PhoneNumber::Pager | PhoneNumber::Work );
- insertPhone( "otherpager", PhoneNumber::Pager );
- insertPhone( "internationalisdnnumber", PhoneNumber::Isdn );
- insertPhone( "callbackphone", PhoneNumber::Msg );
- insertPhone( "telexnumber", PhoneNumber::Bbs );
- insertPhone( "ttytddphone", PhoneNumber::Pcs );
-#undef insertPhone
-
- // Addresses: Work, Home, Mailing and Other:
- extractAddress( node, addressee, Address::Work | Address::Pref,
- "street", "postofficebox", "l", "postalcode", "st", "co", "c" );
- extractAddress( node, addressee, Address::Home,
- "homeStreet", "homepostofficebox", "homeCity", "homePostalCode",
- "homeState", "homeCountry", "homeCountrycode" );
- // Exchange doesn't support writing/changing the mailing address fields,
- // so don't download it. It's equal to either the home or work address anyway
-/* extractAddress( node, addressee, Address::Postal,
- "mailingstreet", "mailingpostofficebox", "mailingcity", "mailingpostalcode",
- "mailingstate", "mailingcountry", "mailingcountrycode" );*/
- extractAddress( node, addressee, 0,
- "otherstreet", "otherpostofficebox", "othercity", "otherpostalcode",
- "otherstate", "othercountry", "othercountrycode" );
-
-
- if ( WebdavHandler::extractString( node, "nickname", tmpstr ) )
- addressee.setNickName( tmpstr );
- if ( WebdavHandler::extractString( node, "spousecn", tmpstr ) )
- addressee.insertCustom( "KADDRESSBOOK", "X-SpousesName", tmpstr );
-
- TQDateTime tmpdt;
- if ( WebdavHandler::extractDateTime( node, "bday", tmpdt ) )
- addressee.setBirthday( tmpdt.date() );
- if ( WebdavHandler::extractString( node, "weddinganniversary", tmpstr ) )
- addressee.insertCustom( "KADDRESSBOOK", "X-Anniversary", tmpstr );
-
-// TODO? timeZone()
-
- float lt,lng;
- if ( WebdavHandler::extractFloat( node, "geolatitude", lt ) &&
- WebdavHandler::extractFloat( node, "geolongitude", lng ) )
- addressee.setGeo( Geo( lt, lng ) );
- // TODO: mapurl
- // TODO: location
-
- if ( WebdavHandler::extractString( node, "textdescription", tmpstr ) )
- addressee.setNote( tmpstr );
-
-// if ( WebdavHandler::extractString( node, "usercertificate", tmpstr ) )
-// addressee.setKeys()
-
- return true;
-}
-
-Addressee::List ExchangeConverterContact::parseWebDAV( const TQDomDocument& davdata )
-{
- // TODO: Handle multiple addressees per reply!
- Addressee::List list;
-
- TQDomElement prop = davdata.documentElement().namedItem( "response" )
- .namedItem( "propstat" ).namedItem( "prop" ).toElement();
- if ( prop.isNull() ) {
-kdDebug()<<"ExchangeConverterContact::parseWebDAV, no response->propstat->prop element!"<<endl;
- return list;
- }
-
- TQString contentclass;
- bool success = WebdavHandler::extractString( prop, "contentclass", contentclass );
- if ( !success ) {
-kdDebug()<<"ExchangeConverterContact::parseWebDAV, No contentclass entry"<<endl;
- return list;
- }
-
- success = false;
- Addressee addressee;
- if ( contentclass == "urn:content-classes:person" ) {
- success = readAddressee( prop, addressee );
- }
-
- if ( success ) {
- list.append( addressee );
- } else {
-
- }
- return list;
-}
-
-#define domDavProperty( name, value ) \
- WebdavHandler::addElement( doc, prop, "d:" name, value );
-#define domProperty( NS, name, value ) \
- WebdavHandler::addElementNS( doc, prop, NS, name, value );
-#define domContactProperty( name, value ) \
- WebdavHandler::addElement( doc, prop, "c:" name, value );
-#define domCalendarProperty( name, value ) \
- WebdavHandler::addElement( doc, prop, "cal:" name, value );
-#define domPhoneProperty( name, type ) \
- domContactProperty( name, addr.phoneNumber( type ).number() );
-
-
-TQDomDocument ExchangeConverterContact::createWebDAV( Addressee addr )
-{
- TQDomDocument doc;
- TQDomElement root = WebdavHandler::addDavElement( doc, doc, "d:propertyupdate" );
- TQDomElement set = WebdavHandler::addElement( doc, root, "d:set" );
- TQDomElement prop = WebdavHandler::addElement( doc, set, "d:prop" );
-
- TQDomAttr att_c = doc.createAttribute( "xmlns:c" );
- att_c.setValue( "urn:schemas:contacts:" );
- doc.documentElement().setAttributeNode( att_c );
-
- TQDomAttr att_b = doc.createAttribute( "xmlns:b" );
- att_b.setValue( "urn:schemas-microsoft-com:datatypes" );
- root.setAttributeNode( att_b );
-
- domDavProperty( "contentclass", "urn:content-classes:person" );
- domProperty( "http://schemas.microsoft.com/exchange/",
- "outlookmessageclass", "IPM.Contact" );
-// domContactProperty( "uid", addr.uid() );
-
- domContactProperty( "fileas", addr.formattedName() );
- domContactProperty( "givenName", addr.givenName() );
- domContactProperty( "middlename", addr.additionalName() );
- domContactProperty( "sn", addr.familyName() );
- domContactProperty( "namesuffix", addr.suffix() );
- domContactProperty( "personaltitle", addr.prefix() );
-
- domContactProperty( "title", addr.role() );
- domContactProperty( "o", addr.organization() );
-#if KDE_IS_VERSION(3,5,8)
- domContactProperty( "department", addr.department() );
-#else
- domContactProperty( "department", addr.custom( "KADDRESSBOOK", "X-Department" ) );
-#endif
- domContactProperty( "roomnumber", addr.custom( "KADDRESSBOOK", "X-Office" ) );
- domContactProperty( "profession", addr.custom( "KADDRESSBOOK", "X-Profession" ) );
- domContactProperty( "manager", addr.custom( "KADDRESSBOOK", "X-ManagersName" ) );
- domContactProperty( "secretarycn", addr.custom( "KADDRESSBOOK", "X-AssistantsName" ) );
-
- TQStringList emails = addr.emails();
- TQString prefemail = addr.preferredEmail();
- if ( emails.contains( prefemail ) )
- emails.remove( prefemail );
- emails.prepend( prefemail );
- if ( emails.count() > 0 ) {
- domContactProperty( "email1", emails[0] );
- }
- if ( emails.count() > 1 ) {
- domContactProperty( "email2", emails[1] );
- }
- if ( emails.count() > 2 ) {
- domContactProperty( "email3", emails[2] );
- }
-
- // No value for "personalHomePage"
- domContactProperty( "businesshomepage", addr.url().url() );
-
- TQString fburl = KCal::FreeBusyUrlStore::self()->readUrl( addr.preferredEmail() );
- if ( !fburl.isEmpty() ) {
- domContactProperty( "fburl", fburl );
- }
-
-/* FIXME: This doesn't work!
- TQStringList cats = addr.categories();
- if ( cats.isEmpty() ) {
- TQDomElement catsnode = WebdavHandler::addElementNS( doc, prop,
- "urn:schemas-microsoft-com:office:office", "Keywords" );
- for ( TQStringList::Iterator it = cats.begin(); it != cats.end(); ++it ) {
- WebdavHandler::addElementNS( doc, catsnode, "xml:", "v", *it );
- }
- } else {
-// TQDomElement catsnode = addProperty( doc, prop,
-// "urn:schemas-microsoft-com:office:office", "Keywords", "" );
- }*/
-
- // Exchange sentitivity values:
- // 0 None, 1 Personal, 2 Private, 3 Company Confidential
- TQString value;
- switch ( addr.secrecy().type() ) {
- case KABC::Secrecy::Private: value = "2"; break;
- case KABC::Secrecy::Confidential: value = "3"; break;
- default: value = "0";
- }
- domDavProperty( "sensitivity", value );
-
- // Phone numbers
- domPhoneProperty( "telephoneNumber", PhoneNumber::Work );
-// domPhoneProperty( "telephonenumber2", PhoneNumber::Work );
- domPhoneProperty( "officetelephonenumber", PhoneNumber::Work );
-// domPhoneProperty( "office2telephonenumber", PhoneNumber::Work );
-// domPhoneProperty( "secretaryphone", PhoneNumber::Work );
-// domPhoneProperty( "organizationmainphone", PhoneNumber::Work );
- domPhoneProperty( "otherTelephone", 0 );
- domPhoneProperty( "homePhone", PhoneNumber::Home );
-// domPhoneProperty( "homephone2", PhoneNumber::Home );
- domPhoneProperty( "mobile", PhoneNumber::Cell );
- domPhoneProperty( "othermobile", PhoneNumber::Cell | PhoneNumber::Home );
- domPhoneProperty( "facsimiletelephonenumber", PhoneNumber::Fax );
- domPhoneProperty( "homefax", PhoneNumber::Fax | PhoneNumber::Home );
- domPhoneProperty( "otherfax", PhoneNumber::Fax | PhoneNumber::Work );
- domPhoneProperty( "pager", PhoneNumber::Pager | PhoneNumber::Work );
- domPhoneProperty( "otherpager", PhoneNumber::Pager );
- domPhoneProperty( "internationalisdnnumber", PhoneNumber::Isdn );
- domPhoneProperty( "callbackphone", PhoneNumber::Msg );
- domPhoneProperty( "telexnumber", PhoneNumber::Bbs );
- domPhoneProperty( "ttytddphone", PhoneNumber::Pcs );
-
-
-// work address:
- Address workaddr = addr.address( Address::Work | Address::Pref );
- if ( !workaddr.isEmpty() ) {
- domContactProperty( "street", workaddr.street() );
- domContactProperty( "postofficebox", workaddr.postOfficeBox() );
- domContactProperty( "l", workaddr.locality() );
- domContactProperty( "postalcode", workaddr.postalCode() );
- domContactProperty( "st", workaddr.region() );
- domContactProperty( "co", workaddr.country() );
- // domContactProperty( "c", workaddr.countryCode() );
- }
-
- // home address:
- Address homeaddr = addr.address( Address::Home );
- if ( !homeaddr.isEmpty() ) {
- domContactProperty( "homeStreet", homeaddr.street() );
- domContactProperty( "homepostofficebox", homeaddr.postOfficeBox() );
- domContactProperty( "homeCity", homeaddr.locality() );
- domContactProperty( "homePostalCode", homeaddr.postalCode() );
- domContactProperty( "homeState", homeaddr.region() );
- domContactProperty( "homeCountry", homeaddr.country() );
- // domContactProperty( "homeCountrycode", homeaddr.countryCode() );
- }
-
- // mailing address:
- // Exchange doesn't support writing/changing the mailing address fields
-/* Address mailingaddr = addr.address( Address::Postal );
- if ( !mailingaddr.isEmpty() ) {
- domContactProperty( "mailingstreet", mailingaddr.street() );
- domContactProperty( "mailingpostofficebox", mailingaddr.postOfficeBox() );
- domContactProperty( "mailingcity", mailingaddr.locality() );
- domContactProperty( "mailingpostalcode", mailingaddr.postalCode() );
- domContactProperty( "mailingstate", mailingaddr.region() );
- domContactProperty( "mailingcountry", mailingaddr.country() );
- // domContactProperty( "mailingcountrycode", mailingaddr.countryCode() );
- }*/
-
- // other address:
- Address otheraddr = addr.address( 0 );
- if ( !otheraddr.isEmpty() ) {
- domContactProperty( "otherstreet", otheraddr.street() );
- domContactProperty( "otherpostofficebox", otheraddr.postOfficeBox() );
- domContactProperty( "othercity", otheraddr.locality() );
- domContactProperty( "otherpostalcode", otheraddr.postalCode() );
- domContactProperty( "otherstate", otheraddr.region() );
- domContactProperty( "othercountry", otheraddr.country() );
- // domContactProperty( "othercountrycode", otheraddr.countryCode() );
- }
-
-
- domContactProperty( "nickname", addr.nickName() );
- domContactProperty( "spousecn", addr.custom( "KADDRESSBOOK", "X-SpousesName" ) );
-
- // TODO: Birthday and Anniversary:
- // FIXME: Exchange uses the date in the form 8/13, i.e. possibly without a
- // year! How shall I deal with this?
-/* TQDate dt = addr.birthday().date();
- TQString str = (dt.isValid())?(dt.toString( TQt::ISODate )):(TQString());
- if ( !str.isEmpty() ) {
- TQDomElement el = domContactProperty( "bday", str );
- el.setAttribute( "b:dt", "date" );
- }
- dt = TQDate::fromString( addr.custom( "KADDRESSBOOK", "X-Anniversary" ), TQt::ISODate );
- str = (dt.isValid())?(dt.toString( TQt::ISODate )):(TQString());
- if ( !str.isEmpty() ) {
- TQDomElement el = domContactProperty( "weddinganniversary", str );
- el.setAttribute( "b:dt", "date" );
- }*/
-
-// ? TODO: timeZone()
-/*
- KABC::Geo geo = addr.geo();
- if ( geo.isValid() ) {
- // TODO: Do we need to set any other attribute to make it a float?
- TQDomAttr att_cal = doc.createAttribute( "xmlns:cal" );
- att_cal.setValue( "urn:schemas:calendar:" );
- doc.documentElement().setAttributeNode( att_cal );
- TQDomElement el = domCalendarProperty( "geolatitude", TQString::number( geo.latitude() ) );
- el.setAttribute( "b:dt", "float" );
- el = domCalendarProperty( "geolongitude", TQString::number( geo.longitude() ) );
- el.setAttribute( "b:dt", "float" );
- }
-*/
- domContactProperty( "textdescription", addr.note() );
-
- // TODO:usercertificate
- // TODO: custom fields
-kdDebug()<<"DOM document: "<<doc.toString() << endl;
-
- return doc;
-}
-#undef domDavProperty
-#undef domProperty
-#undef domContactProperty
-#undef domPhoneProperty