diff options
Diffstat (limited to 'tderesources/lib/addressbookadaptor.cpp')
-rw-r--r-- | tderesources/lib/addressbookadaptor.cpp | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/tderesources/lib/addressbookadaptor.cpp b/tderesources/lib/addressbookadaptor.cpp new file mode 100644 index 000000000..8cc28f67a --- /dev/null +++ b/tderesources/lib/addressbookadaptor.cpp @@ -0,0 +1,134 @@ +/* + This file is part of tdepim. + + Copyright (c) 2004 Cornelius Schumacher <schumacher@kde.org> + Copyright (c) 2004 Till Adam <adam@kde.org> + Copyright (c) 2005 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 "addressbookadaptor.h" + +#include <kabc/addressee.h> +#include <kabc/vcardconverter.h> +#include <libtdepim/kabcresourcecached.h> +#include <kio/job.h> + + +using namespace KABC; + + +AddressBookUploadItem::AddressBookUploadItem( + KPIM::GroupwareDataAdaptor *adaptor, + KABC::Addressee addr, + GroupwareUploadItem::UploadType type ) + : GroupwareUploadItem( type ) +{ + mItemType = KPIM::FolderLister::Contact; + setUrl( addr.custom( adaptor->identifier(), "storagelocation" ) ); + setUid( addr.uid() ); + KABC::VCardConverter vcard; +#if defined(KABC_VCARD_ENCODING_FIX) + setData( vcard.createVCardRaw( addr ) ); +#else + setData( vcard.createVCard( addr ) ); +#endif +} + + + +AddressBookAdaptor::AddressBookAdaptor() +{ +} + +TQString AddressBookAdaptor::mimeType() const +{ + return "text/x-vcard"; +} + +bool AddressBookAdaptor::localItemExists( const TQString &localId ) +{ + KABC::Addressee a = mResource->findByUid( localId ); + return !a.isEmpty(); +} + +bool AddressBookAdaptor::localItemHasChanged( const TQString &localId ) +{ + KABC::Addressee::List addressees = mResource->deletedAddressees(); + KABC::Addressee::List::ConstIterator it; + for( it = addressees.begin(); it != addressees.end(); ++it ) { + if ( (*it).uid() == localId ) return true; + } + + addressees = mResource->changedAddressees(); + for( it = addressees.begin(); it != addressees.end(); ++it ) { + if ( (*it).uid() == localId ) return true; + } + + return false; +} + + +void AddressBookAdaptor::deleteItem( const TQString &localId ) +{ + KABC::Addressee a = mResource->findByUid( localId ); + if ( !a.isEmpty() ) { + mResource->removeAddressee( a ); + mResource->clearChange( a.uid() ); + } +} + +void AddressBookAdaptor::addItem( KABC::Addressee addr ) +{ + if ( !addr.isEmpty() ) { + addr.setResource( mResource ); + mResource->insertAddressee( addr ); + clearChange( addr.uid() ); + } +} + +void AddressBookAdaptor::addressbookItemDownloaded( KABC::Addressee addr, + const TQString &newLocalId, const KURL &remoteId, const TQString &fingerprint, + const TQString &storagelocation ) +{ + // remove the currently existing item from the cache + deleteItem( newLocalId ); + TQString localId = idMapper()->localId( remoteId.path() ); + if ( !localId.isEmpty() ) deleteItem( localId ); + + // add the new item + addr.insertCustom( identifier(), "storagelocation", storagelocation ); + if ( !localId.isEmpty() ) addr.setUid( localId ); + addItem( addr ); + + // update the fingerprint and the ids in the idMapper + idMapper()->removeRemoteId( localId ); + idMapper()->removeRemoteId( newLocalId ); + emit itemDownloaded( addr.uid(), remoteId, fingerprint ); +} + + +void AddressBookAdaptor::clearChange( const TQString &uid ) +{ + mResource->clearChange( uid ); +} + +KPIM::GroupwareUploadItem *AddressBookAdaptor::newUploadItem( + KABC::Addressee addr, KPIM::GroupwareUploadItem::UploadType type ) +{ + return new AddressBookUploadItem( this, addr, type ); +} |