You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
3.9 KiB
135 lines
3.9 KiB
/*
|
|
This file is part of kdepim.
|
|
|
|
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 <libkdepim/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 );
|
|
}
|