summaryrefslogtreecommitdiffstats
path: root/kresources/slox/kabcresourceslox.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kresources/slox/kabcresourceslox.cpp')
-rw-r--r--kresources/slox/kabcresourceslox.cpp684
1 files changed, 0 insertions, 684 deletions
diff --git a/kresources/slox/kabcresourceslox.cpp b/kresources/slox/kabcresourceslox.cpp
deleted file mode 100644
index b83c0b957..000000000
--- a/kresources/slox/kabcresourceslox.cpp
+++ /dev/null
@@ -1,684 +0,0 @@
-/*
- This file is part of tdepim.
-
- Copyright (c) 2004 Cornelius Schumacher <schumacher@kde.org>
- Copyright (c) 2005 Volker Krause <volker.krause@rwth-aachen.de>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program 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 General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-*/
-
-#include <tqapplication.h>
-
-#include <kabc/picture.h>
-#include <kconfig.h>
-#include <kdebug.h>
-#include <klocale.h>
-#include <kmdcodec.h>
-#include <kstandarddirs.h>
-#include <kstringhandler.h>
-#include <libtdepim/kpimprefs.h>
-#include <libtdepim/progressmanager.h>
-#include <kio/davjob.h>
-
-#include "webdavhandler.h"
-#include "sloxaccounts.h"
-#include "kabcsloxprefs.h"
-
-#include "kabcresourceslox.h"
-
-using namespace KABC;
-
-ResourceSlox::ResourceSlox( const TDEConfig *config )
- : ResourceCached( config ), SloxBase( this )
-{
- init();
-
- mPrefs->addGroupPrefix( identifier() );
-
- if ( config ) {
- readConfig( config );
- } else {
- setResourceName( i18n( "OpenXchange Server" ) );
- }
-}
-
-ResourceSlox::ResourceSlox( const KURL &url,
- const TQString &user, const TQString &password )
- : ResourceCached( 0 ), SloxBase( this )
-{
- init();
-
- mPrefs->addGroupPrefix( identifier() );
-
- mPrefs->setUrl( url.url() );
- mPrefs->setUser( user );
- mPrefs->setPassword( password );
-}
-
-void ResourceSlox::init()
-{
- mPrefs = new SloxPrefs;
- mWebdavHandler.setResource( this );
-
- mDownloadJob = 0;
- mUploadJob = 0;
- mDownloadProgress = 0;
- mUploadProgress = 0;
-
- // phone number mapping for SLOX
- mPhoneNumberSloxMap[PhoneNumber::Work] << "phone" << "phone2";
- mPhoneNumberSloxMap[PhoneNumber::Home] << "privatephone" << "privatephone2";
- mPhoneNumberSloxMap[PhoneNumber::Cell | PhoneNumber::Work] << "mobile" << "mobile2";
- mPhoneNumberSloxMap[PhoneNumber::Cell | PhoneNumber::Home] << "privatemobile" << "privatemobile2";
- mPhoneNumberSloxMap[PhoneNumber::Fax | PhoneNumber::Work] << "fax" << "fax2";
- mPhoneNumberSloxMap[PhoneNumber::Fax | PhoneNumber::Home] << "privatefax" << "privatefax2";
-
- // phone number mapping for OX (mapping partly taken from Kolab)
- mPhoneNumberOxMap[PhoneNumber::Work] << "phone_business" << "phone_business2";
- mPhoneNumberOxMap[PhoneNumber::Home] << "phone_home" << "phone_home2";
- mPhoneNumberOxMap[PhoneNumber::Cell] << "mobile1"<< "mobile2";
- mPhoneNumberOxMap[PhoneNumber::Fax | PhoneNumber::Work] << "fax_business";
- mPhoneNumberOxMap[PhoneNumber::Fax | PhoneNumber::Home] << "fax_home";
- mPhoneNumberOxMap[PhoneNumber::Fax] << "fax_other";
- mPhoneNumberOxMap[PhoneNumber::Car] << "phone_car";
- mPhoneNumberOxMap[PhoneNumber::Isdn] << "isdn";
- mPhoneNumberOxMap[PhoneNumber::Pager] << "pager";
- mPhoneNumberOxMap[PhoneNumber::Pref] << "primary";
- mPhoneNumberOxMap[PhoneNumber::Voice] << "callback";
- mPhoneNumberOxMap[PhoneNumber::Video] << "radio";
- mPhoneNumberOxMap[PhoneNumber::Bbs] << "tty_tdd";
- mPhoneNumberOxMap[PhoneNumber::Modem] << "telex";
- mPhoneNumberOxMap[PhoneNumber::Pcs] << "phone_assistant";
- mPhoneNumberOxMap[PhoneNumber::Msg] << "phone_company";
-}
-
-ResourceSlox::~ResourceSlox()
-{
- kdDebug() << "KABC::~ResourceSlox()" << endl;
-
- if ( mDownloadJob ) mDownloadJob->kill();
-
- delete mPrefs;
-
- kdDebug() << "KABC::~ResourceSlox() done" << endl;
-}
-
-void ResourceSlox::readConfig( const TDEConfig * )
-{
- mPrefs->readConfig();
-}
-
-void ResourceSlox::writeConfig( TDEConfig *config )
-{
- kdDebug() << "ResourceSlox::writeConfig() " << endl;
- kdDebug() << mPrefs->url() << endl;
-
- Resource::writeConfig( config );
-
- mPrefs->writeConfig();
-}
-
-Ticket *ResourceSlox::requestSaveTicket()
-{
- if ( !addressBook() ) {
- kdDebug(5700) << "no addressbook" << endl;
- return 0;
- }
-
- return createTicket( this );
-}
-
-void ResourceSlox::releaseSaveTicket( Ticket *ticket )
-{
- delete ticket;
-}
-
-bool ResourceSlox::doOpen()
-{
- return true;
-}
-
-void ResourceSlox::doClose()
-{
- cancelDownload();
- cancelUpload();
-}
-
-bool ResourceSlox::load()
-{
- kdDebug() << "KABC::ResourceSlox::load()" << endl;
-
-#if 0
- return asyncLoad();
-#else
- kdDebug() << "KABC::ResourceSlox::load() is a nop." << endl;
- return true;
-#endif
-}
-
-bool ResourceSlox::asyncLoad()
-{
- kdDebug() << "KABC::ResourceSlox::asyncLoad()" << endl;
-
- if ( mDownloadJob ) {
- kdDebug() << "KABC::ResourceSlox::asyncLoad(): Loading still in progress."
- << endl;
- return true;
- }
-
- loadCache();
- clearChanges();
-
- KURL url = mPrefs->url();
- url.setPath( "/servlet/webdav.contacts/" );
- url.setUser( mPrefs->user() );
- url.setPass( mPrefs->password() );
-
- TQString lastsync = "0";
- if ( mPrefs->useLastSync() ) {
- TQDateTime dt = mPrefs->lastSync();
- if ( dt.isValid() )
- lastsync = WebdavHandler::qDateTimeToSlox( dt.addDays( -1 ) );
- }
-
- TQDomDocument doc;
- TQDomElement root = WebdavHandler::addDavElement( doc, doc, "propfind" );
- TQDomElement prop = WebdavHandler::addDavElement( doc, root, "prop" );
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( LastSync ), lastsync );
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( FolderId ), mPrefs->folderId() );
- if ( type() == "ox" ) {
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( ObjectType ), "NEW_AND_MODIFIED" );
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( ObjectType ), "DELETED" );
- } else
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( ObjectType ), "all" );
-
- kdDebug() << "REQUEST CONTACTS: \n" << doc.toString( 2 ) << endl;
-
- mDownloadJob = TDEIO::davPropFind( url, doc, "0", false );
- connect( mDownloadJob, TQT_SIGNAL( result( TDEIO::Job * ) ),
- TQT_SLOT( slotResult( TDEIO::Job * ) ) );
- connect( mDownloadJob, TQT_SIGNAL( percent( TDEIO::Job *, unsigned long ) ),
- TQT_SLOT( slotProgress( TDEIO::Job *, unsigned long ) ) );
-
- mDownloadProgress = KPIM::ProgressManager::instance()->createProgressItem(
- KPIM::ProgressManager::getUniqueID(), i18n("Downloading contacts") );
- connect( mDownloadProgress,
- TQT_SIGNAL( progressItemCanceled( KPIM::ProgressItem * ) ),
- TQT_SLOT( cancelDownload() ) );
-
- mPrefs->setLastSync( TQDateTime::currentDateTime() );
-
- return true;
-}
-
-void ResourceSlox::slotResult( TDEIO::Job *job )
-{
- kdDebug() << "ResourceSlox::slotResult()" << endl;
-
- if ( job->error() ) {
- job->showErrorDialog( 0 );
- } else {
- kdDebug() << "ResourceSlox::slotResult() success" << endl;
-
- TQDomDocument doc = mDownloadJob->response();
-
- mWebdavHandler.log( doc.toString( 2 ) );
-
- TQValueList<SloxItem> items = WebdavHandler::getSloxItems( this, doc );
-
- bool changed = false;
-
- TQValueList<SloxItem>::ConstIterator it;
- for( it = items.begin(); it != items.end(); ++it ) {
- SloxItem item = *it;
- TQString uid = "kresources_slox_kabc_" + item.sloxId;
- if ( item.status == SloxItem::Delete ) {
- TQMap<TQString,Addressee>::Iterator it;
- it = mAddrMap.find( uid );
- if ( it != mAddrMap.end() ) {
- mAddrMap.remove( it );
- changed = true;
- }
- } else if ( item.status == SloxItem::Create ) {
- Addressee a;
- a.setUid( uid );
-
- mWebdavHandler.clearSloxAttributeStatus();
-
- TQDomNode n;
- for( n = item.domNode.firstChild(); !n.isNull(); n = n.nextSibling() ) {
- TQDomElement e = n.toElement();
- mWebdavHandler.parseSloxAttribute( e );
- parseContactAttribute( e, a );
- }
-
- mWebdavHandler.setSloxAttributes( a );
-
- a.setResource( this );
- a.setChanged( false );
-
- mAddrMap.replace( a.uid(), a );
-
- // TODO: Do we need to try to associate addressees with slox accounts?
-
- changed = true;
- }
- }
-
- clearChanges();
- saveCache();
- }
-
- mDownloadJob = 0;
- mDownloadProgress->setComplete();
- mDownloadProgress = 0;
-
- emit loadingFinished( this );
-}
-
-void ResourceSlox::slotUploadResult( TDEIO::Job *job )
-{
- kdDebug() << "ResourceSlox::slotUploadResult()" << endl;
-
- if ( job->error() ) {
- job->showErrorDialog( 0 );
- } else {
- kdDebug() << "ResourceSlox::slotUploadResult() success" << endl;
-
- TQDomDocument doc = mUploadJob->response();
- kdDebug() << k_funcinfo << "Upload result: " << endl;
- kdDebug() << doc.toString() << endl;
-
- TQValueList<SloxItem> items = WebdavHandler::getSloxItems( this, doc );
-
- TQValueList<SloxItem>::ConstIterator it;
- for( it = items.begin(); it != items.end(); ++it ) {
- SloxItem item = *it;
- if ( !item.response.contains( "200" ) ) {
- savingError( this, item.response + "\n" + item.responseDescription );
- continue;
- }
- if ( item.status == SloxItem::New ) {
- TQMap<TQString,Addressee>::Iterator search_res;
- search_res = mAddrMap.find( item.clientId );
- if ( search_res != mAddrMap.end() ) {
- // use the id provided by the server
- Addressee a = *search_res;
- mAddrMap.remove( search_res );
- a.setUid( "kresources_slox_kabc_" + item.sloxId );
- a.setResource( this );
- a.setChanged( false );
- mAddrMap.replace( a.uid(), a );
- saveCache();
- }
- }
- }
- }
-
- clearChange( mUploadAddressee );
-
- mUploadJob = 0;
- mUploadProgress->setComplete();
- mUploadProgress = 0;
-
- uploadContacts();
-}
-
-void ResourceSlox::parseContactAttribute( const TQDomElement &e, Addressee &a )
-{
- TQString text = decodeText( e.text() );
- if ( text.isEmpty() ) return;
- TQString tag = e.tagName();
- int pnType = 0;
-
- if ( tag == fieldName( Birthday ) ) {
- TQDateTime dt = WebdavHandler::sloxToTQDateTime( text );
- a.setBirthday( dt.date() );
- } else if ( tag == fieldName( Role ) ) {
- a.setRole( text );
- } else if ( tag == "salutation" ) { // what's this in OX?
- a.setPrefix( text );
- } else if ( tag == fieldName( Title ) ) {
- a.setTitle( text );
- } else if ( tag == fieldName( Organization ) ) {
- a.setOrganization( text );
- } else if ( tag == fieldName( Department ) ) {
-#if KDE_IS_VERSION(3,5,8)
- a.setDepartment( text );
-#else
- a.insertCustom( "KADDRESSBOOK", "X-Department", text );
-#endif
- } else if ( tag == fieldName( FamilyName ) ) {
- a.setFamilyName( text );
- } else if ( tag == fieldName( GivenName) ) {
- a.setGivenName( text );
- } else if ( tag == fieldName( SecondName ) ) {
- a.setAdditionalName( text );
- } else if ( tag == fieldName( DisplayName ) ) {
- a.setFormattedName( text );
- } else if ( tag == fieldName( Suffix ) ) {
- a.setSuffix( text );
- } else if ( tag == fieldName( PrimaryEmail ) ) {
- a.insertEmail( text, true );
- } else if ( (pnType = phoneNumberType( tag )) ) {
- a.insertPhoneNumber( PhoneNumber( text, pnType ) );
- } else if ( tag == fieldName( Comment ) ) {
- a.setNote( text );
- } else if ( tag == fieldName( SecondaryEmail1 ) || tag == fieldName( SecondaryEmail2 ) ||
- tag == fieldName( SecondaryEmail3 ) ) {
- a.insertEmail( text );
- } else if ( tag == fieldName( Url ) ) {
- a.setUrl( text );
- } else if ( tag == fieldName( Image ) ) {
- TQByteArray decodedPicture;
- KCodecs::base64Decode( text.utf8(), decodedPicture );
- a.setPhoto( Picture( TQImage( decodedPicture ) ) );
- } else if ( tag == fieldName( NickName ) ) {
- a.setNickName( text );
- } else if ( tag == fieldName( InstantMsg ) ) {
- a.insertCustom( "KADDRESSBOOK", "X-IMAddress", text );
- } else if ( tag == fieldName( Office ) ) {
- a.insertCustom( "KADDRESSBOOK", "X-Office", text );
- } else if ( tag == fieldName( Profession ) ) {
- a.insertCustom( "KADDRESSBOOK", "X-Profession", text );
- } else if ( tag == fieldName( ManagersName ) ) {
- a.insertCustom( "KADDRESSBOOK", "X-ManagersName", text );
- } else if ( tag == fieldName( AssistantsName ) ) {
- a.insertCustom( "KADDRESSBOOK", "X-AssistantsName", text );
- } else if ( tag == fieldName( SpousesName ) ) {
- a.insertCustom( "KADDRESSBOOK", "X-SpousesName", text );
- } else if ( tag == fieldName( Anniversary ) ) {
- TQDateTime dt = WebdavHandler::sloxToTQDateTime( text );
- a.insertCustom( "KADDRESSBOOK", "X-Anniversary", dt.toString( Qt::ISODate ) );
- } else if ( tag == fieldName( Categories ) ) {
- a.setCategories( TQStringList::split( TQRegExp(",\\s*"), text ) );
- } else if ( type() == "ox" ) { // FIXME: Address reading is missing for SLOX
- // read addresses
- Address addr;
- if ( tag.startsWith( fieldName( BusinessPrefix ) ) ) {
- addr = a.address( KABC::Address::Work );
- } else if ( tag.startsWith( fieldName( OtherPrefix ) ) ) {
- addr = a.address( 0 );
- } else {
- addr = a.address( KABC::Address::Home );
- }
- if ( tag.endsWith( fieldName( Street ) ) ) {
- addr.setStreet( text );
- } else if ( tag.endsWith( fieldName( PostalCode ) ) ) {
- addr.setPostalCode( text );
- } else if ( tag.endsWith( fieldName( City ) ) ) {
- addr.setLocality( text );
- } else if ( tag.endsWith( fieldName( State ) ) ) {
- addr.setRegion( text );
- } else if ( tag.endsWith( fieldName( Country ) ) ) {
- addr.setCountry( text );
- }
- a.insertAddress( addr );
- }
-}
-
-int ResourceSlox::phoneNumberType( const TQString &fieldName ) const
-{
- TQMap<int, TQStringList> pnmap;
- if ( type() == "ox" )
- pnmap = mPhoneNumberOxMap;
- else
- pnmap = mPhoneNumberSloxMap;
- TQMap<int, TQStringList>::ConstIterator it;
- for ( it = pnmap.begin(); it != pnmap.end(); ++it ) {
- TQStringList l = it.data();
- TQStringList::ConstIterator it2;
- for ( it2 = l.begin(); it2 != l.end(); ++it2 )
- if ( (*it2) == fieldName )
- return it.key();
- }
- return 0;
-}
-
-bool ResourceSlox::save( Ticket* )
-{
- kdDebug() << k_funcinfo << endl;
-
- if ( readOnly() || !hasChanges() || type() != "ox" ) {
- emit savingFinished( this );
- return true;
- }
-
- if ( mDownloadJob ) {
- kdWarning() << k_funcinfo << "download still in progress" << endl;
- return false;
- }
- if ( mUploadJob ) {
- kdWarning() << k_funcinfo << "upload still in progress" << endl;
- return false;
- }
-
- saveCache();
- uploadContacts();
- return true;
-}
-
-bool ResourceSlox::asyncSave( Ticket* )
-{
- return false; // readonly
-}
-
-void ResourceSlox::uploadContacts()
-{
- TQDomDocument doc;
- TQDomElement root = WebdavHandler::addDavElement( doc, doc, "propertyupdate" );
- TQDomElement set = WebdavHandler::addDavElement( doc, root, "set" );
- TQDomElement prop = WebdavHandler::addDavElement( doc, set, "prop" );
-
- bool isDelete = false;
-
- KABC::Addressee::List addedAddr = addedAddressees();
- KABC::Addressee::List changedAddr = changedAddressees();
- KABC::Addressee::List deletedAddr = deletedAddressees();
-
- if ( !addedAddr.isEmpty() ) {
- mUploadAddressee = addedAddr.first();
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( ClientId ), mUploadAddressee.uid() );
- } else if ( !changedAddr.isEmpty() ) {
- mUploadAddressee = changedAddr.first();
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( ObjectId ),
- mUploadAddressee.uid().remove( 0, sizeof("kresources_slox_kabc_") - 1) );
- } else if ( !deletedAddr.isEmpty() ) {
- mUploadAddressee = deletedAddr.first();
- isDelete = true;
- } else {
- kdDebug() << k_funcinfo << "Upload finished." << endl;
- emit savingFinished( this );
- return;
- }
-
- if ( !isDelete ) {
- createAddresseeFields( doc, prop, mUploadAddressee );
- } else {
- TQString tmp_uid = mUploadAddressee.uid().remove( 0, sizeof("kresources_slox_kabc_") - 1); // remove prefix from uid
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( ObjectId ), tmp_uid );
- WebdavHandler::addSloxElement( this, doc, prop, "method", "DELETE" );
- }
-
- kdDebug() << k_funcinfo << doc.toString() << endl;
-
- KURL url = mPrefs->url();
- url.setPath( "/servlet/webdav.contacts/" );
- url.setUser( mPrefs->user() );
- url.setPass( mPrefs->password() );
-
- mUploadJob = TDEIO::davPropPatch( url, doc, false );
- connect( mUploadJob, TQT_SIGNAL( result( TDEIO::Job * ) ),
- TQT_SLOT( slotUploadResult( TDEIO::Job * ) ) );
- connect( mUploadJob, TQT_SIGNAL( percent( TDEIO::Job *, unsigned long ) ),
- TQT_SLOT( slotProgress( TDEIO::Job *, unsigned long ) ) );
-
- mUploadProgress = KPIM::ProgressManager::instance()->createProgressItem(
- KPIM::ProgressManager::getUniqueID(), i18n("Uploading contacts") );
- connect( mUploadProgress,
- TQT_SIGNAL( progressItemCanceled( KPIM::ProgressItem * ) ),
- TQT_SLOT( cancelUpload() ) );
-}
-
-void ResourceSlox::createAddresseeFields( TQDomDocument &doc, TQDomElement &prop,
- const Addressee &a )
-{
- // choose addressbook
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( FolderId ), mPrefs->folderId() );
-
- // person
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( GivenName ), a.givenName() );
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( FamilyName ), a.familyName() );
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( Title ), a.title() );
- if ( !a.birthday().isNull() )
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( Birthday ),
- WebdavHandler::qDateTimeToSlox( a.birthday() ) );
- else
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( Birthday ) );
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( Role ), a.role() );
-#if KDE_IS_VERSION(3,5,8)
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( Department ),
- a.department( ) );
-#else
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( Department ),
- a.custom( "KADDRESSBOOK", "X-Department" ) );
-#endif
- if ( type() == "ox" ) { // OX only fields
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( DisplayName ), a.formattedName() );
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( SecondName ), a.additionalName() );
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( Suffix ), a.suffix() );
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( Organization ), a.organization() );
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( NickName ), a.nickName() );
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( InstantMsg ),
- a.custom( "KADDRESSBOOK", "X-IMAddress" ) );
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( Office ),
- a.custom( "KADDRESSBOOK", "X-Office" ) );
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( Profession ),
- a.custom( "KADDRESSBOOK", "X-Profession" ) );
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( ManagersName ),
- a.custom( "KADDRESSBOOK", "X-ManagersName" ) );
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( AssistantsName ),
- a.custom( "KADDRESSBOOK", "X-AssistantsName" ) );
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( SpousesName ),
- a.custom( "KADDRESSBOOK", "X-SpousesName" ) );
- TQString anniversary = a.custom( "KADDRESSBOOK", "X-Anniversary" );
- if ( !anniversary.isEmpty() )
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( Anniversary ),
- WebdavHandler::qDateTimeToSlox( TQDateTime::fromString( anniversary, Qt::ISODate ).date() ) );
- else
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( Anniversary ) );
- }
-
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( Url ), a.url().url() );
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( Comment ), a.note() );
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( Categories ), a.categories().join( ", " ) );
-
- // emails
- TQStringList email_list = a.emails();
- TQStringList::const_iterator emails_it = email_list.begin();
- if ( emails_it != email_list.end() )
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( PrimaryEmail ), *(emails_it++) );
- if ( emails_it != email_list.end() )
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( SecondaryEmail1 ), *(emails_it++) );
- if ( emails_it != email_list.end() )
- WebdavHandler::addSloxElement( this, doc, prop, fieldName( SecondaryEmail2 ), *(emails_it++) );
-
- // phone numbers
- PhoneNumber::List pnlist = a.phoneNumbers();
- TQMap<int, TQStringList> pnSaveMap;
- if ( type() == "ox" )
- pnSaveMap = mPhoneNumberOxMap;
- else
- pnSaveMap = mPhoneNumberSloxMap;
- for ( PhoneNumber::List::ConstIterator it = pnlist.begin() ; it != pnlist.end(); ++it ) {
- if ( pnSaveMap.contains( (*it).type() ) ) {
- TQStringList l = pnSaveMap[(*it).type()];
- TQString fn = l.first();
- l.remove( l.begin() );
- if ( !l.isEmpty() )
- pnSaveMap[(*it).type()] = l;
- else
- pnSaveMap.remove( (*it).type() );
- WebdavHandler::addSloxElement( this, doc, prop, fn, (*it).number() );
- } else
- kdDebug() << k_funcinfo << "Can't save phone number " << (*it).number() << " of type " << (*it).type() << endl;
- }
- // send empty fields for the remaining ohone number fields
- // it's not possible to delete phone numbers otherwise
- for ( TQMap<int, TQStringList>::ConstIterator it = pnSaveMap.begin(); it != pnSaveMap.end(); ++it ) {
- TQStringList l = it.data();
- for ( TQStringList::ConstIterator it2 = l.begin(); it2 != l.end(); ++it2 )
- WebdavHandler::addSloxElement( this, doc, prop, (*it2) );
- }
-
- // write addresses
- createAddressFields( doc, prop, fieldName( HomePrefix ), a.address( KABC::Address::Home ) );
- if ( type() == "ox" ) {
- createAddressFields( doc, prop, fieldName( BusinessPrefix ), a.address( KABC::Address::Work ) );
- createAddressFields( doc, prop, fieldName( OtherPrefix ), a.address( 0 ) );
- }
-}
-
-void KABC::ResourceSlox::createAddressFields( TQDomDocument &doc, TQDomElement &parent,
- const TQString &prefix, const KABC::Address &addr )
-{
- WebdavHandler::addSloxElement( this, doc, parent, prefix + fieldName( Street ), addr.street() );
- WebdavHandler::addSloxElement( this, doc, parent, prefix + fieldName( PostalCode ), addr.postalCode() );
- WebdavHandler::addSloxElement( this, doc, parent, prefix + fieldName( City ), addr.locality() );
- WebdavHandler::addSloxElement( this, doc, parent, prefix + fieldName( State ), addr.region() );
- WebdavHandler::addSloxElement( this, doc, parent, prefix + fieldName( Country ), addr.country() );
-}
-
-void ResourceSlox::slotProgress( TDEIO::Job *job, unsigned long percent )
-{
- if ( mDownloadProgress && job == mDownloadJob )
- mDownloadProgress->setProgress( percent );
- else if ( mUploadProgress && job == mUploadJob )
- mUploadProgress->setProgress( percent );
-}
-
-void ResourceSlox::cancelDownload()
-{
- if ( mDownloadJob ) mDownloadJob->kill();
- mDownloadJob = 0;
- if ( mDownloadProgress ) mDownloadProgress->setComplete();
- mDownloadProgress = 0;
-}
-
-void ResourceSlox::cancelUpload()
-{
- if ( mUploadJob ) mUploadJob->kill();
- mUploadJob = 0;
- if ( mUploadProgress ) mUploadProgress->setComplete();
- mUploadProgress = 0;
-}
-
-void ResourceSlox::setReadOnly( bool b )
-{
- if ( type() == "ox" )
- KABC::Resource::setReadOnly( b );
- else
- KABC::Resource::setReadOnly( true );
-}
-
-bool ResourceSlox::readOnly() const
-{
- if ( type() == "ox" )
- return KABC::Resource::readOnly();
- else
- return true;
-}
-
-#include "kabcresourceslox.moc"