--- a/omads/omadsextensions/dsutils/contactsdatastoreextension/src/nsmlcontactsdatastoreextension_p.cpp Tue Aug 31 15:05:37 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,415 +0,0 @@
-/*
-* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Private implementation file for extended contacts adapter
-*
-*/
-
-#include <s32strm.h>
-#include <s32mem.h>
-#include <e32base.h>
-#include <badesca.h>
-#include <utf.h>
-#include <e32hashtab.h>
-#include <qcontactmanager.h>
-#include <qcontact.h>
-#include <qcontactname.h>
-#include <qcontactphonenumber.h>
-#include <qcontactsynctarget.h>
-#include <qcontacttimestamp.h>
-#include <qcontactguid.h>
-#include <qcontacttype.h>
-#include <qversitwriter.h>
-#include <qversitreader.h>
-#include <qversitcontactexporter.h>
-#include <qversitcontactimporter.h>
-#include <xqconversions.h>
-#include <QBuffer>
-#include <QMap>
-#include <nsmlcontactsdatastoreextension.h>
-#include "nsmlcontactsdatastoreextension_p.h"
-#include "nsmldebug.h"
-
-
-#ifndef __WINS__
-// This lowers the unnecessary compiler warning (armv5) to remark.
-// "Warning: #174-D: expression has no effect..." is caused by
-// DBG_ARGS8 macro in no-debug builds.
-#pragma diag_remark 174
-#endif
-
-
-/*!
- \class CNsmlContactsDataStoreExtensionPrivate
- \brief The CNsmlContactsDataStoreExtensionPrivate class provides interface
- to access the qtmobility Contacts APIs'
-
- \sa CNsmlContactsDataStoreExtensionPrivate
- */
-
-
-/*!
- * Constructor
- */
-CNsmlContactsDataStoreExtensionPrivate::CNsmlContactsDataStoreExtensionPrivate(const TDesC &manager )
-{
- _DBG_FILE("CNsmlContactsDataStoreExtensionPrivate::CNsmlContactsDataStoreExtensionPrivate: BEGIN");
-
- // Get the QString manager
- mManagerName = QString::fromUtf16(manager.Ptr(),manager.Length());
-
- DBG_ARGS(_S("CNsmlContactsDataStoreExtensionPrivate::Manager: %S"), &manager );
-
- mWriter = new QVersitWriter;
- mReader = new QVersitReader;
- mExporter = new QVersitContactExporter;
- mImporter = new QVersitContactImporter;
-
- // Instantiate the Contact Manager
- mContactManager = NULL;
- QStringList availableManagers = QContactManager::availableManagers();
-
- DBG_ARGS(_S("CNsmlContactsDataStoreExtensionPrivate::Manager Count: %d"), availableManagers.count());
-
- foreach (const QString manager, availableManagers)
- {
- if( mManagerName == manager )
- {
- _DBG_FILE("CNsmlContactsDataStoreExtensionPrivate::Got a Match");
- mContactManager = QContactManager::fromUri(QContactManager::buildUri(manager, QMap<QString, QString>()));
- }
- }
- if( mContactManager == NULL )
- {
- _DBG_FILE("CNsmlContactsDataStoreExtensionPrivate::Did Not Find a Match");
- mContactManager = new QContactManager( mManagerName );
- }
-
- _DBG_FILE("CNsmlContactsDataStoreExtensionPrivate::CNsmlContactsDataStoreExtensionPrivate: END");
-}
-
-/*!
- * Destructor
- */
-CNsmlContactsDataStoreExtensionPrivate::~CNsmlContactsDataStoreExtensionPrivate()
-{
- _DBG_FILE("CNsmlContactsDataStoreExtensionPrivate::~CNsmlContactsDataStoreExtensionPrivate: BEGIN");
-
-
- if( mContactManager )
- {
- delete mContactManager;
- mContactManager = NULL;
- }
-
- if( mWriter )
- {
- delete mWriter;
- mWriter = NULL;
- }
- if( mReader )
- {
- delete mReader;
- mReader = NULL;
- }
- if( mExporter )
- {
- delete mExporter;
- mExporter = NULL;
- }
- if( mImporter )
- {
- delete mImporter;
- mImporter = NULL;
- }
-
- _DBG_FILE("CNsmlContactsDataStoreExtensionPrivate::~CNsmlContactsDataStoreExtensionPrivate: END");
-}
-
-/*!
- * Fetch contact
- */
-TInt CNsmlContactsDataStoreExtensionPrivate::ExportContactsL( const TUid &uid, CBufBase &contactbufbase )
-{
- DBG_ARGS(_S("CNsmlContactsDataStoreExtensionPrivate::ExportContactsL: BEGIN: UID: %d"), uid);
-
- TInt error(KErrNone);
- QList<QContact> contacts;
- QBuffer contactsbuf;
- contactsbuf.open(QBuffer::ReadWrite);
- mWriter->setDevice( &contactsbuf );
- QContact contact = mContactManager->contact( uid.iUid );
- error = mContactManager->error();
- if( error != QContactManager::NoError )
- {
- DBG_ARGS(_S("CNsmlContactsDataStoreExtensionPrivate::ExportContactsL:Error %d"), error );
- return error;
- }
- contacts.append( contact );
-
- if( mExporter->exportContacts( contacts, QVersitDocument::VCard21Type ) )
- {
- QList<QVersitDocument> documents = mExporter->documents();
- mWriter->startWriting( documents );
- bool status = mWriter->waitForFinished();
- DBG_ARGS(_S("CNsmlContactsDataStoreExtensionPrivate::ExportContactsL:status %d"), status);
- HBufC8* buf = XQConversions::qStringToS60Desc8( contactsbuf.data() );
- contactbufbase.InsertL( contactbufbase.Size(), *buf );
- delete buf;
- }
- else
- {
- error = KErrGeneral;
- DBG_ARGS(_S("CNsmlContactsDataStoreExtensionPrivate::ExportContactsL:Error in exporting %d"), error );
- }
-
- TPtr8 ptrbuf(contactbufbase.Ptr(0));
- DBG_DUMP( (void*)ptrbuf.Ptr(), ptrbuf.Length(),
- _S8("CNsmlContactsDataStoreExtensionPrivate::ExportContactsL: From DB:"));
-
- _DBG_FILE("CNsmlContactsDataStoreExtensionPrivate::ExportContactsL: END");
-
- return error;
-}
-
-/*!
- * Store contact
- */
-CArrayFixFlat<TUid>* CNsmlContactsDataStoreExtensionPrivate::ImportContactsL( const TDesC8 &contactbufbase )
-{
- _DBG_FILE("CNsmlContactsDataStoreExtensionPrivate::ImportContactsL: BEGIN");
-
- DBG_DUMP((void*)contactbufbase.Ptr(), contactbufbase.Length(),
- _S8("CNsmlContactsDataStoreExtensionPrivate::ImportContactsL: To DB :"));
-
- TBool ret( ETrue );
- CArrayFixFlat<TUid>* contactItems = new(ELeave) CArrayFixFlat<TUid>(4);
- QBuffer contactsbuf;
- contactsbuf.open(QBuffer::ReadWrite);
- QByteArray bytearray((char*)contactbufbase.Ptr());
-
- contactsbuf.write(bytearray);
- contactsbuf.seek(0);
-
- mReader->setDevice(&contactsbuf);
- if (mReader->startReading() && mReader->waitForFinished())
- {
- DBG_ARGS(_S("CNsmlContactsDataStoreExtensionPrivate::Buffer Count: %d"), mReader->results().count() );
-
- QList<QContact> contacts;
- if ( mImporter->importDocuments( mReader->results() ) )
- {
- contacts = mImporter->contacts();
- QMap<int, QContactManager::Error> errorMap;
- ret = mContactManager->saveContacts( &contacts, &errorMap );
- DBG_ARGS(_S("CNsmlContactsDataStoreExtensionPrivate::Import Status: %d"), ret );
- }
- if( ret )
- {
- foreach (QContact contact, contacts )
- {
- TUint contactid = contact.id().localId();
-
- DBG_ARGS(_S("CNsmlContactsDataStoreExtensionPrivate::Contact ID: %d"), contactid );
-
- contactItems->AppendL( TUid::Uid( contactid ) );
- }
- }
-
- if( contactItems->Count() <= 0 )
- {
- delete contactItems;
- contactItems = NULL;
- }
- }
-
- _DBG_FILE("CNsmlContactsDataStoreExtensionPrivate::ImportContactsL: END");
-
- return contactItems;
-}
-
-/*!
- * Reads a Contact Details
- */
-TInt CNsmlContactsDataStoreExtensionPrivate::ReadContactL( const TUid &uid, CNsmlContactItem *contactitem )
- {
- DBG_ARGS(_S("CNsmlContactsDataStoreExtensionPrivate::ReadContactL: BEGIN ID: %d"), uid);
-
- TInt error(KErrNone);
-
- QContact contact = mContactManager->contact( uid.iUid );
- error = mContactManager->error();
- if( error != QContactManager::NoError )
- {
- DBG_ARGS(_S("CNsmlContactsDataStoreExtensionPrivate::ReadContactL:Error %d"), error );
- return error;
- }
-
- // Fetch the contact details
- QContactTimestamp timestamp = contact.detail( QContactTimestamp::DefinitionName );
- // Created Time
- DBG_ARGS(_S("CNsmlContactsDataStoreExtensionPrivate::created: %d"), timestamp.created().toTime_t () );
-
- // Last Modified Time
- DBG_ARGS(_S("CNsmlContactsDataStoreExtensionPrivate::modified: %d"), timestamp.lastModified().toTime_t () );
- contactitem->iLastModified = qTimeToS60TTime( timestamp.lastModified() );
-
- // Contact Type
- QContactType contacttype = contact.detail( QContactType::DefinitionName );
- contacttype.type();
-
- // GUID
- QContactGuid contactguid = contact.detail( QContactGuid::DefinitionName );
- contactitem->iGuid = XQConversions::qStringToS60Desc8( contactguid.guid() );
-
- // UID
- DBG_ARGS(_S("CNsmlContactsDataStoreExtensionPrivate::ReadContactL:LUID %d"), contact.localId() );
- contactitem->iUid = TUid::Uid(contact.localId());
-
- // SyncTarget
- QContactSyncTarget contactsynctarget = contact.detail( QContactSyncTarget::DefinitionName );
- contactsynctarget.syncTarget();
-
- _DBG_FILE("CNsmlContactsDataStoreExtensionPrivate::ReadContactL: END");
-
- return error;
- }
-
-/*!
- * Delete a contact
- */
-TBool CNsmlContactsDataStoreExtensionPrivate::DeleteContactL( const TUid &uid )
- {
- _DBG_FILE("CNsmlContactsDataStoreExtensionPrivate::DeleteContactL: BEGIN");
-
- TBool ret = mContactManager->removeContact( uid.iUid );
-
- DBG_ARGS(_S("CNsmlContactsDataStoreExtensionPrivate::DeleteContactL: END %d"), ret );
-
- return ret;
- }
-
-/*!
- * Delete array of contacts
- */
-TBool CNsmlContactsDataStoreExtensionPrivate::DeleteContactsL( CArrayFixFlat<TUid> *arrDelete )
- {
- _DBG_FILE("CNsmlContactsDataStoreExtensionPrivate::DeleteContactsL: BEGIN");
-
- QList<QContactLocalId> contacts;
- for( TInt count = 0; count < arrDelete->Count(); count++ )
- {
- contacts.append( arrDelete->At( count ).iUid );
- }
-
- QMap<int, QContactManager::Error> errorMap;
- TBool ret = mContactManager->removeContacts( contacts, &errorMap );
-
- _DBG_FILE("CNsmlContactsDataStoreExtensionPrivate::DeleteContactsL: END");
-
- return ret;
- }
-
-/*!
- * Delete all contacts except selfcontact
- */
-TBool CNsmlContactsDataStoreExtensionPrivate::DeleteAllContactsL()
- {
- _DBG_FILE("CNsmlContactsDataStoreExtensionPrivate::DeleteAllContactsL: BEGIN");
-
- QContactLocalId selfcontactid = mContactManager->selfContactId();
- QList<QContactLocalId> contactIds = mContactManager->contactIds();
- int index = contactIds.indexOf( selfcontactid );
- contactIds.removeAt( index );
-
- QMap<int, QContactManager::Error> errorMap;
- TBool ret = mContactManager->removeContacts( contactIds, &errorMap );
-
- _DBG_FILE("CNsmlContactsDataStoreExtensionPrivate::DeleteAllContactsL: END");
-
- return ret;
- }
-
-/*!
- * List the available managers
- */
-void CNsmlContactsDataStoreExtensionPrivate::ListStoresL( CDesCArray *cntstores )
- {
- _DBG_FILE("CNsmlContactsDataStoreExtensionPrivate::ListStoresL: BEGIN");
-
- QStringList availableManagers = QContactManager::availableManagers();
- foreach (const QString manager, availableManagers)
- {
- HBufC* buf = XQConversions::qStringToS60Desc( manager );
- cntstores->AppendL( buf->Des() );
- delete buf;
- }
-
- _DBG_FILE("CNsmlContactsDataStoreExtensionPrivate::ListStoresL: END");
- }
-
-
-/*!
- * Fetch Manager URI
- */
-TInt64 CNsmlContactsDataStoreExtensionPrivate::MachineIdL()
- {
- _DBG_FILE("CNsmlContactsDataStoreExtensionPrivate::MachineIdL: BEGIN");
-
- HBufC* buf = XQConversions::qStringToS60Desc( mContactManager->managerUri() );
- TInt64 machineid = DefaultHash::Des16( buf->Des() );
- delete buf;
-
- DBG_ARGS(_S("CNsmlContactsDataStoreExtensionPrivate::MachineIdL: %ld"), machineid );
-
- return machineid;
- }
-
-/*!
- * List all contacts
- */
-void CNsmlContactsDataStoreExtensionPrivate::ListContactsL( CArrayFixFlat<TUid> *contactuidlist )
- {
- _DBG_FILE("CNsmlContactsDataStoreExtensionPrivate::ListContactsL: BEGIN");
-
- QList<QContactLocalId> contactIds = mContactManager->contactIds();
-
- foreach (QContactLocalId id, contactIds )
- {
- DBG_ARGS(_S("CNsmlContactsDataStoreExtensionPrivate::ListContactsL: %d"), id );
- contactuidlist->AppendL( TUid::Uid(id) );
- }
- _DBG_FILE("CNsmlContactsDataStoreExtensionPrivate::ListContactsL: END");
- }
-
-/*!
- * Convert QTime to S60 TTime
- */
-TTime CNsmlContactsDataStoreExtensionPrivate::qTimeToS60TTime(const QDateTime &datetime)
- {
- _DBG_FILE("CNsmlContactsDataStoreExtensionPrivate::qTimeToS60TTime: BEGIN");
-
- //Symbian month & day are zero based, so -1 from Qt's
- TDateTime dt(datetime.date().year(),
- TMonth(datetime.date().month() - 1),
- datetime.date().day() - 1,
- datetime.time().hour(),
- datetime.time().minute(),
- datetime.time().second(),
- datetime.time().msec() * 1000);
-
- _DBG_FILE("CNsmlContactsDataStoreExtensionPrivate::qTimeToS60TTime: END");
- return TTime(dt);
- }
-
-// End of File