summaryrefslogtreecommitdiffstats
path: root/kresources/lib/addressbookadaptor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kresources/lib/addressbookadaptor.cpp')
-rw-r--r--kresources/lib/addressbookadaptor.cpp130
1 files changed, 130 insertions, 0 deletions
diff --git a/kresources/lib/addressbookadaptor.cpp b/kresources/lib/addressbookadaptor.cpp
new file mode 100644
index 000000000..f698e5430
--- /dev/null
+++ b/kresources/lib/addressbookadaptor.cpp
@@ -0,0 +1,130 @@
+/*
+ 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;
+ setData( vcard.createVCard( addr ) );
+}
+
+
+
+AddressBookAdaptor::AddressBookAdaptor()
+{
+}
+
+QString AddressBookAdaptor::mimeType() const
+{
+ return "text/x-vcard";
+}
+
+bool AddressBookAdaptor::localItemExists( const QString &localId )
+{
+ KABC::Addressee a = mResource->findByUid( localId );
+ return !a.isEmpty();
+}
+
+bool AddressBookAdaptor::localItemHasChanged( const QString &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 QString &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 QString &newLocalId, const KURL &remoteId, const QString &fingerprint,
+ const QString &storagelocation )
+{
+ // remove the currently existing item from the cache
+ deleteItem( newLocalId );
+ QString 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 QString &uid )
+{
+ mResource->clearChange( uid );
+}
+
+KPIM::GroupwareUploadItem *AddressBookAdaptor::newUploadItem(
+ KABC::Addressee addr, KPIM::GroupwareUploadItem::UploadType type )
+{
+ return new AddressBookUploadItem( this, addr, type );
+}