diff -r 106a4bfcb866 -r 013a02bf2bb0 smf/smfservermodule/smfclient/smfrelationmgr_p.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/smf/smfservermodule/smfclient/smfrelationmgr_p.cpp Thu Aug 05 16:48:48 2010 +0530 @@ -0,0 +1,348 @@ +/** + * Copyright (c) 2010 Sasken Communication Technologies Ltd. + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of the "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: + * Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution + * + * Contributors: + * Manasij Roy, Nalina Hariharan + * + * Description: + * Private Implementation of Relation Manager + * + */ + +#include "smfrelationmgr.h" +#include "smfrelationmgr_p.h" + +#ifdef Q_OS_SYMBIAN + #include "smfclientsymbian.h" +#else + #include "smfclientqt.h" +#endif + + +SmfRelationMgrPrivate::SmfRelationMgrPrivate(SmfRelationMgr* relnMngr) + { + Q_UNUSED(relnMngr) +#ifdef Q_OS_SYMBIAN + //private impl for symbian + m_SmfClientPrivate = CSmfClientSymbian::NewL(); +#endif + } + +SmfRelationMgrPrivate::~SmfRelationMgrPrivate() + { + if(m_SmfClientPrivate) + { + delete m_SmfClientPrivate; + m_SmfClientPrivate = NULL; + } + } + +SmfRelationId SmfRelationMgrPrivate::create( SmfProvider *provider, SmfContact *contact) + { + m_dataForDSM.clear(); + QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly); + if(provider) + { + m_argFlag = 1; + writeStream<sendDSMSyncRequest(SmfRelationCreate,m_dataForDSM,err,maxSmfRelationIdSize); + if(err == SmfNoError) + { + QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly); + readStream>>relnId; + } + else + { + User::Panic(_L("DSM err = "),err); + } + return relnId; + } + +SmfError SmfRelationMgrPrivate::associate( SmfRelationId& relation, + const SmfContact* contact, SmfProvider* provider) + { + m_dataForDSM.clear(); + QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly); + writeStream<sendDSMSyncRequest(SmfRelationAssociate,m_dataForDSM,err,maxAlloc); + if(err == SmfNoError) + { + QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly); + int errInt; + readStream>>errInt; + err = (SmfError)errInt; + } + else + { + User::Panic(_L("DSM err = "),err); + } + return err; + } + +SmfError SmfRelationMgrPrivate::remove(SmfRelationId& relation,const SmfContact* contact) + { + m_dataForDSM.clear(); + QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly); + writeStream<sendDSMSyncRequest(SmfRelationRemove,m_dataForDSM,err,maxAlloc); + if(err == SmfNoError) + { + QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly); + int errInt; + readStream>>errInt; + err = (SmfError)errInt; + } + else + { + const QString errStr = QString::number(err); + Q_ASSERT_X(1,"SmfRelationMgrPrivate::remove","error"); + } + return err; + } + +SmfRelationItem* SmfRelationMgrPrivate::searchById(const SmfRelationId& relation) + { + m_dataForDSM.clear(); + QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly); + writeStream<sendDSMSyncRequest(SmfRelationSearchById,m_dataForDSM,err,maxAlloc); + if(err == SmfNoError) + { + QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly); + m_argFlag = 0; + readStream>>m_argFlag; + if(m_argFlag) + { + relnItem = new SmfRelationItem; + readStream>>*(relnItem); + } + } + else + { + User::Panic(_L("DSM err = "),err); + } + return relnItem; + } + +SmfRelationId SmfRelationMgrPrivate::searchByContact( SmfContact contact) + { + m_dataForDSM.clear(); + QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly); + writeStream<sendDSMSyncRequest(SmfRelationSearchByContact,m_dataForDSM,err,maxAlloc); + if(err == SmfNoError) + { + QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly); + readStream>>relnId; + } + else + { + User::Panic(_L("DSM err = "),err); + } + return relnId; + } + +//number of contacts in a relation +uint SmfRelationMgrPrivate::count(SmfRelationId relation) + { + m_dataForDSM.clear(); + QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly); + writeStream<sendDSMSyncRequest(SmfRelationCount,m_dataForDSM,err,maxAlloc); + if(err == SmfNoError) + { + QDataStream readStream(&m_dataForDSM,QIODevice::ReadOnly); + readStream>>count; + } + else + { + User::Panic(_L("DSM err = "),err); + } + return count; + } + +SmfRelationItem* SmfRelationMgrPrivate::get(SmfRelationId& relation, quint32 index) + { + m_dataForDSM.clear(); + QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly); + writeStream<sendDSMSyncRequest(SmfRelationGet,m_dataForDSM,err,maxAlloc); + if(err == SmfNoError) + { + QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly); + m_argFlag = 0; + readStream>>m_argFlag; + if(m_argFlag) + { + relationItem = new SmfRelationItem; + readStream>>*(relationItem); + } + } + else + { + User::Panic(_L("DSM err = "),err); + } + return relationItem; + } + +QList SmfRelationMgrPrivate::getAll(SmfRelationId& relation) + { + m_dataForDSM.clear(); + + QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly); + writeStream< relationItemList; + int maxAlloc = maxSmfRelationItemSize*maxRelationItems; + m_dataFromDSM = m_SmfClientPrivate->sendDSMSyncRequest(SmfRelationGetAll,m_dataForDSM,err,maxAlloc); + if(err == SmfNoError) + { + QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly); + readStream>>relationItemList; + } + else + { + User::Panic(_L("DSM err = "),err); + } + return relationItemList; + } + +QList SmfRelationMgrPrivate::getAllRelations() + { + m_dataForDSM.clear(); + + m_dataFromDSM.clear(); + SmfError err = SmfNoError; + int maxAlloc = 1000*maxRelationItems; + QList relationIdList; + m_dataFromDSM = m_SmfClientPrivate->sendDSMSyncRequest(SmfRelationGetAllRelations,m_dataForDSM,err,maxAlloc); + if(err == SmfNoError) + { + QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly); + readStream>>relationIdList; + } + else + { + User::Panic(_L("DSM err = "),err); + } + return relationIdList; + } + +SmfError SmfRelationMgrPrivate::Delete(SmfRelationId& relation) + { + m_dataForDSM.clear(); + + QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly); + writeStream<sendDSMSyncRequest(SmfRelationDeleteRelation,m_dataForDSM,err,maxAlloc); + if(err == SmfNoError) + { + QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly); + int errInt; + readStream>>errInt; + err = (SmfError)errInt; + } + else + { + User::Panic(_L("DSM err = "),err); + } + return err; + }